Re: Ideas of "printing out" the alternative paths

From: Zhan Li <zhanli89(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Ideas of "printing out" the alternative paths
Date: 2013-11-14 17:13:19
Message-ID: CANp-Bfa=L-JrR1oZLZkjbW61Pj8OoPN_SfU8DgbNAwzZOpFCFg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Thank you for your reply Tom. Then a) what are exactly stored in the
pathlist of top level rel? Paths worth considering? b) I have been
struggling to come up with a way to print the Path struct. If I can print a
path the way like "A hash join (B nested loop join C)", that would be
great. You mentioned people have printed "something" about each path, can
you please give me a hint of what's that and how to achieve that?

On Thu, Nov 14, 2013 at 12:01 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:

> Zhan Li <zhanli89(at)gmail(dot)com> writes:
> > When searching all the possible paths of executing a query, the optimizer
> > finds and saves the cheapest paths for the top level rel. I'd like to
> check
> > out all the paths the optimizer has ever considered, which I believe, are
> > stored in the pathlist of the top level rel.
>
> No, most of them have been thrown away long before that. See add_path.
> Also realize that in a large join problem, a lot of potential plans never
> get explicitly considered, because the input paths get pruned before we
> get to considering the join rel at all. (If this were not so, planning
> would take too long.)
>
> People have experimented with having add_path print something about each
> path that's fed to it, but the output tends to be voluminous and not all
> that useful.
>
> regards, tom lane
>

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Heikki Linnakangas 2013-11-14 17:23:39 Re: Failure while inserting parent tuple to B-tree is not fun
Previous Message Fujii Masao 2013-11-14 17:09:29 Re: Add min and max execute statement time in pg_stat_statement