]> granicus.if.org Git - postgresql/commit
Rearrange use of plpgsql_add_initdatums() so that only the parsing of a
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 8 Feb 2007 18:38:03 +0000 (18:38 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 8 Feb 2007 18:38:03 +0000 (18:38 +0000)
commit3e94cf51d7f930e3fec09836d2b488189889a441
treea38fb5e16f2c67bdf1da5830beba8ff0e10cbe94
parentdc80902bcc08e544afcf7514efcaf50b5bb49529
Rearrange use of plpgsql_add_initdatums() so that only the parsing of a
DECLARE section needs to know about it.  Formerly, everyplace besides DECLARE
that created variables needed to do "plpgsql_add_initdatums(NULL)" to prevent
those variables from being sucked up as part of a subsequent DECLARE block.
This is obviously error-prone, and in fact the SQLSTATE/SQLERRM patch had
failed to do it for those two variables, leading to the bug recently exhibited
by Asif Ali Rehman: a DECLARE within an exception handler tried to reinitialize
SQLERRM.

Although the SQLSTATE/SQLERRM patch isn't in any pre-8.1 branches, and so
I can't point to a demonstrable failure there, it seems wise to back-patch
this into the older branches anyway, just to keep the logic similar to HEAD.
src/pl/plpgsql/src/gram.y
src/pl/plpgsql/src/pl_comp.c