diff options
Diffstat (limited to 'src/backend/utils/adt/array_userfuncs.c')
-rw-r--r-- | src/backend/utils/adt/array_userfuncs.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/backend/utils/adt/array_userfuncs.c b/src/backend/utils/adt/array_userfuncs.c index c30d6b42b07..a1f48d8784c 100644 --- a/src/backend/utils/adt/array_userfuncs.c +++ b/src/backend/utils/adt/array_userfuncs.c @@ -6,7 +6,7 @@ * Copyright (c) 2003-2009, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/array_userfuncs.c,v 1.30 2009/06/11 14:49:03 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/array_userfuncs.c,v 1.31 2009/06/20 18:45:28 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -537,10 +537,13 @@ array_agg_finalfn(PG_FUNCTION_ARGS) dims[0] = state->nelems; lbs[0] = 1; - /* Release working state if regular aggregate, but not if window agg */ + /* + * Make the result. We cannot release the ArrayBuildState because + * sometimes aggregate final functions are re-executed. + */ result = makeMdArrayResult(state, 1, dims, lbs, CurrentMemoryContext, - IsA(fcinfo->context, AggState)); + false); PG_RETURN_DATUM(result); } |