int_aggregate's int_enum() doesn't work correctly with arrays that
authorTom Lane
Sat, 23 Apr 2005 05:38:22 +0000 (05:38 +0000)
committerTom Lane
Sat, 23 Apr 2005 05:38:22 +0000 (05:38 +0000)
aren't 1-D, so give an error message instead of failing.  Per report
from Ron Mayer.

contrib/intagg/int_aggregate.c

index 1c95d64af6130383ad501a07947726176f10acd4..292855018acc1d0a828960387d3fdaef0769d945 100644 (file)
@@ -242,6 +242,9 @@ int_enum(PG_FUNCTION_ARGS)
            pc->p = p;
            pc->flags = 0;
        }
+       /* Now that we have a detoasted array, verify dimensions */
+       if (pc->p->a.ndim != 1)
+           elog(ERROR, "int_enum only accepts 1-D arrays");
        pc->num = 0;
        fcinfo->context = (Node *) pc;
        MemoryContextSwitchTo(oldcontext);