Re: BUG #18652: Planner can not find pathkey item to sort for query with expression and expression index
Richard Guo <guofenglinux@gmail.com>
From: Richard Guo <guofenglinux@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: exclusion@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2024-10-10T11:57:22Z
Lists: pgsql-bugs
On Thu, Oct 10, 2024 at 12:34 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > So it's specific to MergeAppend and it's been wrong from day zero. > That makes me think it's probably not find_computable_ec_member's > fault directly. Fixing it there might be the most expedient answer, > but I feel like first we should drill down a bit further to understand > the root problem. I'm too tired to do more tonight though. Usually a relation's targetlist should include only Vars and PHVs during this phase. I think this may be the rationale behind find_computable_ec_member matching only Vars and quasi-Vars. However, for a child rel, when we copy the parent's targetlist with appropriate substitution, we may generate arbitrary expressions, such as an OpExpr for 'i + 1' in this case. We have a note in the comments in set_append_rel_size saying that * Code that might be looking at an appendrel child must cope with * such. It seems to me that find_computable_ec_member does not get this memo. Alternatively, can we wrap non-var expressions in a childrel's targetlist into PHVs, so that we do not need special handling for an appendrel child? I have not tried this though. Thanks Richard
Commits
-
Correctly identify which EC members are computable at a plan node.
- 9f954177b1eb 18.0 landed
- 76de4b182cad 13.17 landed
- 64635c8af92d 16.5 landed
- 54889ea64baa 17.1 landed
- 4f3bccbaaeb4 15.9 landed
- 4ca708eb3588 14.14 landed
-
Support MergeAppend plans, to allow sorted output from append relations.
- 11cad29c9152 9.1.0 cited