summaryrefslogtreecommitdiff
path: root/src/backend/tcop/postgres.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/tcop/postgres.c')
-rw-r--r--src/backend/tcop/postgres.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 71b139895a..c54bd60f1e 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -80,6 +80,7 @@
#include "access/gtm.h"
/* PGXC_COORD */
#include "pgxc/execRemote.h"
+#include "pgxc/barrier.h"
#include "pgxc/planner.h"
#include "pgxc/pgxcnode.h"
#include "commands/copy.h"
@@ -447,6 +448,7 @@ SocketBackend(StringInfo inBuf)
case 'g': /* GXID */
case 's': /* Snapshot */
case 't': /* Timestamp */
+ case 'b': /* Barrier */
break;
#endif
@@ -4290,6 +4292,37 @@ PostgresMain(int argc, char *argv[], const char *username)
*/
SetCurrentGTMDeltaTimestamp(timestamp);
break;
+
+ case 'b': /* barrier */
+ {
+ int command;
+ char *id;
+
+ command = pq_getmsgbyte(&input_message);
+ id = pq_getmsgstring(&input_message);
+ pq_getmsgend(&input_message);
+
+ switch (command)
+ {
+ case CREATE_BARRIER_PREPARE:
+ ProcessCreateBarrierPrepare(id);
+ break;
+
+ case CREATE_BARRIER_END:
+ ProcessCreateBarrierEnd(id);
+ break;
+
+ case CREATE_BARRIER_EXECUTE:
+ ProcessCreateBarrierExecute(id);
+ break;
+
+ default:
+ ereport(ERROR,
+ (errcode(ERRCODE_INTERNAL_ERROR),
+ errmsg("Invalid command received")));
+ }
+ }
+ break;
#endif /* PGXC */
default: