Re: Table refer leak in logical replication
От | Masahiko Sawada |
---|---|
Тема | Re: Table refer leak in logical replication |
Дата | |
Msg-id | CAD21AoC=7W5maPdyqvvV97ic1PAeKKE3kEotTxazK0n4h+z5pA@mail.gmail.com обсуждение исходный текст |
Ответ на | RE: Table refer leak in logical replication ("houzj.fnst@fujitsu.com" <houzj.fnst@fujitsu.com>) |
Ответы |
RE: Table refer leak in logical replication
|
Список | pgsql-hackers |
On Tue, Apr 6, 2021 at 10:15 AM houzj.fnst@fujitsu.com <houzj.fnst@fujitsu.com> wrote: > > > WARNING: relcache reference leak: relation "xxx" not closed. > > > > Example of the procedure: > > ------publisher------ > > create table test (a int primary key); > > create publication pub for table test; > > > > ------subscriber------ > > create table test (a int primary key); > > create subscription sub connection 'dbname=postgres' publication pub; > > create function funcA() returns trigger as $$ begin return null; end; $$ language > > plpgsql; create trigger my_trig after insert or update or delete on test for each > > row execute procedure funcA(); alter table test enable replica trigger my_trig; > > > > ------publisher------ > > insert into test values (6); > > > > It seems an issue about reference leak. Anyone can fix this? > > It seems ExecGetTriggerResultRel will reopen the target table because it cannot find an existing one. > Storing the opened table in estate->es_opened_result_relations seems solves the problem. It seems like commit 1375422c is related to this bug. The commit introduced a new function ExecInitResultRelation() that sets both estate->es_result_relations and estate->es_opened_result_relations. I think it's better to use ExecInitResultRelation() rather than directly setting estate->es_opened_result_relations. It might be better to do that in create_estate_for_relation() though. Please find an attached patch. Since this issue happens on only HEAD and it seems an oversight of commit 1375422c, I don't think regression tests for this are essential. Regards, -- Masahiko Sawada EDB: https://www.enterprisedb.com/
Вложения
В списке pgsql-hackers по дате отправления: