26 #define LOGICALREP_IS_REPLICA_IDENTITY 1 28 #define TRUNCATE_CASCADE (1<<0) 29 #define TRUNCATE_RESTART_SEQS (1<<1) 64 elog(
ERROR,
"final_lsn not set in begin message");
100 elog(
ERROR,
"unrecognized flags %u in commit message", flags);
173 elog(
ERROR,
"expected new tuple but got %d",
190 Assert(rel->
rd_rel->relreplident == REPLICA_IDENTITY_DEFAULT ||
191 rel->
rd_rel->relreplident == REPLICA_IDENTITY_FULL ||
192 rel->
rd_rel->relreplident == REPLICA_IDENTITY_INDEX);
201 if (oldtuple != NULL)
203 if (rel->
rd_rel->relreplident == REPLICA_IDENTITY_FULL)
230 if (action !=
'K' && action !=
'O' && action !=
'N')
231 elog(
ERROR,
"expected action 'N', 'O' or 'K', got %c",
235 if (action ==
'K' || action ==
'O')
238 *has_oldtuple =
true;
243 *has_oldtuple =
false;
247 elog(
ERROR,
"expected action 'N', got %c",
262 Assert(rel->
rd_rel->relreplident == REPLICA_IDENTITY_DEFAULT ||
263 rel->
rd_rel->relreplident == REPLICA_IDENTITY_FULL ||
264 rel->
rd_rel->relreplident == REPLICA_IDENTITY_INDEX);
275 if (rel->
rd_rel->relreplident == REPLICA_IDENTITY_FULL)
299 if (action !=
'K' && action !=
'O')
300 elog(
ERROR,
"expected action 'O' or 'K', got %c", action);
315 bool cascade,
bool restart_seqs)
335 for (i = 0; i < nrelids; i++)
344 bool *cascade,
bool *restart_seqs)
358 for (i = 0; i < nrelids; i++)
436 elog(
ERROR,
"cache lookup failed for type %u", basetypoid);
476 for (i = 0; i < desc->
natts; i++)
486 nliveatts * (1 + 4));
491 for (i = 0; i < desc->
natts; i++)
497 if (att->attisdropped || att->attgenerated)
519 elog(
ERROR,
"cache lookup failed for type %u", att->atttypid);
566 tuple->
ncols = natts;
569 for (i = 0; i < natts; i++)
592 value->
data[len] =
'\0';
605 value->
data[len] =
'\0';
612 elog(
ERROR,
"unrecognized data representation type '%c'", kind);
632 for (i = 0; i < desc->
natts; i++)
641 replidentfull = (rel->
rd_rel->relreplident == REPLICA_IDENTITY_FULL);
647 for (i = 0; i < desc->
natts; i++)
652 if (att->attisdropped || att->attgenerated)
689 attnames =
palloc(natts *
sizeof(
char *));
693 for (i = 0; i < natts; i++)
724 if (nspid == PG_CATALOG_NAMESPACE)
731 elog(
ERROR,
"cache lookup failed for namespace %u",
746 if (nspname[0] ==
'\0')
747 nspname =
"pg_catalog";
835 elog(
ERROR,
"unrecognized flags %u in commit message", flags);
static void logicalrep_write_tuple(StringInfo out, Relation rel, HeapTuple tuple, bool binary)
#define VARATT_IS_EXTERNAL_ONDISK(PTR)
#define InvalidXLogRecPtr
LogicalRepRelId logicalrep_read_delete(StringInfo in, LogicalRepTupleData *oldtup)
void logicalrep_write_truncate(StringInfo out, TransactionId xid, int nrelids, Oid relids[], bool cascade, bool restart_seqs)
#define MaxTupleAttributeNumber
TransactionId logicalrep_read_stream_commit(StringInfo in, LogicalRepCommitData *commit_data)
#define RelationGetDescr(relation)
void logicalrep_write_stream_stop(StringInfo out)
void logicalrep_read_begin(StringInfo in, LogicalRepBeginData *begin_data)
#define TupleDescAttr(tupdesc, i)
List * logicalrep_read_truncate(StringInfo in, bool *cascade, bool *restart_seqs)
char * pstrdup(const char *in)
static void logicalrep_write_namespace(StringInfo out, Oid nspid)
#define LOGICALREP_COLUMN_NULL
LogicalRepRelation * logicalrep_read_rel(StringInfo in)
void logicalrep_write_stream_abort(StringInfo out, TransactionId xid, TransactionId subxid)
#define LOGICALREP_COLUMN_TEXT
void logicalrep_write_commit(StringInfo out, ReorderBufferTXN *txn, XLogRecPtr commit_lsn)
#define FirstLowInvalidHeapAttributeNumber
void logicalrep_write_delete(StringInfo out, TransactionId xid, Relation rel, HeapTuple oldtuple, bool binary)
void logicalrep_write_origin(StringInfo out, const char *origin, XLogRecPtr origin_lsn)
StringInfoData * colvalues
List * lappend_oid(List *list, Oid datum)
#define OidIsValid(objectId)
#define LOGICALREP_COLUMN_BINARY
void logicalrep_write_insert(StringInfo out, TransactionId xid, Relation rel, HeapTuple newtuple, bool binary)
#define LOGICALREP_IS_REPLICA_IDENTITY
LogicalRepRelId logicalrep_read_insert(StringInfo in, LogicalRepTupleData *newtup)
void logicalrep_write_stream_start(StringInfo out, TransactionId xid, bool first_segment)
#define LOGICALREP_COLUMN_UNCHANGED
void pfree(void *pointer)
void logicalrep_write_rel(StringInfo out, TransactionId xid, Relation rel)
#define ObjectIdGetDatum(X)
void logicalrep_read_typ(StringInfo in, LogicalRepTyp *ltyp)
bytea * OidSendFunctionCall(Oid functionId, Datum val)
char * get_namespace_name(Oid nspid)
static void logicalrep_read_tuple(StringInfo in, LogicalRepTupleData *tuple)
static void logicalrep_write_attrs(StringInfo out, Relation rel)
void enlargeStringInfo(StringInfo str, int needed)
#define RelationGetRelationName(relation)
FormData_pg_attribute * Form_pg_attribute
static void logicalrep_read_attrs(StringInfo in, LogicalRepRelation *rel)
void logicalrep_write_stream_commit(StringInfo out, ReorderBufferTXN *txn, XLogRecPtr commit_lsn)
void logicalrep_write_begin(StringInfo out, ReorderBufferTXN *txn)
HeapTuple SearchSysCache1(int cacheId, Datum key1)
void * palloc0(Size size)
void ReleaseSysCache(HeapTuple tuple)
static const char * logicalrep_read_namespace(StringInfo in)
void bms_free(Bitmapset *a)
#define HeapTupleIsValid(tuple)
#define Assert(condition)
FormData_pg_type * Form_pg_type
LogicalRepRelId logicalrep_read_update(StringInfo in, bool *has_oldtuple, LogicalRepTupleData *oldtup, LogicalRepTupleData *newtup)
Bitmapset * bms_add_member(Bitmapset *a, int x)
void logicalrep_read_commit(StringInfo in, LogicalRepCommitData *commit_data)
void heap_deform_tuple(HeapTuple tuple, TupleDesc tupleDesc, Datum *values, bool *isnull)
static Datum values[MAXATTR]
TransactionId logicalrep_read_stream_start(StringInfo in, bool *first_segment)
char * OidOutputFunctionCall(Oid functionId, Datum val)
void logicalrep_write_typ(StringInfo out, TransactionId xid, Oid typoid)
Bitmapset * RelationGetIndexAttrBitmap(Relation relation, IndexAttrBitmapKind attrKind)
char * logicalrep_read_origin(StringInfo in, XLogRecPtr *origin_lsn)
void logicalrep_write_update(StringInfo out, TransactionId xid, Relation rel, HeapTuple oldtuple, HeapTuple newtuple, bool binary)
#define TransactionIdIsValid(xid)
Oid getBaseType(Oid typid)
bool bms_is_member(int x, const Bitmapset *a)
#define TRUNCATE_RESTART_SEQS
#define RelationGetRelid(relation)
void logicalrep_read_stream_abort(StringInfo in, TransactionId *xid, TransactionId *subxid)
#define RelationGetNamespace(relation)