diff options
author | Daniel Gustafsson <dgustafsson@postgresql.org> | 2025-02-14 11:50:56 +0100 |
---|---|---|
committer | Daniel Gustafsson <dgustafsson@postgresql.org> | 2025-02-14 11:50:56 +0100 |
commit | 971566e9650be7defdafa19b6112408233ca3c6b (patch) | |
tree | 256c7892de995b3cdfc7d338a3fd52fcf3869acf | |
parent | 8e58f8024d0a70b3605da664cf35debf88b84e33 (diff) | |
download | postgresql-971566e9650be7defdafa19b6112408233ca3c6b.tar.gz postgresql-971566e9650be7defdafa19b6112408233ca3c6b.zip |
Fix assertion on dereferenced object
Commit 27cc7cd2bc8a accidentally placed the assertion ensuring
that the pointer isn't NULL after it had already been accessed.
Fix by moving the pointer dereferencing to after the assertion.
Backpatch to all supported branches.
Author: Dmitry Koval <d.koval@postgrespro.ru>
Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
Reviewed-by: Michael Paquier <michael@paquier.xyz>
Discussion: https://postgr.es/m/1618848d-cdc7-414b-9c03-08cf4bef4408@postgrespro.ru
Backpatch-through: 13
-rw-r--r-- | src/backend/executor/execMain.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c index 85d3f05f2b6..1ae17a515eb 100644 --- a/src/backend/executor/execMain.c +++ b/src/backend/executor/execMain.c @@ -2533,13 +2533,15 @@ bool EvalPlanQualFetchRowMark(EPQState *epqstate, Index rti, TupleTableSlot *slot) { ExecAuxRowMark *earm = epqstate->relsubs_rowmark[rti - 1]; - ExecRowMark *erm = earm->rowmark; + ExecRowMark *erm; Datum datum; bool isNull; Assert(earm != NULL); Assert(epqstate->origslot != NULL); + erm = earm->rowmark; + if (RowMarkRequiresRowShareLock(erm->markType)) elog(ERROR, "EvalPlanQual doesn't support locking rowmarks"); |