From: | Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at> |
---|---|
To: | Simon Kissane <skissane(at)medallia(dot)com>, pgsql-general(at)postgresql(dot)org |
Subject: | Re: cannot CREATE INDEX because it has pending trigger events |
Date: | 2019-08-27 07:59:20 |
Message-ID: | 5af9d5d6ce2c3fa1d86aa755fe880044f0b1f098.camel@cybertec.at |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Tue, 2019-08-27 at 12:00 +1000, Simon Kissane wrote:
> We have an application that works fine with Postgres 9.6, but fails
> with this error when we try installing it against 11.5
>
> I simplified the problem down to the following reproduce script:
>
> BEGIN TRANSACTION;
> CREATE TABLE resource (resource_id BIGINT NOT NULL PRIMARY KEY,
> resource_type BIGINT NOT NULL);
> ALTER TABLE ONLY resource ADD CONSTRAINT resource_type_fk FOREIGN KEY
> (resource_type) REFERENCES resource (resource_id) DEFERRABLE
> INITIALLY DEFERRED;
> INSERT INTO resource (resource_id,resource_type) values (1,1);
> INSERT INTO resource (resource_id,resource_type) values (2,1);
> INSERT INTO resource (resource_id,resource_type) values (3,2);
> CREATE UNIQUE INDEX IF NOT EXISTS resource_type_2_singleton ON
> resource (resource_type) WHERE resource_type=2;
> COMMIT;
>
> That script works fine in Postgres 9.6, but run it against 11.5 you
> get the error:
>
> ERROR: cannot CREATE INDEX "resource" because it has pending trigger
> events
> STATEMENT: CREATE UNIQUE INDEX IF NOT EXISTS
> resource_type_2_singleton ON resource (resource_type) WHERE
> resource_type=2;
This is fallout of commit 0d1885266630:
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=0d1885266630eee1de5c43af463fe2b921451932
This commit is the fix for a bug:
https://www.postgresql.org/message-id/flat/A737B7A37273E048B164557ADEF4A58B53A4DC9A%40ntex2010i.host.magwien.gv.at
This might be a false positive hit or not, I am not certain.
Maybe the check is not required for AFTER triggers.
Anyway, the problem can be avoided by running
SET CONSTRAINTS resource_type_fk IMMEDIATE;
right before the CREATE INDEX, so I don't think it is a real problem.
Yours,
Laurenz Albe
--
Cybertec | https://www.cybertec-postgresql.com
From | Date | Subject | |
---|---|---|---|
Next Message | Luca Ferrari | 2019-08-27 08:00:44 | Re: psql \copy hanging |
Previous Message | Luca Ferrari | 2019-08-27 07:55:03 | Re: cannot CREATE INDEX because it has pending trigger events |