summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2011-01-09 18:09:07 +0000
committerTom Lane2011-01-09 18:09:07 +0000
commit304845075ce0eb9045af50ed32c688a0cb8dd490 (patch)
tree74e9b957bc60160376621860bb8a4bc5fc2dacb4
parent361418be7c23e236d07edf4052de85ab8f32d88d (diff)
Use array_contains_nulls instead of ARR_HASNULL on user-supplied arrays.
This applies the fix for bug #5784 to remaining places where we wish to reject nulls in user-supplied arrays. In all these places, there's no reason not to allow a null bitmap to be present, so long as none of the current elements are actually null. I did not change some other places where we are looking at system catalog entries or aggregate transition values, as the presence of a null bitmap in such an array would be suspicious.
-rw-r--r--contrib/cube/cube.c6
-rw-r--r--contrib/ltree/_ltree_gist.c4
-rw-r--r--contrib/ltree/_ltree_op.c6
-rw-r--r--contrib/ltree/lquery_op.c2
-rw-r--r--contrib/ltree/ltree_gist.c2
-rw-r--r--src/backend/utils/adt/arrayfuncs.c4
-rw-r--r--src/backend/utils/adt/arrayutils.c2
-rw-r--r--src/backend/utils/adt/tsrank.c2
8 files changed, 14 insertions, 14 deletions
diff --git a/contrib/cube/cube.c b/contrib/cube/cube.c
index 16331524321..4a207ccb988 100644
--- a/contrib/cube/cube.c
+++ b/contrib/cube/cube.c
@@ -187,7 +187,7 @@ cube_a_f8_f8(PG_FUNCTION_ARGS)
double *dur,
*dll;
- if (ARR_HASNULL(ur) || ARR_HASNULL(ll))
+ if (array_contains_nulls(ur) || array_contains_nulls(ll))
ereport(ERROR,
(errcode(ERRCODE_ARRAY_ELEMENT_ERROR),
errmsg("cannot work with arrays containing NULLs")));
@@ -228,7 +228,7 @@ cube_a_f8(PG_FUNCTION_ARGS)
int size;
double *dur;
- if (ARR_HASNULL(ur))
+ if (array_contains_nulls(ur))
ereport(ERROR,
(errcode(ERRCODE_ARRAY_ELEMENT_ERROR),
errmsg("cannot work with arrays containing NULLs")));
@@ -262,7 +262,7 @@ cube_subset(PG_FUNCTION_ARGS)
i;
int *dx;
- if (ARR_HASNULL(idx))
+ if (array_contains_nulls(idx))
ereport(ERROR,
(errcode(ERRCODE_ARRAY_ELEMENT_ERROR),
errmsg("cannot work with arrays containing NULLs")));
diff --git a/contrib/ltree/_ltree_gist.c b/contrib/ltree/_ltree_gist.c
index f221c2de543..c1f509ed8b1 100644
--- a/contrib/ltree/_ltree_gist.c
+++ b/contrib/ltree/_ltree_gist.c
@@ -92,7 +92,7 @@ _ltree_compress(PG_FUNCTION_ARGS)
ereport(ERROR,
(errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
errmsg("array must be one-dimensional")));
- if (ARR_HASNULL(val))
+ if (array_contains_nulls(val))
ereport(ERROR,
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
errmsg("array must not contain nulls")));
@@ -538,7 +538,7 @@ _arrq_cons(ltree_gist *key, ArrayType *_query)
ereport(ERROR,
(errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
errmsg("array must be one-dimensional")));
- if (ARR_HASNULL(_query))
+ if (array_contains_nulls(_query))
ereport(ERROR,
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
errmsg("array must not contain nulls")));
diff --git a/contrib/ltree/_ltree_op.c b/contrib/ltree/_ltree_op.c
index 096a748c513..f4f0451fd88 100644
--- a/contrib/ltree/_ltree_op.c
+++ b/contrib/ltree/_ltree_op.c
@@ -52,7 +52,7 @@ array_iterator(ArrayType *la, PGCALL2 callback, void *param, ltree **found)
ereport(ERROR,
(errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
errmsg("array must be one-dimensional")));
- if (ARR_HASNULL(la))
+ if (array_contains_nulls(la))
ereport(ERROR,
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
errmsg("array must not contain nulls")));
@@ -152,7 +152,7 @@ _lt_q_regex(PG_FUNCTION_ARGS)
ereport(ERROR,
(errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
errmsg("array must be one-dimensional")));
- if (ARR_HASNULL(_query))
+ if (array_contains_nulls(_query))
ereport(ERROR,
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
errmsg("array must not contain nulls")));
@@ -310,7 +310,7 @@ _lca(PG_FUNCTION_ARGS)
ereport(ERROR,
(errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
errmsg("array must be one-dimensional")));
- if (ARR_HASNULL(la))
+ if (array_contains_nulls(la))
ereport(ERROR,
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
errmsg("array must not contain nulls")));
diff --git a/contrib/ltree/lquery_op.c b/contrib/ltree/lquery_op.c
index 1fbed78157a..fe9ecb118ae 100644
--- a/contrib/ltree/lquery_op.c
+++ b/contrib/ltree/lquery_op.c
@@ -348,7 +348,7 @@ lt_q_regex(PG_FUNCTION_ARGS)
ereport(ERROR,
(errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
errmsg("array must be one-dimensional")));
- if (ARR_HASNULL(_query))
+ if (array_contains_nulls(_query))
ereport(ERROR,
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
errmsg("array must not contain nulls")));
diff --git a/contrib/ltree/ltree_gist.c b/contrib/ltree/ltree_gist.c
index 47a85bbabc2..26c34753dcf 100644
--- a/contrib/ltree/ltree_gist.c
+++ b/contrib/ltree/ltree_gist.c
@@ -606,7 +606,7 @@ arrq_cons(ltree_gist *key, ArrayType *_query)
ereport(ERROR,
(errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
errmsg("array must be one-dimensional")));
- if (ARR_HASNULL(_query))
+ if (array_contains_nulls(_query))
ereport(ERROR,
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
errmsg("array must not contain nulls")));
diff --git a/src/backend/utils/adt/arrayfuncs.c b/src/backend/utils/adt/arrayfuncs.c
index a1bcbe687fd..1be96517df9 100644
--- a/src/backend/utils/adt/arrayfuncs.c
+++ b/src/backend/utils/adt/arrayfuncs.c
@@ -4700,7 +4700,7 @@ array_fill_internal(ArrayType *dims, ArrayType *lbs,
errmsg("wrong range of array subscripts"),
errdetail("Lower bound of dimension array must be one.")));
- if (ARR_HASNULL(dims))
+ if (array_contains_nulls(dims))
ereport(ERROR,
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
errmsg("dimension values cannot be null")));
@@ -4732,7 +4732,7 @@ array_fill_internal(ArrayType *dims, ArrayType *lbs,
errmsg("wrong range of array subscripts"),
errdetail("Lower bound of dimension array must be one.")));
- if (ARR_HASNULL(lbs))
+ if (array_contains_nulls(lbs))
ereport(ERROR,
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
errmsg("dimension values cannot be null")));
diff --git a/src/backend/utils/adt/arrayutils.c b/src/backend/utils/adt/arrayutils.c
index e3f116975d8..af7359ca4e3 100644
--- a/src/backend/utils/adt/arrayutils.c
+++ b/src/backend/utils/adt/arrayutils.c
@@ -213,7 +213,7 @@ ArrayGetIntegerTypmods(ArrayType *arr, int *n)
(errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
errmsg("typmod array must be one-dimensional")));
- if (ARR_HASNULL(arr))
+ if (array_contains_nulls(arr))
ereport(ERROR,
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
errmsg("typmod array must not contain nulls")));
diff --git a/src/backend/utils/adt/tsrank.c b/src/backend/utils/adt/tsrank.c
index 65823bd7052..8f5941c1476 100644
--- a/src/backend/utils/adt/tsrank.c
+++ b/src/backend/utils/adt/tsrank.c
@@ -408,7 +408,7 @@ getWeights(ArrayType *win)
(errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
errmsg("array of weight is too short")));
- if (ARR_HASNULL(win))
+ if (array_contains_nulls(win))
ereport(ERROR,
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
errmsg("array of weight must not contain nulls")));