Thread: WIP: ALTER TABLE ... ALTER CONSTRAINT ... SET DEFERRABLE on UNIQUE or PK

WIP: ALTER TABLE ... ALTER CONSTRAINT ... SET DEFERRABLE on UNIQUE or PK

From
Craig Ringer
Date:
Hi all

Attached is a patch to implement ALTER TABLE ... ALTER CONSTRAINT ...
SET DEFERRABLE on UNIQUE or PRIMARY KEY constraints.

Currently only FOREIGN KEY constraints are supported. Others are rejected with:

constraint \"%s\" of relation \"%s\" is not a foreign key constraint

The patch also adds some regression tests for DEFERRABLE constraints.

The ALTER doesn't take effect in the session it's run in, which makes
me suspect I need to do additional cache invalidations - maybe the
index backing the constraint? Anyway, posted here as-is because I'm
out of time for now and it might be useful for someone who's looking
for info on this.

--
 Craig Ringer                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services

Attachment
On 26 June 2015 at 07:20, Craig Ringer <craig@2ndquadrant.com> wrote:
> Hi all
>
> Attached is a patch to implement ALTER TABLE ... ALTER CONSTRAINT ...
> SET DEFERRABLE on UNIQUE or PRIMARY KEY constraints.
>
> Currently only FOREIGN KEY constraints are supported. Others are rejected with:
>

+1
I was disappointed that this wasn't part of the patch that added
support for it for FKs. What about exclusion constraints? I think
making them work should be more-or-less identical, and then we'll have
support for the full set, since CHECK and NOT NULL constraints can't
currently be deferred.


> constraint \"%s\" of relation \"%s\" is not a foreign key constraint
>
> The patch also adds some regression tests for DEFERRABLE constraints.
>
> The ALTER doesn't take effect in the session it's run in, which makes
> me suspect I need to do additional cache invalidations - maybe the
> index backing the constraint? Anyway, posted here as-is because I'm
> out of time for now and it might be useful for someone who's looking
> for info on this.
>

If you add it to the next commitfest, I'll review it.

Regards,
Dean