Re: Support NOT VALID / VALIDATE constraint options for named NOT NULL constraints

From: Rushabh Lathia <rushabh(dot)lathia(at)gmail(dot)com>
To: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Support NOT VALID / VALIDATE constraint options for named NOT NULL constraints
Date: 2025-02-10 17:18:57
Message-ID: CAGPqQf2f11SNZv_ZCi9Z4SR_c4GpmmHsO7eiF2Z2eyibQ=acXg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi Alvaro,

I have incorporated the suggested changes, and here is the latest version
of the patch:

- Added more test cases to the regression suite.
- Included tests in the pg_dump test.
- Left objects with *INVALID NOT NULL* for pg_upgrade.
- Fixed an issue where recursion to child tables was incorrectly
attempting to locate the constraint by name.
- Introduced a new function, QueueNNConstraintValidation(), for
handling *NOT
NULL* constraints.

The only remaining task for this patch is updating the documentation. I
will work on that and submit the final version soon.

Please share your review comments.
Thanks,

On Mon, Feb 10, 2025 at 12:28 AM Rushabh Lathia <rushabh(dot)lathia(at)gmail(dot)com>
wrote:

>
>
> On Fri, Feb 7, 2025 at 4:44 PM Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
> wrote:
>
>>
>> Recursion to child tables is incorrectly trying to locate the constraint
>> by name:
>>
>> create table notnull_tbl1 (a int);
>> alter table notnull_tbl1 add constraint foo not null a not valid;
>> create table notnull_chld (a int);
>> alter table notnull_chld add constraint blah not null a not valid;
>> alter table notnull_chld inherit notnull_tbl1 ;
>>
>> -- this fails but shouldn't:
>> alter table notnull_tbl1 validate constraint foo;
>> ERROR: constraint "foo" of relation "notnull_chld" does not exist
>>
>> The end result here should be that the constraint `blah` in table
>> notnull_chld is marked as validated.
>>
>
> Yes, I agree. Here we need a separate Queue for NotNull constraint
> validation,
> which fetches the respective Non-Validate-Not-Null constraint name from
> the child table
>
> I am working on the patch and will post the update patch soon.
>
>
>>
>> --
>> Álvaro Herrera 48°01'N 7°57'E —
>> https://www.EnterpriseDB.com/
>> Syntax error: function hell() needs an argument.
>> Please choose what hell you want to involve.
>>
>
>
> --
> Rushabh Lathia
>

--
Rushabh Lathia
www.EnterpriseDB.com

Attachment Content-Type Size
0001-Convert-pg_attribut.attnotnull-to-char-type.patch application/octet-stream 19.5 KB
0002-Support-NOT-VALID-and-VALIDATE-CONSTRAINT-for-named-.patch application/octet-stream 23.8 KB
0003-Support-pg_dump-to-dump-NOT-VALID-named-NOT-NULL-con.patch application/octet-stream 11.9 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Dagfinn Ilmari Mannsåker 2025-02-10 17:44:02 Re: Remove useless casts to (char *)
Previous Message Matthias van de Meent 2025-02-10 17:17:42 Re: Expanding HOT updates for expression and partial indexes