Neil Conway <neilc@samurai.com> writes:
> Attached is a revised version of this patch. I'll apply it tonight or
> tomorrow, barring any objections.
I still find the grammar changes to be an ugly kluge --- it should be
possible to do this without introducing bogus nonterminals.
The ns push/pop operations don't appear to be correctly matched
(consider multiple WHEN clauses, a case the regression test does not
cover), nor do they surround the places where the variables are created.
It is likely that you don't need a push/pop at all; if it appears to
work now it's because the end of the block results in a pop and so
the variables disappear then anyway.
The patch is sloppy about whether free_var() is static or not.
I find the proposed change in plpgsql_ns_additem a distinct
disimprovement --- it's dubious even as a micro-optimization
and it certainly hurts legibility.
regards, tom lane