public inbox for pgsql-general@postgresql.org
help / color / mirror / Atom feedFrom: Andres Freund <andres@anarazel.de>
To: Hannu Krosing <hannuk@google.com>
Cc: Dilip Kumar <dilipbalaut@gmail.com>
Cc: Amit Kapila <amit.kapila16@gmail.com>
Cc: Masahiko Sawada <sawada.mshk@gmail.com>
Cc: Vitaly Davydov <v.davydov@postgrespro.ru>
Cc: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Subject: Re: Support logical replication of DDLs, take2
Date: Wed, 29 Apr 2026 08:10:17 -0400
Message-ID: <2oh4o4zvj2jreituesxgglmnseo2m2brffms3lvao6mseemto6@32v67ejhxlht> (raw)
In-Reply-To: <CAMT0RQThNce3+0MEzbqNWov7uZZQbiyFrhrod3g+MeKoAqjRbw@mail.gmail.com>
References: <CAD21AoCzjzr5VqVkpVWkN7V6vrFhac=yXSNMz6rkSE+KOPPU0w@mail.gmail.com>
<CAExHW5ufb1CAcEP1o03M3c=q6AgCzdSLOFaxbC-dJN-k7ymqaA@mail.gmail.com>
<38690b0e-f91b-46fa-b72a-57775612e463@postgrespro.ru>
<CAD21AoCTdgHGcEQLwbqXR1E6aC1VyO8wOB4S4U6nU50bZQ+NzQ@mail.gmail.com>
<CAD21AoCzT3sytVbimRNdjRF=N3R-8ddaWKW95EzsdderXqcm4g@mail.gmail.com>
<CAFiTN-t1d3vzTMy4X=R_9m2AOmyVKpYQWKfZnOrat2voBi-K9g@mail.gmail.com>
<CAA4eK1LoUyyPGZExMRuhQ2g=_PvpE-NQra-dcE1OF=WeWnURZQ@mail.gmail.com>
<CAMT0RQQQ5DAE74GSFnEAtEOGN3tXcXYt==fR1gPZ+PGZD+waPg@mail.gmail.com>
<CAFiTN-vG4z03ar5PMYT3ehe+yzKH8+nPR4uqhNEhnax0DmOq_g@mail.gmail.com>
<CAMT0RQThNce3+0MEzbqNWov7uZZQbiyFrhrod3g+MeKoAqjRbw@mail.gmail.com>
Hi,
On 2026-04-29 10:07:04 +0200, Hannu Krosing wrote:
> On Wed, Apr 29, 2026 at 5:39 AM Dilip Kumar <dilipbalaut@gmail.com> wrote:
>
> > I am trying to understand your idea. If we are trying to deparse from
> > an actual system table using a snapshot, why don't we just use the
> > WAL? I mean, the WAL should contain the actual catalog modifications
> > it has made.
>
> We have the full data in the catalog and we would likely need catalog
> queries for any change, even when de-parsing the tree.
>
> And we should not add the extra load on the original DDL side, just as
> we don't for DML.
That can't be a relevant cost compared to everything else.
> At most we could just serialize the statement tree into the WAL,
> though even that may be an overkill if we can get the change from
> existing records.
>
> - insert new row in pg_class --> extract the CREATE TABLE (or INDEX, or ...)
> - update row in pg_class or insert, update or delete a row in
> pg_attribute --> extract ALTER TABLE
> - except when it just updates relfilenod --> extract TRUNCATE
> - delete row in pg_class --> DROP TABLE
> - dml on pg_constraint --> ALTER TABLE
>
> ... etc
That doesn't work in the general case, think of
ALTER TABLE ... ALTER COLUMN ... TYPE foo USING (...)
There's a big difference between USING(foo::int8) and USING (pg_size_bytes(foo))
but it's nowhere visible in the WAL.
Greetings,
Andres Freund
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-general@postgresql.org
Cc: andres@anarazel.de, hannuk@google.com, dilipbalaut@gmail.com, amit.kapila16@gmail.com, sawada.mshk@gmail.com, v.davydov@postgrespro.ru, ashutosh.bapat.oss@gmail.com, pgsql-hackers@lists.postgresql.org
Subject: Re: Support logical replication of DDLs, take2
In-Reply-To: <2oh4o4zvj2jreituesxgglmnseo2m2brffms3lvao6mseemto6@32v67ejhxlht>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox