1 /* -------------------------------------------------------------------------
2  *
3  * pg_subscription.h
4  *	  definition of the "subscription" system catalog (pg_subscription)
5  *
6  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
7  * Portions Copyright (c) 1994, Regents of the University of California
8  *
PCSingleApplication(int & argc,char ** argv)9  * src/include/catalog/pg_subscription.h
10  *
11  * NOTES
12  *	  The Catalog.pm module reads this file and derives schema
13  *	  information.
14  *
15  * -------------------------------------------------------------------------
16  */
17 #ifndef PG_SUBSCRIPTION_H
18 #define PG_SUBSCRIPTION_H
19 
20 #include "catalog/genbki.h"
21 #include "catalog/pg_subscription_d.h"
22 
23 #include "nodes/pg_list.h"
24 
25 /* ----------------
26  *		pg_subscription definition. cpp turns this into
27  *		typedef struct FormData_pg_subscription
28  * ----------------
29  */
30 
31 /*
32  * Technically, the subscriptions live inside the database, so a shared catalog
33  * seems weird, but the replication launcher process needs to access all of
34  * them to be able to start the workers, so we have to put them in a shared,
35  * nailed catalog.
36  *
37  * NOTE:  When adding a column, also update system_views.sql.
38  */
39 CATALOG(pg_subscription,6100,SubscriptionRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(6101,SubscriptionRelation_Rowtype_Id) BKI_SCHEMA_MACRO
40 {
41 	Oid			subdbid;		/* Database the subscription is in. */
42 	NameData	subname;		/* Name of the subscription */
43 
44 	Oid			subowner;		/* Owner of the subscription */
45 
46 	bool		subenabled;		/* True if the subscription is enabled (the
47 								 * worker should be running) */
48 
49 #ifdef CATALOG_VARLEN			/* variable-length fields start here */
50 	/* Connection string to the publisher */
51 	text		subconninfo BKI_FORCE_NOT_NULL;
52 
53 	/* Slot name on publisher */
54 	NameData	subslotname;
55 
56 	/* Synchronous commit setting for worker */
57 	text		subsynccommit BKI_FORCE_NOT_NULL;
58 
59 	/* List of publications subscribed to */
60 	text		subpublications[1] BKI_FORCE_NOT_NULL;
61 #endif
62 } FormData_pg_subscription;
63 
64 typedef FormData_pg_subscription *Form_pg_subscription;
65 
66 typedef struct Subscription
67 {
68 	Oid			oid;			/* Oid of the subscription */
69 	Oid			dbid;			/* Oid of the database which subscription is
70 								 * in */
71 	char	   *name;			/* Name of the subscription */
72 	Oid			owner;			/* Oid of the subscription owner */
73 	bool		enabled;		/* Indicates if the subscription is enabled */
74 	char	   *conninfo;		/* Connection string to the publisher */
75 	char	   *slotname;		/* Name of the replication slot */
76 	char	   *synccommit;		/* Synchronous commit setting for worker */
77 	List	   *publications;	/* List of publication names to subscribe to */
78 } Subscription;
79 
80 extern Subscription *GetSubscription(Oid subid, bool missing_ok);
81 extern void FreeSubscription(Subscription *sub);
82 extern Oid	get_subscription_oid(const char *subname, bool missing_ok);
newInputsAvailable()83 extern char *get_subscription_name(Oid subid);
84 
85 extern int	CountDBSubscriptions(Oid dbid);
86 
87 #endif							/* PG_SUBSCRIPTION_H */
88