From a4b9dcaf61c657a315e0de16e0d68163ece9ed0e Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Thu, 25 Jul 2024 13:29:42 -0300 Subject: [PATCH] Bug 37476: Fix reserved word error on Serials.pm on MySQL 8 This patch fixes the fact `RANK` become a reserved word in MySQL 8.0.2 [1] To test: 1. Launch KTD with MySQL 8: $ ktd down $ DB_IMAGE=mysql:8 ktd up -d 2. Open the logs $ ktd --shell k$ tail -f /var/log/koha/kohadev/*.log 3. Create a serial, receive an issue and try to create a routing list 4. Click on `+ Add recipients` and look for Henry 5. Click `Add` and then `Close` => FAIL: Henry not added => FAIL: The logs show an error about wrong SQL syntax 6. Run: k$ prove t/db_dependent/Serials.t => FAIL: Tests explode with the same kind of error! 6. Apply this patch 7. Restart plack 8. Repeat 3 through 6 => SUCCESS: Henry added! => SUCCESS: No explosion about the SQL syntax in the logs => SUCCESS: Tests pass! 9. Sign off :-D [1] https://dev.mysql.com/doc/refman/8.0/en/keywords.html Signed-off-by: Emily Lamancusa Signed-off-by: Martin Renvoize --- C4/Serials.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/C4/Serials.pm b/C4/Serials.pm index 79a3a70dbd..3298b06cd9 100644 --- a/C4/Serials.pm +++ b/C4/Serials.pm @@ -2023,7 +2023,7 @@ sub addroutingmember { my $rank; my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare( "SELECT max(ranking) rank FROM subscriptionroutinglist WHERE subscriptionid = ?" ); + my $sth = $dbh->prepare( "SELECT max(ranking) `rank` FROM subscriptionroutinglist WHERE subscriptionid = ?" ); $sth->execute($subscriptionid); while ( my $line = $sth->fetchrow_hashref ) { if ( defined $line->{rank} && $line->{rank} > 0 ) { -- 2.39.5