Now that I look at it, int_array_enum() didn't work either.
authorTom Lane
Thu, 27 Jan 2005 21:49:57 +0000 (21:49 +0000)
committerTom Lane
Thu, 27 Jan 2005 21:49:57 +0000 (21:49 +0000)
contrib/intagg/int_aggregate.c

index 67056af8eddecacb09e5276c97052e0c65e282f5..cb0f1f3a45277a6384f8a0efa8cc6533d1e74d34 100644 (file)
@@ -201,6 +201,10 @@ int_enum(PG_FUNCTION_ARGS)
    if (!fcinfo->context)
    {
        /* Allocate a working context */
+       MemoryContext   oldcontext;
+
+       oldcontext = MemoryContextSwitchTo(fcinfo->flinfo->fn_mcxt);
+
        pc = (CTX *) palloc(sizeof(CTX));
 
        /* Don't copy attribute if you don't need to */
@@ -218,6 +222,7 @@ int_enum(PG_FUNCTION_ARGS)
        }
        pc->num = 0;
        fcinfo->context = (Node *) pc;
+       MemoryContextSwitchTo(oldcontext);
    }
    else    /* use an existing one */
        pc = (CTX *) fcinfo->context;