From 497f11845c2f7d4843b5e77d8c774580d1eb5c38 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Mon, 15 Aug 2005 19:05:30 +0000 Subject: [PATCH] int_array_enum function should be using fcinfo->flinfo->fn_extra for working state, not fcinfo->context. Silly oversight on my part in last go-round of fixes. --- contrib/intagg/int_aggregate.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/contrib/intagg/int_aggregate.c b/contrib/intagg/int_aggregate.c index 1ab4c54a55..638afddb5a 100644 --- a/contrib/intagg/int_aggregate.c +++ b/contrib/intagg/int_aggregate.c @@ -200,9 +200,9 @@ int_enum(PG_FUNCTION_ARGS) PG_RETURN_NULL(); } - if (!fcinfo->context) + if (!fcinfo->flinfo->fn_extra) { - /* Allocate a working context */ + /* Allocate working state */ MemoryContext oldcontext; oldcontext = MemoryContextSwitchTo(fcinfo->flinfo->fn_mcxt); @@ -226,19 +226,20 @@ int_enum(PG_FUNCTION_ARGS) if (pc->p->a.ndim != 1) elog(ERROR, "int_enum only accepts 1-D arrays"); pc->num = 0; - fcinfo->context = (Node *) pc; + fcinfo->flinfo->fn_extra = (void *) pc; MemoryContextSwitchTo(oldcontext); } - else /* use an existing one */ - pc = (CTX *) fcinfo->context; + else /* use existing working state */ + pc = (CTX *) fcinfo->flinfo->fn_extra; + /* Are we done yet? */ if (pc->num >= pc->p->items) { /* We are done */ if (pc->flags & TOASTED) pfree(pc->p); - pfree(fcinfo->context); - fcinfo->context = NULL; + pfree(pc); + fcinfo->flinfo->fn_extra = NULL; rsi->isDone = ExprEndResult; } else