Accept an upper/lower boundary of 0 (zero). next
authorThomas Hochstein <thh@inter.net>
Mon, 1 Jan 2018 20:29:00 +0000 (21:29 +0100)
committerThomas Hochstein <thh@inter.net>
Mon, 1 Jan 2018 20:37:43 +0000 (21:37 +0100)
The code checks if a boundary is set by looking
for a TRUE value, but 0 is FALSE. It has to check
whether the variable is set, i.e. defined(),
instead.

Fixes #56.

Signed-off-by: Thomas Hochstein <thh@inter.net>
lib/NewsStats.pm

index f2b95c4..efcc7c0 100644 (file)
@@ -674,7 +674,7 @@ sub SQLSetBounds {
 ### OUT: SQL code to become part of a WHERE or HAVING clause
   my ($Type,$LowBound,$UppBound) = @_;
   ($LowBound,$UppBound) = SQLCheckNumber($LowBound,$UppBound);
-  if($LowBound and $UppBound and $LowBound > $UppBound) {
+  if($LowBound and defined($UppBound) and $LowBound > $UppBound) {
     &Bleat(1,"Lower boundary $LowBound is larger than Upper boundary ".
              "$UppBound, exchanging boundaries.");
     ($LowBound,$UppBound) = ($UppBound,$LowBound);
@@ -690,7 +690,7 @@ sub SQLSetBounds {
   } elsif ($Type eq 'sum') {
     $WhereHavingFunction = 'SUM(postings)'
   }
-  $LowBound = sprintf('%s >= '.$LowBound,$WhereHavingFunction) if ($LowBound);
+  $LowBound = sprintf('%s >= '.$LowBound,$WhereHavingFunction) if defined($LowBound);
   # set $LowBound to SQL statement:
   # 'WHERE postings <=', 'HAVING MAX(postings) <=' or 'HAVING AVG(postings) <='
   if ($Type eq 'level') {
@@ -700,7 +700,7 @@ sub SQLSetBounds {
   } elsif ($Type eq 'sum') {
     $WhereHavingFunction = 'SUM(postings)'
   }
-  $UppBound = sprintf('%s <= '.$UppBound,$WhereHavingFunction) if ($UppBound);
+  $UppBound = sprintf('%s <= '.$UppBound,$WhereHavingFunction) if defined($UppBound);
   return ($LowBound,$UppBound);
 };
 
This page took 0.010387 seconds and 4 git commands to generate.