From b5ef5726643df214528dac1a13a1829bd8b4ab48 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Mon, 1 Jan 2018 21:29:00 +0100 Subject: [PATCH] Accept an upper/lower boundary of 0 (zero). 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 --- lib/NewsStats.pm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/NewsStats.pm b/lib/NewsStats.pm index f2b95c4..efcc7c0 100644 --- a/lib/NewsStats.pm +++ b/lib/NewsStats.pm @@ -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); };