Re: BUG #17495: Regression in 15beta1 when filtering subquery including row_number window function

Richard Guo <guofenglinux@gmail.com>

From: Richard Guo <guofenglinux@gmail.com>
To: David Rowley <dgrowleyml@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Michael Paquier <michael@paquier.xyz>, jeremyevans0@gmail.com, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2022-05-26T04:34:04Z
Lists: pgsql-bugs
On Thu, May 26, 2022 at 12:13 PM Richard Guo <guofenglinux@gmail.com> wrote:

>
> On Thu, May 26, 2022 at 11:47 AM David Rowley <dgrowleyml@gmail.com>
> wrote:
>
>> The problem is that the qual pushdown stuff all happens in
>> set_subquery_pathlist() before we call subquery_planner() for the
>> subquery.  We don't yet have a PlannerInfo made for the subquery when
>> we call check_and_push_window_quals().  We don't really have any other
>> means to communicate to subquery_planner() what the run conditions are
>> for the given Query object. Plus, we *do* really need to know what the
>> runConditions are before we call subquery_planner() so that those
>> conditions can be properly tagged onto WindowAggPaths. I don't really
>> think it would be right to pluck those from the PlannerInfo when we
>> later call create_plan(). That wouldn't leave us any opportunity to do
>> any costing related stuff with run conditions if we decide to do that
>> later.
>>
>
> The remove_unused_subquery_outputs() also happens before we call
> subquery_planner() for the subquery. Cann't we just store the attnos
> used in window quals that are pushed down to runConditions in the
> PlannerInfo of the upper query?
>

Ah, your point is to move runConditions also out of WindowClause and
store them in PlannerInfo, right? That's indeed not an easy job.

Thanks
Richard

Commits

  1. Teach remove_unused_subquery_outputs about window run conditions