[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>
--- /dev/null
+$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";
+}