Re: BUG #17709: Regression in PG15 with window functions - "WindowFunc not found in subplan target lists"
David Rowley <dgrowleyml@gmail.com>
From: David Rowley <dgrowleyml@gmail.com>
To: Richard Guo <guofenglinux@gmail.com>
Cc: makhmutov@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2022-12-10T06:29:33Z
Lists: pgsql-bugs
On Sat, 10 Dec 2022 at 03:01, Richard Guo <guofenglinux@gmail.com> wrote: > > > On Fri, Dec 9, 2022 at 7:53 PM David Rowley <dgrowleyml@gmail.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 made a few small minor adjustments and pushed the patch. Thanks for the report Alexey and to Richard for looking into this. David
Commits
-
Add subquery pullup handling for WindowClause runCondition
- 04788ee4c5ef 15.2 landed
- 94985c21020a 16.0 landed
-
Teach planner and executor about monotonic window funcs
- 9d9c02ccd1ae 15.0 cited