32#include "utils/fmgroids.h"
51 foreach(
lc, publications)
90 elog(
ERROR,
"cache lookup failed for subscription %u", subid);
128 errmsg(
"subscription owner \"%s\" does not have permission on foreign server \"%s\"",
250 elog(
ERROR,
"cache lookup failed for subscription %u", subid);
256 memset(nulls,
false,
sizeof(nulls));
290 for (
i = 0;
i < nelems;
i++)
321 elog(
ERROR,
"subscription relation %u in subscription %u already exists",
326 memset(nulls,
false,
sizeof(nulls));
369#ifdef USE_ASSERT_CHECKING
391 elog(
ERROR,
"subscription relation %u in subscription %u does not exist",
396 memset(nulls,
false,
sizeof(nulls));
525 errmsg(
"could not drop relation mapping for subscription \"%s\"",
527 errdetail(
"Table synchronization for relation \"%s\" is in progress and is in state \"%c\".",
534 errhint(
"Use %s to enable subscription if not already enabled or use %s to drop the subscription.",
535 "ALTER SUBSCRIPTION ... ENABLE",
536 "DROP SUBSCRIPTION ...")));
692 elog(
ERROR,
"cache lookup failed for subscription %u", subid);
698 memset(nulls,
false,
sizeof(nulls));
AclResult object_aclcheck(Oid classid, Oid objectid, Oid roleid, AclMode mode)
#define DatumGetArrayTypeP(X)
void deconstruct_array_builtin(const ArrayType *array, Oid elmtype, Datum **elemsp, bool **nullsp, int *nelemsp)
static Datum values[MAXATTR]
#define TextDatumGetCString(d)
#define Assert(condition)
#define OidIsValid(objectId)
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,...)
#define palloc_object(type)
char * ForeignServerName(Oid serverid)
char * ForeignServerConnectionString(Oid userid, Oid serverid)
void systable_endscan(SysScanDesc sysscan)
HeapTuple systable_getnext(SysScanDesc sysscan)
SysScanDesc systable_beginscan(Relation heapRelation, Oid indexId, bool indexOK, Snapshot snapshot, int nkeys, ScanKey key)
HeapTuple heap_getnext(TableScanDesc sscan, ScanDirection direction)
HeapTuple heap_modify_tuple(HeapTuple tuple, TupleDesc tupleDesc, const Datum *replValues, const bool *replIsnull, const bool *doReplace)
HeapTuple heap_form_tuple(TupleDesc tupleDescriptor, const Datum *values, const bool *isnull)
void heap_freetuple(HeapTuple htup)
#define HeapTupleIsValid(tuple)
static void * GETSTRUCT(const HeapTupleData *tuple)
void CatalogTupleUpdate(Relation heapRel, const ItemPointerData *otid, HeapTuple tup)
void CatalogTupleInsert(Relation heapRel, HeapTuple tup)
void CatalogTupleDelete(Relation heapRel, const ItemPointerData *tid)
List * lappend(List *list, void *datum)
void list_free_deep(List *list)
void LockSharedObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
bool CheckRelationOidLockedByMe(Oid relid, LOCKMODE lockmode, bool orstronger)
void UnlockSharedObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
bool LockHeldByMe(const LOCKTAG *locktag, LOCKMODE lockmode, bool orstronger)
#define SET_LOCKTAG_OBJECT(locktag, dboid, classoid, objoid, objsubid)
char * get_rel_name(Oid relid)
char get_rel_relkind(Oid relid)
char * get_subscription_name(Oid subid, bool missing_ok)
char * pstrdup(const char *in)
void pfree(void *pointer)
char * GetUserNameFromId(Oid roleid, bool noerr)
static SequenceItem * sequences
static Datum LSNGetDatum(XLogRecPtr X)
static XLogRecPtr DatumGetLSN(Datum X)
void UpdateSubscriptionRelState(Oid subid, Oid relid, char state, XLogRecPtr sublsn, bool already_locked)
int CountDBSubscriptions(Oid dbid)
void FreeSubscription(Subscription *sub)
Subscription * GetSubscription(Oid subid, bool missing_ok, bool aclcheck)
void DisableSubscription(Oid subid)
void RemoveSubscriptionRel(Oid subid, Oid relid)
char GetSubscriptionRelState(Oid subid, Oid relid, XLogRecPtr *sublsn)
void GetPublicationsStr(List *publications, StringInfo dest, bool quote_literal)
void AddSubscriptionRelState(Oid subid, Oid relid, char state, XLogRecPtr sublsn, bool retain_lock)
bool HasSubscriptionTables(Oid subid)
static List * textarray_to_stringlist(ArrayType *textarray)
void UpdateDeadTupleRetentionStatus(Oid subid, bool active)
List * GetSubscriptionRelations(Oid subid, bool tables, bool sequences, bool not_ready)
END_CATALOG_STRUCT typedef FormData_pg_subscription * Form_pg_subscription
END_CATALOG_STRUCT typedef FormData_pg_subscription_rel * Form_pg_subscription_rel
static Name DatumGetName(Datum X)
static Datum BoolGetDatum(bool X)
static Datum ObjectIdGetDatum(Oid X)
static Datum CharGetDatum(char X)
char * quote_literal_cstr(const char *rawstr)
Datum quote_literal(PG_FUNCTION_ARGS)
#define RelationGetDescr(relation)
void ScanKeyInit(ScanKey entry, AttrNumber attributeNumber, StrategyNumber strategy, RegProcedure procedure, Datum argument)
#define BTEqualStrategyNumber
void appendStringInfoString(StringInfo str, const char *s)
void appendStringInfoChar(StringInfo str, char ch)
bool superuser_arg(Oid roleid)
void ReleaseSysCache(HeapTuple tuple)
HeapTuple SearchSysCache2(SysCacheIdentifier cacheId, Datum key1, Datum key2)
Datum SysCacheGetAttrNotNull(SysCacheIdentifier cacheId, HeapTuple tup, AttrNumber attributeNumber)
HeapTuple SearchSysCache1(SysCacheIdentifier cacheId, Datum key1)
Datum SysCacheGetAttr(SysCacheIdentifier cacheId, HeapTuple tup, AttrNumber attributeNumber, bool *isNull)
#define SearchSysCacheCopy1(cacheId, key1)
#define SearchSysCacheCopy2(cacheId, key1, key2)
void table_close(Relation relation, LOCKMODE lockmode)
Relation table_open(Oid relationId, LOCKMODE lockmode)
TableScanDesc table_beginscan_catalog(Relation relation, int nkeys, ScanKeyData *key)
static void table_endscan(TableScanDesc scan)
String * makeString(char *str)
#define XLogRecPtrIsValid(r)
#define InvalidXLogRecPtr