aboutsummaryrefslogtreecommitdiff
path: root/src/include/utils/array.h
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2005-03-24 21:50:38 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2005-03-24 21:50:38 +0000
commit0dca4fcb0e9555cbfa38f60a6362b1b0418859c0 (patch)
tree88af6b142d67ec45e100ee87b48082034b056c94 /src/include/utils/array.h
parent8269ad4ffee49ba4fb3441198ab09cd835bdde24 (diff)
downloadpostgresql-0dca4fcb0e9555cbfa38f60a6362b1b0418859c0.tar.gz
postgresql-0dca4fcb0e9555cbfa38f60a6362b1b0418859c0.zip
array_map can't use the fn_extra field of the provided fcinfo struct as
its private storage, because that belongs to the function that it is supposed to call. Per report from Ezequiel Tolnay.
Diffstat (limited to 'src/include/utils/array.h')
-rw-r--r--src/include/utils/array.h14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/include/utils/array.h b/src/include/utils/array.h
index a9d2272d074..df5cd28b7d9 100644
--- a/src/include/utils/array.h
+++ b/src/include/utils/array.h
@@ -10,7 +10,7 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/utils/array.h,v 1.52 2005/02/28 03:45:23 neilc Exp $
+ * $PostgreSQL: pgsql/src/include/utils/array.h,v 1.53 2005/03/24 21:50:38 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -65,6 +65,15 @@ typedef struct ArrayMetaState
} ArrayMetaState;
/*
+ * private state needed by array_map (here because caller must provide it)
+ */
+typedef struct ArrayMapState
+{
+ ArrayMetaState inp_extra;
+ ArrayMetaState ret_extra;
+} ArrayMapState;
+
+/*
* fmgr macros for array objects
*/
#define DatumGetArrayTypeP(X) ((ArrayType *) PG_DETOAST_DATUM(X))
@@ -149,7 +158,8 @@ extern ArrayType *array_set_slice(ArrayType *array, int nSubscripts,
int arraylen, int elmlen, bool elmbyval, char elmalign,
bool *isNull);
-extern Datum array_map(FunctionCallInfo fcinfo, Oid inpType, Oid retType);
+extern Datum array_map(FunctionCallInfo fcinfo, Oid inpType, Oid retType,
+ ArrayMapState *amstate);
extern ArrayType *construct_array(Datum *elems, int nelems,
Oid elmtype,