From 8f0bfd6613818a259fd388f9db0798712b9f2d5a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20V=C3=A9ron?= <veron@veron.ch>
Date: Tue, 14 Apr 2015 10:28:03 +0200
Subject: [PATCH] [SIGNED OFF] Bug 13992 - Software error in reports if field
 or table does not exist

To reproduce:

- Go to Home > Reports Guided reports wizard
- Create report from SQL
- Enter something like: select holdrio from borrowers
- Save SQL
- run report

Result:
Can't use an undefined value as an ARRAY reference at /usr/share/kohaclone/reports/guided_reports.pl line 932.
expected: graceful error message

- Change sql to something like: select id from holdrio;
- Save SQL
- Run report

Result:
Can't use an undefined value as an ARRAY reference at /usr/share/kohaclone/reports/guided_reports.pl line 932.
expected:  graceful error message

- Change sql to something like: pling from plong
- Save SQL
Result (after saving): Message "The database returned the following error: 1"
Expected: Meaningful message "The database returned the following error: No SELECT" (similar to forbidden statements as UPDATE)

Test plan:
- Apply patch
- Try to reproduce issues above. They should be resolved.

Signed-off-by: Nick Clemens <nick@quecheelibrary.org>
---
 reports/guided_reports.pl | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/reports/guided_reports.pl b/reports/guided_reports.pl
index a3009b2..2b9875f 100755
--- a/reports/guided_reports.pl
+++ b/reports/guided_reports.pl
@@ -192,7 +192,7 @@ elsif ( $phase eq 'Update SQL'){
         push @errors, {sqlerr => $1};
     }
     elsif ($sql !~ /^(SELECT)/i) {
-        push @errors, {queryerr => 1};
+        push @errors, {queryerr => "No SELECT"};
     }
 
     if (@errors) {
@@ -929,6 +929,7 @@ elsif ($phase eq 'Save Compound'){
 # pass $sth, get back an array of names for the column headers
 sub header_cell_values {
     my $sth = shift or return ();
+    return '' unless ($sth->{NAME});
     return @{$sth->{NAME}};
 }
 
-- 
1.9.1