Re: speeding up planning with partitions - Mailing list pgsql-hackers

From Amit Langote
Subject Re: speeding up planning with partitions
Date
Msg-id c8dcf0fd-4759-5e1c-ea67-e2d3f98e81bd@lab.ntt.co.jp
Whole thread Raw
In response to Re: speeding up planning with partitions  (Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>)
Responses Re: speeding up planning with partitions
Re: speeding up planning with partitions
Re: speeding up planning with partitions
List pgsql-hackers
Hi,

On 2019/03/22 11:17, Amit Langote wrote:
> However, looking into make_partitionedrel_pruneinfo(), it seems that it's
> unconditionally allocating 3 arrays that all have nparts elements:
> 
>         subplan_map = (int *) palloc0(nparts * sizeof(int));
>         subpart_map = (int *) palloc0(nparts * sizeof(int));
>         relid_map = (Oid *) palloc0(nparts * sizeof(int));
> 
> So, that part has got to cost more as the partition count grows.
> 
> This is the code for runtime pruning, which is not exercised in our tests,
> so it might seem odd that we're spending any time here at all.  I've been
> told that we have to perform at least *some* work here if only to conclude
> that runtime pruning is not needed and it seems that above allocations
> occur before making that conclusion.  Maybe, that's salvageable by
> rearranging this code a bit.  David may be in a better position to help
> with that.

I took a stab at this.  I think rearranging the code in
make_partitionedrel_pruneinfo() slightly will take care of this.

The problem is that make_partitionedrel_pruneinfo() does some work which
involves allocating arrays containing nparts elements and then looping
over the part_rels array to fill values in those arrays that will be used
by run-time pruning.  It does all that even *before* it has checked that
run-time pruning will be needed at all, which if it is not, it will simply
discard the result of the aforementioned work.

Patch 0008 of 0009 rearranges the code such that we check whether we will
need run-time pruning at all before doing any of the work that's necessary
for run-time to work.

Thanks,
Amit

Attachment

pgsql-hackers by date:

Previous
From: Haribabu Kommi
Date:
Subject: Re: Libpq support to connect to standby server as priority
Next
From: Andrey Borodin
Date:
Subject: Re: GiST VACUUM