From: | Amit Langote <Langote_Amit_f8(at)lab(dot)ntt(dot)co(dot)jp> |
---|---|
To: | Robert Haas <robertmhaas(at)gmail(dot)com> |
Cc: | Rajkumar Raghuwanshi <rajkumar(dot)raghuwanshi(at)enterprisedb(dot)com>, Amit Langote <amitlangote09(at)gmail(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>, pgsql-hackers-owner(at)postgresql(dot)org |
Subject: | Re: Declarative partitioning - another take |
Date: | 2017-05-01 04:18:31 |
Message-ID: | 895b244e-9a4c-cf3f-4c4f-0c924489943d@lab.ntt.co.jp |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Thanks for the review.
On 2017/04/29 1:25, Robert Haas wrote:
> On Fri, Apr 28, 2017 at 2:13 AM, Amit Langote
> <Langote_Amit_f8(at)lab(dot)ntt(dot)co(dot)jp> wrote:
>>>> By the way, code changes I made in the attached are such that a subsequent
>>>> patch could implement firing statement-level triggers of all the tables in
>>>> a partition hierarchy, which it seems we don't want to do. Should then
>>>> the code be changed to not create ResultRelInfos of all the tables but
>>>> only the root table (the one mentioned in the command)? You will see that
>>>> the patch adds fields named es_nonleaf_result_relations and
>>>> es_num_nonleaf_result_relations, whereas just es_root_result_relation
>>>> would perhaps do, for example.
>>>
>>> It seems better not to create any ResultRelInfos that we don't
>>> actually need, so +1 for such a revision to the patch.
>>
>> OK, done. It took a bit more work than I thought.
>
> So, this seems weird, because rootResultRelIndex is initialized even
> when splan->partitioned_rels == NIL, but isn't actually valid in that
> case. ExecInitModifyTable seems to think it's always valid, though.
OK, rootResultRelIndex is now set to a value >= 0 only when the node
modifies a partitioned table. And then ExecInitModifyTable() checks if
the index is valid before initializing the root table info.
> I think the way that you've refactored fireBSTriggers and
> fireASTriggers is a bit confusing. Instead of splitting out a
> separate function, how about just having the existing function begin
> with if (node->rootResultRelInfo) resultRelInfo =
> node->rootResultRelInfo; else resultRelInfo = node->resultRelInfo; ?
> I think the way you've coded it is a holdover from the earlier design
> where you were going to call it multiple times, but now that's not
> needed.
OK, done that way.
> Looks OK, otherwise.
Attached updated patch.
Thanks,
Amit
Attachment | Content-Type | Size |
---|---|---|
0001-Fire-per-statement-triggers-of-partitioned-tables.patch | text/x-diff | 27.1 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Pavel Stehule | 2017-05-01 04:22:50 | Re: CTE inlining |
Previous Message | Craig Ringer | 2017-05-01 02:29:40 | Re: snapbuild woes |