Re: Can't find not null constraint, but \d+ shows that - Mailing list pgsql-hackers

From Tender Wang
Subject Re: Can't find not null constraint, but \d+ shows that
Date
Msg-id CAHewXNn_So7LUCxxxyDNfdvCQp1TnD3gTVECBZX2bT_nbPgraQ@mail.gmail.com
Whole thread Raw
In response to Re: Can't find not null constraint, but \d+ shows that  (Alvaro Herrera <alvherre@alvh.no-ip.org>)
Responses Re: Can't find not null constraint, but \d+ shows that
List pgsql-hackers


Alvaro Herrera <alvherre@alvh.no-ip.org> 于2024年3月28日周四 17:18写道:
On 2024-Mar-28, Tender Wang wrote:

>  RemoveConstraintById() should think recurse(e.g. partition table)? I'm not
> sure now.
>  If we should think process recurse in RemoveConstraintById(),  the
> function will look complicated than before.

No -- this function handles just a single constraint, as identified by
OID.  The recursion is handled by upper layers, which can be either
dependency.c or tablecmds.c.  I think the problem you found is caused by
the fact that I worked with the tablecmds.c recursion and neglected the
one in dependency.c.
 
Indeed. 

create table skip_wal_skip_rewrite_index (c varchar(10) primary key);
alter table skip_wal_skip_rewrite_index alter c type varchar(20);

Above SQL need attnotnull to be true when re-add index, but RemoveConstraintById() is hard to recognize this scenario as I know.
We should re-set attnotnull to be true before re-add index. I add a new AT_PASS in attached patch.
Any thoughts? 
--
Tender Wang
OpenPie:  https://en.openpie.com/
Attachment

pgsql-hackers by date:

Previous
From: Amit Kapila
Date:
Subject: Re: Support logical replication of DDLs
Next
From: "Andrey M. Borodin"
Date:
Subject: Re: Doc limitation update proposal: include out-of-line OID usage per TOAST-ed columns