From 01b88b4df5e2df0365cceaf79a039214d9f05273 Mon Sep 17 00:00:00 2001 From: Simon Riggs Date: Thu, 5 Apr 2018 13:19:13 +0100 Subject: [PATCH] MERGE minor errata --- src/backend/executor/README | 4 ++-- src/backend/executor/execMerge.c | 2 +- src/backend/executor/execPartition.c | 4 +--- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/backend/executor/README b/src/backend/executor/README index 7882ce44e7..67736805c2 100644 --- a/src/backend/executor/README +++ b/src/backend/executor/README @@ -42,8 +42,8 @@ consists of a super-row that contains all the columns needed by any of the individual actions, plus CTID and TABLEOID junk columns. The CTID column is required to know if a matching target row was found or not and the TABLEOID column is needed to find the underlying target partition, in case when the -target table is a partition table. When a matching target tuple is found, the -CTID column identifies the matching target tuple and we attempt to activate +target table is a partitioned table. When a matching target tuple is found, +the CTID column identifies the matching tuple and we attempt to activate WHEN MATCHED actions. If a matching tuple is not found, then CTID column is NULL and we attempt to activate WHEN NOT MATCHED actions. Once we know which action is activated we form the final result row and apply only those changes. diff --git a/src/backend/executor/execMerge.c b/src/backend/executor/execMerge.c index 53f4afff0f..d39ddd3034 100644 --- a/src/backend/executor/execMerge.c +++ b/src/backend/executor/execMerge.c @@ -51,7 +51,7 @@ ExecMerge(ModifyTableState *mtstate, EState *estate, TupleTableSlot *slot, Datum datum; bool isNull; - Assert(resultRelInfo->ri_RelationDesc->rd_rel->relkind || + Assert(resultRelInfo->ri_RelationDesc->rd_rel->relkind == RELKIND_RELATION || resultRelInfo->ri_RelationDesc->rd_rel->relkind == RELKIND_PARTITIONED_TABLE); /* diff --git a/src/backend/executor/execPartition.c b/src/backend/executor/execPartition.c index 007f00569c..ad532773a3 100644 --- a/src/backend/executor/execPartition.c +++ b/src/backend/executor/execPartition.c @@ -314,9 +314,7 @@ ExecFindPartition(ResultRelInfo *resultRelInfo, PartitionDispatch *pd, * Given OID of the partition leaf, return the index of the leaf in the * partition hierarchy. * - * NB: This is an O(N) operation. Unfortunately, there are many other problem - * areas with more than a handful partitions, so we don't try to optimise this - * code right now. + * XXX This is an O(N) operation and further optimization would be beneficial */ int ExecFindPartitionByOid(PartitionTupleRouting *proute, Oid partoid)