aboutsummaryrefslogtreecommitdiff
path: root/src/include/utils/array.h
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2011-02-16 01:52:04 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2011-02-16 01:53:03 -0500
commit6e02755b22ea62775c906d29b87b55b38ab70bd2 (patch)
tree726925e7176a6b845a7e19220b2a80baed1d08da /src/include/utils/array.h
parent4695da5ae97bbb58d274887fd68edbe88d03ebcb (diff)
downloadpostgresql-6e02755b22ea62775c906d29b87b55b38ab70bd2.tar.gz
postgresql-6e02755b22ea62775c906d29b87b55b38ab70bd2.zip
Add FOREACH IN ARRAY looping to plpgsql.
(I'm not entirely sure that we've finished bikeshedding the syntax details, but the functionality seems OK.) Pavel Stehule, reviewed by Stephen Frost and Tom Lane
Diffstat (limited to 'src/include/utils/array.h')
-rw-r--r--src/include/utils/array.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/include/utils/array.h b/src/include/utils/array.h
index 7f7e744cb12..6bc280f1424 100644
--- a/src/include/utils/array.h
+++ b/src/include/utils/array.h
@@ -114,6 +114,9 @@ typedef struct ArrayMapState
ArrayMetaState ret_extra;
} ArrayMapState;
+/* ArrayIteratorData is private in arrayfuncs.c */
+typedef struct ArrayIteratorData *ArrayIterator;
+
/*
* fmgr macros for array objects
*/
@@ -254,6 +257,10 @@ extern Datum makeArrayResult(ArrayBuildState *astate,
extern Datum makeMdArrayResult(ArrayBuildState *astate, int ndims,
int *dims, int *lbs, MemoryContext rcontext, bool release);
+extern ArrayIterator array_create_iterator(ArrayType *arr, int slice_ndim);
+extern bool array_iterate(ArrayIterator iterator, Datum *value, bool *isnull);
+extern void array_free_iterator(ArrayIterator iterator);
+
/*
* prototypes for functions defined in arrayutils.c
*/