diff --git a/src/backend/executor/execExprInterp.c b/src/backend/executor/execExprInterp.c index 827c65cc852..19351fe34bf 100644 --- a/src/backend/executor/execExprInterp.c +++ b/src/backend/executor/execExprInterp.c @@ -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;