mirror of https://github.com/postgres/postgres
Add defenses against nulls-in-arrays to contrib/ltree. Possibly it'd
be useful to actually do something with nulls, rather than reject them, but I'll just close the hole for now.
This commit is contained in:
parent
1e9a1a70ad
commit
25c00833cb
|
@ -76,6 +76,10 @@ _ltree_compress(PG_FUNCTION_ARGS)
|
|||
ereport(ERROR,
|
||||
(errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
|
||||
errmsg("array must be one-dimensional")));
|
||||
if (ARR_HASNULL(val))
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
|
||||
errmsg("array must not contain nulls")));
|
||||
|
||||
key = (ltree_gist *) palloc(len);
|
||||
key->len = len;
|
||||
|
@ -518,6 +522,10 @@ _arrq_cons(ltree_gist * key, ArrayType *_query)
|
|||
ereport(ERROR,
|
||||
(errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
|
||||
errmsg("array must be one-dimensional")));
|
||||
if (ARR_HASNULL(_query))
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
|
||||
errmsg("array must not contain nulls")));
|
||||
|
||||
while (num > 0)
|
||||
{
|
||||
|
|
|
@ -47,6 +47,10 @@ 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))
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
|
||||
errmsg("array must not contain nulls")));
|
||||
|
||||
if (found)
|
||||
*found = NULL;
|
||||
|
@ -143,6 +147,10 @@ _lt_q_regex(PG_FUNCTION_ARGS)
|
|||
ereport(ERROR,
|
||||
(errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
|
||||
errmsg("array must be one-dimensional")));
|
||||
if (ARR_HASNULL(_query))
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
|
||||
errmsg("array must not contain nulls")));
|
||||
|
||||
while (num > 0)
|
||||
{
|
||||
|
@ -293,6 +301,15 @@ _lca(PG_FUNCTION_ARGS)
|
|||
ltree **a,
|
||||
*res;
|
||||
|
||||
if (ARR_NDIM(la) != 1)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
|
||||
errmsg("array must be one-dimensional")));
|
||||
if (ARR_HASNULL(la))
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
|
||||
errmsg("array must not contain nulls")));
|
||||
|
||||
a = (ltree **) palloc(sizeof(ltree *) * num);
|
||||
while (num > 0)
|
||||
{
|
||||
|
|
|
@ -328,6 +328,10 @@ lt_q_regex(PG_FUNCTION_ARGS)
|
|||
ereport(ERROR,
|
||||
(errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
|
||||
errmsg("array must be one-dimensional")));
|
||||
if (ARR_HASNULL(_query))
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
|
||||
errmsg("array must not contain nulls")));
|
||||
|
||||
while (num > 0)
|
||||
{
|
||||
|
|
|
@ -607,6 +607,10 @@ arrq_cons(ltree_gist * key, ArrayType *_query)
|
|||
ereport(ERROR,
|
||||
(errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
|
||||
errmsg("array must be one-dimensional")));
|
||||
if (ARR_HASNULL(_query))
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
|
||||
errmsg("array must not contain nulls")));
|
||||
|
||||
while (num > 0)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue