Re: pgsql: Fix plpgsql to release SPI plans when a function or DO block is
Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>
From: Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pgsql-committers@postgresql.org
Date: 2011-03-28T07:25:06Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix plpgsql to release SPI plans when a function or DO block is freed.
- 87f2ad1326bf 9.1.0 cited
Attachments
- plpgsql-release-cached-plans.patch (text/x-diff) patch
On 27.03.2011 19:51, Tom Lane wrote: > 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. I was quite surprised by the way you did this. Instead of adding all that code to traverse the PLpgSQL_stmt tree (that we'll have to remember to keep up-to-date), can't we just have a list of cached plans in PLpgSQL_function? As attached. -- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com