From 7b8bcd9dc3b19534c52a7cdbb91bbac5a5cf5db3 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Sun, 25 Oct 2020 23:12:15 +0000 Subject: [PATCH] Bug 18050: DBRev 20.06.00.055 Signed-off-by: Jonathan Druart --- Koha.pm | 2 +- .../bug_18050_aqbudget_constraint.perl | 38 ------------------ installer/data/mysql/updatedatabase.pl | 39 +++++++++++++++++++ 3 files changed, 40 insertions(+), 39 deletions(-) delete mode 100644 installer/data/mysql/atomicupdate/bug_18050_aqbudget_constraint.perl diff --git a/Koha.pm b/Koha.pm index 440f6577db..6bfafb3d39 100644 --- a/Koha.pm +++ b/Koha.pm @@ -29,7 +29,7 @@ use vars qw{ $VERSION }; # - #4 : the developer version. The 4th number is the database subversion. # used by developers when the database changes. updatedatabase take care of the changes itself # and is automatically called by Auth.pm when needed. -$VERSION = "20.06.00.054"; +$VERSION = "20.06.00.055"; sub version { return $VERSION; diff --git a/installer/data/mysql/atomicupdate/bug_18050_aqbudget_constraint.perl b/installer/data/mysql/atomicupdate/bug_18050_aqbudget_constraint.perl deleted file mode 100644 index 0575d27863..0000000000 --- a/installer/data/mysql/atomicupdate/bug_18050_aqbudget_constraint.perl +++ /dev/null @@ -1,38 +0,0 @@ -$DBversion = 'XXX'; # will be replaced by the RM -if( CheckVersion( $DBversion ) ) { - my $count_missing_budget = $dbh->selectrow_arrayref(q| - SELECT COUNT(*) FROM aqbudgets ab WHERE NOT EXISTS - (SELECT * FROM aqbudgetperiods abp WHERE abp.budget_period_id = ab.budget_period_id) - AND budget_period_id IS NOT NULL; - - |); - - my $message = ""; - if($count_missing_budget->[0] > 0) { - $dbh->do(q| - CREATE TABLE _bug_18050_aqbudgets AS - SELECT * FROM aqbudgets ab WHERE NOT EXISTS - (SELECT * FROM aqbudgetperiods abp WHERE abp.budget_period_id = ab.budget_period_id) - |); - - $dbh->do(q| - UPDATE aqbudgets ab SET budget_period_id = NULL - WHERE NOT EXISTS - (SELECT * FROM aqbudgetperiods abp WHERE abp.budget_period_id = ab.budget_period_id) - |); - $message = ". There are $count_missing_budget->[0] funds in your database that are not linked - to a valid budget. Setting invalid budget id (budget_period_id) to null. The table _bug_18050_aqbudgets - was created with original data. Please check that table and place valid ids in aqbudget table as soon as possible." - - } - - if ( !foreign_key_exists( 'aqbudgets', 'aqbudgetperiods_ibfk_1' ) ) { - $dbh->do(q| - ALTER TABLE aqbudgets ADD CONSTRAINT `aqbudgetperiods_ibfk_1` FOREIGN KEY (`budget_period_id`) REFERENCES `aqbudgetperiods` (`budget_period_id`) ON UPDATE CASCADE ON DELETE CASCADE - |); - NewVersion( $DBversion, 18050, "Add FK constraint on aqbudgets.budget_period_id$message"); - } else { - NewVersion( $DBversion, 18050, "FK constraint on aqbudgets.budget already exists"); - } - -} diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 2b312a4a09..ac7068d2dd 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -23107,6 +23107,45 @@ if ( CheckVersion($DBversion) ) { NewVersion( $DBversion, 25596, "Add OVERPAYMENT credit type" ); } +$DBversion = '20.06.00.055'; +if( CheckVersion( $DBversion ) ) { + my $count_missing_budget = $dbh->selectrow_arrayref(q| + SELECT COUNT(*) FROM aqbudgets ab WHERE NOT EXISTS + (SELECT * FROM aqbudgetperiods abp WHERE abp.budget_period_id = ab.budget_period_id) + AND budget_period_id IS NOT NULL; + + |); + + my $message = ""; + if($count_missing_budget->[0] > 0) { + $dbh->do(q| + CREATE TABLE _bug_18050_aqbudgets AS + SELECT * FROM aqbudgets ab WHERE NOT EXISTS + (SELECT * FROM aqbudgetperiods abp WHERE abp.budget_period_id = ab.budget_period_id) + |); + + $dbh->do(q| + UPDATE aqbudgets ab SET budget_period_id = NULL + WHERE NOT EXISTS + (SELECT * FROM aqbudgetperiods abp WHERE abp.budget_period_id = ab.budget_period_id) + |); + $message = ". There are $count_missing_budget->[0] funds in your database that are not linked + to a valid budget. Setting invalid budget id (budget_period_id) to null. The table _bug_18050_aqbudgets + was created with original data. Please check that table and place valid ids in aqbudget table as soon as possible." + + } + + if ( !foreign_key_exists( 'aqbudgets', 'aqbudgetperiods_ibfk_1' ) ) { + $dbh->do(q| + ALTER TABLE aqbudgets ADD CONSTRAINT `aqbudgetperiods_ibfk_1` FOREIGN KEY (`budget_period_id`) REFERENCES `aqbudgetperiods` (`budget_period_id`) ON UPDATE CASCADE ON DELETE CASCADE + |); + NewVersion( $DBversion, 18050, "Add FK constraint on aqbudgets.budget_period_id$message"); + } else { + NewVersion( $DBversion, 18050, "FK constraint on aqbudgets.budget already exists"); + } + +} + # SEE bug 13068 # if there is anything in the atomicupdate, read and execute it. my $update_dir = C4::Context->config('intranetdir') . '/installer/data/mysql/atomicupdate/'; -- 2.39.5