From ed1449486a9f85c3d573a889dd180f229ded55e6 Mon Sep 17 00:00:00 2001 From: Marcel de Rooy Date: Fri, 4 May 2018 10:42:38 +0200 Subject: [PATCH] Bug 11943: Db revision to remove double accepted shares Although it is no problem to have them, we could do a cleanup. This patch just removes duplicate rows from the table. Note: I considered adding a unique index like: ALTER TABLE virtualshelfshares ADD UNIQUE INDEX (shelfnumber, borrowernumber, invitekey); But the possible NULL values in borrowernumber and/or invitekey require additional code changes. So I left it alone. Test plan: [1] Create two records with same borrowernumber and shelfnumber in the shares table, if not present already. [2] Run updatedatabase.pl Signed-off-by: Marcel de Rooy Signed-off-by: Nick Clemens Signed-off-by: Kyle M Hall --- installer/data/mysql/atomicupdate/bug11943.perl | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 installer/data/mysql/atomicupdate/bug11943.perl diff --git a/installer/data/mysql/atomicupdate/bug11943.perl b/installer/data/mysql/atomicupdate/bug11943.perl new file mode 100644 index 0000000000..7f690a50a9 --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug11943.perl @@ -0,0 +1,11 @@ +$DBversion = 'XXX'; # will be replaced by the RM +if( CheckVersion( $DBversion ) ) { + # From: https://stackoverflow.com/questions/3311903/remove-duplicate-rows-in-mysql + $dbh->do(q| +DELETE a +FROM virtualshelfshares as a, virtualshelfshares as b +WHERE a.id < b.id AND a.borrowernumber IS NOT NULL AND a.borrowernumber=b.borrowernumber AND a.shelfnumber=b.shelfnumber + |); + SetVersion( $DBversion ); + print "Upgrade to $DBversion done (Bug 11943: Remove double accepted list shares)\n"; +} -- 2.15.1 (Apple Git-101)