Re: Support logical replication of DDLs

From: Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>
To: Ajin Cherian <itsajin(at)gmail(dot)com>
Cc: Peter Smith <smithpb2250(at)gmail(dot)com>, vignesh C <vignesh21(at)gmail(dot)com>, Zheng Li <zhengli10(at)gmail(dot)com>, li jie <ggysxcq(at)gmail(dot)com>, Dilip Kumar <dilipbalaut(at)gmail(dot)com>, Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>, "houzj(dot)fnst(at)fujitsu(dot)com" <houzj(dot)fnst(at)fujitsu(dot)com>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, Japin Li <japinli(at)hotmail(dot)com>, rajesh singarapu <rajesh(dot)rs0541(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Support logical replication of DDLs
Date: 2023-02-10 14:52:41
Message-ID: CAD21AoDf3M09f1cqKbJFQmNwx=QvrodABoBMq-ecFoVXQNUHpQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-hackers

Hi,

On Thu, Feb 9, 2023 at 6:55 PM Ajin Cherian <itsajin(at)gmail(dot)com> wrote:
>
(v67)

I have some questions about adding the infrastructure for DDL deparsing.

Apart from the changes made by 0001 patch to add infrastructure for
DDL deparsing, 0002 patch seems to add some variables that are not
used in 0002 patch:

@@ -2055,6 +2055,7 @@ typedef struct AlterTableStmt
List *cmds; /* list of subcommands */
ObjectType objtype; /* type of object */
bool missing_ok; /* skip error if table
missing */
+ bool table_like; /* internally generated for
TableLikeClause */
} AlterTableStmt;

@@ -39,6 +40,7 @@ typedef struct CollectedATSubcmd
{
ObjectAddress address; /* affected column,
constraint, index, ... */
Node *parsetree;
+ char *usingexpr;
} CollectedATSubcmd;

typedef struct CollectedCommand
@@ -62,6 +64,7 @@ typedef struct CollectedCommand
{
Oid objectId;
Oid classId;
+ bool rewrite;
List *subcmds;
} alterTable;

These three variables are used in 0006 patch.

Looking at 0006 patch (Support DDL replication), it seems to me that
it includes not only DDL replication support but also changes for the
event trigger. For instance, the patch adds
EventTriggerAlterTypeStart() and EventTriggerAlterTypeEnd(). If these
changes are required for DDL deparse, should we include them in 0001
patch? Perhaps the same is true for
EventTriggerCollectCreatePublication() and friends. IIUC the DDL
deparse and DDL replication are independent features, so I think 0006
patch should not include any changes for DDL deparse infrastructure.

Also, 0003 and 0006 patches introduce SCT_Create/AlterPublication and
change DDL deparse so that it deparse CREATE/ALTER PUBLICATION in a
different way from other simple commands. Is there any reason for
that? I mean, since EventTriggerCollectCreatePublication() collects
the information from the parse tree, I wonder if we could use
SCT_Simple for them.

Regards,

--
Masahiko Sawada
Amazon Web Services: https://aws.amazon.com

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2023-02-10 15:03:52 Re: valgrind a background worker
Previous Message Amit Kapila 2023-02-10 11:06:52 Re: Support logical replication of DDLs

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2023-02-10 14:58:25 Re: pg_usleep for multisecond delays
Previous Message Robert Haas 2023-02-10 14:43:57 Re: ICU locale validation / canonicalization