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
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 |