From 61a6b846b96ebb6ba68e7a5e398b5606b3c532ec Mon Sep 17 00:00:00 2001 From: Brian Cloutier Date: Fri, 3 Nov 2017 17:51:42 -0700 Subject: [PATCH] Refactor: use a temporary timestamp variable It's against our coding convention to call functions inside parameter lists; when single-stepping with a debugger it's difficult to determine what the function returned. That wouldn't be good enough reason to change this code but while porting Citus to Windows I ran into this line of code. assign_distributed_transaction_id was called with a weird timestamp and I wasn't able to find the problem without first making this change. --- src/backend/distributed/transaction/remote_transaction.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/backend/distributed/transaction/remote_transaction.c b/src/backend/distributed/transaction/remote_transaction.c index 1bc93cd1d..6b326b0c4 100644 --- a/src/backend/distributed/transaction/remote_transaction.c +++ b/src/backend/distributed/transaction/remote_transaction.c @@ -62,6 +62,7 @@ StartRemoteTransactionBegin(struct MultiConnection *connection) DistributedTransactionId *distributedTransactionId = NULL; ListCell *subIdCell = NULL; List *activeSubXacts = NIL; + const char *timestamp = NULL; Assert(transaction->transactionState == REMOTE_TRANS_INVALID); @@ -84,12 +85,13 @@ StartRemoteTransactionBegin(struct MultiConnection *connection) * seperate roundtrips for these two statements. */ distributedTransactionId = GetCurrentDistributedTransactionId(); + timestamp = timestamptz_to_str(distributedTransactionId->timestamp); appendStringInfo(beginAndSetDistributedTransactionId, "SELECT assign_distributed_transaction_id(%d, " UINT64_FORMAT ", '%s');", distributedTransactionId->initiatorNodeIdentifier, distributedTransactionId->transactionNumber, - timestamptz_to_str(distributedTransactionId->timestamp)); + timestamp); /* append in-progress savepoints for this transaction */ activeSubXacts = ActiveSubXacts();