[Koha-patches] [PATCH] bugfix Guided Reports - allow user specified limit in sql
Michael Hafen
mdhafen at tech.washk12.org
Wed Nov 4 22:31:48 CET 2009
Tweak the regular expression in strip_limit to work.
Tweak execute_query to use the user limit if it's lower than the hard coded one.
Also total is calculated somewhere else now.
This helps most with the csv export of a report so the user can set their own
limit instead of having the hard coded limit of 9999.
---
C4/Reports/Guided.pm | 9 ++++-----
1 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/C4/Reports/Guided.pm b/C4/Reports/Guided.pm
index 537867e..005cdb8 100644
--- a/C4/Reports/Guided.pm
+++ b/C4/Reports/Guided.pm
@@ -382,8 +382,8 @@ sub select_2_select_count ($) {
sub strip_limit ($) {
my $sql = shift or return;
($sql =~ /\bLIMIT\b/i) or return ($sql, 0, undef);
- $sql =~ s/\bLIMIT\b\s*\d+(\,\s*\d+)?\s*/ /ig;
- return ($sql, (defined $1 ? $1 : 0), $2); # offset can default to 0, LIMIT cannot!
+ $sql =~ s/\bLIMIT\b\s*(\d+)(\s*\,\s*(\d+))?\s*/ /ig;
+ return ($sql, (defined $2 ? $1 : 0), (defined $3 ? $3 : $1)); # offset can default to 0, LIMIT cannot!
}
sub execute_query ($;$$$) {
@@ -412,13 +412,12 @@ sub execute_query ($;$$$) {
$useroffset,
(defined($userlimit ) ? $userlimit : 'UNDEF');
$offset += $useroffset;
- my $total;
if (defined($userlimit)) {
if ($offset + $limit > $userlimit ) {
$limit = $userlimit - $offset;
+ } elsif ( ! $offset && $limit > $userlimit ) {
+ $limit = $userlimit;
}
- $total = $userlimit if $userlimit < $total; # we will never exceed a user defined LIMIT and...
- $userlimit = $total if $userlimit > $total; # we will never exceed the total number of records available to satisfy the query
}
$sql .= " LIMIT ?, ?";
--
1.6.3.3
More information about the Koha-patches
mailing list