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:
parent
91c674c4fe
commit
b5ef572664
|
@ -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);
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue