[open-ils-commits] r20291 - branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Storage (miker)
svn at svn.open-ils.org
svn at svn.open-ils.org
Fri Apr 22 16:50:35 EDT 2011
Author: miker
Date: 2011-04-22 16:50:29 -0400 (Fri, 22 Apr 2011)
New Revision: 20291
Modified:
branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Storage/QueryParser.pm
Log:
Address LP#730743, errant parens cause pain
Specifically, we prune subplans that contain no nodes (empty parens), and avoid dropping out of the top level query context when we encounter a close-paren.
Modified: branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Storage/QueryParser.pm
===================================================================
--- branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Storage/QueryParser.pm 2011-04-22 20:45:46 UTC (rev 20290)
+++ branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Storage/QueryParser.pm 2011-04-22 20:50:29 UTC (rev 20291)
@@ -514,7 +514,7 @@
warn "Encountered explicit group end\n" if $self->debug;
$_ = $';
- $remainder = $';
+ $remainder = $struct->top_plan ? '' : $';
$last_type = '';
} elsif ($self->filter_count && /$filter_re/) { # found a filter
@@ -559,7 +559,7 @@
warn "Encountered explicit group start\n" if $self->debug;
my ($substruct, $subremainder) = $self->decompose( $', $current_class, $recursing + 1 );
- $struct->add_node( $substruct );
+ $struct->add_node( $substruct ) if ($substruct);
$_ = $subremainder;
$last_type = '';
@@ -650,6 +650,8 @@
}
+ $struct = undef if (scalar(@{$struct->query_nodes}) == 0);
+
return $struct if !wantarray;
return ($struct, $remainder);
}
More information about the open-ils-commits
mailing list