On Jan 6, 2026, at 11:04 AM, David G. Johnston <david.g.johnston@gmail.com> wrote:
It was an intentional change. You now should be putting set-producing functions into the FROM clause of a query or subquery. A lateral join is often required.
I'm willing to accept that, but I can't find this called out in the release notes between 15 and 18.1. I could have overlooked it, of course.
It is very surprising to me that Postgres would intentionally break previously-working SELECT statements and that the CTE version is inconsistent between "AS MATERIALIZED". The WITH MATERIALIZED docs don't mention anything about certain query shapes being incompatible.
eric