Re: Support logical replication of DDLs - Mailing list pgsql-hackers
From | vignesh C |
---|---|
Subject | Re: Support logical replication of DDLs |
Date | |
Msg-id | CALDaNm3BgK+RAf6U9tyyGSMxJ0qu6ZHSD+81uUT5+dzuvgAK7w@mail.gmail.com Whole thread Raw |
In response to | Re: Support logical replication of DDLs (shveta malik <shveta.malik@gmail.com>) |
Responses |
Re: Support logical replication of DDLs
|
List | pgsql-hackers |
On Mon, 22 May 2023 at 11:27, shveta malik <shveta.malik@gmail.com> wrote: > > On Wed, May 17, 2023 at 4:45 PM vignesh C <vignesh21@gmail.com> wrote: > > > > On Wed, 17 May 2023 at 15:41, shveta malik <shveta.malik@gmail.com> wrote: > > > > > > On Fri, May 12, 2023 at 12:03 PM shveta malik <shveta.malik@gmail.com> wrote: > > > > > > > > On Tue, May 9, 2023 at 4:23 PM shveta malik <shveta.malik@gmail.com> wrote: > > > > > > > > > > On Mon, May 8, 2023 at 4:31 PM shveta malik <shveta.malik@gmail.com> wrote: > > > > > > > > > > > > On Mon, May 8, 2023 at 3:58 PM shveta malik <shveta.malik@gmail.com> wrote: > > > > > > > > > > > > > > On Tue, May 2, 2023 at 8:30 AM shveta malik <shveta.malik@gmail.com> wrote: > > > > > > > > > > > > > > > > On Fri, Apr 28, 2023 at 5:11 PM Amit Kapila <amit.kapila16@gmail.com> wrote: > > > > > > > > > > > > > > > > > > Now, I think we can try to eliminate this entire ObjTree machinery and > > > > > > > > > directly from the JSON blob during deparsing. We have previously also > > > > > > > > > discussed this in an email chain at [1]. I think now the functionality > > > > > > > > > of JSONB has also been improved and we should investigate whether it > > > > > > > > > is feasible to directly use JSONB APIs to form the required blob. > > > > > > > > > > > > > > > > +1. > > > > > > > > I will investigate this and will share my findings. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Please find the PoC patch for create-table after object-tree removal. > > > > > > > > > > > > > > > > > > > Please find the new set of patches attached for object-tree removal. > > > > > > Please find the new set of patches for object-tree Removal. The new > > > changes are in patch 0008 only. The new changes incorporate the > > > object-tree removal for 'alter table' command. > > > > Please find the new set of patches for object-tree Removal. The new > changes are in patch 0008 only. The new changes address object tree > removal for below commands. > > create sequence > alter sequence > alter object owner to > alter object set schema > alter object rename > > In this patch 0008, ddldeparse.c is now object-tree free for all the > table related commands. Index related commands are yet to be done. 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. * 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 */ +} 3) This statement is not being handled currently, it should be implemented: "alter table all in tablespace tbs1 set tablespace" 4) This pub_ddl is selected as the 7th column, it should be 7 instead of 9 here: @@ -6405,6 +6418,8 @@ describePublications(const char *pattern) printTableAddCell(&cont, PQgetvalue(res, i, 4), false, false); printTableAddCell(&cont, PQgetvalue(res, i, 5), false, false); printTableAddCell(&cont, PQgetvalue(res, i, 6), false, false); + if (has_pubddl) + printTableAddCell(&cont, PQgetvalue(res, i, 9), false, false); if (has_pubtruncate) printTableAddCell(&cont, PQgetvalue(res, i, 7), false, false); if (has_pubviaroot) Regards, Vignesh
pgsql-hackers by date: