Stai confrontando Postgres-XL con la documentazione principale di PostgreSQL. Due prodotti diversi, seppur con una storia condivisa. Postgres-XL ha molti di modifiche da magazzino PostgreSQL.
CREATE TRIGGER
dovrebbe essere elencato nei documenti Pg e non lo è, tuttavia, e questa è una svista.
Una rapida occhiata al codice sorgente mostra che CREATE TRIGGER
accetta un ShareRowExclusiveLock
, quindi in questo caso la documentazione di XL corrisponde al comportamento di PostgreSQL.
Puoi verificarlo tu stesso senza guardare le fonti facendo qualcosa del genere:
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;
... il che dimostra che ho sbagliato a leggere le fonti, perché:
locktype | relation
mode | AccessExclusiveLock
ci voleva un AccessExclusiveLock.