X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FAbstract.pm;h=406d4e54777b045f55332f4144f1d5ec70d8b03f;hb=a2ad1cf9037d7a4e562d7e7f31a92a6049f6d3b2;hp=38d24ad6d4fcff88e49907414734386b41250498;hpb=b99e393b6090ff5593471b3a8bae23c772be38d8;p=scpubgit%2FQ-Branch.git diff --git a/lib/SQL/Abstract.pm b/lib/SQL/Abstract.pm index 38d24ad..406d4e5 100644 --- a/lib/SQL/Abstract.pm +++ b/lib/SQL/Abstract.pm @@ -139,21 +139,11 @@ sub is_plain_value ($) { our %Defaults = ( expand => { - not => '_expand_not', bool => '_expand_bool', - and => '_expand_op_andor', - or => '_expand_op_andor', nest => '_expand_nest', bind => '_expand_bind', - in => '_expand_in', - not_in => '_expand_in', row => '_expand_row', - between => '_expand_between', - not_between => '_expand_between', op => '_expand_op', - (map +($_ => '_expand_op_is'), ('is', 'is_not')), - ident => '_expand_ident', - value => '_expand_value', func => '_expand_func', values => '_expand_values', }, @@ -673,8 +663,8 @@ sub _expand_select_clause_where { }; }; $self->clone - ->wrap_expanders(map +($_ => $_wrap), qw(ident value bind)) - ->wrap_op_expanders(map +($_ => $_wrap), qw(ident value bind)) + ->wrap_expander(bind => $_wrap) + ->wrap_op_expanders(map +($_ => $_wrap), qw(ident value)) ->wrap_expander(func => sub { my $orig = shift; sub { @@ -1020,7 +1010,7 @@ sub _expand_hashpair_op { } } - if (my $exp = $self->{expand}{$op}) { + if (my $exp = $self->{expand}{$op}||$self->{expand_op}{$op}) { return $self->$exp($op, $v); } @@ -1051,7 +1041,11 @@ sub _expand_hashpair_op { return { $k => $v }; } - my $type = $self->{unknown_unop_always_func} ? -func : -op; + my $type = ( + $self->{unknown_unop_always_func} && !$self->{render_op}{$op} + ? -func + : -op + ); { # Old SQLA compat @@ -1061,7 +1055,10 @@ sub _expand_hashpair_op { and (keys %$v)[0] =~ /^-/ ) { $type = ( - (List::Util::first { $op =~ $_->{regex} } @{$self->{special_ops}}) + ( + (List::Util::first { $op =~ $_->{regex} } @{$self->{special_ops}}) + or $self->{render_op}{$op} + ) ? -op : -func ) @@ -1207,10 +1204,6 @@ sub _expand_value { +{ -bind => [ our $Cur_Col_Meta, $_[2] ] }; } -sub _expand_not { - +{ -op => [ 'not', $_[0]->_expand_expr($_[2]) ] }; -} - sub _expand_row { my ($self, undef, $args) = @_; +{ -row => [ map $self->expand_expr($_), @$args ] };