Ignore AFTER triggers sorting after z_repack_trigger
They are not a problem, and they fore after the BEFORE trigger anyway. To be checked against more PostgreSQL versions.
This commit is contained in:
parent
14c4d4653e
commit
a2138b6d7d
@ -326,3 +326,29 @@ INFO: repacking table "tbl_pk_uk"
|
||||
\! pg_repack --dbname=contrib_regression --table=tbl_nn_puk
|
||||
WARNING: relation "tbl_nn_puk" must have a primary key or not-null unique keys
|
||||
-- => WARNING
|
||||
--
|
||||
-- Triggers handling
|
||||
--
|
||||
CREATE FUNCTION trgtest() RETURNS trigger AS
|
||||
$$BEGIN RETURN NEW; END$$
|
||||
LANGUAGE plpgsql;
|
||||
CREATE TABLE trg1 (id integer PRIMARY KEY);
|
||||
CREATE TRIGGER z_repack_triggeq BEFORE UPDATE ON trg1 FOR EACH ROW EXECUTE PROCEDURE trgtest();
|
||||
\! pg_repack --dbname=contrib_regression --table=trg1
|
||||
INFO: repacking table "trg1"
|
||||
CREATE TABLE trg2 (id integer PRIMARY KEY);
|
||||
CREATE TRIGGER z_repack_trigger BEFORE UPDATE ON trg2 FOR EACH ROW EXECUTE PROCEDURE trgtest();
|
||||
\! pg_repack --dbname=contrib_regression --table=trg2
|
||||
INFO: repacking table "trg2"
|
||||
WARNING: the table "trg2" has already a trigger called "z_repack_trigger"
|
||||
DETAIL: The trigger was probably installed during a previous attempt to run pg_repack on the table which was interrupted and for some reason failed to clean up the temporary objects. Please drop the trigger or drop and recreate the pg_repack extension altogether to remove all the temporary objects left over.
|
||||
CREATE TABLE trg3 (id integer PRIMARY KEY);
|
||||
CREATE TRIGGER z_repack_trigges BEFORE UPDATE ON trg3 FOR EACH ROW EXECUTE PROCEDURE trgtest();
|
||||
\! pg_repack --dbname=contrib_regression --table=trg3
|
||||
INFO: repacking table "trg3"
|
||||
WARNING: trigger "z_repack_trigges" conflicting on table "trg3"
|
||||
DETAIL: The trigger "z_repack_trigger" must be the last of the BEFORE triggers to fire on the table (triggers fire in alphabetical order). Please rename the trigger so that it sorts before "z_repack_trigger": you can use "ALTER TRIGGER z_repack_trigges ON trg3 RENAME TO newname".
|
||||
CREATE TABLE trg4 (id integer PRIMARY KEY);
|
||||
CREATE TRIGGER zzzzzz AFTER UPDATE ON trg4 FOR EACH ROW EXECUTE PROCEDURE trgtest();
|
||||
\! pg_repack --dbname=contrib_regression --table=trg4
|
||||
INFO: repacking table "trg4"
|
||||
|
@ -187,3 +187,22 @@ CREATE UNIQUE INDEX tbl_nn_puk_pcol1_idx ON tbl_nn_puk(col1) WHERE col1 < 10;
|
||||
-- => OK
|
||||
\! pg_repack --dbname=contrib_regression --table=tbl_nn_puk
|
||||
-- => WARNING
|
||||
|
||||
--
|
||||
-- Triggers handling
|
||||
--
|
||||
CREATE FUNCTION trgtest() RETURNS trigger AS
|
||||
$$BEGIN RETURN NEW; END$$
|
||||
LANGUAGE plpgsql;
|
||||
CREATE TABLE trg1 (id integer PRIMARY KEY);
|
||||
CREATE TRIGGER z_repack_triggeq BEFORE UPDATE ON trg1 FOR EACH ROW EXECUTE PROCEDURE trgtest();
|
||||
\! pg_repack --dbname=contrib_regression --table=trg1
|
||||
CREATE TABLE trg2 (id integer PRIMARY KEY);
|
||||
CREATE TRIGGER z_repack_trigger BEFORE UPDATE ON trg2 FOR EACH ROW EXECUTE PROCEDURE trgtest();
|
||||
\! pg_repack --dbname=contrib_regression --table=trg2
|
||||
CREATE TABLE trg3 (id integer PRIMARY KEY);
|
||||
CREATE TRIGGER z_repack_trigges BEFORE UPDATE ON trg3 FOR EACH ROW EXECUTE PROCEDURE trgtest();
|
||||
\! pg_repack --dbname=contrib_regression --table=trg3
|
||||
CREATE TABLE trg4 (id integer PRIMARY KEY);
|
||||
CREATE TRIGGER zzzzzz AFTER UPDATE ON trg4 FOR EACH ROW EXECUTE PROCEDURE trgtest();
|
||||
\! pg_repack --dbname=contrib_regression --table=trg4
|
||||
|
@ -219,6 +219,7 @@ CREATE FUNCTION repack.conflicted_triggers(oid) RETURNS SETOF name AS
|
||||
$$
|
||||
SELECT tgname FROM pg_trigger
|
||||
WHERE tgrelid = $1 AND tgname >= 'z_repack_trigger'
|
||||
AND (tgtype & 2) = 2 -- BEFORE trigger
|
||||
ORDER BY tgname;
|
||||
$$
|
||||
LANGUAGE sql STABLE STRICT;
|
||||
|
Loading…
x
Reference in New Issue
Block a user