From: | Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at> |
---|---|
To: | David Rowley <dgrowleyml(at)gmail(dot)com> |
Cc: | Robert Haas <robertmhaas(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Heikki Linnakangas <hlinnaka(at)iki(dot)fi>, Peter Geoghegan <pg(at)bowt(dot)ie>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: On disable_cost |
Date: | 2024-10-02 18:04:08 |
Message-ID: | 0cdd3504502aac827acb3ae615eda09aeb883f74.camel@cybertec.at |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Wed, 2024-10-02 at 21:55 +1300, David Rowley wrote:
> On Tue, 1 Oct 2024 at 06:17, Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at> wrote:
> > Why did you change "Disabled" from an integer to a boolean?
>
> I just don't think "Disabled Nodes" is all that self-documenting and
> I'm also unsure why the full integer value of disabled_nodes is
> required over just displaying the boolean value of if the node is
> disabled or not. Won't readers look at the remainder of the plan to
> determine information about which other nodes are disabled? Do we need
> to give them a running total?
I didn't want a running total, but maybe I misunderstood what a disabled
node is; see below.
> > If you see a join where two plans were disabled, that's useful information.
>
> I'm not sure if I follow what you mean here. The patch will show
> "Disabled: true" for both the inner and outer side of the join if both
> of those are disabled. The difference is that my patch does not show
> the join itself is disabled like master does. I thought that's what
> you were complaining about. Can you show an example of what you mean?
I ran the following example, and now I am confused.
CREATE TABLE tab_a (id integer);
CREATE TABLE tab_b (id integer);
SET enable_nestloop = off;
SET enable_hashjoin = off;
EXPLAIN SELECT * FROM tab_a JOIN tab_b USING (id);
QUERY PLAN
═════════════════════════════════════════════════════════════════════
Merge Join (cost=359.57..860.00 rows=32512 width=4)
Merge Cond: (tab_a.id = tab_b.id)
-> Sort (cost=179.78..186.16 rows=2550 width=4)
Sort Key: tab_a.id
-> Seq Scan on tab_a (cost=0.00..35.50 rows=2550 width=4)
-> Sort (cost=179.78..186.16 rows=2550 width=4)
Sort Key: tab_b.id
-> Seq Scan on tab_b (cost=0.00..35.50 rows=2550 width=4)
I would have expected to see "Disabled nodes: 2" with the merge join,
because both the nested loop join and the hash join have been disabled.
Why is there no disabled node shown?
Yours,
Laurenz Albe
From | Date | Subject | |
---|---|---|---|
Next Message | Laurenz Albe | 2024-10-02 18:12:40 | Re: On disable_cost |
Previous Message | Andrew Dunstan | 2024-10-02 17:45:05 | Re: pg_parse_json() should not leak token copies on failure |