X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FAbstract.pm;h=65dc20426aa5808f4f9f125a1869da59bc6d2348;hb=1279622f9ff55dd447a3e5a2e99f35cacfe667bb;hp=bc7f7e5092bddf373e1c34281126b4c99d43427f;hpb=39bf6ceae5f7f2dcf8706d0cbad024e8532b8072;p=scpubgit%2FQ-Branch.git diff --git a/lib/SQL/Abstract.pm b/lib/SQL/Abstract.pm index bc7f7e5..65dc204 100644 --- a/lib/SQL/Abstract.pm +++ b/lib/SQL/Abstract.pm @@ -215,6 +215,7 @@ sub new { my ($op, @opargs) = @$args; +{ $node => [ $op, map $self->expand_expr($_), @opargs ] }; }, + (map +($_ => '_expand_op_is'), ('-is', '-is_not')), }; $opt{expand_op} = { @@ -977,6 +978,8 @@ sub _expand_op_andor { sub _expand_op_is { my ($self, $op, $vv, $k) = @_; + $op =~ s/^-//; + ($k, $vv) = @$vv unless defined $k; puke "$op can only take undef as argument" if defined($vv) and not ( @@ -984,7 +987,7 @@ sub _expand_op_is { and exists($vv->{-value}) and !defined($vv->{-value}) ); - return +{ -op => [ $op.'_null', $self->_expand_ident(-ident => $k) ] }; + return +{ -op => [ $op.'_null', $self->expand_expr($k, -ident) ] }; } sub _expand_between {