mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-05 06:56:55 +02:00
Use elog, not Assert, to report failure to provide an outer snapshot.
As of commit 84f5c2908
, executing SQL commands (via SPI or otherwise)
requires having either an active Portal, or a caller-established
active snapshot. We were simply Assert'ing that that's the case.
But we've now had a couple different reports of people testing
extensions that didn't meet this requirement, and were confused by
the resulting crash. Let's convert the Assert to a test-and-elog,
in hopes of making the issue clearer for extension authors.
Per gripes from Liu Huailing and RekGRpth. Back-patch to v11,
like the prior commit.
Discussion: https://postgr.es/m/OSZPR01MB6215671E3C5956A034A080DFBEEC9@OSZPR01MB6215.jpnprd01.prod.outlook.com
Discussion: https://postgr.es/m/17035-14607d308ac8643c@postgresql.org
This commit is contained in:
parent
5c62920fa9
commit
f260436459
@ -1779,7 +1779,8 @@ EnsurePortalSnapshotExists(void)
|
||||
|
||||
/* Otherwise, we'd better have an active Portal */
|
||||
portal = ActivePortal;
|
||||
Assert(portal != NULL);
|
||||
if (unlikely(portal == NULL))
|
||||
elog(ERROR, "cannot execute SQL without an outer snapshot or portal");
|
||||
Assert(portal->portalSnapshot == NULL);
|
||||
|
||||
/* Create a new snapshot and make it active */
|
||||
|
Loading…
Reference in New Issue
Block a user