Bug 28524: Escape 'rank' in cat_issues_top.pl
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Wed, 16 Jun 2021 12:51:08 +0000 (14:51 +0200)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Tue, 6 Jul 2021 08:12:58 +0000 (10:12 +0200)
It's a MySQL 8 keyword

Test plan:
Turn off strict_sql_modes (there are other problems in this script)
Hit Home Reports > Most-circulated items
Submit the form

Without this patch you got:
  You have an error in your SQL syntax; check the manual that
  corresponds to your MySQL server version for the right syntax to use
  near 'RANK, biblio.biblionumber AS ID, itemcallnumber as CALLNUM,
  ccode as CCODE, loca' at line 1

With this patch applied you see the report result view

Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
reports/cat_issues_top.pl

index 9321081..040280d 100755 (executable)
@@ -297,7 +297,7 @@ sub calculate {
     my $strcalc ;
     
 # Processing average loanperiods
-    $strcalc .= "SELECT DISTINCT biblio.title, COUNT(biblio.biblionumber) AS RANK, biblio.biblionumber AS ID";
+    $strcalc .= "SELECT DISTINCT biblio.title, COUNT(biblio.biblionumber) AS `RANK`, biblio.biblionumber AS ID";
     $strcalc .= ", itemcallnumber as CALLNUM";
     $strcalc .= ", ccode as CCODE";
     $strcalc .= ", location as LOC";
@@ -345,7 +345,7 @@ sub calculate {
     
     $strcalc .= " group by biblio.biblionumber";
     $strcalc .= ", $colfield" if ($column);
-    $strcalc .= " order by RANK DESC";
+    $strcalc .= " order by `RANK` DESC";
     $strcalc .= ", $colfield " if ($colfield);
     
     my $dbcalc = $dbh->prepare($strcalc);