Fix plpgsql to release SPI plans when a function or DO block is freed.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 27 Mar 2011 16:51:04 +0000 (12:51 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 27 Mar 2011 16:51:04 +0000 (12:51 -0400)
commit87f2ad1326bff5cd37dde6fbf024137a2243efea
treec80426c0f37d156f0aa2d53b7eb52e0ccbc958d2
parentde592e2669380d5f95766d2bbe583558772fb6ce
Fix plpgsql to release SPI plans when a function or DO block is freed.

This fixes the gripe I made a few months ago about DO blocks getting
slower with repeated use.  At least, it fixes it for the case where
the DO block isn't aborted by an error.  We could try running
plpgsql_free_function_memory() even during error exit, but that seems
a bit scary since it makes a lot of presumptions about the data
structures being in good shape.  It's probably reasonable to assume
that repeated failures of DO blocks isn't a performance-critical case.
src/pl/plpgsql/src/pl_comp.c
src/pl/plpgsql/src/pl_funcs.c
src/pl/plpgsql/src/pl_handler.c
src/pl/plpgsql/src/plpgsql.h