Je vergelijkt Postgres-XL met de belangrijkste PostgreSQL-documentatie. Twee verschillende producten, zij het met een gedeelde geschiedenis. Postgres-XL heeft loten van wijzigingen uit voorraad PostgreSQL.
CREATE TRIGGER
zou in de Pg-documenten moeten worden vermeld en is dat echter niet, en dat is een vergissing.
Een snelle blik op de broncode laat zien dat CREATE TRIGGER
neemt een ShareRowExclusiveLock
, dus in dit geval komt de documentatie van XL overeen met het gedrag van PostgreSQL.
Je zou dit zelf kunnen controleren zonder naar de bronnen te kijken door zoiets als dit te doen:
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;
... waaruit blijkt dat ik het bij het verkeerde eind had bij het lezen van de bronnen, omdat:
locktype | relation
mode | AccessExclusiveLock
er was een AccessExclusiveLock voor nodig.