Table refer leak in logical replication

tanghy.fnst@fujitsu.com <tanghy.fnst@fujitsu.com>

From: "tanghy.fnst@fujitsu.com" <tanghy.fnst@fujitsu.com>
To: "pgsql-hackers@lists.postgresql.org" <pgsql-hackers@lists.postgresql.org>
Date: 2021-04-06T01:04:51Z
Lists: pgsql-hackers
Hi

I met a problem about trigger in logical replication.

I created a trigger after inserting data at subscriber, but there is a warning in the log of subscriber when the trigger fired:
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?

Regards,
Tang



Commits

  1. Add more tests with triggers on partitions for logical replication

  2. Fix relation leak for subscribers firing triggers in logical replication

  3. Create ResultRelInfos later in InitPlan, index them by RT index.