'ON',
'WHERE',
'(?: DEFAULT \s+ )? VALUES',
- 'EXISTS',
+ '(?:NOT \s+)? EXISTS',
'GROUP \s+ BY',
'HAVING',
'ORDER \s+ BY',
elsif ( $token =~ /^ NOT $/ix ) {
my $op = uc $token;
my $right = $self->_recurse_parse ($tokens, PARSE_RHS);
- $left = $left ? [ @$left, [$op => [$right] ]]
- : [ $op => [$right] ];
+ $left = $left ? [ @$left, [$op => [$right||()] ]]
+ : [ $op => [$right||()] ];
}
elsif ( $token =~ $placeholder_re) {
# FIXME - terrible name for a user facing API
sub unparse {
my ($self, $tree, $bindargs) = @_;
- $self->_parenthesis_unroll($tree);
$self->_unparse($tree, [@{$bindargs||[]}], 0);
}
return '';
}
+ $self->_parenthesis_unroll($tree);
my ($car, $cdr) = @{$tree}[0,1];
if (! defined $car or (! ref $car and ! defined $cdr) ) {