Fix pfree issue in presorted DISTINCT aggregate code
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
This commit is contained in:
parent
bd944884e9
commit
ec5a010ab2
@ -4254,7 +4254,8 @@ ExecEvalPreOrderedDistinctSingle(AggState *aggstate, AggStatePerTrans pertrans)
|
||||
pertrans->aggCollation,
|
||||
pertrans->lastdatum, value))))
|
||||
{
|
||||
if (pertrans->haslast && !pertrans->inputtypeByVal)
|
||||
if (pertrans->haslast && !pertrans->inputtypeByVal &&
|
||||
!pertrans->lastisnull)
|
||||
pfree(DatumGetPointer(pertrans->lastdatum));
|
||||
|
||||
pertrans->haslast = true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user