From f6131d8e6094ae9e221a9d5750d744ed1f91dd85 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 restrictions with date 9999-12-31 The borrowers with indefinite restrictions 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 indefinite restrictions. This patch corrects update 3.13.00.035 and also adds an update for databases already updated. Test plan : - Use a database with version 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 Signed-off-by: Marcel de Rooy I tested both DB revisions by resetting Version of my database (and adding a SetVersion after the revised older dbrev). This was possible since the debarred field still exists in borrowers. (I have my doubts about that, but that goes outside the scope of this report.) Also note that routine _UpdateBorrowerDebarmentFlags puts back 9999-12-31 into borrowers for indefinite restrictions (which looks not very consistent). Signed-off-by: Kyle M Hall Signed-off-by: Galen Charlton --- 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 194df7d12d..afbdf6493a 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{ @@ -8106,6 +8111,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) -- 2.39.5