]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Move ModifyTableContext->lockmode to UpdateContext
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Wed, 20 Apr 2022 09:18:04 +0000 (11:18 +0200)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Wed, 20 Apr 2022 09:18:04 +0000 (11:18 +0200)
Should have been done this way to start with, but I failed to notice
This way we avoid some pointless initialization, and better contains the
variable to exist in the scope where it is really used.

Reviewed-by: Michaƫl Paquier <michael@paquier.xyz>
Discussion: https://postgr.es/m/202204191345.qerjy3kxi3eb@alvherre.pgsql

src/backend/executor/nodeModifyTable.c

index 0de6abd5bb897376d8efe76c1b27b62a82bb3931..982acfdad98e822257dd2e0333dd742e1c532493 100644 (file)
@@ -116,12 +116,6 @@ typedef struct ModifyTableContext
         * cross-partition UPDATE
         */
        TupleTableSlot *cpUpdateReturningSlot;
-
-       /*
-        * Lock mode to acquire on the latest tuple version before performing
-        * EvalPlanQual on it
-        */
-       LockTupleMode lockmode;
 } ModifyTableContext;
 
 /*
@@ -132,6 +126,12 @@ typedef struct UpdateContext
        bool            updated;                /* did UPDATE actually occur? */
        bool            updateIndexes;  /* index update required? */
        bool            crossPartUpdate;        /* was it a cross-partition update? */
+
+       /*
+        * Lock mode to acquire on the latest tuple version before performing
+        * EvalPlanQual on it
+        */
+       LockTupleMode lockmode;
 } UpdateContext;
 
 
@@ -1971,7 +1971,7 @@ lreplace:;
                                                                estate->es_snapshot,
                                                                estate->es_crosscheck_snapshot,
                                                                true /* wait for commit */ ,
-                                                               &context->tmfd, &context->lockmode,
+                                                               &context->tmfd, &updateCxt->lockmode,
                                                                &updateCxt->updateIndexes);
        if (result == TM_Ok)
                updateCxt->updated = true;
@@ -2251,7 +2251,7 @@ redo_act:
                                        result = table_tuple_lock(resultRelationDesc, tupleid,
                                                                                          estate->es_snapshot,
                                                                                          inputslot, estate->es_output_cid,
-                                                                                         context->lockmode, LockWaitBlock,
+                                                                                         updateCxt.lockmode, LockWaitBlock,
                                                                                          TUPLE_LOCK_FLAG_FIND_LAST_VERSION,
                                                                                          &context->tmfd);
 
@@ -3557,8 +3557,6 @@ ExecModifyTable(PlanState *pstate)
                                {
                                        EvalPlanQualSetSlot(&node->mt_epqstate, context.planSlot);
 
-                                       context.lockmode = 0;
-
                                        ExecMerge(&context, node->resultRelInfo, NULL, node->canSetTag);
                                        continue;       /* no RETURNING support yet */
                                }
@@ -3637,8 +3635,6 @@ ExecModifyTable(PlanState *pstate)
                                        {
                                                EvalPlanQualSetSlot(&node->mt_epqstate, context.planSlot);
 
-                                               context.lockmode = 0;
-
                                                ExecMerge(&context, node->resultRelInfo, NULL, node->canSetTag);
                                                continue;       /* no RETURNING support yet */
                                        }
@@ -3694,9 +3690,6 @@ ExecModifyTable(PlanState *pstate)
                        }
                }
 
-               /* complete context setup */
-               context.lockmode = 0;
-
                switch (operation)
                {
                        case CMD_INSERT: