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 <thh@inter.net>
This commit is contained in:
Thomas Hochstein 2018-01-01 21:29:00 +01:00
parent 91c674c4fe
commit b5ef572664

View file

@ -674,7 +674,7 @@ sub SQLSetBounds {
### OUT: SQL code to become part of a WHERE or HAVING clause ### OUT: SQL code to become part of a WHERE or HAVING clause
my ($Type,$LowBound,$UppBound) = @_; my ($Type,$LowBound,$UppBound) = @_;
($LowBound,$UppBound) = SQLCheckNumber($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 ". &Bleat(1,"Lower boundary $LowBound is larger than Upper boundary ".
"$UppBound, exchanging boundaries."); "$UppBound, exchanging boundaries.");
($LowBound,$UppBound) = ($UppBound,$LowBound); ($LowBound,$UppBound) = ($UppBound,$LowBound);
@ -690,7 +690,7 @@ sub SQLSetBounds {
} elsif ($Type eq 'sum') { } elsif ($Type eq 'sum') {
$WhereHavingFunction = 'SUM(postings)' $WhereHavingFunction = 'SUM(postings)'
} }
$LowBound = sprintf('%s >= '.$LowBound,$WhereHavingFunction) if ($LowBound); $LowBound = sprintf('%s >= '.$LowBound,$WhereHavingFunction) if defined($LowBound);
# set $LowBound to SQL statement: # set $LowBound to SQL statement:
# 'WHERE postings <=', 'HAVING MAX(postings) <=' or 'HAVING AVG(postings) <=' # 'WHERE postings <=', 'HAVING MAX(postings) <=' or 'HAVING AVG(postings) <='
if ($Type eq 'level') { if ($Type eq 'level') {
@ -700,7 +700,7 @@ sub SQLSetBounds {
} elsif ($Type eq 'sum') { } elsif ($Type eq 'sum') {
$WhereHavingFunction = 'SUM(postings)' $WhereHavingFunction = 'SUM(postings)'
} }
$UppBound = sprintf('%s <= '.$UppBound,$WhereHavingFunction) if ($UppBound); $UppBound = sprintf('%s <= '.$UppBound,$WhereHavingFunction) if defined($UppBound);
return ($LowBound,$UppBound); return ($LowBound,$UppBound);
}; };