From: | Amit Langote <Langote_Amit_f8(at)lab(dot)ntt(dot)co(dot)jp> |
---|---|
To: | Thomas Munro <thomas(dot)munro(at)enterprisedb(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Relcache leak when row triggers on partitions are fired by COPY |
Date: | 2017-05-16 00:32:49 |
Message-ID: | 980ee95c-6ab0-c40e-e222-88669dfcd1a5@lab.ntt.co.jp |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi Thomas,
On 2017/05/16 9:12, Thomas Munro wrote:
> Hi hackers,
>
> While testing the patch I'm writing for the transition table open
> item, I noticed that we can leak Relation objects like this:
>
> postgres=# create table parent (a text, b int) partition by list (a);
> CREATE TABLE
> postgres=# create table child partition of parent for values in ('AAA');
> CREATE TABLE
> postgres=# create or replace function my_trigger_func() returns
> trigger language plpgsql as $$ begin raise notice 'hello'; return
> null; end; $$;
> CREATE FUNCTION
> postgres=# create trigger child_trigger after insert or update or
> delete on child for each row execute procedure my_trigger_func();
> CREATE TRIGGER
> postgres=# copy parent (a, b) from stdin;
> Enter data to be copied followed by a newline.
> End with a backslash and a period on a line by itself.
>>> AAA 42
>>> \.
> NOTICE: hello
> WARNING: relcache reference leak: relation "child" not closed
> COPY 1
Thanks for the test case and the patch.
> The leaked object is created by ExecGetTriggerResultRel, called by
> afterTriggerInvokeEvents. That function relies on someone, usually
> ExecEndPlan or EvalPlanQualEnd, to clean up es_trig_target_relations.
> Shouldn't copy.c do the same thing (see attached)? Or perhaps there
> should there be an ExecCleanupTriggerState(estate) used by all places?
I vote for ExecCleanupTriggerState(estate). After your patch, there will
be 4 places, including afterTriggerInvokeEvents(), ExecEndPlan(), and
EvalPlanQualEnd(), that repeat the same block of code.
Thanks,
Amit
From | Date | Subject | |
---|---|---|---|
Next Message | Thomas Munro | 2017-05-16 01:03:19 | Re: Relcache leak when row triggers on partitions are fired by COPY |
Previous Message | Thomas Munro | 2017-05-16 00:12:10 | Relcache leak when row triggers on partitions are fired by COPY |