From 362de947cd7e8c826d9b3c5dc2590348263ed3c1 Mon Sep 17 00:00:00 2001 From: Dean Rasheed Date: Thu, 29 Feb 2024 11:49:30 +0000 Subject: [PATCH] Remove field UpdateContext->updated in nodeModifyTable.c This field has been redundant ever since it was added by commit 25e777cf8e, which split up ExecUpdate() and ExecDelete() into reusable pieces. The only place that reads it is ExecMergeMatched(), if the result from ExecUpdateAct() is TM_Ok. However, all paths through ExecUpdateAct() that return TM_Ok also set this field to true, so the return status by itself is sufficient to tell if the update happened. Removing this field is a modest simplification, and it brings the UPDATE path in ExecMergeMatched() more into line with ExecUpdate(), ensuring that ExecUpdateEpilogue() is always called if ExecUpdateAct() returns TM_Ok, reducing the chance of bugs. Dean Rasheed, reviewed by Alvaro Herrera. Discussion: https://postgr.es/m/CAEZATCWGGmigGBzLHkJm5Ccv2mMxXmwi3%2Buq0yhwDHm-tsvSLg%40mail.gmail.com --- src/backend/executor/nodeModifyTable.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/backend/executor/nodeModifyTable.c b/src/backend/executor/nodeModifyTable.c index 9fc5abff8f..098ed4026b 100644 --- a/src/backend/executor/nodeModifyTable.c +++ b/src/backend/executor/nodeModifyTable.c @@ -109,7 +109,6 @@ typedef struct ModifyTableContext */ typedef struct UpdateContext { - bool updated; /* did UPDATE actually occur? */ bool crossPartUpdate; /* was it a cross-partition update? */ TU_UpdateIndexes updateIndexes; /* Which index updates are required? */ @@ -2042,7 +2041,6 @@ lreplace: &insert_destrel)) { /* success! */ - updateCxt->updated = true; updateCxt->crossPartUpdate = true; /* @@ -2111,8 +2109,6 @@ lreplace: true /* wait for commit */ , &context->tmfd, &updateCxt->lockmode, &updateCxt->updateIndexes); - if (result == TM_Ok) - updateCxt->updated = true; return result; } @@ -2919,7 +2915,7 @@ lmerge_matched: return true; } - if (result == TM_Ok && updateCxt.updated) + if (result == TM_Ok) { ExecUpdateEpilogue(context, &updateCxt, resultRelInfo, tupleid, NULL, newslot);