From 97ba7bf2eb6268e4eebe04cbd9aa450b702df7dd Mon Sep 17 00:00:00 2001 From: Onder Kalaci Date: Mon, 20 Aug 2018 17:50:38 +0300 Subject: [PATCH] Add the option to skip the node that is executing the node --- .../transaction/worker_transaction.c | 20 +++++++++++++++++-- src/include/distributed/worker_transaction.h | 1 + 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/backend/distributed/transaction/worker_transaction.c b/src/backend/distributed/transaction/worker_transaction.c index e1f3224cb..cbe146e08 100644 --- a/src/backend/distributed/transaction/worker_transaction.c +++ b/src/backend/distributed/transaction/worker_transaction.c @@ -117,7 +117,15 @@ SendBareCommandListToWorkers(TargetWorkerSet targetWorkerSet, List *commandList) int nodePort = workerNode->workerPort; int connectionFlags = FORCE_NEW_CONNECTION; - if (targetWorkerSet == WORKERS_WITH_METADATA && !workerNode->hasMetadata) + if ((targetWorkerSet == WORKERS_WITH_METADATA || + targetWorkerSet == WORKERS_WITH_METADATA_EXCLUDE_CURRENT_WORKER) && + !workerNode->hasMetadata) + { + continue; + } + + if (targetWorkerSet == WORKERS_WITH_METADATA_EXCLUDE_CURRENT_WORKER && + workerNode->groupId == GetLocalGroupId()) { continue; } @@ -169,7 +177,15 @@ SendCommandToWorkersParams(TargetWorkerSet targetWorkerSet, char *command, MultiConnection *connection = NULL; int connectionFlags = 0; - if (targetWorkerSet == WORKERS_WITH_METADATA && !workerNode->hasMetadata) + if ((targetWorkerSet == WORKERS_WITH_METADATA || + targetWorkerSet == WORKERS_WITH_METADATA_EXCLUDE_CURRENT_WORKER) && + !workerNode->hasMetadata) + { + continue; + } + + if (targetWorkerSet == WORKERS_WITH_METADATA_EXCLUDE_CURRENT_WORKER && + workerNode->groupId == GetLocalGroupId()) { continue; } diff --git a/src/include/distributed/worker_transaction.h b/src/include/distributed/worker_transaction.h index 4c76f77ac..a41b1326f 100644 --- a/src/include/distributed/worker_transaction.h +++ b/src/include/distributed/worker_transaction.h @@ -22,6 +22,7 @@ typedef enum TargetWorkerSet { WORKERS_WITH_METADATA, + WORKERS_WITH_METADATA_EXCLUDE_CURRENT_WORKER, ALL_WORKERS } TargetWorkerSet;