Porównujesz Postgres-XL z główną dokumentacją PostgreSQL. Dwa różne produkty, choć ze wspólną historią. Postgres-XL ma dużo zmian z magazynu PostgreSQL.
CREATE TRIGGER
powinien być wymieniony w dokumentacji Pg i nie jest, a to jest przeoczenie.
Szybkie spojrzenie na kod źródłowy pokazuje, że CREATE TRIGGER
przyjmuje ShareRowExclusiveLock
, więc w tym przypadku dokumentacja XL pasuje do zachowania PostgreSQL.
Możesz to sprawdzić samodzielnie, nie patrząc na źródła, robiąc coś takiego:
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 pokazuje, że myliłem się co do odczytu źródeł, ponieważ:
locktype | relation
mode | AccessExclusiveLock
wymagało to AccessExclusiveLock.