From: | Zheng Li <zhengli10(at)gmail(dot)com> |
---|---|
To: | li jie <ggysxcq(at)gmail(dot)com> |
Cc: | vignesh C <vignesh21(at)gmail(dot)com>, Ajin Cherian <itsajin(at)gmail(dot)com>, rajesh singarapu <rajesh(dot)rs0541(at)gmail(dot)com>, Peter Smith <smithpb2250(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>, Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>, Japin Li <japinli(at)hotmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Support logical replication of DDLs |
Date: | 2022-12-12 04:58:27 |
Message-ID: | CAAD30U+A=2rjZ+xejNz+e1A=udWPQMxHD8W48nbhxwJRfw_qrA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general pgsql-hackers |
Hi,
Attached please find the DDL deparser testing module in the v45-0007
patch, this testing module is written by Runqi Tian in [1] with minor
modification from myself. I think we can
start adding more tests to the module now that we're getting close to
finish implementing the DDL deparser.
This testing module ddl_deparse_regress aims to achieve the following
four testing goals for the DDL deparser:
1. Test that the generated JSON blob is expected using SQL tests.
2. Test that the re-formed DDL command is expected using SQL tests.
3. Test that the re-formed DDL command has the same effect as the
original command
by comparing the results of pg_dump, using the SQL tests in 1 and 2.
4. Test that any new DDL syntax is handled by the DDL deparser by
capturing and deparsing
DDL commands ran by pg_regress.
1 and 2 is tested with SQL tests, by comparing the deparsed JSON blob
and the re-formed command.
3 is tested with TAP framework in t/001_compare_dumped_results.pl
4 is tested with TAP framework and pg_regress in 002_regress_tests.pl,
the execution is currently commented out because it will fail due
unimplemented commands in the DDL deparser.
On Thu, Dec 8, 2022 at 10:32 PM li jie <ggysxcq(at)gmail(dot)com> wrote:
>
> >
> > Attached please find a new solution that skips the deparsing of ALTER TABLE
> > subcommands generated for TableLikeClause. The patch v42-0005 added a new
> > boolean field table_like to AlterTableStmt in order to identify an ALTER TABLE
> > subcommand generated internally for the TableLikeClause.
> >
> > Regards,
> > Zheng
>
> I took a look at this patch and it appears to be incomplete.
>
> > @@ -1974,6 +1974,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;
>
> The table_like field should include implementations of the `copynode`
> and `equalnode `methods.
Looks like this we don't need to manually update
copynode/equalnode/readnode/outnode
now that they are generated by ./src/backend/nodes/gen_node_support.pl.
> I think temporary objects should not be part of replication because
> they are visible within the session.
> replicate them over would not make them visible to the user and would
> not be meaningful.
We currently don't replicate temporary tables:
event_trigger.c
/*
* Do not generate wal log for commands whose target table is a
* temporary table.
*
* We will generate wal logs for unlogged tables so that unlogged
* tables can also be created and altered on the subscriber side. This
* makes it possible to directly replay the SET LOGGED command and the
* incoming rewrite message without creating a new table.
*/
if (relpersist == RELPERSISTENCE_TEMP)
continue;
Regards,
Zheng
Attachment | Content-Type | Size |
---|---|---|
v45-0002-Support-DDL-replication.patch | application/octet-stream | 133.5 KB |
v45-0005-Skip-ALTER-TABLE-subcommands-generated-for-TableLike.patch | application/octet-stream | 2.2 KB |
v45-0004-Test-cases-for-DDL-replication.patch | application/octet-stream | 24.6 KB |
v45-0003-Support-CREATE-TABLE-AS-SELECT-INTO.patch | application/octet-stream | 15.7 KB |
v45-0001-Functions-to-deparse-DDL-commands.patch | application/octet-stream | 317.7 KB |
v45-0007-Introduce-the-test_ddl_deparse_regress-test-module.-.patch | application/octet-stream | 41.0 KB |
v45-0006-Support-DDL-replication-of-alter-type-having-USING-e.patch | application/octet-stream | 9.0 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Ajin Cherian | 2022-12-12 12:20:29 | Re: Support logical replication of DDLs |
Previous Message | Peter J. Holzer | 2022-12-11 13:44:12 | Re: Regular expression to UPPER() a lower case string |
From | Date | Subject | |
---|---|---|---|
Next Message | Zheng Li | 2022-12-12 05:05:22 | Re: Testing DDL Deparser |
Previous Message | David Rowley | 2022-12-12 04:50:09 | Re: [PoC] Reducing planning time when tables have many partitions |