aboutsummaryrefslogtreecommitdiff
path: root/contrib/array/array_iterator.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/array/array_iterator.c')
-rw-r--r--contrib/array/array_iterator.c9
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"); */