跳转到主要内容

logical_ddl

Replicate supported DDL changes over PostgreSQL logical replication

logical_ddl : Replicate supported DDL changes over PostgreSQL logical replication

Overview

ID Extension Package Version Category License Language
9530 logical_ddl logical_ddl 0.1.0 ETL MIT C
Attribute Has Binary Has Library Need Load Has DDL Relocatable Trusted
--s-d-- No Yes No Yes no no
Relationships
Schemas logical_ddl
See Also pglogical pgl_ddl_deploy spock pgactive mimeo pgoutput lolor
Pigsty carries the upstream RAISE WARNING typo fix for 0.1.0.

Packages

Type Repo Version PG Major Compatibility Package Pattern Dependencies
EXT PIGSTY 0.1.0 18 17 16 15 14 logical_ddl -
RPM PIGSTY 0.1.0 18 17 16 15 14 logical_ddl_$v -
DEB PIGSTY 0.1.0 18 17 16 15 14 postgresql-$v-logical-ddl -
Linux / PG PG18 PG17 PG16 PG15 PG14
el8.x86_64 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0
el8.aarch64 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0
el9.x86_64 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0
el9.aarch64 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0
el10.x86_64 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0
el10.aarch64 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0
d12.x86_64 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0
d12.aarch64 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0
d13.x86_64 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0
d13.aarch64 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0
u22.x86_64 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0
u22.aarch64 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0
u24.x86_64 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0
u24.aarch64 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0
u26.x86_64 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0
u26.aarch64 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0 PIGSTY 0.1.0
Package Version OS ORG SIZE File URL
logical_ddl_18 0.1.0 el8.x86_64 pigsty 17.1 KiB logical_ddl_18-0.1.0-1PIGSTY.el8.x86_64.rpm
logical_ddl_18 0.1.0 el8.aarch64 pigsty 17.3 KiB logical_ddl_18-0.1.0-1PIGSTY.el8.aarch64.rpm
logical_ddl_18 0.1.0 el9.x86_64 pigsty 17.0 KiB logical_ddl_18-0.1.0-1PIGSTY.el9.x86_64.rpm
logical_ddl_18 0.1.0 el9.aarch64 pigsty 17.1 KiB logical_ddl_18-0.1.0-1PIGSTY.el9.aarch64.rpm
logical_ddl_18 0.1.0 el10.x86_64 pigsty 17.2 KiB logical_ddl_18-0.1.0-1PIGSTY.el10.x86_64.rpm
logical_ddl_18 0.1.0 el10.aarch64 pigsty 17.3 KiB logical_ddl_18-0.1.0-1PIGSTY.el10.aarch64.rpm
postgresql-18-logical-ddl 0.1.0 d12.x86_64 pigsty 15.3 KiB postgresql-18-logical-ddl_0.1.0-1PIGSTY~bookworm_amd64.deb
postgresql-18-logical-ddl 0.1.0 d12.aarch64 pigsty 15.3 KiB postgresql-18-logical-ddl_0.1.0-1PIGSTY~bookworm_arm64.deb
postgresql-18-logical-ddl 0.1.0 d13.x86_64 pigsty 15.3 KiB postgresql-18-logical-ddl_0.1.0-1PIGSTY~trixie_amd64.deb
postgresql-18-logical-ddl 0.1.0 d13.aarch64 pigsty 15.3 KiB postgresql-18-logical-ddl_0.1.0-1PIGSTY~trixie_arm64.deb
postgresql-18-logical-ddl 0.1.0 u22.x86_64 pigsty 16.0 KiB postgresql-18-logical-ddl_0.1.0-1PIGSTY~jammy_amd64.deb
postgresql-18-logical-ddl 0.1.0 u22.aarch64 pigsty 16.1 KiB postgresql-18-logical-ddl_0.1.0-1PIGSTY~jammy_arm64.deb
postgresql-18-logical-ddl 0.1.0 u24.x86_64 pigsty 16.0 KiB postgresql-18-logical-ddl_0.1.0-1PIGSTY~noble_amd64.deb
postgresql-18-logical-ddl 0.1.0 u24.aarch64 pigsty 15.7 KiB postgresql-18-logical-ddl_0.1.0-1PIGSTY~noble_arm64.deb
postgresql-18-logical-ddl 0.1.0 u26.x86_64 pigsty 16.1 KiB postgresql-18-logical-ddl_0.1.0-1PIGSTY~resolute_amd64.deb
postgresql-18-logical-ddl 0.1.0 u26.aarch64 pigsty 15.9 KiB postgresql-18-logical-ddl_0.1.0-1PIGSTY~resolute_arm64.deb
Package Version OS ORG SIZE File URL
logical_ddl_17 0.1.0 el8.x86_64 pigsty 17.1 KiB logical_ddl_17-0.1.0-1PIGSTY.el8.x86_64.rpm
logical_ddl_17 0.1.0 el8.aarch64 pigsty 17.3 KiB logical_ddl_17-0.1.0-1PIGSTY.el8.aarch64.rpm
logical_ddl_17 0.1.0 el9.x86_64 pigsty 17.0 KiB logical_ddl_17-0.1.0-1PIGSTY.el9.x86_64.rpm
logical_ddl_17 0.1.0 el9.aarch64 pigsty 17.1 KiB logical_ddl_17-0.1.0-1PIGSTY.el9.aarch64.rpm
logical_ddl_17 0.1.0 el10.x86_64 pigsty 17.2 KiB logical_ddl_17-0.1.0-1PIGSTY.el10.x86_64.rpm
logical_ddl_17 0.1.0 el10.aarch64 pigsty 17.3 KiB logical_ddl_17-0.1.0-1PIGSTY.el10.aarch64.rpm
postgresql-17-logical-ddl 0.1.0 d12.x86_64 pigsty 15.3 KiB postgresql-17-logical-ddl_0.1.0-1PIGSTY~bookworm_amd64.deb
postgresql-17-logical-ddl 0.1.0 d12.aarch64 pigsty 15.3 KiB postgresql-17-logical-ddl_0.1.0-1PIGSTY~bookworm_arm64.deb
postgresql-17-logical-ddl 0.1.0 d13.x86_64 pigsty 15.3 KiB postgresql-17-logical-ddl_0.1.0-1PIGSTY~trixie_amd64.deb
postgresql-17-logical-ddl 0.1.0 d13.aarch64 pigsty 15.3 KiB postgresql-17-logical-ddl_0.1.0-1PIGSTY~trixie_arm64.deb
postgresql-17-logical-ddl 0.1.0 u22.x86_64 pigsty 18.6 KiB postgresql-17-logical-ddl_0.1.0-1PIGSTY~jammy_amd64.deb
postgresql-17-logical-ddl 0.1.0 u22.aarch64 pigsty 18.7 KiB postgresql-17-logical-ddl_0.1.0-1PIGSTY~jammy_arm64.deb
postgresql-17-logical-ddl 0.1.0 u24.x86_64 pigsty 16.0 KiB postgresql-17-logical-ddl_0.1.0-1PIGSTY~noble_amd64.deb
postgresql-17-logical-ddl 0.1.0 u24.aarch64 pigsty 15.7 KiB postgresql-17-logical-ddl_0.1.0-1PIGSTY~noble_arm64.deb
postgresql-17-logical-ddl 0.1.0 u26.x86_64 pigsty 16.1 KiB postgresql-17-logical-ddl_0.1.0-1PIGSTY~resolute_amd64.deb
postgresql-17-logical-ddl 0.1.0 u26.aarch64 pigsty 15.9 KiB postgresql-17-logical-ddl_0.1.0-1PIGSTY~resolute_arm64.deb
Package Version OS ORG SIZE File URL
logical_ddl_16 0.1.0 el8.x86_64 pigsty 17.1 KiB logical_ddl_16-0.1.0-1PIGSTY.el8.x86_64.rpm
logical_ddl_16 0.1.0 el8.aarch64 pigsty 17.3 KiB logical_ddl_16-0.1.0-1PIGSTY.el8.aarch64.rpm
logical_ddl_16 0.1.0 el9.x86_64 pigsty 17.0 KiB logical_ddl_16-0.1.0-1PIGSTY.el9.x86_64.rpm
logical_ddl_16 0.1.0 el9.aarch64 pigsty 17.1 KiB logical_ddl_16-0.1.0-1PIGSTY.el9.aarch64.rpm
logical_ddl_16 0.1.0 el10.x86_64 pigsty 17.2 KiB logical_ddl_16-0.1.0-1PIGSTY.el10.x86_64.rpm
logical_ddl_16 0.1.0 el10.aarch64 pigsty 17.3 KiB logical_ddl_16-0.1.0-1PIGSTY.el10.aarch64.rpm
postgresql-16-logical-ddl 0.1.0 d12.x86_64 pigsty 15.3 KiB postgresql-16-logical-ddl_0.1.0-1PIGSTY~bookworm_amd64.deb
postgresql-16-logical-ddl 0.1.0 d12.aarch64 pigsty 15.2 KiB postgresql-16-logical-ddl_0.1.0-1PIGSTY~bookworm_arm64.deb
postgresql-16-logical-ddl 0.1.0 d13.x86_64 pigsty 15.3 KiB postgresql-16-logical-ddl_0.1.0-1PIGSTY~trixie_amd64.deb
postgresql-16-logical-ddl 0.1.0 d13.aarch64 pigsty 15.3 KiB postgresql-16-logical-ddl_0.1.0-1PIGSTY~trixie_arm64.deb
postgresql-16-logical-ddl 0.1.0 u22.x86_64 pigsty 18.5 KiB postgresql-16-logical-ddl_0.1.0-1PIGSTY~jammy_amd64.deb
postgresql-16-logical-ddl 0.1.0 u22.aarch64 pigsty 18.6 KiB postgresql-16-logical-ddl_0.1.0-1PIGSTY~jammy_arm64.deb
postgresql-16-logical-ddl 0.1.0 u24.x86_64 pigsty 16.0 KiB postgresql-16-logical-ddl_0.1.0-1PIGSTY~noble_amd64.deb
postgresql-16-logical-ddl 0.1.0 u24.aarch64 pigsty 15.7 KiB postgresql-16-logical-ddl_0.1.0-1PIGSTY~noble_arm64.deb
postgresql-16-logical-ddl 0.1.0 u26.x86_64 pigsty 16.1 KiB postgresql-16-logical-ddl_0.1.0-1PIGSTY~resolute_amd64.deb
postgresql-16-logical-ddl 0.1.0 u26.aarch64 pigsty 15.9 KiB postgresql-16-logical-ddl_0.1.0-1PIGSTY~resolute_arm64.deb
Package Version OS ORG SIZE File URL
logical_ddl_15 0.1.0 el8.x86_64 pigsty 17.1 KiB logical_ddl_15-0.1.0-1PIGSTY.el8.x86_64.rpm
logical_ddl_15 0.1.0 el8.aarch64 pigsty 17.3 KiB logical_ddl_15-0.1.0-1PIGSTY.el8.aarch64.rpm
logical_ddl_15 0.1.0 el9.x86_64 pigsty 17.0 KiB logical_ddl_15-0.1.0-1PIGSTY.el9.x86_64.rpm
logical_ddl_15 0.1.0 el9.aarch64 pigsty 17.1 KiB logical_ddl_15-0.1.0-1PIGSTY.el9.aarch64.rpm
logical_ddl_15 0.1.0 el10.x86_64 pigsty 17.2 KiB logical_ddl_15-0.1.0-1PIGSTY.el10.x86_64.rpm
logical_ddl_15 0.1.0 el10.aarch64 pigsty 17.3 KiB logical_ddl_15-0.1.0-1PIGSTY.el10.aarch64.rpm
postgresql-15-logical-ddl 0.1.0 d12.x86_64 pigsty 15.3 KiB postgresql-15-logical-ddl_0.1.0-1PIGSTY~bookworm_amd64.deb
postgresql-15-logical-ddl 0.1.0 d12.aarch64 pigsty 15.3 KiB postgresql-15-logical-ddl_0.1.0-1PIGSTY~bookworm_arm64.deb
postgresql-15-logical-ddl 0.1.0 d13.x86_64 pigsty 15.3 KiB postgresql-15-logical-ddl_0.1.0-1PIGSTY~trixie_amd64.deb
postgresql-15-logical-ddl 0.1.0 d13.aarch64 pigsty 15.3 KiB postgresql-15-logical-ddl_0.1.0-1PIGSTY~trixie_arm64.deb
postgresql-15-logical-ddl 0.1.0 u22.x86_64 pigsty 18.5 KiB postgresql-15-logical-ddl_0.1.0-1PIGSTY~jammy_amd64.deb
postgresql-15-logical-ddl 0.1.0 u22.aarch64 pigsty 18.6 KiB postgresql-15-logical-ddl_0.1.0-1PIGSTY~jammy_arm64.deb
postgresql-15-logical-ddl 0.1.0 u24.x86_64 pigsty 16.0 KiB postgresql-15-logical-ddl_0.1.0-1PIGSTY~noble_amd64.deb
postgresql-15-logical-ddl 0.1.0 u24.aarch64 pigsty 15.8 KiB postgresql-15-logical-ddl_0.1.0-1PIGSTY~noble_arm64.deb
postgresql-15-logical-ddl 0.1.0 u26.x86_64 pigsty 16.1 KiB postgresql-15-logical-ddl_0.1.0-1PIGSTY~resolute_amd64.deb
postgresql-15-logical-ddl 0.1.0 u26.aarch64 pigsty 15.9 KiB postgresql-15-logical-ddl_0.1.0-1PIGSTY~resolute_arm64.deb
Package Version OS ORG SIZE File URL
logical_ddl_14 0.1.0 el8.x86_64 pigsty 17.1 KiB logical_ddl_14-0.1.0-1PIGSTY.el8.x86_64.rpm
logical_ddl_14 0.1.0 el8.aarch64 pigsty 17.3 KiB logical_ddl_14-0.1.0-1PIGSTY.el8.aarch64.rpm
logical_ddl_14 0.1.0 el9.x86_64 pigsty 17.0 KiB logical_ddl_14-0.1.0-1PIGSTY.el9.x86_64.rpm
logical_ddl_14 0.1.0 el9.aarch64 pigsty 17.1 KiB logical_ddl_14-0.1.0-1PIGSTY.el9.aarch64.rpm
logical_ddl_14 0.1.0 el10.x86_64 pigsty 17.2 KiB logical_ddl_14-0.1.0-1PIGSTY.el10.x86_64.rpm
logical_ddl_14 0.1.0 el10.aarch64 pigsty 17.3 KiB logical_ddl_14-0.1.0-1PIGSTY.el10.aarch64.rpm
postgresql-14-logical-ddl 0.1.0 d12.x86_64 pigsty 15.3 KiB postgresql-14-logical-ddl_0.1.0-1PIGSTY~bookworm_amd64.deb
postgresql-14-logical-ddl 0.1.0 d12.aarch64 pigsty 15.3 KiB postgresql-14-logical-ddl_0.1.0-1PIGSTY~bookworm_arm64.deb
postgresql-14-logical-ddl 0.1.0 d13.x86_64 pigsty 15.3 KiB postgresql-14-logical-ddl_0.1.0-1PIGSTY~trixie_amd64.deb
postgresql-14-logical-ddl 0.1.0 d13.aarch64 pigsty 15.3 KiB postgresql-14-logical-ddl_0.1.0-1PIGSTY~trixie_arm64.deb
postgresql-14-logical-ddl 0.1.0 u22.x86_64 pigsty 18.5 KiB postgresql-14-logical-ddl_0.1.0-1PIGSTY~jammy_amd64.deb
postgresql-14-logical-ddl 0.1.0 u22.aarch64 pigsty 18.5 KiB postgresql-14-logical-ddl_0.1.0-1PIGSTY~jammy_arm64.deb
postgresql-14-logical-ddl 0.1.0 u24.x86_64 pigsty 15.9 KiB postgresql-14-logical-ddl_0.1.0-1PIGSTY~noble_amd64.deb
postgresql-14-logical-ddl 0.1.0 u24.aarch64 pigsty 15.7 KiB postgresql-14-logical-ddl_0.1.0-1PIGSTY~noble_arm64.deb
postgresql-14-logical-ddl 0.1.0 u26.x86_64 pigsty 16.0 KiB postgresql-14-logical-ddl_0.1.0-1PIGSTY~resolute_amd64.deb
postgresql-14-logical-ddl 0.1.0 u26.aarch64 pigsty 15.9 KiB postgresql-14-logical-ddl_0.1.0-1PIGSTY~resolute_arm64.deb

