Do not replace the literal string '0' with ''
Fabrizio Gennari [Fri, 6 Apr 2018 08:58:30 +0000 (10:58 +0200)]
lib/SQL/Abstract.pm
t/02where.t

index bd512ca..58244e8 100644 (file)
@@ -523,7 +523,7 @@ sub where {
 
   # where ?
   my ($sql, @bind) = $self->_recurse_where($where);
-  $sql = $sql ? $self->_sqlcase(' where ') . "( $sql )" : '';
+  $sql = (defined $sql and length $sql) ? $self->_sqlcase(' where ') . "( $sql )" : '';
 
   # order by?
   if ($order) {
index 6d89b8c..229770b 100644 (file)
@@ -386,6 +386,11 @@ my @handle_tests = (
         stmt  => " WHERE ( (NOT ( c AND (NOT ( (NOT a = ?) AND (NOT b) )) )) ) ",
         bind => [ 1 ],
     },
+    {
+        where => \"0",
+        stmt  => " WHERE ( 0 ) ",
+        bind => [ ],
+    },
 );
 
 for my $case (@handle_tests) {