summaryrefslogtreecommitdiff
path: root/src/backend/access/gist
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2010-10-28 13:01:13 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2010-10-28 13:03:08 -0400
commited78eefed2b21517e3f4abaf95081c8f780322e4 (patch)
treeaa9df80bf80973016633764cf1141c6c3251ec1e /src/backend/access/gist
parent5ce47654151bbb536c9a2ca704cb1c1867a26257 (diff)
Fix plpgsql's handling of "simple" expression evaluation.
In general, expression execution state trees aren't re-entrantly usable, since functions can store private state information in them. For efficiency reasons, plpgsql tries to cache and reuse state trees for "simple" expressions. It can get away with that most of the time, but it can fail if the state tree is dirty from a previous failed execution (as in an example from Alvaro) or is being used recursively (as noted by me). Fix by tracking whether a state tree is in use, and falling back to the "non-simple" code path if so. This results in a pretty considerable speed hit when the non-simple path is taken, but the available alternatives seem even more unpleasant because they add overhead in the simple path. Per idea from Heikki. Back-patch to all supported branches.
Diffstat (limited to 'src/backend/access/gist')
0 files changed, 0 insertions, 0 deletions