On Mon, 5 Oct 2020 at 08:34, Amit Kapila <amit.kapil...@gmail.com> wrote:
> On Mon, May 11, 2020 at 2:41 AM Euler Taveira > <euler.tave...@2ndquadrant.com> wrote: > > > > Hi, > > > > While looking at an old wal2json issue, I stumbled on a scenario that a > table > > with a deferred primary key is not updatable in logical replication. > AFAICS it > > has been like that since the beginning of logical decoding and seems to > be an > > oversight while designing logical decoding. > > > > I am not sure if it is an oversight because we document that the index > must be non-deferrable, see "USING INDEX records the old values of the > columns covered by the named index, which must be unique, not partial, > not deferrable, and include only columns marked NOT NULL." in docs > [1]. > > Inspecting this patch again, I forgot to consider that RelationGetIndexList() is called by other backend modules. Since logical decoding deals with finished transactions, it is ok to use a deferrable primary key. However, this patch is probably wrong because it does not consider the other modules. -- Euler Taveira http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services