Bug 12214: display SQL errors in reports to users
authorPasi Kallinen <pasi.kallinen@pttk.fi>
Thu, 8 May 2014 07:11:29 +0000 (10:11 +0300)
committerGalen Charlton <gmc@esilibrary.com>
Fri, 9 May 2014 14:40:01 +0000 (14:40 +0000)
When a user runs a report containing an SQL error, no
error is shown to the user.  This patch fixes this.

To test:
1) Run a report with known good SQL.
2) No error is shown.
3) Run a report with bad SQL (eg. a typo in field name)
4) No error is shown.
5) Apply patch
6) Repeat 1-4. For the bad SQL report, the database error
   should be shown.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>

C4/Reports/Guided.pm
reports/guided_reports.pl

index 2381483..4b0ab6f 100644 (file)
@@ -512,6 +512,7 @@ sub execute_query {
 
     my $sth = C4::Context->dbh->prepare($sql);
     $sth->execute(@$sql_params, $offset, $limit);
+    return ( $sth, { queryerr => $sth->errstr } ) if ($sth->err);
     return ( $sth );
     # my @xmlarray = ... ;
     # my $url = "/cgi-bin/koha/reports/guided_reports.pl?phase=retrieve%20results&id=$id";
index 71882af..9cb25ea 100755 (executable)
@@ -753,7 +753,7 @@ elsif ($phase eq 'Run this report'){
                 'execute' => 1,
                 'name'    => $name,
                 'notes'   => $notes,
-                'errors'  => $errors,
+                'errors'  => defined($errors) ? [ $errors ] : undef,
                 'pagination_bar'  => pagination_bar($url, $totpages, $input->param('page')),
                 'unlimited_total' => $total,
                 'sql_params'      => \@sql_params,