From 360dd14d8aa1e357c9e408823bded61162c8cb1f Mon Sep 17 00:00:00 2001 From: Marco Slot Date: Sat, 27 Nov 2021 11:52:29 +0100 Subject: [PATCH] Avoid failover during re-partition joins --- .../distributed/planner/multi_physical_planner.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/backend/distributed/planner/multi_physical_planner.c b/src/backend/distributed/planner/multi_physical_planner.c index d95040049..d993c9071 100644 --- a/src/backend/distributed/planner/multi_physical_planner.c +++ b/src/backend/distributed/planner/multi_physical_planner.c @@ -5398,6 +5398,16 @@ ActiveShardPlacementLists(List *taskList) /* sort shard placements by their creation time */ activeShardPlacementList = SortList(activeShardPlacementList, CompareShardPlacements); + + /* + * The executor currently does not know how to handle map task failover, + * so we generate at most 1 placement. + */ + if (task->taskType == MAP_TASK) + { + activeShardPlacementList = list_make1(linitial(activeShardPlacementList)); + } + shardPlacementLists = lappend(shardPlacementLists, activeShardPlacementList); }