Source

pig build pkg logical_ddl;		# build rpm/deb

Install

Make sure PGDG and PIGSTY repo available:

pig repo add pgsql -u   # add both repo and update cache

Install this extension with pig:

pig install logical_ddl;		# install via package name, for the active PG version

pig install logical_ddl -v 18;   # install for PG 18
pig install logical_ddl -v 17;   # install for PG 17
pig install logical_ddl -v 16;   # install for PG 16
pig install logical_ddl -v 15;   # install for PG 15
pig install logical_ddl -v 14;   # install for PG 14

Create this extension with:

CREATE EXTENSION logical_ddl;

Usage

Source: README

logical_ddl captures a limited set of ALTER TABLE changes, writes them into a replicated shadow table, and replays equivalent DDL on logical-replication subscribers.

Supported DDL

  • ALTER TABLE ... RENAME TO ...
  • ALTER TABLE ... RENAME COLUMN ... TO ...
  • ALTER TABLE ... ADD COLUMN ...
  • ALTER TABLE ... ALTER COLUMN ... TYPE ...
  • ALTER TABLE ... DROP COLUMN ...

Built-in types, arrays, composite types, domains, and enums are supported as column types, but the extension does not replicate the definitions of those custom types themselves.

Publisher and subscriber setup

CREATE EXTENSION logical_ddl;

-- Publisher
INSERT INTO logical_ddl.settings VALUES (true, 'source1');
INSERT INTO logical_ddl.publish_tablelist (relid) VALUES ('table1'::regclass);
ALTER PUBLICATION log_pub_1 ADD TABLE logical_ddl.shadow_table;

-- Subscriber
INSERT INTO logical_ddl.settings VALUES (false, 'source1');
INSERT INTO logical_ddl.subscribe_tablelist (source, relid)
VALUES ('source1', 'table1'::regclass);
ALTER SUBSCRIPTION log_sub_1 REFRESH PUBLICATION;

Main tables

  • logical_ddl.settings: declares publisher/subscriber role and source name.
  • logical_ddl.publish_tablelist: tables and command kinds to capture.
  • logical_ddl.subscribe_tablelist: target tables and command kinds to replay.
  • logical_ddl.shadow_table: replicated command log.
  • logical_ddl.applied_commands: replay history and failure tracking.

Caveats

  • The extension works under superuser privileges.
  • USING expressions for type changes, default expressions, constraints, and indexes are not implemented.
  • Pigsty notes an upstream RAISE WARNING typo fix for 0.1.0; that does not change the user-facing usage documented here.