Re: [BUGS] empty array can crash backend using int_array_enum from contrib.
Andrew - Supernews <[EMAIL PROTECTED]> writes: > We were discussing this one on irc while it was presumably waiting in the > moderation queue, and I suggested to the poster an alternative patch that > allowed empty arrays to actually be treated as empty (your version will > error out on int_array_enum('{}') rather than producing 0 rows, which seems > unhelpful). Done, but not back-patched since this seems more in the nature of a new feature than a crash preventative. regards, tom lane ---(end of broadcast)--- TIP 9: the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match
Re: [BUGS] empty array can crash backend using int_array_enum from contrib.
On 2005-04-23, Tom Lane <[EMAIL PROTECTED]> wrote: > Ron Mayer <[EMAIL PROTECTED]> writes: >> Using the int_array_enum function from contrib/intagg I can crash the >> 8.0.2 backend when I pass it an empty array. > > Man, we've had a few problems with that thing, haven't we? > > I patched it along these lines: [snip] We were discussing this one on irc while it was presumably waiting in the moderation queue, and I suggested to the poster an alternative patch that allowed empty arrays to actually be treated as empty (your version will error out on int_array_enum('{}') rather than producing 0 rows, which seems unhelpful). I would suggest changing your test from != 1 to > 1, and adding the moral equivalent of: --- int_aggregate.c.origFri Apr 22 11:37:09 2005 +++ int_aggregate.c Fri Apr 22 11:44:34 2005 @@ -227,7 +227,7 @@ else/* use an existing one */ pc = (CTX *) fcinfo->context; /* Are we done yet? */ - if (pc->num >= pc->p->items) + if (ARR_NDIM(pc->p) != 1 || pc->num >= pc->p->items) { /* We are done */ if (pc->flags & TOASTED) (that test could be moved into the setup phase, of course) -- Andrew, Supernews http://www.supernews.com - individual and corporate NNTP services ---(end of broadcast)--- TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]
Re: [BUGS] empty array can crash backend using int_array_enum from contrib.
Ron Mayer <[EMAIL PROTECTED]> writes: > Using the int_array_enum function from contrib/intagg I can crash the 8.0.2 > backend when I pass it an empty array. Man, we've had a few problems with that thing, haven't we? I patched it along these lines: *** contrib/intagg/int_aggregate.c.orig Thu Apr 14 14:16:08 2005 --- contrib/intagg/int_aggregate.c Sat Apr 23 01:32:52 2005 *** *** 242,247 --- 242,250 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); regards, tom lane ---(end of broadcast)--- TIP 6: Have you searched our list archives? http://archives.postgresql.org