summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavan Deolasee2015-05-29 07:59:01 +0000
committerPavan Deolasee2015-05-29 07:59:01 +0000
commit8f541f3d31dbc0b5646714a5eae576377e1511b1 (patch)
tree9a1850eba2c0901424dec6aaa7dd439fb6ba3f3d
parentf053da76535c973d3c381ecb27d4aec7d553ddd9 (diff)
Simplify GTM protocol a bit by only using GXID for transaction identification
When the code was first written, it was assumed that client could directly use index (handle) into an array to quickly identify a transaction. But that was never used and was unnecessarily causing confusion. Remove that for simplification
-rw-r--r--src/gtm/client/gtm_client.c22
-rw-r--r--src/gtm/main/gtm_snap.c62
-rw-r--r--src/gtm/main/gtm_txn.c213
-rw-r--r--src/gtm/proxy/proxy_main.c57
-rw-r--r--src/include/gtm/gtm_client.h2
-rw-r--r--src/include/gtm/gtm_proxy.h4
6 files changed, 81 insertions, 279 deletions
diff --git a/src/gtm/client/gtm_client.c b/src/gtm/client/gtm_client.c
index 13c08feb37..382f6336c7 100644
--- a/src/gtm/client/gtm_client.c
+++ b/src/gtm/client/gtm_client.c
@@ -619,7 +619,6 @@ commit_transaction_internal(GTM_Conn *conn, GlobalTransactionId gxid, bool is_ba
/* Start the message. */
if (gtmpqPutMsgStart('C', true, conn) ||
gtmpqPutInt(is_backup ? MSG_BKUP_TXN_COMMIT : MSG_TXN_COMMIT, sizeof (GTM_MessageType), conn) ||
- gtmpqPutc(true, conn) ||
gtmpqPutnchar((char *)&gxid, sizeof (GlobalTransactionId), conn))
goto send_failed;
@@ -679,9 +678,7 @@ commit_prepared_transaction_internal(GTM_Conn *conn, GlobalTransactionId gxid, G
/* Start the message */
if (gtmpqPutMsgStart('C', true, conn) ||
gtmpqPutInt(is_backup ? MSG_BKUP_TXN_COMMIT_PREPARED : MSG_TXN_COMMIT_PREPARED, sizeof (GTM_MessageType), conn) ||
- gtmpqPutc(true, conn) ||
gtmpqPutnchar((char *)&gxid, sizeof (GlobalTransactionId), conn) ||
- gtmpqPutc(true, conn) ||
gtmpqPutnchar((char *)&prepared_gxid, sizeof (GlobalTransactionId), conn))
goto send_failed;
@@ -741,7 +738,6 @@ abort_transaction_internal(GTM_Conn *conn, GlobalTransactionId gxid, bool is_bac
/* Start the message. */
if (gtmpqPutMsgStart('C', true, conn) ||
gtmpqPutInt(is_backup ? MSG_BKUP_TXN_ROLLBACK : MSG_TXN_ROLLBACK, sizeof (GTM_MessageType), conn) ||
- gtmpqPutc(true, conn) ||
gtmpqPutnchar((char *)&gxid, sizeof (GlobalTransactionId), conn))
goto send_failed;
@@ -809,7 +805,6 @@ start_prepared_transaction_internal(GTM_Conn *conn, GlobalTransactionId gxid, ch
/* Start the message. */
if (gtmpqPutMsgStart('C', true, conn) ||
gtmpqPutInt(is_backup ? MSG_BKUP_TXN_START_PREPARED : MSG_TXN_START_PREPARED, sizeof (GTM_MessageType), conn) ||
- gtmpqPutc(true, conn) ||
gtmpqPutnchar((char *)&gxid, sizeof (GlobalTransactionId), conn) ||
/* Send also GID for an explicit prepared transaction */
gtmpqPutInt(strlen(gid), sizeof (GTM_StrLen), conn) ||
@@ -873,7 +868,6 @@ prepare_transaction_internal(GTM_Conn *conn, GlobalTransactionId gxid, bool is_b
/* Start the message. */
if (gtmpqPutMsgStart('C', true, conn) ||
gtmpqPutInt(is_backup ? MSG_BKUP_TXN_PREPARE : MSG_TXN_PREPARE, sizeof (GTM_MessageType), conn) ||
- gtmpqPutc(true, conn) ||
gtmpqPutnchar((char *)&gxid, sizeof (GlobalTransactionId), conn))
goto send_failed;
@@ -979,7 +973,6 @@ get_snapshot(GTM_Conn *conn, GlobalTransactionId gxid, bool canbe_grouped)
if (gtmpqPutMsgStart('C', true, conn) ||
gtmpqPutInt(MSG_SNAPSHOT_GET, sizeof (GTM_MessageType), conn) ||
gtmpqPutc(canbe_grouped, conn) ||
- gtmpqPutc(true, conn) ||
gtmpqPutnchar((char *)&gxid, sizeof (GlobalTransactionId), conn))
goto send_failed;
@@ -2030,7 +2023,7 @@ send_failed:
}
int
-bkup_commit_transaction_multi(GTM_Conn *conn, int txn_count, GTM_TransactionHandle *txn)
+bkup_commit_transaction_multi(GTM_Conn *conn, int txn_count, GlobalTransactionId *gxid)
{
int ii;
@@ -2044,8 +2037,8 @@ bkup_commit_transaction_multi(GTM_Conn *conn, int txn_count, GTM_TransactionHand
for (ii = 0; ii < txn_count; ii++)
{
if (gtmpqPutc(false, conn) ||
- gtmpqPutnchar((char *)&txn[ii],
- sizeof (GTM_TransactionHandle), conn))
+ gtmpqPutnchar((char *)&gxid[ii],
+ sizeof (GlobalTransactionId), conn))
goto send_failed;
}
@@ -2082,8 +2075,7 @@ commit_transaction_multi(GTM_Conn *conn, int txn_count, GlobalTransactionId *gxi
for (i = 0; i < txn_count; i++)
{
- if (gtmpqPutc(true, conn) ||
- gtmpqPutnchar((char *)&gxid[i],
+ if (gtmpqPutnchar((char *)&gxid[i],
sizeof (GlobalTransactionId), conn))
goto send_failed;
}
@@ -2153,8 +2145,7 @@ abort_transaction_multi_internal(GTM_Conn *conn, int txn_count, GlobalTransactio
for (i = 0; i < txn_count; i++)
{
- if (gtmpqPutc(true, conn) ||
- gtmpqPutnchar((char *)&gxid[i],
+ if (gtmpqPutnchar((char *)&gxid[i],
sizeof (GlobalTransactionId), conn))
goto send_failed;
}
@@ -2214,8 +2205,7 @@ snapshot_get_multi(GTM_Conn *conn, int txn_count, GlobalTransactionId *gxid,
for (i = 0; i < txn_count; i++)
{
- if (gtmpqPutc(true, conn) ||
- gtmpqPutnchar((char *)&gxid[i],
+ if (gtmpqPutnchar((char *)&gxid[i],
sizeof (GlobalTransactionId), conn))
goto send_failed;
}
diff --git a/src/gtm/main/gtm_snap.c b/src/gtm/main/gtm_snap.c
index 3ecd0d6dcc..fa7e3ccc2d 100644
--- a/src/gtm/main/gtm_snap.c
+++ b/src/gtm/main/gtm_snap.c
@@ -279,11 +279,11 @@ ProcessGetSnapshotCommand(Port *myport, StringInfo message, bool get_gxid)
StringInfoData buf;
GTM_TransactionHandle txn;
GlobalTransactionId gxid;
- int isgxid = 0;
GTM_Snapshot snapshot;
MemoryContext oldContext;
int status;
int txn_count = 1;
+ const char *data = NULL;
/*
* Here we consume a byte which is a boolean to determine if snapshot can
@@ -292,35 +292,19 @@ ProcessGetSnapshotCommand(Port *myport, StringInfo message, bool get_gxid)
*/
pq_getmsgbyte(message);
- isgxid = pq_getmsgbyte(message);
+ data = pq_getmsgbytes(message, sizeof (gxid));
+ if (data == NULL)
+ ereport(ERROR,
+ (EPROTO,
+ errmsg("Message does not contain valid GXID")));
+ memcpy(&gxid, data, sizeof(gxid));
+ elog(INFO, "Received transaction ID %d for snapshot obtention", gxid);
+ txn = GTM_GXIDToHandle(gxid);
- if (isgxid)
- {
- const char *data = NULL;
- Assert(!get_gxid);
- data = pq_getmsgbytes(message, sizeof (gxid));
- if (data == NULL)
- ereport(ERROR,
- (EPROTO,
- errmsg("Message does not contain valid GXID")));
- memcpy(&gxid, data, sizeof(gxid));
- elog(INFO, "Received transaction ID %d for snapshot obtention", gxid);
- txn = GTM_GXIDToHandle(gxid);
- }
- else
- {
- const char *data = pq_getmsgbytes(message, sizeof (txn));
- if (data == NULL)
- ereport(ERROR,
- (EPROTO,
- errmsg("Message does not contain valid Transaction Handle")));
- memcpy(&txn, data, sizeof (txn));
- }
pq_getmsgend(message);
if (get_gxid)
{
- Assert(!isgxid);
gxid = GTM_GetGlobalTransactionId(txn);
if (gxid == InvalidGlobalTransactionId)
ereport(ERROR,
@@ -374,7 +358,6 @@ ProcessGetSnapshotCommandMulti(Port *myport, StringInfo message)
StringInfoData buf;
GTM_TransactionHandle txn[GTM_MAX_GLOBAL_TRANSACTIONS];
GlobalTransactionId gxid[GTM_MAX_GLOBAL_TRANSACTIONS];
- int isgxid[GTM_MAX_GLOBAL_TRANSACTIONS];
GTM_Snapshot snapshot;
MemoryContext oldContext;
int txn_count;
@@ -385,26 +368,13 @@ ProcessGetSnapshotCommandMulti(Port *myport, StringInfo message)
for (ii = 0; ii < txn_count; ii++)
{
- isgxid[ii] = pq_getmsgbyte(message);
- if (isgxid[ii])
- {
- const char *data = pq_getmsgbytes(message, sizeof (gxid[ii]));
- if (data == NULL)
- ereport(ERROR,
- (EPROTO,
- errmsg("Message does not contain valid GXID")));
- memcpy(&gxid[ii], data, sizeof (gxid[ii]));
- txn[ii] = GTM_GXIDToHandle(gxid[ii]);
- }
- else
- {
- const char *data = pq_getmsgbytes(message, sizeof (txn[ii]));
- if (data == NULL)
- ereport(ERROR,
- (EPROTO,
- errmsg("Message does not contain valid Transaction Handle")));
- memcpy(&txn[ii], data, sizeof (txn[ii]));
- }
+ const char *data = pq_getmsgbytes(message, sizeof (gxid[ii]));
+ if (data == NULL)
+ ereport(ERROR,
+ (EPROTO,
+ errmsg("Message does not contain valid GXID")));
+ memcpy(&gxid[ii], data, sizeof (gxid[ii]));
+ txn[ii] = GTM_GXIDToHandle(gxid[ii]);
}
pq_getmsgend(message);
diff --git a/src/gtm/main/gtm_txn.c b/src/gtm/main/gtm_txn.c
index 065a391321..fc09c4e5dc 100644
--- a/src/gtm/main/gtm_txn.c
+++ b/src/gtm/main/gtm_txn.c
@@ -1757,31 +1757,16 @@ ProcessCommitTransactionCommand(Port *myport, StringInfo message, bool is_backup
StringInfoData buf;
GTM_TransactionHandle txn;
GlobalTransactionId gxid;
- int isgxid = 0;
MemoryContext oldContext;
int status = STATUS_OK;
+ const char *data = pq_getmsgbytes(message, sizeof (gxid));
- isgxid = pq_getmsgbyte(message);
-
- if (isgxid)
- {
- const char *data = pq_getmsgbytes(message, sizeof (gxid));
- if (data == NULL)
- ereport(ERROR,
- (EPROTO,
- errmsg("Message does not contain valid GXID")));
- memcpy(&gxid, data, sizeof (gxid));
- txn = GTM_GXIDToHandle(gxid);
- }
- else
- {
- const char *data = pq_getmsgbytes(message, sizeof (txn));
- if (data == NULL)
- ereport(ERROR,
- (EPROTO,
- errmsg("Message does not contain valid Transaction Handle")));
- memcpy(&txn, data, sizeof (txn));
- }
+ if (data == NULL)
+ ereport(ERROR,
+ (EPROTO,
+ errmsg("Message does not contain valid GXID")));
+ memcpy(&gxid, data, sizeof (gxid));
+ txn = GTM_GXIDToHandle(gxid);
pq_getmsgend(message);
@@ -1862,33 +1847,18 @@ ProcessCommitPreparedTransactionCommand(Port *myport, StringInfo message, bool i
GlobalTransactionId gxid[txn_count];
MemoryContext oldContext;
int status[txn_count];
- int isgxid[txn_count];
int ii;
for (ii = 0; ii < txn_count; ii++)
{
- isgxid[ii] = pq_getmsgbyte(message);
- if (isgxid[ii])
- {
- const char *data = pq_getmsgbytes(message, sizeof (gxid[ii]));
- if (data == NULL)
- ereport(ERROR,
- (EPROTO,
- errmsg("Message does not contain valid GXID")));
- memcpy(&gxid[ii], data, sizeof (gxid[ii]));
- txn[ii] = GTM_GXIDToHandle(gxid[ii]);
- elog(DEBUG1, "ProcessCommitTransactionCommandMulti: gxid(%u), handle(%u)", gxid[ii], txn[ii]);
- }
- else
- {
- const char *data = pq_getmsgbytes(message, sizeof (txn[ii]));
- if (data == NULL)
- ereport(ERROR,
- (EPROTO,
- errmsg("Message does not contain valid Transaction Handle")));
- memcpy(&txn[ii], data, sizeof (txn[ii]));
- elog(DEBUG1, "ProcessCommitTransactionCommandMulti: handle(%u)", txn[ii]);
- }
+ const char *data = pq_getmsgbytes(message, sizeof (gxid[ii]));
+ if (data == NULL)
+ ereport(ERROR,
+ (EPROTO,
+ errmsg("Message does not contain valid GXID")));
+ memcpy(&gxid[ii], data, sizeof (gxid[ii]));
+ txn[ii] = GTM_GXIDToHandle(gxid[ii]);
+ elog(DEBUG1, "ProcessCommitTransactionCommandMulti: gxid(%u), handle(%u)", gxid[ii], txn[ii]);
}
pq_getmsgend(message);
@@ -2154,31 +2124,16 @@ ProcessRollbackTransactionCommand(Port *myport, StringInfo message, bool is_back
StringInfoData buf;
GTM_TransactionHandle txn;
GlobalTransactionId gxid;
- int isgxid = 0;
MemoryContext oldContext;
int status = STATUS_OK;
+ const char *data = pq_getmsgbytes(message, sizeof (gxid));
- isgxid = pq_getmsgbyte(message);
-
- if (isgxid)
- {
- const char *data = pq_getmsgbytes(message, sizeof (gxid));
- if (data == NULL)
- ereport(ERROR,
- (EPROTO,
- errmsg("Message does not contain valid GXID")));
- memcpy(&gxid, data, sizeof (gxid));
- txn = GTM_GXIDToHandle(gxid);
- }
- else
- {
- const char *data = pq_getmsgbytes(message, sizeof (txn));
- if (data == NULL)
- ereport(ERROR,
- (EPROTO,
- errmsg("Message does not contain valid Transaction Handle")));
- memcpy(&txn, data, sizeof (txn));
- }
+ if (data == NULL)
+ ereport(ERROR,
+ (EPROTO,
+ errmsg("Message does not contain valid GXID")));
+ memcpy(&gxid, data, sizeof (gxid));
+ txn = GTM_GXIDToHandle(gxid);
pq_getmsgend(message);
@@ -2252,7 +2207,6 @@ ProcessCommitTransactionCommandMulti(Port *myport, StringInfo message, bool is_b
StringInfoData buf;
GTM_TransactionHandle txn[GTM_MAX_GLOBAL_TRANSACTIONS];
GlobalTransactionId gxid[GTM_MAX_GLOBAL_TRANSACTIONS];
- int isgxid[GTM_MAX_GLOBAL_TRANSACTIONS];
MemoryContext oldContext;
int status[GTM_MAX_GLOBAL_TRANSACTIONS];
int txn_count;
@@ -2262,28 +2216,14 @@ ProcessCommitTransactionCommandMulti(Port *myport, StringInfo message, bool is_b
for (ii = 0; ii < txn_count; ii++)
{
- isgxid[ii] = pq_getmsgbyte(message);
- if (isgxid[ii])
- {
- const char *data = pq_getmsgbytes(message, sizeof (gxid[ii]));
- if (data == NULL)
- ereport(ERROR,
- (EPROTO,
- errmsg("Message does not contain valid GXID")));
- memcpy(&gxid[ii], data, sizeof (gxid[ii]));
- txn[ii] = GTM_GXIDToHandle(gxid[ii]);
- elog(DEBUG1, "ProcessCommitTransactionCommandMulti: gxid(%u), handle(%u)", gxid[ii], txn[ii]);
- }
- else
- {
- const char *data = pq_getmsgbytes(message, sizeof (txn[ii]));
- if (data == NULL)
- ereport(ERROR,
- (EPROTO,
- errmsg("Message does not contain valid Transaction Handle")));
- memcpy(&txn[ii], data, sizeof (txn[ii]));
- elog(DEBUG1, "ProcessCommitTransactionCommandMulti: handle(%u)", txn[ii]);
- }
+ const char *data = pq_getmsgbytes(message, sizeof (gxid[ii]));
+ if (data == NULL)
+ ereport(ERROR,
+ (EPROTO,
+ errmsg("Message does not contain valid GXID")));
+ memcpy(&gxid[ii], data, sizeof (gxid[ii]));
+ txn[ii] = GTM_GXIDToHandle(gxid[ii]);
+ elog(DEBUG1, "ProcessCommitTransactionCommandMulti: gxid(%u), handle(%u)", gxid[ii], txn[ii]);
}
pq_getmsgend(message);
@@ -2310,7 +2250,9 @@ ProcessCommitTransactionCommandMulti(Port *myport, StringInfo message, bool is_b
GetMyThreadInfo->thr_conn->standby);
retry:
- _rc = bkup_commit_transaction_multi(GetMyThreadInfo->thr_conn->standby, txn_count, txn);
+ _rc =
+ bkup_commit_transaction_multi(GetMyThreadInfo->thr_conn->standby,
+ txn_count, gxid);
if (gtm_standby_check_communication_error(&count, oldconn))
goto retry;
@@ -2355,7 +2297,6 @@ ProcessRollbackTransactionCommandMulti(Port *myport, StringInfo message, bool is
StringInfoData buf;
GTM_TransactionHandle txn[GTM_MAX_GLOBAL_TRANSACTIONS];
GlobalTransactionId gxid[GTM_MAX_GLOBAL_TRANSACTIONS];
- int isgxid[GTM_MAX_GLOBAL_TRANSACTIONS];
MemoryContext oldContext;
int status[GTM_MAX_GLOBAL_TRANSACTIONS];
int txn_count;
@@ -2365,28 +2306,14 @@ ProcessRollbackTransactionCommandMulti(Port *myport, StringInfo message, bool is
for (ii = 0; ii < txn_count; ii++)
{
- isgxid[ii] = pq_getmsgbyte(message);
- if (isgxid[ii])
- {
- const char *data = pq_getmsgbytes(message, sizeof (gxid[ii]));
- if (data == NULL)
- ereport(ERROR,
- (EPROTO,
- errmsg("Message does not contain valid GXID")));
- memcpy(&gxid[ii], data, sizeof (gxid[ii]));
- txn[ii] = GTM_GXIDToHandle(gxid[ii]);
- elog(DEBUG1, "ProcessRollbackTransactionCommandMulti: gxid(%u), handle(%u)", gxid[ii], txn[ii]);
- }
- else
- {
- const char *data = pq_getmsgbytes(message, sizeof (txn[ii]));
- if (data == NULL)
- ereport(ERROR,
- (EPROTO,
- errmsg("Message does not contain valid Transaction Handle")));
- memcpy(&txn[ii], data, sizeof (txn[ii]));
- elog(DEBUG1, "ProcessRollbackTransactionCommandMulti: handle(%u)", txn[ii]);
- }
+ const char *data = pq_getmsgbytes(message, sizeof (gxid[ii]));
+ if (data == NULL)
+ ereport(ERROR,
+ (EPROTO,
+ errmsg("Message does not contain valid GXID")));
+ memcpy(&gxid[ii], data, sizeof (gxid[ii]));
+ txn[ii] = GTM_GXIDToHandle(gxid[ii]);
+ elog(DEBUG1, "ProcessRollbackTransactionCommandMulti: gxid(%u), handle(%u)", gxid[ii], txn[ii]);
}
pq_getmsgend(message);
@@ -2460,33 +2387,18 @@ ProcessStartPreparedTransactionCommand(Port *myport, StringInfo message, bool is
StringInfoData buf;
GTM_TransactionHandle txn;
GlobalTransactionId gxid;
- int isgxid = 0;
GTM_StrLen gidlen, nodelen;
char nodestring[1024];
MemoryContext oldContext;
char gid[1024];
+ const char *data = pq_getmsgbytes(message, sizeof (gxid));
- isgxid = pq_getmsgbyte(message);
-
- if (isgxid)
- {
- const char *data = pq_getmsgbytes(message, sizeof (gxid));
- if (data == NULL)
- ereport(ERROR,
- (EPROTO,
- errmsg("Message does not contain valid GXID")));
- memcpy(&gxid, data, sizeof (gxid));
- txn = GTM_GXIDToHandle(gxid);
- }
- else
- {
- const char *data = pq_getmsgbytes(message, sizeof (txn));
- if (data == NULL)
- ereport(ERROR,
- (EPROTO,
- errmsg("Message does not contain valid Transaction Handle")));
- memcpy(&txn, data, sizeof (txn));
- }
+ if (data == NULL)
+ ereport(ERROR,
+ (EPROTO,
+ errmsg("Message does not contain valid GXID")));
+ memcpy(&gxid, data, sizeof (gxid));
+ txn = GTM_GXIDToHandle(gxid);
/* get GID */
gidlen = pq_getmsgint(message, sizeof (GTM_StrLen));
@@ -2574,30 +2486,15 @@ ProcessPrepareTransactionCommand(Port *myport, StringInfo message, bool is_backu
StringInfoData buf;
GTM_TransactionHandle txn;
GlobalTransactionId gxid;
- int isgxid = 0;
MemoryContext oldContext;
+ const char *data = pq_getmsgbytes(message, sizeof (gxid));
- isgxid = pq_getmsgbyte(message);
-
- if (isgxid)
- {
- const char *data = pq_getmsgbytes(message, sizeof (gxid));
- if (data == NULL)
- ereport(ERROR,
- (EPROTO,
- errmsg("Message does not contain valid GXID")));
- memcpy(&gxid, data, sizeof (gxid));
- txn = GTM_GXIDToHandle(gxid);
- }
- else
- {
- const char *data = pq_getmsgbytes(message, sizeof (txn));
- if (data == NULL)
- ereport(ERROR,
- (EPROTO,
- errmsg("Message does not contain valid Transaction Handle")));
- memcpy(&txn, data, sizeof (txn));
- }
+ if (data == NULL)
+ ereport(ERROR,
+ (EPROTO,
+ errmsg("Message does not contain valid GXID")));
+ memcpy(&gxid, data, sizeof (gxid));
+ txn = GTM_GXIDToHandle(gxid);
pq_getmsgend(message);
diff --git a/src/gtm/proxy/proxy_main.c b/src/gtm/proxy/proxy_main.c
index b03441e9ce..2bb55342fe 100644
--- a/src/gtm/proxy/proxy_main.c
+++ b/src/gtm/proxy/proxy_main.c
@@ -2264,8 +2264,6 @@ ProcessTransactionCommand(GTMProxy_ConnectionInfo *conninfo, GTM_Conn *gtm_conn,
case MSG_TXN_COMMIT:
case MSG_TXN_ROLLBACK:
- cmd_data.cd_rc.isgxid = pq_getmsgbyte(message);
- if (cmd_data.cd_rc.isgxid)
{
const char *data = pq_getmsgbytes(message,
sizeof (GlobalTransactionId));
@@ -2275,16 +2273,6 @@ ProcessTransactionCommand(GTMProxy_ConnectionInfo *conninfo, GTM_Conn *gtm_conn,
errmsg("Message does not contain valid GXID")));
memcpy(&cmd_data.cd_rc.gxid, data, sizeof (GlobalTransactionId));
}
- else
- {
- const char *data = pq_getmsgbytes(message,
- sizeof (GTM_TransactionHandle));
- if (data == NULL)
- ereport(ERROR,
- (EPROTO,
- errmsg("Message does not contain valid Transaction Handle")));
- memcpy(&cmd_data.cd_rc.handle, data, sizeof (GTM_TransactionHandle));
- }
pq_getmsgend(message);
GTMProxy_CommandPending(conninfo, mtype, cmd_data);
break;
@@ -2322,8 +2310,6 @@ ProcessSnapshotCommand(GTMProxy_ConnectionInfo *conninfo, GTM_Conn *gtm_conn,
GTMProxy_ProxyCommand(conninfo, gtm_conn, mtype, message);
else
{
- cmd_data.cd_snap.isgxid = pq_getmsgbyte(message);
- if (cmd_data.cd_snap.isgxid)
{
const char *data = pq_getmsgbytes(message,
sizeof (GlobalTransactionId));
@@ -2333,16 +2319,6 @@ ProcessSnapshotCommand(GTMProxy_ConnectionInfo *conninfo, GTM_Conn *gtm_conn,
errmsg("Message does not contain valid GXID")));
memcpy(&cmd_data.cd_snap.gxid, data, sizeof (GlobalTransactionId));
}
- else
- {
- const char *data = pq_getmsgbytes(message,
- sizeof (GTM_TransactionHandle));
- if (data == NULL)
- ereport(ERROR,
- (EPROTO,
- errmsg("Message does not contain valid Transaction Handle")));
- memcpy(&cmd_data.cd_snap.handle, data, sizeof (GTM_TransactionHandle));
- }
pq_getmsgend(message);
GTMProxy_CommandPending(conninfo, mtype, cmd_data);
}
@@ -2733,20 +2709,11 @@ GTMProxy_ProcessPendingCommands(GTMProxy_ThreadInfo *thrinfo)
cmdinfo = (GTMProxy_CommandInfo *)gtm_lfirst(elem);
Assert(cmdinfo->ci_mtype == ii);
cmdinfo->ci_res_index = res_index++;
- if (cmdinfo->ci_data.cd_rc.isgxid)
{
- if (gtmpqPutc(true, gtm_conn) ||
- gtmpqPutnchar((char *)&cmdinfo->ci_data.cd_rc.gxid,
+ if (gtmpqPutnchar((char *)&cmdinfo->ci_data.cd_rc.gxid,
sizeof (GlobalTransactionId), gtm_conn))
elog(ERROR, "Error sending data");
}
- else
- {
- if (gtmpqPutc(false, gtm_conn) ||
- gtmpqPutnchar((char *)&cmdinfo->ci_data.cd_rc.handle,
- sizeof (GTM_TransactionHandle), gtm_conn))
- elog(ERROR, "Error sending data");
- }
}
/* Finish the message. */
@@ -2775,20 +2742,11 @@ GTMProxy_ProcessPendingCommands(GTMProxy_ThreadInfo *thrinfo)
cmdinfo = (GTMProxy_CommandInfo *)gtm_lfirst(elem);
Assert(cmdinfo->ci_mtype == ii);
cmdinfo->ci_res_index = res_index++;
- if (cmdinfo->ci_data.cd_rc.isgxid)
{
- if (gtmpqPutc(true, gtm_conn) ||
- gtmpqPutnchar((char *)&cmdinfo->ci_data.cd_rc.gxid,
+ if (gtmpqPutnchar((char *)&cmdinfo->ci_data.cd_rc.gxid,
sizeof (GlobalTransactionId), gtm_conn))
elog(ERROR, "Error sending data");
}
- else
- {
- if (gtmpqPutc(false, gtm_conn) ||
- gtmpqPutnchar((char *)&cmdinfo->ci_data.cd_rc.handle,
- sizeof (GTM_TransactionHandle), gtm_conn))
- elog(ERROR, "Error sending data");
- }
}
/* Finish the message. */
@@ -2816,20 +2774,11 @@ GTMProxy_ProcessPendingCommands(GTMProxy_ThreadInfo *thrinfo)
cmdinfo = (GTMProxy_CommandInfo *)gtm_lfirst(elem);
Assert(cmdinfo->ci_mtype == ii);
cmdinfo->ci_res_index = res_index++;
- if (cmdinfo->ci_data.cd_rc.isgxid)
{
- if (gtmpqPutc(true, gtm_conn) ||
- gtmpqPutnchar((char *)&cmdinfo->ci_data.cd_rc.gxid,
+ if (gtmpqPutnchar((char *)&cmdinfo->ci_data.cd_rc.gxid,
sizeof (GlobalTransactionId), gtm_conn))
elog(ERROR, "Error sending data");
}
- else
- {
- if (gtmpqPutc(false, gtm_conn) ||
- gtmpqPutnchar((char *)&cmdinfo->ci_data.cd_rc.handle,
- sizeof (GTM_TransactionHandle), gtm_conn))
- elog(ERROR, "Error sending data");
- }
}
/* Finish the message. */
diff --git a/src/include/gtm/gtm_client.h b/src/include/gtm/gtm_client.h
index cd44f4ccf3..672c25f27e 100644
--- a/src/include/gtm/gtm_client.h
+++ b/src/include/gtm/gtm_client.h
@@ -219,7 +219,7 @@ int
commit_transaction_multi(GTM_Conn *conn, int txn_count, GlobalTransactionId *gxid,
int *txn_count_out, int *status_out);
int
-bkup_commit_transaction_multi(GTM_Conn *conn, int txn_count, GTM_TransactionHandle *txn);
+bkup_commit_transaction_multi(GTM_Conn *conn, int txn_count, GlobalTransactionId *gxid);
int
abort_transaction_multi(GTM_Conn *conn, int txn_count, GlobalTransactionId *gxid,
int *txn_count_out, int *status_out);
diff --git a/src/include/gtm/gtm_proxy.h b/src/include/gtm/gtm_proxy.h
index e798d2c89a..068d59e479 100644
--- a/src/include/gtm/gtm_proxy.h
+++ b/src/include/gtm/gtm_proxy.h
@@ -148,16 +148,12 @@ typedef union GTMProxy_CommandData
struct
{
- bool isgxid;
GlobalTransactionId gxid;
- GTM_TransactionHandle handle;
} cd_rc;
struct
{
- bool isgxid;
GlobalTransactionId gxid;
- GTM_TransactionHandle handle;
} cd_snap;
struct