X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FAbstract.pm;h=eb50d9826d1a66c691476b5ac448442578ef0362;hb=refs%2Fheads%2Fop_op;hp=06c4ae94d712e21bff72fe830b8ef9b92ba23787;hpb=fc3b287d72ef4044505f48cffd4dd55c4db34ef2;p=dbsrgits%2FSQL-Abstract.git diff --git a/lib/SQL/Abstract.pm b/lib/SQL/Abstract.pm index 06c4ae9..eb50d98 100644 --- a/lib/SQL/Abstract.pm +++ b/lib/SQL/Abstract.pm @@ -1010,7 +1010,8 @@ sub _where_generic_FUNC { return ($sql, @bind); }, HASHREF => sub { - $self->_recurse_where( $val ); + my $method = $self->_METHOD_FOR_refkind("_where_hashpair", $val); + $self->$method('', $val); } }); push @all_sql, $sql; @@ -1028,20 +1029,20 @@ sub _where_op_OP { my ($k, $vals); - if (ref $_[2]) { - # $_[1] gets set to "op" ? + if (@_ == 3) { + # $_[1] gets set to "op" $vals = $_[2]; $k = ''; - } else { + } elsif (@_ == 4) { $k = $_[1]; - # $_[2] gets set to "op" ? + # $_[2] gets set to "op" $vals = $_[3]; } my $label = $self->_convert($self->_quote($k)); my $placeholder = $self->_convert('?'); - puke '-op must be an array' unless ref $vals eq 'ARRAY'; + puke 'argument to -op must be an arrayref' unless ref $vals eq 'ARRAY'; puke 'first arg for -op must be a scalar' unless !ref $vals->[0]; my ($op, @rest_of_vals) = @$vals; @@ -1063,7 +1064,8 @@ sub _where_op_OP { return ($sql, @bind); }, HASHREF => sub { - $self->_recurse_where( $val ); + my $method = $self->_METHOD_FOR_refkind("_where_hashpair", $val); + $self->$method('', $val); } }); push @all_sql, $sql;