The logic in this area was recently changed in
7da51590e, however, in that
commit, I neglected to consider that the conditions in which we should
pfree the old Datum needed to be updated after that change. This could
result in trying to pfree a NULL value, as was demonstrated by Alexander
Lakhin.
Reported-by: Alexander Lakhin
Discussion: https://postgr.es/m/
4103db46-d888-6d1d-e88d-
87c21ed99472@gmail.com
pertrans->aggCollation,
pertrans->lastdatum, value))))
{
- if (pertrans->haslast && !pertrans->inputtypeByVal)
+ if (pertrans->haslast && !pertrans->inputtypeByVal &&
+ !pertrans->lastisnull)
pfree(DatumGetPointer(pertrans->lastdatum));
pertrans->haslast = true;