Out of date comment in cached_plan_cost

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Out of date comment in cached_plan_cost

David Rowley-3
Hi,

I just noticed a comment which has been made a little outdated by the
partition-wise join code from commit f49842d1. The comment claims that
inheritance children don't add to the effort required in join
planning, while that still may be true, we should probably mention
that partitioned tables may be a more complex case.

The attached is my attempt at putting this right.

--
 David Rowley                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services

cached_plan_cost_comment_fix.patch (1K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Out of date comment in cached_plan_cost

Robert Haas
On Thu, Dec 7, 2017 at 3:14 AM, David Rowley
<[hidden email]> wrote:
> I just noticed a comment which has been made a little outdated by the
> partition-wise join code from commit f49842d1. The comment claims that
> inheritance children don't add to the effort required in join
> planning, while that still may be true, we should probably mention
> that partitioned tables may be a more complex case.
>
> The attached is my attempt at putting this right.

I don't feel entirely right about the way this seems to treat
inheritance and partitioning as two entirely separate features; that's
true from a user perspective, more or less, but not internally to the
code.

Of course, this also begs the question of whether we ought to be
changing the formula somehow.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

Reply | Threaded
Open this post in threaded view
|

Re: Out of date comment in cached_plan_cost

David Rowley-3
On 9 December 2017 at 06:05, Robert Haas <[hidden email]> wrote:
> On Thu, Dec 7, 2017 at 3:14 AM, David Rowley
> <[hidden email]> wrote:
>> The attached is my attempt at putting this right.
>
> I don't feel entirely right about the way this seems to treat
> inheritance and partitioning as two entirely separate features; that's
> true from a user perspective, more or less, but not internally to the
> code.

Originally I had it typed out in a way that mentioned something about
"unless using partition-wise join with partitioned tables", but I felt
that the partition planning code is in such a state of flux at the
moment that I feared that comment might get outdated again someday in
the near future.

I've attached another patch which just loosens the claim that join
planning situation is never made worse by inheritance children to now
say it does not "generally" make any worse.

> Of course, this also begs the question of whether we ought to be
> changing the formula somehow.

Perhaps, but not for this patch. The comment already mentions that the
code is far from perfect.


--
 David Rowley                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services

cached_plan_cost_comment_fix_v2.patch (1K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Out of date comment in cached_plan_cost

Ashutosh Bapat
On Mon, Dec 11, 2017 at 3:02 AM, David Rowley
<[hidden email]> wrote:

> On 9 December 2017 at 06:05, Robert Haas <[hidden email]> wrote:
>> On Thu, Dec 7, 2017 at 3:14 AM, David Rowley
>> <[hidden email]> wrote:
>>> The attached is my attempt at putting this right.
>>
>> I don't feel entirely right about the way this seems to treat
>> inheritance and partitioning as two entirely separate features; that's
>> true from a user perspective, more or less, but not internally to the
>> code.
>
> Originally I had it typed out in a way that mentioned something about
> "unless using partition-wise join with partitioned tables", but I felt
> that the partition planning code is in such a state of flux at the
> moment that I feared that comment might get outdated again someday in
> the near future.
>
> I've attached another patch which just loosens the claim that join
> planning situation is never made worse by inheritance children to now
> say it does not "generally" make any worse.
>
>> Of course, this also begs the question of whether we ought to be
>> changing the formula somehow.
>
> Perhaps, but not for this patch. The comment already mentions that the
> code is far from perfect.

I don't see much difference in the old and new wording. The word
"generally" confuses more than clarifying the cases when the planning
cost curves do not change with the number of relations i.e.
partitions. I think if we add following sentence after "situation
worse." "However in case of declarative partitioning, we may plan each
child separately e.g partition-wise join aims at planning join between
matching partitions. In that case, plan cost curve significantly
changes with the number of partition relations.". After writing this I
think I understand what you meant by

> Originally I had it typed out in a way that mentioned something about
> "unless using partition-wise join with partitioned tables", but I felt
> that the partition planning code is in such a state of flux at the
> moment that I feared that comment might get outdated again someday in
> the near future.

--
Best Wishes,
Ashutosh Bapat
EnterpriseDB Corporation
The Postgres Database Company

Reply | Threaded
Open this post in threaded view
|

Re: Out of date comment in cached_plan_cost

David Rowley-3
On 11 December 2017 at 21:39, Ashutosh Bapat
<[hidden email]> wrote:
> I don't see much difference in the old and new wording. The word
> "generally" confuses more than clarifying the cases when the planning
> cost curves do not change with the number of relations i.e.
> partitions.

I added that to remove the false claim that inheritance children don't
make the join problem more complex. This was only true before we had
partition-wise joins.

I've re-read my original patch and I don't really see the problem with
it. The comment is talking about inheritance child relations, which
you could either interpret to mean INHERITS (sometable), or some table
listed in pg_inherits. The statement that I added forces me into
thinking of the former rather than the latter, so I don't really see
any issue.

I'm going to leave it here. I don't want to spend too much effort
rewording a comment. My vote is for the original patch I sent. I only
changed it because Robert complained that technically an inheritance
child could actually be a partition.

--
 David Rowley                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services

Reply | Threaded
Open this post in threaded view
|

Re: Out of date comment in cached_plan_cost

Robert Haas
On Mon, Dec 11, 2017 at 5:00 AM, David Rowley
<[hidden email]> wrote:

> On 11 December 2017 at 21:39, Ashutosh Bapat
> <[hidden email]> wrote:
>> I don't see much difference in the old and new wording. The word
>> "generally" confuses more than clarifying the cases when the planning
>> cost curves do not change with the number of relations i.e.
>> partitions.
>
> I added that to remove the false claim that inheritance children don't
> make the join problem more complex. This was only true before we had
> partition-wise joins.
>
> I've re-read my original patch and I don't really see the problem with
> it. The comment is talking about inheritance child relations, which
> you could either interpret to mean INHERITS (sometable), or some table
> listed in pg_inherits. The statement that I added forces me into
> thinking of the former rather than the latter, so I don't really see
> any issue.
>
> I'm going to leave it here. I don't want to spend too much effort
> rewording a comment. My vote is for the original patch I sent. I only
> changed it because Robert complained that technically an inheritance
> child could actually be a partition.

I basically feel like we're not really solving any problem by changing
this.  I mean, partition-wise join makes this statement less true, but
adding the word "generally" doesn't really help anybody understand the
situation better.  If we're going to add anything here, I think it
should be something like:

(This might need to be rethought in light of partition-wise join.)

If that's more specific than we want to get, then let's just leave it
alone.  Partition-wise join isn't even enabled by default at this
point.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

Previous Thread Next Thread