Re: unexpected behavior with pglogical -- bug?

Поиск
Список
Период
Сортировка
От Achilleas Mantzios
Тема Re: unexpected behavior with pglogical -- bug?
Дата
Msg-id a96f0657-2d2f-455b-6b9f-8b851a6e7603@matrix.gatewaynet.com
обсуждение исходный текст
Ответ на unexpected behavior with pglogical -- bug?  (Torsten Förtsch <tfoertsch123@gmail.com>)
Ответы Re: unexpected behavior with pglogical -- bug?  (Iban Rodriguez <irodbar@gmail.com>)
Список pgsql-general
Hello

have you tried the same with logical replication in postgresql >= 10?

On 16/6/19 11:45 μ.μ., Torsten Förtsch wrote:
Hi,

out of curiosity I created the following setup, all with 9.6 and pglogical.

D1 is configured as provider with a replication set that contains only 1 table. Only inserts are replicated.

D2 is configured as subscriber for that replication set. Replication works, all inserts on D2 arrive also on D2.

Now, I add the following always firing trigger to the table:

CREATE OR REPLACE FUNCTION notify.trgfn () RETURNS trigger AS $def$
BEGIN
    PERFORM pg_notify(NEW.channel, NEW.msg);
    RETURN NULL;
END
$def$ LANGUAGE plpgsql;

CREATE TRIGGER trg BEFORE INSERT ON notify.notify
FOR EACH ROW
EXECUTE PROCEDURE notify.trgfn();

ALTER TABLE notify.notify ENABLE ALWAYS TRIGGER trg;

As you can see, the trigger function should prevent the actual insert and only call pg_notify(). In principle this works but there is a catch. Notifications generated this way are only delivered after another notification genuinely generated on the subscriber node. The channel of this notification does not matter. If I replace PERFORM pg_notify() by RAISE NOTICE I see the message immediately in the log.

First I thought this is related to session_replication_role=replica. So, I tried the direct insert on D2 with this setting using psql. The notification was fired immediately. Also, whether the trigger prevents or allows the actual insert does not matter. I tried to create the trigger function as SECURITY DEFINER and with a specific search_path. That didn't help either.

By now I am thinking there must be something missing in pglogical.

Thanks,
Torsten


-- 
Achilleas Mantzios
IT DEV Lead
IT DEPT
Dynacom Tankers Mgmt

В списке pgsql-general по дате отправления:

Предыдущее
От: Adrian Klaver
Дата:
Сообщение: Re: Inserts restricted to a trigger
Следующее
От: Job
Дата:
Сообщение: Problem with row-level lock