Re: speeding up planning with partitions

From: Amit Langote <Langote_Amit_f8(at)lab(dot)ntt(dot)co(dot)jp>
To: Amit Langote <amitlangote09(at)gmail(dot)com>, David Rowley <david(dot)rowley(at)2ndquadrant(dot)com>
Cc: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, "Imai, Yoshikazu" <imai(dot)yoshikazu(at)jp(dot)fujitsu(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: speeding up planning with partitions
Date: 2019-02-07 10:21:45
Message-ID: e85c4b41-80d6-1045-d934-feeca4a463ab@lab.ntt.co.jp
Views: Raw Message | Whole Thread | Download mbox
Thread:
Lists: pgsql-hackers

On 2019/02/02 22:52, Amit Langote wrote:
> Attached updated patches.
>
> One big change is related to how ECs are transferred to child
> PlannerInfos. As David suggested upthread, I created a block in
> adjust_appendrel_attrs_mutator that creates a translated copy of a
> given EC containing wherein the parent expression in the original
> ec_members list is replaced by the corresponding child expression.
> With that in place, we no longer need the changes to
> add_child_rel_equivalences(). Instead there's just:
> subroot->eq_classes = adjust_appendrel_attrs(root, root->eq_classes,
> ...), just as David described upthread.

Rebased over bdd9a99aac.

That commit fixes the bug that lateral_relids were not propagated to
grandchildren of an appendrel in some cases due to the way parent rels
were mapped to child rels in a nested loop over root->simple_rel_array and
root->append_rel_list. The problem that was fixed with that commit was
not present with the patches here to begin with. With the patch 0002
here, lateral_relids are propagated from parent rel to child rel directly
when the latter's RelOptInfo is built, so lateral_relids are properly
propagated from the (possibly RTE_SUBQUERY) top-most parent rel to all the
child rels.

Thanks,
Amit

Attachment Content-Type Size
v20-0001-Overhaul-inheritance-update-delete-planning.patch text/plain 74.3 KB
v20-0002-Lazy-creation-of-RTEs-for-inheritance-children.patch text/plain 94.2 KB
v20-0003-Teach-planner-to-only-process-unpruned-partition.patch text/plain 6.9 KB
v20-0004-Do-not-lock-all-partitions-at-the-beginning.patch text/plain 1.9 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Amit Langote 2019-02-07 10:24:55 Re: ToDo: show size of partitioned table
Previous Message Jakub Glapa 2019-02-07 10:10:44 Re: dsa_allocate() faliure