X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FAbstract%2FTree.pm;h=d60e2369e1f0fabc67f81935b74d7acb14c2b0b6;hb=08e163601;hp=f826ba741036deed6b2196963b02785070562800;hpb=b4085a1a3c815de38ac86ca9e0bab01110b48c7e;p=dbsrgits%2FSQL-Abstract.git diff --git a/lib/SQL/Abstract/Tree.pm b/lib/SQL/Abstract/Tree.pm index f826ba7..d60e236 100644 --- a/lib/SQL/Abstract/Tree.pm +++ b/lib/SQL/Abstract/Tree.pm @@ -68,6 +68,7 @@ my @expression_start_keywords = ( 'HAVING', 'ORDER \s+ BY', 'SKIP', + 'FETCH', 'FIRST', 'LIMIT', 'OFFSET', @@ -418,7 +419,7 @@ sub _recurse_parse { @right = $self->_recurse_parse($tokens, PARSE_IN_EXPR); } - @left = [$op => [ @left, @right ]]; + push @left, [$op => [ (@left ? pop @left : ''), @right ]]; } # unary op keywords @@ -658,7 +659,7 @@ sub _parenthesis_unroll { } # unroll nested parenthesis - while ( @{$child->[1]} == 1 and $child->[1][0][0] eq '-PAREN') { + while ( $ast->[0] ne 'IN' and @{$child->[1]} == 1 and $child->[1][0][0] eq '-PAREN') { $child = $child->[1][0]; $changes++; }