summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPavan Deolasee2015-01-09 06:43:17 +0000
committerPavan Deolasee2015-04-15 05:49:15 +0000
commit266b8aaa84555edfb62b857b0d797011917bc523 (patch)
treee2e4a4ebc2e6a46a53daaae1ee22d885481ffc3d /src
parent9163ee94c0f9c9b0f1c20e08b89731133cd1ca8a (diff)
Allow direct datanode sessions to grab an XID from the GTM directly.
Earlier we had tightened this so that all datanode sessions must get XID from coordinators. But this creates issues for direct client connections which are required, for example, to take a pg_dump of the datanode. So relax this a bit and only force coordinator supplied XID for coordinator originated connections
Diffstat (limited to 'src')
-rw-r--r--src/backend/access/transam/varsup.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/backend/access/transam/varsup.c b/src/backend/access/transam/varsup.c
index 9ec73a755f..77e33af1ee 100644
--- a/src/backend/access/transam/varsup.c
+++ b/src/backend/access/transam/varsup.c
@@ -169,11 +169,12 @@ GetNewTransactionId(bool isSubXact)
* valid XID/snapshot for catalog access
*
*/
- if ((IS_PGXC_COORDINATOR && !IsConnFromCoord()) ||
+ if (!useLocalXid &&
+ (!IsConnFromCoord() ||
IsAutoVacuumWorkerProcess() ||
IsAutoVacuumLauncherProcess() ||
GetForceXidFromGTM() ||
- (IsInitProcessingMode() && IsPostmasterEnvironment))
+ (IsInitProcessingMode() && IsPostmasterEnvironment)))
{
if (MyPgXact->vacuumFlags & PROC_IN_VACUUM)
next_xid = xid = (TransactionId) BeginTranAutovacuumGTM();