eliminated value old special op impl
Matt S Trout [Tue, 11 Sep 2018 22:31:18 +0000 (22:31 +0000)]
lib/SQL/Abstract.pm

index 0f412aa..c9c89bf 100644 (file)
@@ -40,7 +40,7 @@ my @BUILTIN_SPECIAL_OPS = (
   {regex => qr/^ (?: not \s )? between $/ix, handler => sub { die "NOPE" }},
   {regex => qr/^ (?: not \s )? in      $/ix, handler => sub { die "NOPE" }},
   {regex => qr/^ ident                 $/ix, handler => sub { die "NOPE" }},
-  {regex => qr/^ value                 $/ix, handler => '_where_op_VALUE'},
+  {regex => qr/^ value                 $/ix, handler => sub { die "NOPE" }},
   {regex => qr/^ is (?: \s+ not )?     $/ix, handler => '_where_field_IS'},
 );
 
@@ -701,6 +701,14 @@ sub _expand_expr_hashpair {
           { -ident => $vv }
         ] };
       }
+      if ($vk eq 'value') {
+        return $self->_expand_expr_hashpair($k, undef) unless defined($vv);
+        return +{ -op => [
+          $self->{cmp},
+          { -ident => $k },
+          { -bind => [ $k, $vv ] }
+        ] };
+      }
     }
     if (ref($v) eq 'ARRAY') {
       return $self->{sqlfalse} unless @$v;