Anda membandingkan Postgres-XL dengan dokumentasi PostgreSQL utama. Dua produk yang berbeda, meskipun dengan sejarah yang sama. Postgres-XL memiliki banyak perubahan dari stok PostgreSQL.
CREATE TRIGGER
harus terdaftar di dokumen Pg dan tidak, dan itu adalah kekeliruan.
Sekilas melihat kode sumber menunjukkan bahwa CREATE TRIGGER
mengambil ShareRowExclusiveLock
, jadi dalam hal ini dokumentasi XL cocok dengan perilaku PostgreSQL.
Anda dapat memeriksanya sendiri tanpa melihat sumbernya dengan melakukan sesuatu seperti ini:
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;
... yang menunjukkan bahwa saya salah dalam membaca sumber, karena:
locktype | relation
mode | AccessExclusiveLock
butuh AccessExclusiveLock.