Re: On disable_cost

Laurenz Albe <laurenz.albe@cybertec.at>

From: Laurenz Albe <laurenz.albe@cybertec.at>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, David Rowley <dgrowleyml@gmail.com>, Heikki Linnakangas <hlinnaka@iki.fi>, Peter Geoghegan <pg@bowt.ie>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2024-10-02T18:12:40Z
Lists: pgsql-hackers
On Wed, 2024-10-02 at 10:08 -0400, Robert Haas wrote:
> On Fri, Sep 27, 2024 at 4:42 AM Laurenz Albe <laurenz.albe@cybertec.at> wrote:
> > 1. The "disabled nodes" are always displayed.
> >     I'd be happier if it were only shown for COSTS ON, but I think it
> >     would be best if they were only shown with VERBOSE ON.
> > 
> >     After all, the messages are pretty verbose...
> 
> I agree that the messages are more verbose than what we did before
> (add a large value to the cost). But I would have thought it wouldn't
> matter much because most of the time nothing will be disabled. And I
> would think if you get a plan that has some nodes disabled, you would
> want to know about that.

I'm alright with that, but I certainly don't want to see them propagated
through the tree.  If you have a three page execution plan, and now it
is four pages long because some sequential scan at the lower end was
disabled and I get "Disabled nodes: 1" on every third line, that is
going to make me unhappy.

> I actually thought it was rather nice that this system lets you show
> the disabled-nodes information even when COSTS OFF. Regression tests
> need to suppress costs because it can vary by platform, but the count
> of disabled nodes is stable enough to display.

VERBOSE can be used with COSTS OFF, so that would work nicely if the
disabled nodes were only shown with EXPLAIN (VERBOSE).

I don't think that the feature is bad, I just would prefer it disabled
by default.

Yours,
Laurenz Albe



Commits

  1. Doc: add detail about EXPLAIN's "Disabled" property

  2. Adjust EXPLAIN's output for disabled nodes

  3. Fix order of parameters in a cost_sort call

  4. Show number of disabled nodes in EXPLAIN ANALYZE output.

  5. Treat number of disabled nodes in a path as a separate cost metric.

  6. Remove grotty use of disable_cost for TID scan plans.