Re: BUG #17826: An assert failed in /src/backend/optimizer/util/var.c

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: David Rowley <dgrowleyml@gmail.com>
Cc: xinwen@stu.scu.edu.cn, pgsql-bugs@lists.postgresql.org
Date: 2023-03-12T21:43:55Z
Lists: pgsql-bugs
David Rowley <dgrowleyml@gmail.com> writes:
> It is only possible to either leave such quals in the outer query in
> the WHERE clause or make them run conditions of some WindowClause in
> the subquery. They can never be legally in the WHERE clause of the
> subquery as window functions cannot be evaluated in the WHERE clause.

Ah, got it.  So basically, the quals that we want are excluded by
check_output_expressions' point 4 (since they reference window
function output columns rather than partitioning columns).  I think
we need them to satisfy every other property that's checked in this
code, though.  Now I agree that we need to refactor a bit -- we
don't want to have to re-check all of these conditions.

			regards, tom lane



Commits

  1. Fix incorrect logic for determining safe WindowAgg run conditions

  2. Teach planner and executor about monotonic window funcs