From 6f4886cd110ce388b87d2c8bbf2d2bde5f7e7d23 Mon Sep 17 00:00:00 2001 From: Jason Petersen Date: Mon, 13 Mar 2017 15:48:51 -0600 Subject: [PATCH] Revert "Remove unused SendCommandToWorker" This reverts commit c8c308c109f397f7e898a3a9abb34bd9d12cdd91. --- .../transaction/worker_transaction.c | 23 +++++++++++++++++++ src/include/distributed/worker_transaction.h | 1 + 2 files changed, 24 insertions(+) diff --git a/src/backend/distributed/transaction/worker_transaction.c b/src/backend/distributed/transaction/worker_transaction.c index 00e6788e2..64f3f6460 100644 --- a/src/backend/distributed/transaction/worker_transaction.c +++ b/src/backend/distributed/transaction/worker_transaction.c @@ -32,6 +32,29 @@ #include "utils/memutils.h" +/* + * SendCommandToWorker sends a command to a particular worker as part of the + * 2PC. + */ +void +SendCommandToWorker(char *nodeName, int32 nodePort, char *command) +{ + MultiConnection *transactionConnection = NULL; + char *nodeUser = CitusExtensionOwnerName(); + int connectionFlags = 0; + + BeginOrContinueCoordinatedTransaction(); + CoordinatedTransactionUse2PC(); + + transactionConnection = GetNodeUserDatabaseConnection(connectionFlags, nodeName, + nodePort, nodeUser, NULL); + + MarkRemoteTransactionCritical(transactionConnection); + RemoteTransactionBeginIfNecessary(transactionConnection); + ExecuteCriticalRemoteCommand(transactionConnection, command); +} + + /* * SendCommandToWorkers sends a command to all workers in * parallel. Commands are committed on the workers when the local diff --git a/src/include/distributed/worker_transaction.h b/src/include/distributed/worker_transaction.h index 4059e96af..871c1ac4c 100644 --- a/src/include/distributed/worker_transaction.h +++ b/src/include/distributed/worker_transaction.h @@ -28,6 +28,7 @@ typedef enum TargetWorkerSet /* Functions declarations for worker transactions */ extern List * GetWorkerTransactions(void); +extern void SendCommandToWorker(char *nodeName, int32 nodePort, char *command); extern void SendCommandToWorkers(TargetWorkerSet targetWorkerSet, char *command); extern void SendCommandToWorkersParams(TargetWorkerSet targetWorkerSet, char *command, int parameterCount, const Oid *parameterTypes,