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