@@ -, +, @@ update --- ...eleteitems_tables_with_their_alive_cousins.perl | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 installer/data/mysql/atomicupdate/bug_20271_-_merge_deletedbiblio_and_deleteitems_tables_with_their_alive_cousins.perl --- a/installer/data/mysql/atomicupdate/bug_20271_-_merge_deletedbiblio_and_deleteitems_tables_with_their_alive_cousins.perl +++ a/installer/data/mysql/atomicupdate/bug_20271_-_merge_deletedbiblio_and_deleteitems_tables_with_their_alive_cousins.perl @@ -0,0 +1,22 @@ +$DBversion = 'XXX'; # will be replaced by the RM +if( CheckVersion( $DBversion ) ) { + $dbh->do( "ALTER TABLE biblio ADD COLUMN deleted_at datetime DEFAULT NULL" ); + $dbh->do( "ALTER TABLE biblioitems ADD COLUMN deleted_at datetime DEFAULT NULL" ); + $dbh->do( "ALTER TABLE biblio_metadata ADD COLUMN deleted_at datetime DEFAULT NULL" ); + $dbh->do( "ALTER TABLE items ADD COLUMN deleted_at datetime DEFAULT NULL" ); + + $dbh->do( "INSERT IGNORE INTO biblio SELECT *, timestamp AS deleted_at FROM deletedbiblio" ); + $dbh->do( "INSERT IGNORE INTO biblioitems SELECT *, timestamp AS deleted_at FROM deletedbiblioitems" ); + $dbh->do( "INSERT IGNORE INTO biblio_metadata SELECT *, timestamp AS deleted_at FROM deletedbiblio_metadata" ); + $dbh->do( "INSERT IGNORE INTO items SELECT *, timestamp AS deleted_at FROM deleteditems WHERE biblionumber IN (SELECT biblionumber FROM biblio)" ); + + my $sth = $dbh->prepare("SELECT * FROM deleteditems WHERE itemnumber NOT IN (SELECT itemnumber FROM items)"); + $sth->execute(); + while ( my $it = $sth->fetchrow_hashref ) { + warn "Following item could not be moved from deleteditems, probably duplicate barcode or never moved: " . + "itemnumber: " . $it->{itemnumber} . " - barcode: ". $it->{barcode} . "\n"; + } + + SetVersion( $DBversion ); + print "Upgrade to $DBversion done (Bug 20271 - Merge deletedbiblio* and deleteitems tables with their alive cousins)\n"; +} --