diff options
Diffstat (limited to 'src/backend/tcop/utility.c')
-rw-r--r-- | src/backend/tcop/utility.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c index b1f7f6e2d01..f516bd22eae 100644 --- a/src/backend/tcop/utility.c +++ b/src/backend/tcop/utility.c @@ -57,6 +57,7 @@ #include "commands/user.h" #include "commands/vacuum.h" #include "commands/view.h" +#include "commands/wait.h" #include "miscadmin.h" #include "parser/parse_utilcmd.h" #include "postmaster/bgwriter.h" @@ -591,6 +592,18 @@ standard_ProcessUtility(PlannedStmt *pstmt, case TRANS_STMT_START: { ListCell *lc; + WaitClause *waitstmt = (WaitClause *) stmt->wait; + + /* WAIT FOR cannot be used on master */ + if (stmt->wait && !RecoveryInProgress()) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("WAIT FOR can only be " + "used on standby"))); + + /* If needed to WAIT FOR something but failed */ + if (stmt->wait && WaitLSNMain(waitstmt, dest) == 0) + break; BeginTransactionBlock(); foreach(lc, stmt->options) |