summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2005-08-15 19:05:30 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2005-08-15 19:05:30 +0000
commit497f11845c2f7d4843b5e77d8c774580d1eb5c38 (patch)
treeb41b51e91dd66da19377cde143ee1240b4f409b4
parent0c9f00506b9e473341f0ac0cd7296b61eb570301 (diff)
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.
-rw-r--r--contrib/intagg/int_aggregate.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/contrib/intagg/int_aggregate.c b/contrib/intagg/int_aggregate.c
index 1ab4c54a55d..638afddb5ae 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