Bug 20754: DB revision to remove double accepted shares

[Originally submitted for bug 11943, parked at 20754.]
[Attempt to revive it now.]

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 <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Joy Nelson <joy@bywatersolutions.com>
(cherry picked from commit ba3bed7afe)

Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
Marcel de Rooy 2018-05-04 10:42:38 +02:00 committed by Lucas Gass
parent a43184de5e
commit 70447d05de
1 changed files with 11 additions and 0 deletions

View File

@ -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 20754: Remove double accepted list shares)\n";
}