Du sammenligner Postgres-XL med den primære PostgreSQL-dokumentation. To forskellige produkter, dog med en fælles historie. Postgres-XL har masser af ændringer fra lager PostgreSQL.
CREATE TRIGGER
bør være opført i Pg-dokumenterne og er det dog ikke, og det er en forglemmelse.
Et hurtigt kig på kildekoden viser, at CREATE TRIGGER
tager en ShareRowExclusiveLock
, så i dette tilfælde matcher XL's dokumentation PostgreSQL's adfærd.
Du kan selv tjekke dette uden at se på kilderne ved at gøre sådan noget:
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;
... hvilket viser, at jeg tog fejl i min læsning af kilderne, fordi:
locktype | relation
mode | AccessExclusiveLock
det tog en AccessExclusiveLock.