Allow intermediate results to be used in parallel workers

pull/1879/head
Marco Slot 2017-12-15 20:08:53 +01:00
parent 704828b237
commit af201a2f6d
1 changed files with 9 additions and 7 deletions

View File

@ -482,25 +482,27 @@ UnlockBackendSharedMemory(void)
/*
* GetCurrentDistributedTransactionId reads the backend's distributed transaction id and
* returns a copy of it.
*
* When called from a parallel worker, it uses the parent's transaction ID per the logic
* in GetBackendDataForProc.
*/
DistributedTransactionId *
GetCurrentDistributedTransactionId(void)
{
DistributedTransactionId *currentDistributedTransactionId =
(DistributedTransactionId *) palloc(sizeof(DistributedTransactionId));
BackendData backendData;
SpinLockAcquire(&MyBackendData->mutex);
GetBackendDataForProc(MyProc, &backendData);
currentDistributedTransactionId->initiatorNodeIdentifier =
MyBackendData->transactionId.initiatorNodeIdentifier;
backendData.transactionId.initiatorNodeIdentifier;
currentDistributedTransactionId->transactionOriginator =
MyBackendData->transactionId.transactionOriginator;
backendData.transactionId.transactionOriginator;
currentDistributedTransactionId->transactionNumber =
MyBackendData->transactionId.transactionNumber;
backendData.transactionId.transactionNumber;
currentDistributedTransactionId->timestamp =
MyBackendData->transactionId.timestamp;
SpinLockRelease(&MyBackendData->mutex);
backendData.transactionId.timestamp;
return currentDistributedTransactionId;
}