From 6729f22ff015cd14c2356f44d7f30843a302937e Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 27 Feb 2019 09:38:57 -0300 Subject: [PATCH] Bug 22275: (bug 15836 follow-up) Fix class_sources.class_split_rule FK creation MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 18.06.00.060 will fail if custom Classification sources were created. In that case we should use the 'generic' split rule. Test plan: % git checkout -b bug_22395_pre 3a0cba67f1387595f570ab9d9efdeabc856345b4 Reset the DB Go to Home › Administration › Classification sources Create a custom "Classification filing rules" Create a custom "Classification sources" using this filing rules % git checkout master % perl installer/data/mysql/updatedatabase.pl => Without this patch you will get: DBD::mysql::db do failed: Cannot add or update a child row: a foreign key constraint fails (`koha_kohadev`.`#sql-33a_67`, CONSTRAINT `class_source_ibfk_2` FOREIGN KEY (`class_split_rule`) REFERENCES `class_split _rules` (`class_split_rule`)) [for Statement " ALTER TABLE class_sources ADD CONSTRAINT class_source_ibfk_2 FOREIGN KEY (class_split_rule) REFERENCES class_split_rules (class_split_rule) "] at installer/data/mysql/updatedatabase.pl line 17104. => With this patch applied the FK will be created successfully class_sources.class_split_rule will be set to "generic" for these custom values. Signed-off-by: Oliver Behnke Signed-off-by: Josef Moravec Signed-off-by: Nick Clemens (cherry picked from commit 29bc2b583264a62c29a0f39dd79a5b3a64721ae6) Signed-off-by: Martin Renvoize --- installer/data/mysql/updatedatabase.pl | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index ca926d5bbe..2a681ace7d 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -17081,11 +17081,18 @@ if( CheckVersion( $DBversion ) ) { ADD COLUMN class_split_rule varchar(10) NOT NULL default '' AFTER class_sort_rule |); + $dbh->do(q| UPDATE class_sources SET class_split_rule = class_sort_rule |); + $dbh->do(q| + UPDATE class_sources + SET class_split_rule = 'generic' + WHERE class_split_rule NOT IN('dewey', 'generic', 'lcc') + |); + $dbh->do(q| INSERT INTO class_split_rules(class_split_rule, description, split_routine) VALUES -- 2.39.5