Você está comparando o Postgres-XL com a documentação principal do PostgreSQL. Dois produtos diferentes, embora com uma história comum. Postgres-XL tem muitos de mudanças do estoque PostgreSQL.
CREATE TRIGGER
deve ser listado nos documentos Pg e não é, e isso é um descuido. Uma rápida olhada no código-fonte mostra que
CREATE TRIGGER
recebe um ShareRowExclusiveLock
, então neste caso a documentação do XL corresponde ao comportamento do PostgreSQL. Você pode verificar isso sozinho sem olhar as fontes fazendo algo assim:
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;
... o que mostra que eu estava errado na minha leitura das fontes, porque:
locktype | relation
mode | AccessExclusiveLock
levou um AccessExclusiveLock.