diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2021-06-22 17:48:39 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2021-06-22 17:48:39 -0400 |
commit | d102aafb6259a6a412803d4b1d8c4f00aa17f67e (patch) | |
tree | 4a882a60ad10b72d6b9bf1e817de9f45b1d123e2 /src/backend/access/gist/gistvacuum.c | |
parent | 8e638845ff6bb255ad1dea15831089a234535391 (diff) | |
download | postgresql-d102aafb6259a6a412803d4b1d8c4f00aa17f67e.tar.gz postgresql-d102aafb6259a6a412803d4b1d8c4f00aa17f67e.zip |
Restore the portal-level snapshot for simple expressions, too.
Commits 84f5c2908 et al missed the need to cover plpgsql's "simple
expression" code path. If the first thing we execute after a
COMMIT/ROLLBACK is one of those, rather than a full-fledged SPI command,
we must explicitly do EnsurePortalSnapshotExists() to make sure we have
an outer snapshot. Note that it wouldn't be good enough to just push a
snapshot for the duration of the expression execution: what comes back
might be toasted, so we'd better have a snapshot protecting it.
The test case demonstrating this fact cheats a bit by marking a SQL
function immutable even though it fetches from a table. That's
nothing that users haven't been seen to do, though.
Per report from Jim Nasby. Back-patch to v11, like the previous fix.
Discussion: https://postgr.es/m/378885e4-f85f-fc28-6c91-c4d1c080bf26@amazon.com
Diffstat (limited to 'src/backend/access/gist/gistvacuum.c')
0 files changed, 0 insertions, 0 deletions