diff --git a/src/backend/distributed/executor/multi_client_executor.c b/src/backend/distributed/executor/multi_client_executor.c index f5f0df1cc..da852d5c1 100644 --- a/src/backend/distributed/executor/multi_client_executor.c +++ b/src/backend/distributed/executor/multi_client_executor.c @@ -883,7 +883,7 @@ MultiClientWait(WaitInfo *waitInfo) } else if (rc == 0) { - ereport(DEBUG2, + ereport(DEBUG5, (errmsg("waiting for activity on tasks took longer than %ld ms", (long) RemoteTaskCheckInterval * 10))); } diff --git a/src/backend/distributed/executor/multi_task_tracker_executor.c b/src/backend/distributed/executor/multi_task_tracker_executor.c index e08657e98..8bdcdacd3 100644 --- a/src/backend/distributed/executor/multi_task_tracker_executor.c +++ b/src/backend/distributed/executor/multi_task_tracker_executor.c @@ -519,6 +519,15 @@ TaskHashCreate(uint32 taskHashSize) int hashFlags = 0; HTAB *taskHash = NULL; + /* + * Can't create a hashtable of size 0. Normally that shouldn't happen, but + * shard pruning currently can lead to this (Job with 0 Tasks). See #833. + */ + if (taskHashSize == 0) + { + taskHashSize = 2; + } + memset(&info, 0, sizeof(info)); info.keysize = sizeof(TaskMapKey); info.entrysize = sizeof(TaskMapEntry); diff --git a/src/backend/distributed/planner/multi_master_planner.c b/src/backend/distributed/planner/multi_master_planner.c index 05a522e6e..5efd68fc5 100644 --- a/src/backend/distributed/planner/multi_master_planner.c +++ b/src/backend/distributed/planner/multi_master_planner.c @@ -134,6 +134,7 @@ BuildAggregatePlan(Query *masterQuery, Plan *subPlan) Assert(masterQuery->hasAggs || masterQuery->groupClause); aggregateTargetList = masterQuery->targetList; + memset(&aggregateCosts, 0, sizeof(AggClauseCosts)); count_agg_clauses(NULL, (Node *) aggregateTargetList, &aggregateCosts); /*