X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FAbstract%2FTree.pm;fp=lib%2FSQL%2FAbstract%2FTree.pm;h=1da83dea0c3e8b443fe7d02036fd084a96fd608e;hb=7cc4731935b0b0e60c7d4ebe44512de74de5dc3c;hp=8d7a36a23037a0490c0b06a6f267660017e260ea;hpb=0f9a26cb13f772fe0813987a0641baf193fa9782;p=dbsrgits%2FSQL-Abstract.git diff --git a/lib/SQL/Abstract/Tree.pm b/lib/SQL/Abstract/Tree.pm index 8d7a36a..1da83de 100644 --- a/lib/SQL/Abstract/Tree.pm +++ b/lib/SQL/Abstract/Tree.pm @@ -348,14 +348,14 @@ sub _recurse_parse { elsif ($token =~ /^ (?: OR | AND | \, ) $/xi ) { my $op = ($token eq ',') ? 'LIST' : uc $token; - my $right = $self->_recurse_parse($tokens, PARSE_IN_EXPR); + my $right = $self->_recurse_parse($tokens, PARSE_IN_EXPR) || []; # Merge chunks if logic matches - if (ref $right and $op eq $right->[0]) { - $left = [ (shift @$right ), [$left||(), map { @$_ } @$right] ]; + if (ref $right and @$right and $op eq $right->[0]) { + $left = [ (shift @$right ), [$left||[], map { @$_ } @$right] ]; } else { - $left = [$op => [ $left||(), $right||() ]]; + $left = [$op => [ $left||[], $right ]]; } } # binary operator keywords