From 554075bc4e21d643132d5c05c9bff8e3d9e5910c Mon Sep 17 00:00:00 2001 From: Chris Nighswonger Date: Mon, 13 Jun 2011 21:05:26 -0400 Subject: [PATCH] 5860 Fixing stocknumber index Fixing code for 3.3.0.42 update. Adding code at end of update script if install past that point already. Signed-off-by: Katrin Fischer Signed-off-by: Chris Cormack (cherry picked from commit a3717c1fe91401aee9d2c89ffe6dc3394b4892e1) Conflicts: installer/data/mysql/updatedatabase.pl Signed-off-by: Chris Nighswonger --- installer/data/mysql/updatedatabase.pl | 29 ++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 91fcbde948..40563a2f5d 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)) { @@ -4329,6 +4343,13 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) { SetVersion ($DBversion); } +$DBversion = '3.04.01.001'; +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 -- 2.39.5