Вие сравнявате Postgres-XL с основната документация на PostgreSQL. Два различни продукта, макар и с обща история. Postgres-XL има много на промените от наличния PostgreSQL.
CREATE TRIGGER
трябва да бъде посочено в Pg документите, но не е и това е пропуск.
Бърз преглед на изходния код показва, че CREATE TRIGGER
взема ShareRowExclusiveLock
, така че в този случай документацията на XL съответства на поведението на PostgreSQL.
Можете да проверите това сами, без да разглеждате източниците, като направите нещо подобно:
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;
... което показва, че съм грешал относно четенето си на източниците, защото:
locktype | relation
mode | AccessExclusiveLock
трябваше AccessExclusiveLock.