Re: BUG #17777: An assert failed in nodeWindowAgg.c

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Andres Freund <andres(at)anarazel(dot)de>
Cc: xinwen(at)stu(dot)scu(dot)edu(dot)cn, pgsql-bugs(at)lists(dot)postgresql(dot)org, David Rowley <david(dot)rowley(at)2ndquadrant(dot)com>
Subject: Re: BUG #17777: An assert failed in nodeWindowAgg.c
Date: 2023-02-10 23:12:32
Message-ID: 439391.1676070752@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Andres Freund <andres(at)anarazel(dot)de> writes:
> The problem is that normally we supress the moving aggregate optimization if a
> volatile function is contained in the filter. But unfortunately,
> contain_volatile_functions() doesn't descend into subplans. So we don't see
> the volatile expression.

I would say that if a volatile function in the argument crashes things,
that's an executor bug. You won't get any sympathy from me for
complaints about whether contain_volatile_functions noticed that,
because *immutability markings can be lies*. It is not acceptable
to crash if they're wrong.

It looks to me like maybe we could just remove the Assert and do

- if (peraggstate->transValueCount == 1)
+ if (peraggstate->transValueCount < 2)

a few lines further down? I've not dug into the details though.

regards, tom lane

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Andres Freund 2023-02-10 23:20:51 Re: BUG #17777: An assert failed in nodeWindowAgg.c
Previous Message Andres Freund 2023-02-10 23:06:54 Re: BUG #17777: An assert failed in nodeWindowAgg.c