Fix bindtype omission in -in handling
[dbsrgits/SQL-Abstract.git] / lib / SQL / Abstract.pm
index fcded1d..4d2e49f 100644 (file)
@@ -34,9 +34,8 @@ my @BUILTIN_UNARY_OPS = (
   # the digits are backcompat stuff
   { regex => qr/^and  (?: \s? \d+ )? $/xi, handler => '_where_op_ANDOR' },
   { regex => qr/^or   (?: \s? \d+ )? $/xi, handler => '_where_op_ANDOR' },
-  { regex => qr/^ (?: not \s )? bool $/xi, handler => '_where_op_BOOL' },
-  { regex => qr/^ ident              $/xi, handler => '_where_op_IDENT' },
   { regex => qr/^nest (?: \s? \d+ )? $/xi, handler => '_where_op_NEST' },
+  { regex => qr/^ (?: not \s )? bool $/xi, handler => '_where_op_BOOL' },
 );
 
 #======================================================================
@@ -532,16 +531,6 @@ sub _where_func_generic {
   return ($sql, @bind);
 }
 
-sub _where_op_IDENT {
-  my ($self, $op, $v) = @_;
-
-  if (ref $v) {
-    puke "-$op takes a single scalar argument (a quotable identifier)";
-  }
-
-  return $self->_convert($self->_quote($v));
-}
-
 sub _where_op_ANDOR {
   my ($self, $op, $v) = @_;
 
@@ -959,12 +948,14 @@ sub _where_field_IN {
           push @all_bind, @bind;
         }
 
-        my $sql = sprintf ('%s %s ( %s )',
-          $label,
-          $op,
-          join (', ', @all_sql)
+        return (
+          sprintf ('%s %s ( %s )',
+            $label,
+            $op,
+            join (', ', @all_sql)
+          ),
+          $self->_bindtype($k, @all_bind),
         );
-        return ($sql, @all_bind);
       }
       else { # empty list : some databases won't understand "IN ()", so DWIM
         my $sql = ($op =~ /\bnot\b/i) ? $self->{sqltrue} : $self->{sqlfalse};