Fix warning on thing => [ undef, ... ] q
Dagfinn Ilmari Mannsåker [Mon, 28 Oct 2019 11:08:59 +0000 (11:08 +0000)]
In passing, change warnings_exist to warnings_like, to catch
unexpected warnings.

lib/SQL/Abstract.pm
t/02where.t

index 3439e37..30b3ffc 100644 (file)
@@ -1049,7 +1049,7 @@ sub _expand_hashpair_ident {
     return $self->sqlfalse unless @$v;
     $self->_debug("ARRAY($k) means distribute over elements");
     my $logic = lc(
-      $v->[0] =~ /^-(and|or)$/i
+      ($v->[0]||'') =~ /^-(and|or)$/i
         ? (shift(@{$v = [ @$v ]}), $1)
         : lc($self->{logic} || 'OR')
     );
index 204a8fd..4c21045 100644 (file)
@@ -123,6 +123,14 @@ my @handle_tests = (
 
     {
         where => {
+            requestor => [undef, ''],
+        },
+        stmt => " WHERE ( requestor IS NULL OR requestor = ? )",
+        bind => [''],
+    },
+
+    {
+        where => {
             priority  => [ {'>', 3}, {'<', 1} ],
             requestor => { '!=', undef },
         },
@@ -419,7 +427,7 @@ for my $case (@handle_tests) {
     my $sql = SQL::Abstract->new;
     my ($stmt, @bind);
     lives_ok {
-      warnings_exist {
+      warnings_like {
         ($stmt, @bind) = $sql->where($case->{where}, $case->{order});
       } $case->{warns} || [];
     };