21#include "catalog/pg_type_d.h"
44 const char *
result =
"<unset>";
56 errmsg(
"%s can only be executed as a top-level statement",
58 errdetail(
"WAIT FOR cannot be used within a function, procedure, or DO block.")));
87 errmsg(
"unrecognized value for %s option \"%s\": \"%s\"",
122 errmsg(
"timeout value is out of range"));
127 errmsg(
"timeout cannot be negative"));
144 errmsg(
"option \"%s\" not recognized",
174 errmsg(
"WAIT FOR must be called without an active or registered snapshot"),
175 errdetail(
"WAIT FOR cannot be executed within a transaction with an isolation level higher than READ COMMITTED."));
192 errmsg(
"recovery is in progress"),
193 errhint(
"Waiting for primary_flush can only be done on a primary server. "
194 "Use standby_flush mode on a standby server.")));
220 errmsg(
"timed out while waiting for target LSN %X/%08X to be replayed; current standby_replay LSN %X/%08X",
228 errmsg(
"timed out while waiting for target LSN %X/%08X to be written; current standby_write LSN %X/%08X",
236 errmsg(
"timed out while waiting for target LSN %X/%08X to be flushed; current standby_flush LSN %X/%08X",
244 errmsg(
"timed out while waiting for target LSN %X/%08X to be flushed; current primary_flush LSN %X/%08X",
250 elog(
ERROR,
"unexpected wait LSN type %d", lsnType);
269 errmsg(
"recovery is not in progress"),
270 errdetail(
"Recovery ended before target LSN %X/%08X was replayed; last standby_replay LSN %X/%08X.",
278 errmsg(
"recovery is not in progress"),
279 errdetail(
"Recovery ended before target LSN %X/%08X was written; last standby_write LSN %X/%08X.",
287 errmsg(
"recovery is not in progress"),
288 errdetail(
"Recovery ended before target LSN %X/%08X was flushed; last standby_flush LSN %X/%08X.",
294 elog(
ERROR,
"unexpected wait LSN type %d", lsnType);
304 errmsg(
"recovery is not in progress"),
305 errhint(
"Waiting for the standby_replay LSN can only be executed during recovery."));
311 errmsg(
"recovery is not in progress"),
312 errhint(
"Waiting for the standby_write LSN can only be executed during recovery."));
318 errmsg(
"recovery is not in progress"),
319 errhint(
"Waiting for the standby_flush LSN can only be executed during recovery."));
323 elog(
ERROR,
"unexpected wait LSN type %d", lsnType);
328 result =
"not in recovery";
#define Assert(condition)
#define FLOAT8_FITS_IN_INT64(num)
char * defGetString(DefElem *def)
bool defGetBoolean(DefElem *def)
void errorConflictingDefElem(DefElem *defel, ParseState *pstate)
int errcode(int sqlerrcode)
int errhint(const char *fmt,...) pg_attribute_printf(1
int errdetail(const char *fmt,...) pg_attribute_printf(1
#define ereport(elevel,...)
const TupleTableSlotOps TTSOpsVirtual
void end_tup_output(TupOutputState *tstate)
TupOutputState * begin_tup_output_tupdesc(DestReceiver *dest, TupleDesc tupdesc, const TupleTableSlotOps *tts_ops)
#define do_text_output_oneline(tstate, str_to_emit)
#define DirectFunctionCall1(func, arg1)
bool parse_real(const char *value, double *result, int flags, const char **hintmsg)
int parser_errposition(ParseState *pstate, int location)
#define foreach_node(type, var, lst)
Datum pg_lsn_in(PG_FUNCTION_ARGS)
static XLogRecPtr DatumGetLSN(Datum X)
int pg_strcasecmp(const char *s1, const char *s2)
static Datum CStringGetDatum(const char *X)
bool ActiveSnapshotSet(void)
bool HaveRegisteredOrActiveSnapshot(void)
void PopActiveSnapshot(void)
void InvalidateCatalogSnapshot(void)
#define InvalidTransactionId
TupleDesc CreateTemplateTupleDesc(int natts)
void TupleDescFinalize(TupleDesc tupdesc)
void TupleDescInitBuiltinEntry(TupleDesc desc, AttrNumber attributeNumber, const char *attributeName, Oid oidtypeid, int32 typmod, int attdim)
TupleDesc WaitStmtResultDesc(WaitStmt *stmt)
void ExecWaitStmt(ParseState *pstate, WaitStmt *stmt, bool isTopLevel, DestReceiver *dest)
bool RecoveryInProgress(void)
#define LSN_FORMAT_ARGS(lsn)
bool PromoteIsTriggered(void)
XLogRecPtr GetCurrentLSNForWaitType(WaitLSNType lsnType)
WaitLSNResult WaitForLSN(WaitLSNType lsnType, XLogRecPtr targetLSN, int64 timeout)
@ WAIT_LSN_RESULT_NOT_IN_RECOVERY
@ WAIT_LSN_RESULT_TIMEOUT
@ WAIT_LSN_RESULT_SUCCESS
@ WAIT_LSN_TYPE_PRIMARY_FLUSH
@ WAIT_LSN_TYPE_STANDBY_REPLAY
@ WAIT_LSN_TYPE_STANDBY_FLUSH
@ WAIT_LSN_TYPE_STANDBY_WRITE