From: Daniel Gustafsson Date: Fri, 14 Feb 2025 10:50:56 +0000 (+0100) Subject: Fix assertion on dereferenced object X-Git-Tag: REL_13_20~6 X-Git-Url: http://git.postgresql.org/gitweb/?a=commitdiff_plain;h=9fcd360498ee2205320336676b40bc7bc10f4c06;p=postgresql.git 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 Reviewed-by: Daniel Gustafsson Reviewed-by: Michael Paquier Discussion: https://postgr.es/m/1618848d-cdc7-414b-9c03-08cf4bef4408@postgrespro.ru Backpatch-through: 13 --- diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c index 2e0eef7f3de..4ea51e4e992 100644 --- a/src/backend/executor/execMain.c +++ b/src/backend/executor/execMain.c @@ -2555,13 +2555,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");