Re: BUG #17709: Regression in PG15 with window functions - "WindowFunc not found in subplan target lists"

From: Richard Guo <guofenglinux(at)gmail(dot)com>
To: David Rowley <dgrowleyml(at)gmail(dot)com>
Cc: makhmutov(at)gmail(dot)com, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #17709: Regression in PG15 with window functions - "WindowFunc not found in subplan target lists"
Date: 2022-12-09 14:01:21
Message-ID: CAMbWs4-4L6Emr4e-npde9h5M56wUFt6GwrPykAM9GD+W9cDfTA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Fri, Dec 9, 2022 at 7:53 PM David Rowley <dgrowleyml(at)gmail(dot)com> wrote:

> The additional thing that seems to cause the reported error is that
> once the subquery is pulled up, the run condition also needs a round
> of constant folding done. See subquery_planner() around line 827. The
> problem is that the target list's WindowFunc ends up with count(1)
> over .., but the run condition's one is left as count(case 1 when 1
> then 1 else null end), which preprocess_expression() will fold into
> the same as what's in the target list.

Yes exactly. That's what we also have to do. I was debugging with a
simplified version of the query with the WindowFunc as count(t1.a) over
(...) and did not realize constant folding is also needed for the
runCondition.

> I'm now wondering if WindowClause.runCondition should be of type Node
> * instead of List *. I'd have imagined I should be passing the type of
> EXPRKIND_QUAL to preprocess_expression's type, but canonicalize_qual()
> does not like Lists.

I'm not sure about this. From how the runCondition is constructed in
find_window_run_conditions, it seems there is no need to canonicalize
it.

Thanks
Richard

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Tom Lane 2022-12-09 14:34:01 Re: BUG #17708: 12.4
Previous Message David Rowley 2022-12-09 11:52:40 Re: BUG #17709: Regression in PG15 with window functions - "WindowFunc not found in subplan target lists"