RE: Support logical replication of DDLs
Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>
From: "houzj.fnst@fujitsu.com" <houzj.fnst@fujitsu.com>
To: "wangw.fnst@fujitsu.com" <wangw.fnst@fujitsu.com>
Cc: Runqi Tian <runqidev@gmail.com>, vignesh C <vignesh21@gmail.com>, Peter
Smith <smithpb2250@gmail.com>, li jie <ggysxcq@gmail.com>, Ajin Cherian <itsajin@gmail.com>, Dilip Kumar <dilipbalaut@gmail.com>, Alvaro Herrera <alvherre@alvh.no-ip.org>, Amit Kapila <amit.kapila16@gmail.com>, Masahiko
Sawada <sawada.mshk@gmail.com>, Japin Li <japinli@hotmail.com>, rajesh
singarapu <rajesh.rs0541@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Zheng Li <zhengli10@gmail.com>
Date: 2023-03-20T09:17:37Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Add a run_as_owner option to subscriptions.
- 482675987bcd 16.0 cited
-
Refactor pgoutput_change().
- da324d6cd45b 16.0 cited
-
Print the correct aliases for DML target tables in ruleutils.
- df931e9ab35b 11.20 landed
- c8a5f1685fb7 15.3 landed
- 4efb4f0d4878 13.11 landed
- 3dd287c14fac 12.15 landed
- 393430f57544 16.0 landed
- 14345f3c6a7b 14.8 landed
-
Fix object identity string for transforms
- 9a312562314a 16.0 landed
-
Add grantable MAINTAIN privilege and pg_maintain role.
- 60684dd834a2 16.0 cited
-
Get rid of recursion-marker values in enum AlterTableType
- 840ff5f451cd 16.0 cited
-
Release cache tuple when no longer needed
- ed0fbc8e5ac9 15.0 cited
-
Empty search_path in logical replication apply worker and walsender.
- 11da97024abb 14.0 cited
-
Refactor format_type APIs to be more modular
- a26116c6cbf4 11.0 cited
-
Use wrappers of PG_DETOAST_DATUM_PACKED() more.
- 3a0d473192b2 10.0 cited
Attachments
- v81-0007-Document-DDL-replication-and-DDL-deparser.patch (application/octet-stream) patch v81-0007
- v81-0008-Allow-replicated-objects-to-have-the-same-owner-.patch (application/octet-stream) patch v81-0008
- v81-0001-Infrastructure-to-support-DDL-deparsing.patch (application/octet-stream) patch v81-0001
- v81-0002-Functions-to-deparse-Table-DDL-commands.patch (application/octet-stream) patch v81-0002
- v81-0003-Support-DDL-deparse-of-the-rest-commands.patch (application/octet-stream) patch v81-0003
- v81-0004-Introduce-the-test_ddl_deparse_regress-test-modu.patch (application/octet-stream) patch v81-0004
- v81-0005-DDL-messaging-infrastructure-for-DDL-replication.patch (application/octet-stream) patch v81-0005
- v81-0006-Support-DDL-replication.patch (application/octet-stream) patch v81-0006
On Thu, Mar 16, 2023 10:44 AM Wang, Wei/王 威 <wangw.fnst@fujitsu.com> wrote:
> On Tues, Mar 14, 2023 12:17 PM Ajin Cherian <itsajin@gmail.com> wrote:
> > On Mon, Mar 13, 2023 at 2:24 AM Zheng Li <zhengli10@gmail.com> wrote:
> > >
> > > Thanks for working on the test coverage for CREATE and ALTER TABLE.
> > > I've made fixes for some of the failures in the v79 patch set
> > > (0002,
> > > 0003 and 0004 are updated). The changes includes:
> > > 1. Fixed a syntax error caused by ON COMMIT clause placement in
> > > deparse_CreateStmt.
> > > 2. Fixed deparse_Seq_As and start using it in
> > > deparse_CreateSeqStmt, this issue is also reported in [1].
> > > 3. Fixed a bug in append_not_present: the 'present: false' element
> > > can't be omitted even in non-verbose mode. It will cause syntax
> > > error on reformed command if 'present: false' element is missing
> > > but the fmt string indicates the corresponding object must be present.
> > > 4. Replaced if_not_exists with if_exists in deparse of
> > > AT_DropConstraint and AT_DropColumn.
> > > 5. Added missing CASCADE clause for AT_DropConstraint deparse.
> > > 6. Enabled the fixed test cases.
> > >
> >
> > I found out that the option ONLY was not parsed in the "CREATE INDEX"
> > command,
> > for eg: CREATE UNIQUE INDEX ... ON ONLY table_name ...
> >
> > I've fixed this in patch 0002.
>
> Thanks for the new patch set.
>
> Here are some comments:
>
> For v-80-0002* patch.
> 1. The comments atop the function deparse_IndexStmt.
> + * Verbose syntax
> + * CREATE %{unique}s INDEX %{concurrently}s %{if_not_exists}s
> +%{name}I ON
> + * %{table}D USING %{index_am}s %{definition}s %{with}s
> +%{tablespace}s
> + * %{where_clause}s %{nulls_not_distinct}s */ static ObjTree *
> +deparse_IndexStmt(Oid objectId, Node *parsetree)
>
> Since we added decoding for the [ONLY] option in this version, it
> seems that we also need to add related comments, like this:
> ```
> %{table}D USING %{index_am}s %{definition}s %{with}s %{tablespace}s
> ->
> %{only}s %{table}D USING %{index_am}s %{definition}s %{with}s
> %{tablespace}s ```
Added.
BTW, the parsed %{nulls_not_distinct}s is stored in the wrong order, so moved it from the last position before %{with}s.
> ===
>
> For v-80-0003* patch.
> 2. In the function deparse_CreateTrigStmt.
> I think we need to parse the [OR REPLACE] option for CREATE TRIGGER command.
>
> And I think there are two similar missing in the functions
> deparse_DefineStmt_Aggregate (option [OR REPLACE]) and
> deparse_DefineStmt_Collation (option [IF NOT EXISTS]).
Added.
> ===
>
> For v-80-0004* patch.
> 3. There are some whitespace errors:
> Applying: Introduce the test_ddl_deparse_regress test module.
> .git/rebase-apply/patch:163: new blank line at EOF.
> +
> .git/rebase-apply/patch:3020: new blank line at EOF.
> +
> .git/rebase-apply/patch:4114: new blank line at EOF.
> +
> warning: 3 lines add whitespace errors.
Fixed.
Attach the new patch set which addressed above comments.
0002,0003,0004 patch has been updated in this version.
Best Regards,
Hou zj