From 076fcca891258e9f9800066f4f6a33889247a5c3 Mon Sep 17 00:00:00 2001 From: Lucas Gass Date: Fri, 13 Nov 2020 21:20:24 +0000 Subject: [PATCH] Bug 18050: DBRev 20.05.05.002 Signed-off-by: Lucas Gass --- 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 382cc8f9ca..09942330cb 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.05.05.001"; +$VERSION = "20.05.05.002"; 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 732f536957..3ff65b5441 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -22437,6 +22437,45 @@ if( CheckVersion( $DBversion ) ) { NewVersion( $DBversion, 26569, "Use gender neutral pronouns in system preference explanations"); } +$DBversion = '20.05.05.002'; +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