Re: Support logical replication of DDLs
vignesh C <vignesh21@gmail.com>
From: vignesh C <vignesh21@gmail.com>
To: shveta malik <shveta.malik@gmail.com>
Cc: Amit Kapila <amit.kapila16@gmail.com>, "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>,
Ajin Cherian <itsajin@gmail.com>, "Wei Wang (Fujitsu)" <wangw.fnst@fujitsu.com>,
Runqi Tian <runqidev@gmail.com>, Peter Smith <smithpb2250@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>,
li jie <ggysxcq@gmail.com>, Dilip Kumar <dilipbalaut@gmail.com>,
Alvaro Herrera <alvherre@alvh.no-ip.org>, 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-05-30T11:19:18Z
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
- 0003-Add-verbose-option-for-ddl-deparse-module-2023_05_30.patch (text/x-patch) patch 0003
- 0002-Enhance-the-event-trigger-to-support-DDL-deparsing-2023_05_30.patch (text/x-patch) patch 0002
- 0001-Deparser-for-Table-DDL-commands-and-extending-event-2023_05_30.patch (text/x-patch) patch 0001
- 0005-DDL-replication-for-Table-DDL-commands-2023_05_30.patch (text/x-patch) patch 0005
- 0004-Introduce-the-test_ddl_deparse_regress-test-module-2023_05_30.patch (text/x-patch) patch 0004
- 0006-Add-subscription-tap-test-for-DDL-replication-for-TA-2023_05_30.patch (text/x-patch) patch 0006
- 0007-Apply-the-DDL-change-as-that-same-user-that-executed-2023_05_30.patch (text/x-patch) patch 0007
- 0008-ObjTree-Removal-for-multiple-commands-2023_05_30.patch (text/x-patch) patch 0008
On Tue, 30 May 2023 at 08:23, shveta malik <shveta.malik@gmail.com> wrote:
>
> On Mon, May 29, 2023 at 6:16 PM vignesh C <vignesh21@gmail.com> wrote:
> >
>
> > >
> > > I found few comments while making some changes to the patch:
> > > 1) Now that objtree is removed, these comments should be modified:
> > > * Deparse object tree is created by using:
> > > * a) new_objtree("know contents") where the complete tree content is known or
> > > * the initial tree content is known.
> > > * b) new_objtree("") for the syntax where the object tree will be derived
> > > * based on some conditional checks.
> > > * c) new_objtree_VA where the complete tree can be derived using some fixed
> > > * content or by using the initial tree content along with some variable
> > > * arguments.
> > > *
> >
> > Modified
> >
> > > 2) isgrant can be removed as it is not used anymore:
> > > +/*
> > > + * Return the given object type as a string.
> > > + *
> > > + * If isgrant is true, then this function is called while deparsing GRANT
> > > + * statement and some object names are replaced.
> > > + */
> > > +const char *
> > > +stringify_objtype(ObjectType objtype, bool isgrant)
> > > +{
> > > + switch (objtype)
> > > + {
> > > + case OBJECT_TABLE:
> > > + return "TABLE";
> > > + default:
> > > + elog(ERROR, "unsupported object type %d", objtype);
> > > + }
> > > +
> > > + return "???"; /* keep compiler quiet */
> > > +}
> >
> > Modified
> >
> > > 3) This statement is not being handled currently, it should be implemented:
> > > "alter table all in tablespace tbs1 set tablespace"
> >
> > Modified
> >
>
> With the above fix, are the below commented tests in alter_table.sql
> supposed to work? If so, shall these be uncommented?
> -- ALTER TABLE ALL IN TABLESPACE pg_default SET TABLESPACE pg_default;
> -- ALTER TABLE ALL IN TABLESPACE pg_default OWNED BY ddl_testing_role
> SET TABLESPACE pg_default;
The attached patch has the changes for the above. I have also
uncommented another couple of tests in alter_table which was failing
because it was capturing the internally generated indexes from alter
table, I have updated deparse_drops_to_json accordingly to capture
only table related drop commands. The attached patch has the changes
for the same. The changes were done in
0008-ObjTree-Removal-for-multiple-commands-2023_05_30.patch for the
same.
Regards,
Vignesh