From 6bfb4298ec4f9eb7d40e91127d318fb4c2c7da4a Mon Sep 17 00:00:00 2001 From: Fridolin Somers Date: Mon, 24 Feb 2014 12:15:55 +0100 Subject: [PATCH] Bug 11846 - Correct database update for debarments with 9999-12-31 The borrowers with infinite debarments have borrowers.debarred with '9999-12-31'. Database update for this bug contained : INSERT INTO borrower_debarments ( borrowernumber, expiration, comment ) SELECT borrowernumber, debarred, debarredcomment FROM borrowers WHERE debarred IS NOT NULL For borrowers where borrowers.debarred is '9999-12-31', this value is copied into borrower_debarments.expiration. This is not correct because borrower_debarments.expiration must be NULL for infinite debarments. This patch corrects update 3.13.00.035 and also adds an update for databases already updated. Test plan : - Use a database with verison 3.13.00.000 - Set a borrower as restricted for ever (leave until empty) - Use sources to master + patch - Perform updatedatabase - Look at borrower details, tab "Restrictions" => Without patch, you see Expiration 31/12/9999 => With patch, you see Expiration Infinite --- installer/data/mysql/updatedatabase.pl | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 062ecc1..1b51957 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -7613,8 +7613,13 @@ CREATE TABLE borrower_debarments ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8; }); + # debarments with end date $dbh->do(q{ -INSERT INTO borrower_debarments ( borrowernumber, expiration, comment ) SELECT borrowernumber, debarred, debarredcomment FROM borrowers WHERE debarred IS NOT NULL +INSERT INTO borrower_debarments ( borrowernumber, expiration, comment ) SELECT borrowernumber, debarred, debarredcomment FROM borrowers WHERE debarred IS NOT NULL AND debarred <> '9999-12-31' + }); + # debarments with no end date + $dbh->do(q{ +INSERT INTO borrower_debarments ( borrowernumber, comment ) SELECT borrowernumber, debarredcomment FROM borrowers WHERE debarred = '9999-12-31' }); $dbh->do(q{ @@ -8083,6 +8088,15 @@ if ( CheckVersion($DBversion) ) { SetVersion($DBversion); } +$DBversion = "3.15.00.XXX"; +if ( CheckVersion($DBversion) ) { + $dbh->do(q{ + UPDATE borrower_debarments SET expiration = NULL WHERE expiration = '9999-12-31' + }); + print "Upgrade to $DBversion done (Bug 11846 - correct borrower_debarments with expiration 9999-12-31)\n"; + SetVersion($DBversion); +} + =head1 FUNCTIONS =head2 TableExists($table) -- 1.8.3.2