Bugzilla – Attachment 74140 Details for
Bug 20271
Merge deleted biblio, biblioitems, biblio_metadata, and items tables
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 20271: add atomic update
Bug-20271-add-atomic-update.patch (text/plain), 5.17 KB, created by
Benjamin Rokseth
on 2018-04-13 07:36:28 UTC
(
hide
)
Description:
Bug 20271: add atomic update
Filename:
MIME Type:
Creator:
Benjamin Rokseth
Created:
2018-04-13 07:36:28 UTC
Size:
5.17 KB
patch
obsolete
>From 7e06455b48e179a3c2ce6032e4c3ac33eac14698 Mon Sep 17 00:00:00 2001 >From: Benjamin Rokseth <benjamin.rokseth@deichman.no> >Date: Fri, 13 Apr 2018 09:03:23 +0200 >Subject: [PATCH] Bug 20271: add atomic update > >--- > ...eleteitems_tables_with_their_alive_cousins.perl | 79 ++++++++++++++++++++++ > 1 file changed, 79 insertions(+) > create mode 100644 installer/data/mysql/atomicupdate/bug_20271_-_merge_deletedbiblio_and_deleteitems_tables_with_their_alive_cousins.perl > >diff --git a/installer/data/mysql/atomicupdate/bug_20271_-_merge_deletedbiblio_and_deleteitems_tables_with_their_alive_cousins.perl b/installer/data/mysql/atomicupdate/bug_20271_-_merge_deletedbiblio_and_deleteitems_tables_with_their_alive_cousins.perl >new file mode 100644 >index 0000000..92cf05d >--- /dev/null >+++ b/installer/data/mysql/atomicupdate/bug_20271_-_merge_deletedbiblio_and_deleteitems_tables_with_their_alive_cousins.perl >@@ -0,0 +1,79 @@ >+$DBversion = 'XXX'; # will be replaced by the RM >+if( CheckVersion( $DBversion ) ) { >+ $dbh->do( "ALTER TABLE biblio ADD COLUMN deleted_at datetime DEFAULT NULL" ) or warn $DBI::errstr; >+ $dbh->do( "ALTER TABLE biblioitems ADD COLUMN deleted_at datetime DEFAULT NULL" ) or warn $DBI::errstr; >+ $dbh->do( "ALTER TABLE biblio_metadata ADD COLUMN deleted_at datetime DEFAULT NULL" ) or warn $DBI::errstr; >+ $dbh->do( "ALTER TABLE items ADD COLUMN deleted_at datetime DEFAULT NULL" ) or warn $DBI::errstr; >+ >+ # Need to drop foreign keys to avoid cascading deletes from deletedbiblio >+ # Bug 17196 introduced a mismatch in foreign keys of deletedbiblio_metadata, so we need to delete either of the two >+ # one would inevitably fail so we ignore any errors >+ $dbh->do( "ALTER TABLE deletedbiblio_metadata DROP FOREIGN KEY deletedbiblio_metadata_fk_1" ); >+ $dbh->do( "ALTER TABLE deletedbiblio_metadata DROP FOREIGN KEY deletedrecord_metadata_fk_1" ); >+ >+ $dbh->do( "INSERT IGNORE INTO biblio SELECT *, timestamp AS deleted_at FROM deletedbiblio" ) or warn $DBI::errstr; >+ $dbh->do( "INSERT IGNORE INTO biblioitems SELECT *, timestamp AS deleted_at FROM deletedbiblioitems" ) or warn $DBI::errstr; >+ $dbh->do( "INSERT IGNORE INTO biblio_metadata SELECT *, timestamp AS deleted_at FROM deletedbiblio_metadata" ) or warn $DBI::errstr; >+ $dbh->do( "INSERT IGNORE INTO items SELECT *, timestamp AS deleted_at FROM deleteditems" ) or warn $DBI::errstr; >+ >+ # Check if any rows could not be moved, if so, rename table with underscore for checking, otherwise drop them >+ { >+ my $sth = $dbh->prepare("DELETE FROM deleteditems WHERE itemnumber IN (SELECT itemnumber FROM items)"); >+ $sth->execute(); >+ $sth = $dbh->prepare("SELECT COUNT(*) AS count FROM deleteditems"); >+ $sth->execute(); >+ my $row = $sth->fetchrow_hashref; >+ if ($row->{count}) { >+ warn "There were $row->{count} deleteditems that could not be moved, please check '_deleteditems'."; >+ $dbh->do("RENAME TABLE deleteditems TO _deleteditems"); >+ } else { >+ $dbh->do("DROP TABLE deleteditems"); >+ } >+ } >+ >+ { >+ my $sth = $dbh->prepare("DELETE FROM deletedbiblio_metadata WHERE biblionumber IN (SELECT biblionumber FROM biblio_metadata)"); >+ $sth->execute(); >+ $sth = $dbh->prepare("SELECT COUNT(*) AS count FROM deletedbiblio_metadata"); >+ $sth->execute(); >+ my $row = $sth->fetchrow_hashref; >+ if ($row->{count}) { >+ warn "There were $row->{count} deletedbiblio_metadata that could not be moved, please check '_deletedbiblio_metadata'."; >+ $dbh->do("RENAME TABLE deletedbiblio_metadata TO _deletedbiblio_metadata"); >+ } else { >+ $dbh->do("DROP TABLE deletedbiblio_metadata"); >+ } >+ } >+ >+ { >+ my $sth = $dbh->prepare("DELETE FROM deletedbiblio WHERE biblionumber IN (SELECT biblionumber FROM biblio)"); >+ $sth->execute(); >+ $sth = $dbh->prepare("SELECT COUNT(*) AS count FROM deletedbiblio WHERE biblionumber NOT IN (SELECT biblionumber FROM deletedbiblioitems)"); >+ $sth->execute(); >+ my $row = $sth->fetchrow_hashref; >+ if ($row->{count}) { >+ warn "There were $row->{count} deletedbiblio that could not be moved, please check '_deletedbiblio'."; >+ $dbh->do("RENAME TABLE deletedbiblio TO _deletedbiblio"); >+ } else { >+ $dbh->do("DROP TABLE deletedbiblio"); >+ } >+ } >+ >+ { >+ my $sth = $dbh->prepare("DELETE FROM deletedbiblioitems WHERE biblioitemnumber IN (SELECT biblioitemnumber FROM biblioitems)"); >+ $sth->execute(); >+ $sth = $dbh->prepare("SELECT COUNT(*) AS count FROM deletedbiblioitems"); >+ $sth->execute(); >+ my $row = $sth->fetchrow_hashref; >+ if ($row->{count}) { >+ warn "There were $row->{count} deletedbiblioitems that could not be moved, please check '_deletedbiblioitems'."; >+ $dbh->do("RENAME TABLE deletedbiblioitems TO _deletedbiblioitems"); >+ } else { >+ $dbh->do("DROP TABLE deletedbiblioitems"); >+ } >+ } >+ >+ >+ SetVersion( $DBversion ); >+ print "Upgrade to $DBversion done (Bug 20271 - Merge deletedbiblio* and deleteitems tables with their alive cousins)\n"; >+} >-- >2.1.4
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 20271
:
72300
|
72799
|
72800
|
73091
|
73092
|
73093
|
73535
|
73536
|
73537
|
73538
|
73539
|
73540
|
73597
|
73759
|
73760
|
73761
|
73762
|
73763
|
73764
|
73765
|
74127
|
74128
|
74129
|
74130
|
74131
|
74132
|
74133
|
74134
|
74135
|
74136
|
74137
|
74138
|
74139
|
74140
|
74141
|
74142
|
74182
|
74183
|
74184
|
74185
|
74186
|
74187
|
74188
|
74189
|
74190
|
74223
|
74407
|
74408
|
74409
|
74410
|
74411
|
74412
|
74413
|
74414
|
74415
|
74416
|
75265
|
75347
|
75894
|
75897
|
75898
|
75899
|
75910
|
75977
|
75978
|
75979
|
75980
|
75981
|
75982
|
75983
|
75984
|
75985
|
75986
|
75987
|
75988
|
75989
|
75990
|
75991
|
75992
|
75993
|
76047
|
76048
|
76255
|
76256
|
76257
|
76258
|
76259
|
76260
|
76261
|
76262
|
76263
|
76264
|
76265
|
76266
|
76267
|
76268
|
76269
|
76270
|
76271
|
76272
|
76273
|
76274
|
76275
|
76276
|
76277
|
76493
|
76494
|
76495
|
76496
|
76497
|
76498
|
76499
|
76500
|
76501
|
76502
|
76503
|
76504
|
76505
|
76506
|
76507
|
76508
|
76509
|
76510
|
76511
|
76512
|
76513
|
76514