Re: cataloguing NOT NULL constraints

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Robert Haas <robertmhaas(at)gmail(dot)com>, Dean Rasheed <dean(dot)a(dot)rasheed(at)gmail(dot)com>
Cc: Peter Eisentraut <peter(at)eisentraut(dot)org>, pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: cataloguing NOT NULL constraints
Date: 2023-07-25 12:35:54
Message-ID: 20230725123554.ciodfxlkjubrpedg@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On 2023-Jul-24, Robert Haas wrote:

> I think I might want to retract my earlier -1 vote. I mean, I agree
> with former me that having the \d+ output get a whole lot longer is
> not super-appealing. But I also agree with Dean that having this
> information available somewhere is probably important, and I also
> agree with your point that inventing \d++ for this isn't necessarily a
> good idea. I fear that will just result in having to type an extra
> plus sign any time you want to see all of the table details, to make
> sure that psql knows that you really mean it. So, maybe showing it in
> the \d+ output as Dean proposes is the least of evils.

Okay then, I've made these show up in the footer of \d+. This is in
patch 0003 here. Please let me know what do you think of the regression

On 2023-Jul-24, Dean Rasheed wrote:

> To reproduce this error, try to create 2 constraints with the same
> name on different columns:
> create table foo(a int, b int);
> alter table foo add constraint nn not null a;
> alter table foo add constraint nn not null b;

Ah, of course. Fixed.

> I found another, separate issue:
> create table p1(a int not null);
> create table p2(a int);
> create table foo () inherits (p1,p2);
> alter table p2 add not null a;
> ERROR: column "a" of table "foo" is already NOT NULL
> whereas doing "alter table p2 alter column a set not null" works OK,
> merging the constraints as expected.

True. I made it a non-error. I initially changed the message to INFO,
as suggested by Vik nearby; but after noticing that SET NOT NULL just
does the same thing with no message, I removed this message altogether,
for consistence. Now that I did it, though, I wonder: if the user
specified a constraint name, and that name does not match the existing
constraint, maybe we should have an INFO or NOTICE or WARNING message
that the requested constraint name was not satisfied.

Álvaro Herrera Breisgau, Deutschland —

Attachment Content-Type Size
v16-0001-Remember-PK-oid-for-partitioned-tables-even-when.patch text/x-diff 2.5 KB
v16-0002-Add-pg_constraint-rows-for-NOT-NULL-constraints.patch text/x-diff 225.8 KB
v16-0003-Have-psql-print-the-NOT-NULL-constraints-on-d.patch text/x-diff 29.8 KB

In response to


Browse pgsql-hackers by date

  From Date Subject
Next Message Ashutosh Bapat 2023-07-25 13:18:27 Re: logical decoding and replication of sequences, take 2
Previous Message Tatsuo Ishii 2023-07-25 12:35:04 Re: Row pattern recognition