From 820945c7036d1dc7dae28ea3f9192ffa8ff988fc Mon Sep 17 00:00:00 2001 From: Daniel Baston Date: Wed, 2 Sep 2015 09:40:43 -0400 Subject: [PATCH] copy optional finalizer param into aggregate memory context --- postgis/lwgeom_accum.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/postgis/lwgeom_accum.c b/postgis/lwgeom_accum.c index 476566c0f8d..e89d22a0f91 100644 --- a/postgis/lwgeom_accum.c +++ b/postgis/lwgeom_accum.c @@ -13,6 +13,7 @@ #include "fmgr.h" #include "funcapi.h" #include "access/tupmacs.h" +#include "utils/datum.h" #include "utils/array.h" #include "utils/lsyscache.h" @@ -130,7 +131,13 @@ pgis_geometry_accum_transfn(PG_FUNCTION_ARGS) if (PG_NARGS() == 3) { - p->data = PG_GETARG_DATUM(2); + Datum argument = PG_GETARG_DATUM(2); + Oid dataOid = get_fn_expr_argtype(fcinfo->flinfo, 2); + MemoryContext old = MemoryContextSwitchTo(aggcontext); + + p->data = datumCopy(argument, get_typbyval(dataOid), get_typlen(dataOid)); + + MemoryContextSwitchTo(old); } } else