diff options
Diffstat (limited to 'contrib/array/array_iterator.c')
-rw-r--r-- | contrib/array/array_iterator.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/contrib/array/array_iterator.c b/contrib/array/array_iterator.c index 447d5c6443e..c480f7dfc70 100644 --- a/contrib/array/array_iterator.c +++ b/contrib/array/array_iterator.c @@ -47,15 +47,18 @@ array_iterator(Oid elemtype, Oid proc, int and, ArrayType *array, Datum value) FmgrInfo finfo; /* Sanity checks */ - if ((array == (ArrayType *) NULL) - || (ARR_IS_LO(array) == true)) + if (array == (ArrayType *) NULL) { /* elog(NOTICE, "array_iterator: array is null"); */ return (0); } + + /* detoast input if necessary */ + array = DatumGetArrayTypeP(PointerGetDatum(array)); + ndim = ARR_NDIM(array); dim = ARR_DIMS(array); - nitems = getNitems(ndim, dim); + nitems = ArrayGetNItems(ndim, dim); if (nitems == 0) { /* elog(NOTICE, "array_iterator: nitems = 0"); */ |