Re: Assertion failure in HEAD and 13 after calling COMMIT in a stored proc
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Michael Paquier <michael@paquier.xyz>
Cc: Jim Nasby <nasbyj@amazon.com>,
"pgsql-hackers@lists.postgresql.org"
<pgsql-hackers@lists.postgresql.org>
Date: 2021-06-22T17:13:08Z
Lists: pgsql-hackers
Attachments
- simple-expr-fix-with-test-case-v12.patch (text/x-diff) patch v12
I wrote: > The attached seems to be enough to resolve Jim's example. I'd like > to invent a test case that involves a detoast of the simple > expression's result, too, to show that transiently pushing a > snapshot for the duration of the expression is not the right fix. Here we go. This test case gives "cannot fetch toast data without an active snapshot" in v11 and v12 branch tips. Since those branches lack the 73b06cf89 optimization, they push a snapshot while calling the SQL-language function, thus it doesn't complain. But what comes back is toasted, and then we fail trying to detoast it. regards, tom lane
Commits
-
Restore the portal-level snapshot for simple expressions, too.
- d102aafb6259 14.0 landed
- 77200c569238 11.13 landed
- 6f1321d5ae8e 13.4 landed
- 29d5d5761aa8 12.8 landed
-
Centralize the logic for protective copying of utility statements.
- 7c337b6b527b 14.0 cited
-
Restore the portal-level snapshot after procedure COMMIT/ROLLBACK.
- 84f5c2908dad 14.0 cited
-
Avoid taking a new snapshot for an immutable simple expression in plpgsql.
- 73b06cf893c9 13.0 cited