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
22762fce28
commit
477fba884c
@ -379,3 +379,29 @@ SELECT repack.get_order_by('issue3_5_idx'::regclass::oid, 'issue3_5'::regclass::
|
|||||||
|
|
||||||
\! pg_repack --dbname=contrib_regression --table=issue3_5
|
\! pg_repack --dbname=contrib_regression --table=issue3_5
|
||||||
INFO: repacking table "issue3_5"
|
INFO: repacking table "issue3_5"
|
||||||
|
--
|
||||||
|
-- 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"
|
||||||
|
@ -215,3 +215,22 @@ CREATE TABLE issue3_5 (col1 int NOT NULL, col2 text NOT NULL);
|
|||||||
CREATE UNIQUE INDEX issue3_5_idx ON issue3_5 (col1 DESC NULLS FIRST, col2 COLLATE "POSIX" DESC);
|
CREATE UNIQUE INDEX issue3_5_idx ON issue3_5 (col1 DESC NULLS FIRST, col2 COLLATE "POSIX" DESC);
|
||||||
SELECT repack.get_order_by('issue3_5_idx'::regclass::oid, 'issue3_5'::regclass::oid);
|
SELECT repack.get_order_by('issue3_5_idx'::regclass::oid, 'issue3_5'::regclass::oid);
|
||||||
\! pg_repack --dbname=contrib_regression --table=issue3_5
|
\! pg_repack --dbname=contrib_regression --table=issue3_5
|
||||||
|
|
||||||
|
--
|
||||||
|
-- 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
|
SELECT tgname FROM pg_trigger
|
||||||
WHERE tgrelid = $1 AND tgname >= 'z_repack_trigger'
|
WHERE tgrelid = $1 AND tgname >= 'z_repack_trigger'
|
||||||
|
AND (tgtype & 2) = 2 -- BEFORE trigger
|
||||||
ORDER BY tgname;
|
ORDER BY tgname;
|
||||||
$$
|
$$
|
||||||
LANGUAGE sql STABLE STRICT;
|
LANGUAGE sql STABLE STRICT;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user