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