View | Details | Raw Unified | Return to bug 20271
Collapse All | Expand All

(-)a/installer/data/mysql/atomicupdate/bug_20271_-_merge_deletedbiblio_and_deleteitems_tables_with_their_alive_cousins.perl (-4 / +17 lines)
Lines 9-17 if( CheckVersion( $DBversion ) ) { Link Here
9
    # Bug 17196 introduced a mismatch in foreign keys of deletedbiblio_metadata, so any key must be dropped
9
    # Bug 17196 introduced a mismatch in foreign keys of deletedbiblio_metadata, so any key must be dropped
10
    DropAllForeignKeys('deletedbiblio_metadata');
10
    DropAllForeignKeys('deletedbiblio_metadata');
11
    $dbh->do( "INSERT IGNORE INTO biblio SELECT *, timestamp AS deleted_at FROM deletedbiblio" ) or warn $DBI::errstr;
11
    $dbh->do( "INSERT IGNORE INTO biblio SELECT *, timestamp AS deleted_at FROM deletedbiblio" ) or warn $DBI::errstr;
12
    $dbh->do( "INSERT IGNORE INTO biblioitems SELECT *, timestamp AS deleted_at FROM deletedbiblioitems" ) or warn $DBI::errstr;
12
    # We also need to make sure foreign keys references are in place, as Mysql < 5.7 aborts on foreign key errors
13
    $dbh->do( "INSERT IGNORE INTO biblio_metadata SELECT *, timestamp AS deleted_at FROM deletedbiblio_metadata" ) or warn $DBI::errstr;
13
    $dbh->do( "INSERT IGNORE INTO biblioitems (
14
    $dbh->do( "INSERT IGNORE INTO items SELECT *, timestamp AS deleted_at FROM deleteditems" ) or warn $DBI::errstr;
14
        SELECT *, timestamp AS deleted_at FROM deletedbiblioitems
15
        WHERE biblionumber IN (SELECT biblionumber FROM biblio)
16
    )" ) or warn $DBI::errstr;
17
    # biblio_metadata needs special handling since there is an extra autoincrement id that cannot be moved
18
    $dbh->do( "INSERT IGNORE INTO biblio_metadata (biblionumber, format, marcflavour, metadata, timestamp, deleted_at) (
19
        SELECT biblionumber, format, marcflavour, metadata, timestamp, timestamp AS deleted_at FROM deletedbiblio_metadata
20
        WHERE biblionumber IN (SELECT biblionumber FROM biblio)
21
    )" ) or warn $DBI::errstr;
22
    $dbh->do( "INSERT IGNORE INTO items (
23
        SELECT *, timestamp AS deleted_at FROM deleteditems
24
        WHERE biblioitemnumber IN (SELECT biblioitemnumber FROM biblioitems)
25
        AND homebranch IN (SELECT homebranch FROM branches)
26
        AND holdingbranch IN (SELECT holdingbranch FROM branches)
27
        AND biblionumber IN (SELECT biblionumber FROM biblio)
28
    )" ) or warn $DBI::errstr;
15
29
16
    # Check if any rows could not be moved, if so, rename table with underscore for checking, otherwise drop them
30
    # Check if any rows could not be moved, if so, rename table with underscore for checking, otherwise drop them
17
    {
31
    {
18
- 

Return to bug 20271