pgsql: Restore the portal-level snapshot for simple expressions, too.

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Restore the portal-level snapshot for simple expressions, too.
Дата
Msg-id E1lvoGP-0003pL-P2@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
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

Branch
------
REL_11_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/77200c569238dd88b4134b09cfa65e3598136f19

Modified Files
--------------
src/pl/plpgsql/src/expected/plpgsql_transaction.out | 18 ++++++++++++++++++
src/pl/plpgsql/src/pl_exec.c                        | 10 ++++++++++
src/pl/plpgsql/src/sql/plpgsql_transaction.sql      | 21 +++++++++++++++++++++
3 files changed, 49 insertions(+)


В списке pgsql-committers по дате отправления:

Предыдущее
От: noreply@postgresql.org
Дата:
Сообщение: pgsql: Tag refs/tags/REL_14_BETA2 was created
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Use annotations to reduce instability of isolation-test results.