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

From: Richard Guo <guofenglinux(at)gmail(dot)com>
To: David Rowley <dgrowleyml(at)gmail(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Michael Paquier <michael(at)paquier(dot)xyz>, jeremyevans0(at)gmail(dot)com, PostgreSQL mailing lists <pgsql-bugs(at)lists(dot)postgresql(dot)org>
Subject: Re: BUG #17495: Regression in 15beta1 when filtering subquery including row_number window function
Date: 2022-05-26 04:13:41
Message-ID: CAMbWs48Ltqg4K+bwKotmwt3x=6OggpDDsWSVXQYGCwNaEgngTg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Thu, May 26, 2022 at 11:47 AM David Rowley <dgrowleyml(at)gmail(dot)com> wrote:

> On Thu, 26 May 2022 at 10:39, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> >
> > David Rowley <dgrowleyml(at)gmail(dot)com> writes:
> > > Maybe a better fix is to add a new Bitmapset field to WindowClause and
> > > have find_window_run_conditions() record the attno in that field when
> > > it appends the new runCondition to the runCondition field.
> > > remove_unused_subquery_outputs() can just bms_add_members that field
> > > to attrs_used. This just means having to add a field to WindowClause
> > > post-beta. Is that going to be a problem?
> >
> > It'd mean a forced initdb, which is not great, but unless 0ff20288e
> > gets reverted there'd be no additional impact on beta testers.
>
> I'm partially surprised that we'd consider rolling that back to what
> it was before that commit if it was reverted. I didn't know that was
> the policy. Likely it's less painful for hackers to deal with than all
> beta testers.
>
> > A bigger problem with what you describe is that I don't really think
> > the planner should be mucking with the input parse tree like that.
> > Can't we retain this information somewhere else instead, in storage
> > associated with the PlannerInfo?
>
> Yeah, I'm definitely onboard with not messing around with the parse
> when we don't have to. I just can't quite see how this could be done
> for this case.
>
> 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?

Thanks
Richard

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Richard Guo 2022-05-26 04:34:04 Re: BUG #17495: Regression in 15beta1 when filtering subquery including row_number window function
Previous Message David Rowley 2022-05-26 03:46:49 Re: BUG #17495: Regression in 15beta1 when filtering subquery including row_number window function