Re: On disable_cost
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: Andres Freund <andres@anarazel.de>
Cc: Peter Geoghegan <pg@bowt.ie>, David Rowley <dgrowleyml@gmail.com>,
Tom Lane <tgl@sss.pgh.pa.us>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2024-06-12T19:11:53Z
Lists: pgsql-hackers
On Wed, Jun 12, 2024 at 2:48 PM Andres Freund <andres@anarazel.de> wrote: > Sorry, should have been more precise. With "set" I didn't mean set to true, > but that that it's only modified within select_mergejoin_clauses(). Oh. "set" has more than one relevant meaning here. > > It starts out true, and always stays true except for right, right-anti, and > > full joins, where select_mergejoin_clauses() can set it to false. Since the > > call to match_unsorted_outer() is gated by mergejoin_enabled, you might > > think that we'd skip considering nested loops on the strength of not being > > able to do a merge join, but comment "2." in add_paths_to_joinrel explains > > that the join types for which mergejoin_enabled can end up false aren't > > supported by nested loops anyway. Still, this logic is really tortured. > > Agree that that's the logic - but doesn't that mean we'll consider nestloops > for e.g. right joins iff enable_mergejoin=false? No, because that function has its own internal guards. See nestjoinOK. But don't misunderstand me: I'm not defending the status quo. The whole thing seems like a Rube Goldberg machine to me. -- Robert Haas EDB: http://www.enterprisedb.com
Commits
-
Doc: add detail about EXPLAIN's "Disabled" property
- 84b8fccbe5c2 18.0 landed
-
Adjust EXPLAIN's output for disabled nodes
- 161320b4b960 18.0 landed
-
Fix order of parameters in a cost_sort call
- 87b6c3c0b703 18.0 landed
-
Show number of disabled nodes in EXPLAIN ANALYZE output.
- c01743aa4866 18.0 landed
-
Treat number of disabled nodes in a path as a separate cost metric.
- e22253467942 18.0 landed
-
Remove grotty use of disable_cost for TID scan plans.
- e4326fbc60c4 18.0 landed