@@ -, +, @@ --- .../data/mysql/atomicupdate/bug_26268.perl | 42 ++++++++++++++++--- 1 file changed, 36 insertions(+), 6 deletions(-) --- a/installer/data/mysql/atomicupdate/bug_26268.perl +++ a/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" ); } --