Richard Guo <guofengli...@gmail.com> writes: > On Fri, Nov 17, 2023 at 11:38 AM Tom Lane <t...@sss.pgh.pa.us> wrote: >> That line of argument also leads to the conclusion that it'd be >> okay to expose info about the ordering of the CTE result to the >> upper planner.
> In the light of this conclusion, I had a go at propagating the pathkeys > from CTEs up to the outer planner and came up with the attached. Oh, nice! I remembered we had code already to do this for regular SubqueryScans, but I thought we'd need to do some refactoring to apply it to CTEs. I think you are right though that convert_subquery_pathkeys can be used as-is. Some thoughts: * Do we really need to use make_tlist_from_pathtarget? Why isn't the tlist of the cteplan good enough (indeed, more so)? * I don't love having this code assume that it knows how to find the Path the cteplan was made from. It'd be better to make SS_process_ctes save that somewhere, maybe in a list paralleling root->cte_plan_ids. Alternatively: maybe it's time to do what the comments in SS_process_ctes vaguely speculate about, and just save the Path at that point, with construction of the plan left for createplan()? That might be a lot of refactoring for not much gain, so not sure. regards, tom lane