Porovnáváte Postgres-XL s hlavní dokumentací PostgreSQL. Dva různé produkty, i když se společnou historií. Postgres-XL má spoustu změn ze skladu PostgreSQL.
CREATE TRIGGER
by měl být uveden v Pg docs, ale není, a to je přehlédnutí.
Rychlý pohled na zdrojový kód ukazuje, že CREATE TRIGGER
trvá ShareRowExclusiveLock
, takže v tomto případě dokumentace XL odpovídá chování PostgreSQL.
Můžete to zkontrolovat sami, aniž byste se dívali na zdroje, a to tak, že uděláte něco takového:
CREATE TABLE test();
CREATE OR REPLACE FUNCTION dummy_tg() RETURNS TRIGGER
LANGUAGE plpgsql AS $$ BEGIN END; $$;
BEGIN;
CREATE TRIGGER blah BEFORE INSERT ON test FOR EACH ROW EXECUTE PROCEDURE dummy_tg();
\x
SELECT * FROM pg_locks
WHERE pid = pg_backend_pid()
AND relation = 'test'::regclass;
ROLLBACK;
... což ukazuje, že jsem se mýlil ve čtení zdrojů, protože:
locktype | relation
mode | AccessExclusiveLock
trvalo to AccessExclusiveLock.