X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FAbstract.pm;h=934459b2ac2469ac9b0cce06f121695a179dadba;hb=4d8650614d3866beb43f746b8492dab446400be5;hp=df523f2938e9d81b018378eb1ade9a0b6048b484;hpb=ede0de38f495f714753d69bc6f20eddc3e9dbc00;p=dbsrgits%2FSQL-Abstract.git diff --git a/lib/SQL/Abstract.pm b/lib/SQL/Abstract.pm index df523f2..934459b 100644 --- a/lib/SQL/Abstract.pm +++ b/lib/SQL/Abstract.pm @@ -873,6 +873,9 @@ sub _expand_row { sub _expand_op { my ($self, undef, $args) = @_; my ($op, @opargs) = @$args; + if (my $exp = $self->{expand_op}{$op}) { + return $self->$exp($op, \@opargs); + } +{ -op => [ $op, map $self->expand_expr($_), @opargs ] }; } @@ -978,7 +981,7 @@ sub _expand_in { my $opened_sql = $self->_open_outer_paren($sql); return +{ -op => [ $op, $self->expand_expr($k, -ident), - [ { -literal => [ $opened_sql, @bind ] } ] + { -literal => [ $opened_sql, @bind ] } ] }; } my $undef_err = @@ -997,7 +1000,7 @@ sub _expand_in { return +{ -op => [ $op, $self->expand_expr($k, -ident), - \@rhs + @rhs ] }; } @@ -1142,13 +1145,13 @@ sub _render_op_between { sub _render_op_in { my ($self, $op, $args) = @_; - my ($lhs, $rhs) = @$args; + my ($lhs, @rhs) = @$args; my @in_bind; my @in_sql = map { my ($sql, @bind) = $self->render_aqt($_); push @in_bind, @bind; $sql; - } @$rhs; + } @rhs; my ($lhsql, @lbind) = $self->render_aqt($lhs); return ( $lhsql.' '.$self->_sqlcase(join ' ', split '_', $op).' ( '