Fix plpgsql to not lookup block labels except in contexts where a block label

Tom Lane <tgl@sss.pgh.pa.us>

Commit: a54d3fb2e6ce3db9d0c3ad911ae6165e527b21f5
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2007-11-27T19:58:44Z
Releases: 8.3.0
Fix plpgsql to not lookup block labels except in contexts where a block label
is sane (eg, EXIT argument or first part of a qualified identifier), and cause
more-closely-nested record variables to take precedence over outer block
labels.  This cures the breakage exhibited by Marko Kreen that 8.3 no longer
allowed a function's name to be used for a variable within the function, and
makes plpgsql's handling of block labels more like Oracle's.  It's important
to fix this now because we are documenting the use of block labels as variable
qualifiers for the first time in 8.3.

Files

PathChange+/−
src/pl/plpgsql/src/gram.y modified +30 −10
src/pl/plpgsql/src/pl_comp.c modified +68 −125
src/pl/plpgsql/src/pl_funcs.c modified +83 −37
src/pl/plpgsql/src/plpgsql.h modified +9 −7