mirror of
https://github.com/postgres/postgres.git
synced 2025-07-07 00:36:50 +03:00
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:
@ -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;
|
||||
|
Reference in New Issue
Block a user