0002-ExecFindPartition-refactoring.patch

text/plain

Filename: 0002-ExecFindPartition-refactoring.patch
Type: text/plain
Part: 1
Message: non-bulk inserts and tuple routing

Patch

Format: format-patch
Series: patch 0002
Subject: ExecFindPartition refactoring
File+
src/backend/commands/copy.c 1 4
src/backend/executor/execPartition.c 6 8
src/backend/executor/nodeModifyTable.c 1 4
src/include/executor/execPartition.h 1 4
From 3e251d46de5105581acf620773568bb9cdecdf0b Mon Sep 17 00:00:00 2001
From: amit <amitlangote09@gmail.com>
Date: Tue, 19 Dec 2017 13:56:25 +0900
Subject: [PATCH 2/4] ExecFindPartition refactoring

---
 src/backend/commands/copy.c            |  5 +----
 src/backend/executor/execPartition.c   | 14 ++++++--------
 src/backend/executor/nodeModifyTable.c |  5 +----
 src/include/executor/execPartition.h   |  5 +----
 4 files changed, 9 insertions(+), 20 deletions(-)

diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c
index c82103e1c5..280d449dec 100644
--- a/src/backend/commands/copy.c
+++ b/src/backend/commands/copy.c
@@ -2619,10 +2619,7 @@ CopyFrom(CopyState cstate)
 			 * will get us the ResultRelInfo and TupleConversionMap for the
 			 * partition, respectively.
 			 */
-			leaf_part_index = ExecFindPartition(resultRelInfo,
-										mtstate->mt_partition_dispatch_info,
-												slot,
-												estate);
+			leaf_part_index = ExecFindPartition(mtstate, slot);
 			Assert(leaf_part_index >= 0 &&
 				   leaf_part_index < mtstate->mt_num_partitions);
 
diff --git a/src/backend/executor/execPartition.c b/src/backend/executor/execPartition.c
index d545af2b67..a40c174230 100644
--- a/src/backend/executor/execPartition.c
+++ b/src/backend/executor/execPartition.c
@@ -155,11 +155,7 @@ ExecSetupPartitionTupleRouting(ModifyTableState *mtstate,
 }
 
 /*
- * ExecFindPartition -- Find a leaf partition in the partition tree rooted
- * at parent, for the heap tuple contained in *slot
- *
- * estate must be non-NULL; we'll need it to compute any expressions in the
- * partition key(s)
+ * ExecFindPartition -- Find a leaf partition for tuple contained in slot
  *
  * If no leaf partition is found, this routine errors out with the appropriate
  * error message, else it returns the leaf partition sequence number
@@ -167,14 +163,16 @@ ExecSetupPartitionTupleRouting(ModifyTableState *mtstate,
  * the partition tree.
  */
 int
-ExecFindPartition(ResultRelInfo *resultRelInfo, PartitionDispatch *pd,
-				  TupleTableSlot *slot, EState *estate)
+ExecFindPartition(ModifyTableState *mtstate, TupleTableSlot *slot)
 {
+	EState	   *estate = mtstate->ps.state;
 	int			result;
 	Datum		values[PARTITION_MAX_KEYS];
 	bool		isnull[PARTITION_MAX_KEYS];
 	Relation	rel;
-	PartitionDispatch parent;
+	PartitionDispatch  *pd = mtstate->mt_partition_dispatch_info,
+						parent;
+	ResultRelInfo *resultRelInfo = mtstate->resultRelInfo;
 	ExprContext *ecxt = GetPerTupleExprContext(estate);
 	TupleTableSlot *ecxt_scantuple_old = ecxt->ecxt_scantuple;
 
diff --git a/src/backend/executor/nodeModifyTable.c b/src/backend/executor/nodeModifyTable.c
index afb83ed3ae..f836dd3703 100644
--- a/src/backend/executor/nodeModifyTable.c
+++ b/src/backend/executor/nodeModifyTable.c
@@ -292,10 +292,7 @@ ExecInsert(ModifyTableState *mtstate,
 		 * the ResultRelInfo and TupleConversionMap for the partition,
 		 * respectively.
 		 */
-		leaf_part_index = ExecFindPartition(resultRelInfo,
-											mtstate->mt_partition_dispatch_info,
-											slot,
-											estate);
+		leaf_part_index = ExecFindPartition(mtstate, slot);
 		Assert(leaf_part_index >= 0 &&
 			   leaf_part_index < mtstate->mt_num_partitions);
 
diff --git a/src/include/executor/execPartition.h b/src/include/executor/execPartition.h
index 86a199d169..19e3b9d233 100644
--- a/src/include/executor/execPartition.h
+++ b/src/include/executor/execPartition.h
@@ -58,9 +58,6 @@ extern void ExecSetupPartitionTupleRouting(ModifyTableState *mtstate,
 							   TupleConversionMap ***tup_conv_maps,
 							   TupleTableSlot **partition_tuple_slot,
 							   int *num_parted, int *num_partitions);
-extern int ExecFindPartition(ResultRelInfo *resultRelInfo,
-				  PartitionDispatch *pd,
-				  TupleTableSlot *slot,
-				  EState *estate);
+extern int ExecFindPartition(ModifyTableState *mtstate, TupleTableSlot *slot);
 
 #endif							/* EXECPARTITION_H */
-- 
2.11.0