Subject: Re: Check whether a NOT NULL check constraint has been validated

From: Adrian Klaver <[email-masked]>
Date: Sun, 30 Nov 2025 19:07:47 -0800

On 11/30/25 16:59, Stuart Campbell wrote:
> Hello,
> 
> I have several NOT NULL check constraints in my schema that were 
> originally added as NOT VALID. I would like to determine whether they 
> have all since been validated, or not.
> 
> I thought maybe pg_constraint.convalidated might help, but it seems like 
> the version of Postgres I'm using (16) doesn't store not null 
> constraints in that table. And even in later versions, maybe it doesn't 
> hold the information I need.
> 
> Is there another way to discover this?

1) Select count(*) from <table> where <col> IS NULL;

2) From here

https://www.postgresql.org/docs/current/sql-altertable.html#SQL-ALTERTABLE-NOTES

ALTER TABLE <table> VALIDATE CONSTRAINT <constraint_name>;

As described:

". Once the constraint is in place, no new violations can be inserted, 
and the existing problems can be corrected at leisure until VALIDATE 
CONSTRAINT finally succeeds."

> 
> This communication and any attachments may contain confidential 
> information and are intended to be viewed only by the intended 
> recipients. If you have received this message in error, please notify 
> the sender immediately by replying to the original message and then 
> delete all copies of the email from your systems.
> 
> 

-- 
Adrian Klaver
[email-masked]

---

From: Adrian Klaver <[email-masked]>
Date: Sun, 30 Nov 2025 19:23:12 -0800

On 11/30/25 19:07, Adrian Klaver wrote:
>> I thought maybe pg_constraint.convalidated might help, but it seems 
>> like the version of Postgres I'm using (16) doesn't store not null 
>> constraints in that table. And even in later versions, maybe it 
>> doesn't hold the information I need.
>>

Realized I was looking at current docs and I should be looking at your 
version

 From the 16 version of the docs:

"This form adds a new constraint to a table using the same constraint 
syntax as CREATE TABLE, plus the option NOT VALID, which is currently 
only allowed for foreign key and CHECK constraints."

Now I am not sure what you did.

Are you saying you used a CHECK constraint to check for NULL values?

If so then pg_constraint.convalidated would work.

If not are you sure you are on Postgres 16?