1 /*------------------------------------------------------------------------- 2 * 3 * logicalrelation.h 4 * Relation definitions for logical replication relation mapping. 5 * 6 * Portions Copyright (c) 2016-2017, PostgreSQL Global Development Group 7 * 8 * src/include/replication/logicalrelation.h 9 * 10 *------------------------------------------------------------------------- 11 */ 12 #ifndef LOGICALRELATION_H 13 #define LOGICALRELATION_H 14 15 #include "replication/logicalproto.h" 16 17 typedef struct LogicalRepRelMapEntry 18 { 19 LogicalRepRelation remoterel; /* key is remoterel.remoteid */ 20 21 /* Mapping to local relation. */ 22 Oid localreloid; /* local relation id */ 23 Relation localrel; /* relcache entry (NULL when closed) */ 24 AttrNumber *attrmap; /* map of local attributes to remote ones */ 25 bool updatable; /* Can apply updates/deletes? */ 26 27 /* Sync state. */ 28 char state; 29 /* Validity flag ... inserted here to avoid ABI break in back branches. */ 30 bool localrelvalid; 31 XLogRecPtr statelsn; 32 } LogicalRepRelMapEntry; 33 34 extern void logicalrep_relmap_update(LogicalRepRelation *remoterel); 35 36 extern LogicalRepRelMapEntry *logicalrep_rel_open(LogicalRepRelId remoteid, 37 LOCKMODE lockmode); 38 extern void logicalrep_rel_close(LogicalRepRelMapEntry *rel, 39 LOCKMODE lockmode); 40 41 #endif /* LOGICALRELATION_H */ 42