mirror of
https://github.com/postgres/postgres.git
synced 2025-10-29 22:49:41 +03:00
Logical replication support for TRUNCATE
Update the built-in logical replication system to make use of the previously added logical decoding for TRUNCATE support. Add the required truncate callback to pgoutput and a new logical replication protocol message. Publications get a new attribute to determine whether to replicate truncate actions. When updating a publication via pg_dump from an older version, this is not set, thus preserving the previous behavior. Author: Simon Riggs <simon@2ndquadrant.com> Author: Marco Nenciarini <marco.nenciarini@2ndquadrant.it> Author: Peter Eisentraut <peter.eisentraut@2ndquadrant.com> Reviewed-by: Petr Jelinek <petr.jelinek@2ndquadrant.com> Reviewed-by: Andres Freund <andres@anarazel.de> Reviewed-by: Alvaro Herrera <alvherre@alvh.no-ip.org>
This commit is contained in:
@@ -53,6 +53,6 @@
|
||||
*/
|
||||
|
||||
/* yyyymmddN */
|
||||
#define CATALOG_VERSION_NO 201804061
|
||||
#define CATALOG_VERSION_NO 201804071
|
||||
|
||||
#endif
|
||||
|
||||
@@ -49,6 +49,9 @@ CATALOG(pg_publication,6104)
|
||||
/* true if deletes are published */
|
||||
bool pubdelete;
|
||||
|
||||
/* true if truncates are published */
|
||||
bool pubtruncate;
|
||||
|
||||
} FormData_pg_publication;
|
||||
|
||||
/* ----------------
|
||||
@@ -63,19 +66,21 @@ typedef FormData_pg_publication *Form_pg_publication;
|
||||
* ----------------
|
||||
*/
|
||||
|
||||
#define Natts_pg_publication 6
|
||||
#define Natts_pg_publication 7
|
||||
#define Anum_pg_publication_pubname 1
|
||||
#define Anum_pg_publication_pubowner 2
|
||||
#define Anum_pg_publication_puballtables 3
|
||||
#define Anum_pg_publication_pubinsert 4
|
||||
#define Anum_pg_publication_pubupdate 5
|
||||
#define Anum_pg_publication_pubdelete 6
|
||||
#define Anum_pg_publication_pubtruncate 7
|
||||
|
||||
typedef struct PublicationActions
|
||||
{
|
||||
bool pubinsert;
|
||||
bool pubupdate;
|
||||
bool pubdelete;
|
||||
bool pubtruncate;
|
||||
} PublicationActions;
|
||||
|
||||
typedef struct Publication
|
||||
|
||||
@@ -97,6 +97,10 @@ extern void logicalrep_write_delete(StringInfo out, Relation rel,
|
||||
HeapTuple oldtuple);
|
||||
extern LogicalRepRelId logicalrep_read_delete(StringInfo in,
|
||||
LogicalRepTupleData *oldtup);
|
||||
extern void logicalrep_write_truncate(StringInfo out, int nrelids, Oid relids[],
|
||||
bool cascade, bool restart_seqs);
|
||||
extern List *logicalrep_read_truncate(StringInfo in,
|
||||
bool *cascade, bool *restart_seqs);
|
||||
extern void logicalrep_write_rel(StringInfo out, Relation rel);
|
||||
extern LogicalRepRelation *logicalrep_read_rel(StringInfo in);
|
||||
extern void logicalrep_write_typ(StringInfo out, Oid typoid);
|
||||
|
||||
Reference in New Issue
Block a user