init
This commit is contained in:
123
db_include/catalog/pg_publication.h
Executable file
123
db_include/catalog/pg_publication.h
Executable file
@@ -0,0 +1,123 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* pg_publication.h
|
||||
* definition of the "publication" system catalog (pg_publication)
|
||||
*
|
||||
* Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* src/include/catalog/pg_publication.h
|
||||
*
|
||||
* NOTES
|
||||
* The Catalog.pm module reads this file and derives schema
|
||||
* information.
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef PG_PUBLICATION_H
|
||||
#define PG_PUBLICATION_H
|
||||
|
||||
#include "catalog/genbki.h"
|
||||
#include "catalog/objectaddress.h"
|
||||
#include "catalog/pg_publication_d.h"
|
||||
|
||||
/* ----------------
|
||||
* pg_publication definition. cpp turns this into
|
||||
* typedef struct FormData_pg_publication
|
||||
* ----------------
|
||||
*/
|
||||
CATALOG(pg_publication,6104,PublicationRelationId)
|
||||
{
|
||||
Oid oid; /* oid */
|
||||
|
||||
NameData pubname; /* name of the publication */
|
||||
|
||||
Oid pubowner BKI_LOOKUP(pg_authid); /* publication owner */
|
||||
|
||||
/*
|
||||
* indicates that this is special publication which should encompass all
|
||||
* tables in the database (except for the unlogged and temp ones)
|
||||
*/
|
||||
bool puballtables;
|
||||
|
||||
/* true if inserts are published */
|
||||
bool pubinsert;
|
||||
|
||||
/* true if updates are published */
|
||||
bool pubupdate;
|
||||
|
||||
/* true if deletes are published */
|
||||
bool pubdelete;
|
||||
|
||||
/* true if truncates are published */
|
||||
bool pubtruncate;
|
||||
|
||||
/* true if partition changes are published using root schema */
|
||||
bool pubviaroot;
|
||||
} FormData_pg_publication;
|
||||
|
||||
/* ----------------
|
||||
* Form_pg_publication corresponds to a pointer to a tuple with
|
||||
* the format of pg_publication relation.
|
||||
* ----------------
|
||||
*/
|
||||
typedef FormData_pg_publication *Form_pg_publication;
|
||||
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_publication_oid_index, 6110, on pg_publication using btree(oid oid_ops));
|
||||
#define PublicationObjectIndexId 6110
|
||||
DECLARE_UNIQUE_INDEX(pg_publication_pubname_index, 6111, on pg_publication using btree(pubname name_ops));
|
||||
#define PublicationNameIndexId 6111
|
||||
|
||||
typedef struct PublicationActions
|
||||
{
|
||||
bool pubinsert;
|
||||
bool pubupdate;
|
||||
bool pubdelete;
|
||||
bool pubtruncate;
|
||||
} PublicationActions;
|
||||
|
||||
typedef struct Publication
|
||||
{
|
||||
Oid oid;
|
||||
char *name;
|
||||
bool alltables;
|
||||
bool pubviaroot;
|
||||
PublicationActions pubactions;
|
||||
} Publication;
|
||||
|
||||
extern Publication *GetPublication(Oid pubid);
|
||||
extern Publication *GetPublicationByName(const char *pubname, bool missing_ok);
|
||||
extern List *GetRelationPublications(Oid relid);
|
||||
|
||||
/*---------
|
||||
* Expected values for pub_partopt parameter of GetRelationPublications(),
|
||||
* which allows callers to specify which partitions of partitioned tables
|
||||
* mentioned in the publication they expect to see.
|
||||
*
|
||||
* ROOT: only the table explicitly mentioned in the publication
|
||||
* LEAF: only leaf partitions in given tree
|
||||
* ALL: all partitions in given tree
|
||||
*/
|
||||
typedef enum PublicationPartOpt
|
||||
{
|
||||
PUBLICATION_PART_ROOT,
|
||||
PUBLICATION_PART_LEAF,
|
||||
PUBLICATION_PART_ALL,
|
||||
} PublicationPartOpt;
|
||||
|
||||
extern List *GetPublicationRelations(Oid pubid, PublicationPartOpt pub_partopt);
|
||||
extern List *GetAllTablesPublications(void);
|
||||
extern List *GetAllTablesPublicationRelations(bool pubviaroot);
|
||||
|
||||
extern bool is_publishable_relation(Relation rel);
|
||||
extern ObjectAddress publication_add_relation(Oid pubid, Relation targetrel,
|
||||
bool if_not_exists);
|
||||
extern List *GetPubPartitionOptionRelations(List *result,
|
||||
PublicationPartOpt pub_partopt,
|
||||
Oid relid);
|
||||
|
||||
extern Oid get_publication_oid(const char *pubname, bool missing_ok);
|
||||
extern char *get_publication_name(Oid pubid, bool missing_ok);
|
||||
|
||||
|
||||
#endif /* PG_PUBLICATION_H */
|
||||
Reference in New Issue
Block a user