From 2f5f18dfb78da3d45b0cc05c1000cb1ddd751fc6 Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Fri, 11 Sep 2020 12:51:47 +0100 Subject: [PATCH] Bug 26268: (QA follow-up) Conditionally remove This patch adds conditions to prevent the removal of items.paidfor if it is populated and also adds the removal fo the marc_subfield_structure row if it exists. Signed-off-by: Katrin Fischer --- installer/data/mysql/atomicupdate/bug_26268.perl | 42 ++++++++++++++++++++---- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/installer/data/mysql/atomicupdate/bug_26268.perl b/installer/data/mysql/atomicupdate/bug_26268.perl index a5769225e4..c45dc65ddf 100644 --- a/installer/data/mysql/atomicupdate/bug_26268.perl +++ b/installer/data/mysql/atomicupdate/bug_26268.perl @@ -1,13 +1,43 @@ -$DBversion = 'XXX'; # will be replaced by the RM -if( CheckVersion( $DBversion ) ) { +$DBversion = 'XXX'; # will be replaced by the RM +if ( CheckVersion($DBversion) ) { - if( column_exists( 'items', 'paidfor' ) ) { - $dbh->do(q|ALTER TABLE items DROP COLUMN paidfor|); + if ( column_exists( 'items', 'paidfor' ) ) { + my ($count) = $dbh->selectrow_array( + qq| + SELECT COUNT(*) + FROM items + WHERE paidfor IS NOT NULL AND paidfor <> "" + | + ); + if ($count) { + warn "Warning - Cannot remove column items.paidfor. At least one value exists"; + } + else { + $dbh->do(q|ALTER TABLE items DROP COLUMN paidfor|); + $dbh->do(q| + DELETE FROM marc_subfield_structure + WHERE tagfield = '952' + AND tagsubfield = 'x' + AND kohafield = 'items.paidfor' + |); + } } if ( column_exists( 'deleteditems', 'paidfor' ) ) { - $dbh->do(q|ALTER TABLE deleteditems DROP COLUMN paidfor|); + my ($count) = $dbh->selectrow_array( + qq| + SELECT COUNT(*) + FROM items + WHERE paidfor IS NOT NULL AND paidfor <> "" + | + ); + if ($count) { + warn "Warning - Cannot remove column deleteditems.paidfor. At least one value exists"; + } + else { + $dbh->do(q|ALTER TABLE deleteditems DROP COLUMN paidfor|); + } } - NewVersion( $DBversion, 26268, "Remove items.paidfor field"); + NewVersion( $DBversion, 26268, "Remove items.paidfor field" ); } -- 2.11.0