Disallow set-returning functions within window OVER clauses.
Tom Lane <tgl@sss.pgh.pa.us>
Disallow set-returning functions within window OVER clauses. We previously allowed this, but it leads to odd behaviors, basically because putting a SRF there is inconsistent with the principle that a window function doesn't change the number of rows in the query result. There doesn't seem to be a strong reason to try to make such cases behave consistently. Users should put their SRFs in lateral FROM clauses instead. This issue has been sitting on the back burner for multiple years now, partially because it didn't seem wise to back-patch such a change. Let's squeeze it into v19 before it's too late. Bug: #17502 Bug: #19535 Reported-by: Daniel Farkaš <daniel.farkas@datoris.com> Reported-by: Qifan Liu <imchifan@163.com> Author: Tom Lane <tgl@sss.pgh.pa.us> Reviewed-by: David Rowley <dgrowleyml@gmail.com> Discussion: https://postgr.es/m/17502-281a7aaacfaa872a@postgresql.org Discussion: https://postgr.es/m/19535-376081d7cc07c86d@postgresql.org Backpatch-through: 19
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/parser/parse_func.c | modified | +0 −3 |
| src/test/regress/expected/tsrf.out | modified | +15 −10 |
| src/test/regress/sql/tsrf.sql | modified | +7 −3 |
Discussion
- BUG #17502: View based on window functions returns wrong results when queried 18 messages · 2022-05-28 → 2026-06-30
- BUG #19535: Splitting window input targets can break same-level SRF lockstep semantics 2 messages · 2026-06-24 → 2026-06-29