Thread

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

    shveta malik <shveta.malik@gmail.com> — 2026-05-26T09:38:19Z

    On Mon, May 25, 2026 at 10:13 AM vignesh C <vignesh21@gmail.com> wrote:
    >
    >
    > Thanks for the comments, the attached v39 version patch has the
    > changes for the same.
    >
    
    I have not yet looked at v40, but please find a few ocmments on
    v39-0001 and 0002 merged together.
    
    1)
    heap_create:
    + errdetail("Conflict schema modifications are currently disallowed.")));
    LookupCreationNamespace:
    + errmsg("cannot move objects into or out of the pg_conflict schema")));
    
    Can we make it same through-out, either we use 'Conflict schema' at
    both the places or pg_conflict schema.  Since in these 2 functions, in
    previous messages, we are using names like 'System catalog', 'TOAST
    schema' etc, I think we can use Conflict schema at both the places.
    What do others think on this?
    
    
    2)
    drop_subscription_dependencies():
    
    + conflictrelname = get_rel_name(subconflictlogrelid);
    
    We can actually have a sanity check that we got the CLT using the relid.
    Assert(conflictrelname != NULL);
    
    3)
    + /*
    + * Special handling for the JSON array type for proper
    + * TupleDescInitEntry call.
    + */
    + if (type_oid == JSONARRAYOID)
    + type_oid = get_array_type(JSONOID);
    
    Why do we have this special handling? Do we expect that 'type_oid' can
    be different from JSONARRAYOID if we use get_array_type? On debugging,
    I found it to be same pre and post get_array_type()
    
    4)
    Do we need to have CommandCounterIncrement() after
    heap_create_with_catalog() in create_conflict_log_table()? I think
    even if we are not doing any table_open etc for CLT in same
    transaction, we should call CommandCounterIncrement() (to be
    consistent with other such calls of heap_create_with_catalog and to
    make it future proof). Thoughts?
    
    thanks
    Shveta