From 07dc039f8a5427835737df6d4624b3f419ff9965 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Thu, 16 Jan 2025 13:24:19 +0000 Subject: [PATCH] Bug 38906: Use SUBSTRING and LOCATE over REGEXP_REPLACE To test: 1 - Check out an old version of Koha and set some columns settings for holdings tables, or: UPDATE columns_settings SET columnname = CONCAT("holdings_",columnname) WHERE module = 'catalogue' AND page='detail' AND tablename = "holdings_table"; UPDATE columns_settings SET columnname = CONCAT("otherholdings_",columnname) WHERE module = 'catalogue' AND page = 'detail' AND tablename = "otherholdings_table"; 2 - perl -e 'use C4::Installer; my $result = C4::Installer::run_db_rev("/kohadevbox/koha/installer/data/mysql/db_revs/240600064.pl"); warn Data::Dumper::Dumper($result)' 3 - SELECT columnname FROM columns_settings WHERE module="catalogue" AND page="detail" AND ( tablename="holdings_table" OR tablename="otherholdings_table"); 4 - Confirm column names are correct 5 - repeat 2 6 - Confirm column names are not affected on subsequent runs (items_group does not become group) Signed-off-by: Jonathan Druart --- installer/data/mysql/db_revs/240600064.pl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/installer/data/mysql/db_revs/240600064.pl b/installer/data/mysql/db_revs/240600064.pl index fce3f90d983..892fa0fc2b4 100755 --- a/installer/data/mysql/db_revs/240600064.pl +++ b/installer/data/mysql/db_revs/240600064.pl @@ -11,8 +11,8 @@ return { say $dbh->do( q{ UPDATE columns_settings - SET columnname = REGEXP_REPLACE(columnname, '.*holdings_', '') - WHERE module="catalogue" AND page="detail" AND ( tablename="holdings_table" OR tablename="otherholdings_table") + SET columnname = SUBSTRING(columnname,LOCATE("_",columnname)+1) + WHERE module="catalogue" AND page="detail" AND ( tablename="holdings_table" OR tablename="otherholdings_table") AND (columnname LIKE 'holdings_%' OR columnname LIKE 'otherholdings_%') } ); say_success( $out, "Column names renamed" ); -- 2.34.1