mirror of https://github.com/citusdata/citus.git
Allow intermediate results to be used in parallel workers
parent
704828b237
commit
af201a2f6d
|
@ -482,25 +482,27 @@ UnlockBackendSharedMemory(void)
|
||||||
/*
|
/*
|
||||||
* GetCurrentDistributedTransactionId reads the backend's distributed transaction id and
|
* GetCurrentDistributedTransactionId reads the backend's distributed transaction id and
|
||||||
* returns a copy of it.
|
* returns a copy of it.
|
||||||
|
*
|
||||||
|
* When called from a parallel worker, it uses the parent's transaction ID per the logic
|
||||||
|
* in GetBackendDataForProc.
|
||||||
*/
|
*/
|
||||||
DistributedTransactionId *
|
DistributedTransactionId *
|
||||||
GetCurrentDistributedTransactionId(void)
|
GetCurrentDistributedTransactionId(void)
|
||||||
{
|
{
|
||||||
DistributedTransactionId *currentDistributedTransactionId =
|
DistributedTransactionId *currentDistributedTransactionId =
|
||||||
(DistributedTransactionId *) palloc(sizeof(DistributedTransactionId));
|
(DistributedTransactionId *) palloc(sizeof(DistributedTransactionId));
|
||||||
|
BackendData backendData;
|
||||||
|
|
||||||
SpinLockAcquire(&MyBackendData->mutex);
|
GetBackendDataForProc(MyProc, &backendData);
|
||||||
|
|
||||||
currentDistributedTransactionId->initiatorNodeIdentifier =
|
currentDistributedTransactionId->initiatorNodeIdentifier =
|
||||||
MyBackendData->transactionId.initiatorNodeIdentifier;
|
backendData.transactionId.initiatorNodeIdentifier;
|
||||||
currentDistributedTransactionId->transactionOriginator =
|
currentDistributedTransactionId->transactionOriginator =
|
||||||
MyBackendData->transactionId.transactionOriginator;
|
backendData.transactionId.transactionOriginator;
|
||||||
currentDistributedTransactionId->transactionNumber =
|
currentDistributedTransactionId->transactionNumber =
|
||||||
MyBackendData->transactionId.transactionNumber;
|
backendData.transactionId.transactionNumber;
|
||||||
currentDistributedTransactionId->timestamp =
|
currentDistributedTransactionId->timestamp =
|
||||||
MyBackendData->transactionId.timestamp;
|
backendData.transactionId.timestamp;
|
||||||
|
|
||||||
SpinLockRelease(&MyBackendData->mutex);
|
|
||||||
|
|
||||||
return currentDistributedTransactionId;
|
return currentDistributedTransactionId;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue