Du jämför Postgres-XL med den huvudsakliga PostgreSQL-dokumentationen. Två olika produkter, om än med en delad historia. Postgres-XL har massor av förändringar från lager PostgreSQL.
CREATE TRIGGER
bör anges i Pg-dokumenten och är det dock inte, och det är ett förbiseende.
En snabb titt på källkoden visar att CREATE TRIGGER
tar en ShareRowExclusiveLock
, så i det här fallet matchar XL:s dokumentation PostgreSQL:s beteende.
Du kan kontrollera detta själv utan att titta på källorna genom att göra något så här:
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;
... vilket visar att jag hade fel när jag läste källorna, eftersom:
locktype | relation
mode | AccessExclusiveLock
det tog ett AccessExclusiveLock.