From 5f1f3b746dd872cbe6c214b43018f86f4c7960ce Mon Sep 17 00:00:00 2001 From: Marcel de Rooy Date: Mon, 16 May 2011 10:57:49 +0200 Subject: [PATCH] [REVISED] 5860 Fixing stocknumber index Content-Type: text/plain; charset="utf-8" Fixing code for 3.3.0.42 update. Adding code at end of update script if install past that point already. --- installer/data/mysql/updatedatabase.pl | 30 ++++++++++++++++++++++++++---- 1 files changed, 26 insertions(+), 4 deletions(-) diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 52951e7..de9806b 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -4216,13 +4216,27 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) { } $DBversion = '3.03.00.042'; -if (C4::Context->preference("Version") < TransformToNum($DBversion) && $original_version < TransformToNum("3.02.06.001")) { - $dbh->do("ALTER TABLE `items` DROP INDEX `itemsstocknumberidx`;"); - $dbh->do("ALTER TABLE items ADD INDEX itemstocknumberidx (stocknumber);"); - print "Upgrade to $DBversion done (Change items.stocknumber to be not unique)\n"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + stocknumber_checker(); + print "Upgrade to $DBversion done (5860 Index itemstocknumber)\n"; SetVersion ($DBversion); } +sub stocknumber_checker { #code reused later on + my @row; + #drop the obsolete itemSStocknumber idx if it exists + @row = $dbh->selectrow_array("SHOW INDEXES FROM items WHERE key_name='itemsstocknumberidx'"); + $dbh->do("ALTER TABLE `items` DROP INDEX `itemsstocknumberidx`;") if @row; + + #check itemstocknumber idx; remove it if it is unique + @row = $dbh->selectrow_array("SHOW INDEXES FROM items WHERE key_name='itemstocknumberidx' AND non_unique=0"); + $dbh->do("ALTER TABLE `items` DROP INDEX `itemstocknumberidx`;") if @row; + + #add itemstocknumber index non-unique IF it still not exists + @row = $dbh->selectrow_array("SHOW INDEXES FROM items WHERE key_name='itemstocknumberidx'"); + $dbh->do("ALTER TABLE items ADD INDEX itemstocknumberidx (stocknumber);") unless @row; +} + $DBversion = "3.03.00.043"; if (C4::Context->preference("Version") < TransformToNum($DBversion)) { @@ -4332,6 +4346,14 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { SetVersion($DBversion); } +$DBversion = '3.05.00.XXX'; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + #follow up fix 5860: some installs already past 3.3.0.42 + stocknumber_checker(); + print "Upgrade to $DBversion done (Fix for stocknumber index)\n"; + SetVersion ($DBversion); +} + =head1 FUNCTIONS =head2 DropAllForeignKeys($table) -- 1.6.0.6