Logical replication failing when foreign key present
Hi,
There's an issue which I haven't seen documented as expected
behaviour, where replicating data to a table which has a foreign key
results in a replication failure. This produces the following log
entries:
LOG: starting logical replication worker for subscription "contacts_sub"
LOG: logical replication apply for subscription "contacts_sub" has started
ERROR: AfterTriggerSaveEvent() called outside of query
LOG: worker process: logical replication worker for subscription
16408 (PID 19201) exited with exit code 1
Reproducible test case:
On both instances:
CREATE TABLE b (bid int PRIMARY KEY);
CREATE TABLE a (id int PRIMARY KEY, bid int REFERENCES b (bid));
INSERT INTO b (bid) VALUES (1);
First instance:
CREATE PUBLICATION a_pub FOR TABLE a;
Second instance:
CREATE SUBSCRIPTION a_sub CONNECTION 'host=127.0.0.1 port=5530
user=thom dbname=postgres' PUBLICATION a_pub;
First instance:
INSERT INTO a (id, bid) VALUES (1,1);
Regards
Thom
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 22/01/17 18:50, Thom Brown wrote:
Hi,
There's an issue which I haven't seen documented as expected
behaviour, where replicating data to a table which has a foreign key
results in a replication failure. This produces the following log
entries:LOG: starting logical replication worker for subscription "contacts_sub"
LOG: logical replication apply for subscription "contacts_sub" has started
ERROR: AfterTriggerSaveEvent() called outside of query
LOG: worker process: logical replication worker for subscription
16408 (PID 19201) exited with exit code 1
Hi, thanks for report.
Looks like I missed AfterTriggerBeginQuery/AfterTriggerEndQuery when
moving the executor stuff around. Attached should fix it.
--
Petr Jelinek http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
Attachments:
0001-Fix-after-trigger-execution-in-logical-replication.patchapplication/x-patch; name=0001-Fix-after-trigger-execution-in-logical-replication.patchDownload+15-1
On 1/22/17 18:07, Petr Jelinek wrote:
On 22/01/17 18:50, Thom Brown wrote:
There's an issue which I haven't seen documented as expected
behaviour, where replicating data to a table which has a foreign key
results in a replication failure. This produces the following log
entries:
Hi, thanks for report.
Looks like I missed AfterTriggerBeginQuery/AfterTriggerEndQuery when
moving the executor stuff around. Attached should fix it.
This has been fixed.
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers