From 3cd9aa655ade143f715c75744f680952f186b6df Mon Sep 17 00:00:00 2001 From: Marco Slot Date: Mon, 25 Oct 2021 12:18:43 +0200 Subject: [PATCH] Stop using citus.binary_worker_copy_format --- .../planner/multi_physical_planner.c | 17 +++++++++-------- src/backend/distributed/shared_library_init.c | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/backend/distributed/planner/multi_physical_planner.c b/src/backend/distributed/planner/multi_physical_planner.c index 9232447d8..d95040049 100644 --- a/src/backend/distributed/planner/multi_physical_planner.c +++ b/src/backend/distributed/planner/multi_physical_planner.c @@ -218,7 +218,7 @@ static void AssignDataFetchDependencies(List *taskList); static uint32 TaskListHighestTaskId(List *taskList); static List * MapTaskList(MapMergeJob *mapMergeJob, List *filterTaskList); static StringInfo CreateMapQueryString(MapMergeJob *mapMergeJob, Task *filterTask, - uint32 partitionColumnIndex); + uint32 partitionColumnIndex, bool useBinaryFormat); static char * PartitionResultNamePrefix(uint64 jobId, int32 taskId); static char * PartitionResultName(uint64 jobId, uint32 taskId, uint32 partitionId); static ShardInterval ** RangeIntervalArrayWithNullBucket(ShardInterval **intervalArray, @@ -4177,8 +4177,8 @@ FragmentAlias(RangeTblEntry *rangeTableEntry, RangeTableFragment *fragment) List *resultNameList = FetchTaskResultNameList(mapOutputFetchTaskList); List *mapJobTargetList = mergeTask->mapJobTargetList; - /* TODO: determine binary safety automatically */ - bool useBinaryFormat = BinaryWorkerCopyFormat; + /* determine whether all types have binary input/output functions */ + bool useBinaryFormat = CanUseBinaryCopyFormatForTargetList(mapJobTargetList); /* generate the query on the intermediate result */ Query *fragmentSetQuery = BuildReadIntermediateResultsArrayQuery(mapJobTargetList, @@ -4347,11 +4347,15 @@ MapTaskList(MapMergeJob *mapMergeJob, List *filterTaskList) filterQuery->targetList); } + /* determine whether all types have binary input/output functions */ + bool useBinaryFormat = CanUseBinaryCopyFormatForTargetList(filterQuery->targetList); + foreach(filterTaskCell, filterTaskList) { Task *filterTask = (Task *) lfirst(filterTaskCell); StringInfo mapQueryString = CreateMapQueryString(mapMergeJob, filterTask, - partitionColumnResNo); + partitionColumnResNo, + useBinaryFormat); /* convert filter query task into map task */ Task *mapTask = filterTask; @@ -4398,7 +4402,7 @@ PartitionColumnIndex(Var *targetVar, List *targetList) */ static StringInfo CreateMapQueryString(MapMergeJob *mapMergeJob, Task *filterTask, - uint32 partitionColumnIndex) + uint32 partitionColumnIndex, bool useBinaryFormat) { uint64 jobId = filterTask->jobId; uint32 taskId = filterTask->taskId; @@ -4449,9 +4453,6 @@ CreateMapQueryString(MapMergeJob *mapMergeJob, Task *filterTask, char *partitionMethodString = partitionType == RANGE_PARTITION_TYPE ? "range" : "hash"; - /* TODO: determine binary safety automatically */ - bool useBinaryFormat = BinaryWorkerCopyFormat; - /* * Non-partition columns can easily contain NULL values, so we allow NULL * values in the column by which we re-partition. They will end up in the diff --git a/src/backend/distributed/shared_library_init.c b/src/backend/distributed/shared_library_init.c index a3a6cb3c7..e6b98a843 100644 --- a/src/backend/distributed/shared_library_init.c +++ b/src/backend/distributed/shared_library_init.c @@ -603,7 +603,7 @@ RegisterCitusConfigVariables(void) false, #endif PGC_SIGHUP, - GUC_STANDARD, + GUC_NO_SHOW_ALL, NULL, NULL, NULL); DefineCustomBoolVariable(