postgres.git / summary / log / commit / refs

commit    cb19cd956f685558b5b6b3d49db6cff01d35726f
Author:   Daniel Gustafsson <dgustafsson@postgresql.org>
Date:     Fri Feb 14 10:50:56 2025 +0000
First released in: 18.0, 13.20, 14.17, 15.12, 16.8, 17.4

    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


src/backend/executor/execMain.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c index 36f34b9edf3..e57b3592981 100644 --- a/src/backend/executor/execMain.c +++ b/src/backend/executor/execMain.c @@ -2631,13 +2631,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"); [parent: a37c83d1e465]