Thread

  1. Re: Proposal: Conflict log history table for Logical Replication

    vignesh C <vignesh21@gmail.com> — 2026-05-21T07:11:03Z

    On Thu, 21 May 2026 at 05:32, Peter Smith <smithpb2250@gmail.com> wrote:
    >
    > On Wed, May 20, 2026 at 8:50 PM Shlok Kyal <shlok.kyal.oss@gmail.com> wrote:
    > ..
    > > Comments for 0002:
    > > 2. We can rename the schema pg_conflict to a different schema name.
    > > Is it ok to hardcode the schema name to 'pg_conflict'?
    > > -                errmsg("cannot move objects into or out of CONFLICT schema")));
    > > +                errmsg("cannot move objects into or out of
    > > pg_conflict schema")));
    > >
    > > Example:
    > > postgres=# ALTER SCHEMA pg_conflict RENAME TO sc1;
    > > ALTER SCHEMA
    > > postgres=# ALTER TABLE t2 SET SCHEMA sc1;
    > > ERROR:  cannot move objects into or out of pg_conflict schema
    > >
    >
    > Yikes!
    >
    > I am not sure that the error message is the problem here. There are
    > worse things that are similar to this. e.g. I found that you can do
    > the same trick of renaming the 'pg_catalog' schema, and it breaks
    > anything that refers to that schema by name -- all the internal SQL!!
    >
    > test_pub=# ALTER SCHEMA pg_catalog RENAME TO mycatalog;
    > ALTER SCHEMA
    > test_pub=# \dRp+
    > ERROR:  relation "pg_catalog.pg_publication" does not exist
    > LINE 9: FROM pg_catalog.pg_publication
    >              ^
    
    I noticed this behavior with several other commands as well. For example:
    postgres=# ALTER SCHEMA pg_catalog RENAME TO test;
    ALTER SCHEMA
    postgres=# \d
    ERROR:  relation "pg_catalog.pg_class" does not exist
    LINE 6: FROM pg_catalog.pg_class c
                 ^
    postgres=# \dn
    ERROR:  relation "pg_catalog.pg_namespace" does not exist
    LINE 4: FROM pg_catalog.pg_namespace n
                 ^
    
    I observed similar behavior when creating a table in the renamed schema:
    postgres=# CREATE TABLE test.t1(c1 int);
    ERROR:  schema "pg_catalog" does not exist
    LINE 1: CREATE TABLE test.t1(c1 int);
                         ^
    
    Given that this appears to be a broader issue related to renaming
    pg_catalog, I think we can skip handling this case for now. If we
    decide to address it, it would be better to handle it together with
    the general pg_catalog rename behavior.
    
    Regards,
    Vignesh