From: Tom Lane Date: Fri, 17 Dec 2004 21:00:07 +0000 (+0000) Subject: Make array_cat more paranoid about checking datatypes in empty arrays. X-Git-Url: http://waps.l3s.uni-hannover.de/gitweb/?a=commitdiff_plain;h=71edda13c780b9f346ddd7ae6f3da05f31bfa0eb;p=users%2Fbernd%2Fpostgres.git Make array_cat more paranoid about checking datatypes in empty arrays. --- diff --git a/src/backend/utils/adt/array_userfuncs.c b/src/backend/utils/adt/array_userfuncs.c index 39af36d794..8ecfaf2b40 100644 --- a/src/backend/utils/adt/array_userfuncs.c +++ b/src/backend/utils/adt/array_userfuncs.c @@ -165,6 +165,22 @@ array_cat(PG_FUNCTION_ARGS) v1 = PG_GETARG_ARRAYTYPE_P(0); v2 = PG_GETARG_ARRAYTYPE_P(1); + element_type1 = ARR_ELEMTYPE(v1); + element_type2 = ARR_ELEMTYPE(v2); + + /* Check we have matching element types */ + if (element_type1 != element_type2) + ereport(ERROR, + (errcode(ERRCODE_DATATYPE_MISMATCH), + errmsg("cannot concatenate incompatible arrays"), + errdetail("Arrays with element types %s and %s are not " + "compatible for concatenation.", + format_type_be(element_type1), + format_type_be(element_type2)))); + + /* OK, use it */ + element_type = element_type1; + /*---------- * We must have one of the following combinations of inputs: * 1) one empty array, and one non-empty array @@ -200,22 +216,6 @@ array_cat(PG_FUNCTION_ARGS) "compatible for concatenation.", ndims1, ndims2))); - element_type1 = ARR_ELEMTYPE(v1); - element_type2 = ARR_ELEMTYPE(v2); - - /* Check we have matching element types */ - if (element_type1 != element_type2) - ereport(ERROR, - (errcode(ERRCODE_DATATYPE_MISMATCH), - errmsg("cannot concatenate incompatible arrays"), - errdetail("Arrays with element types %s and %s are not " - "compatible for concatenation.", - format_type_be(element_type1), - format_type_be(element_type2)))); - - /* OK, use it */ - element_type = element_type1; - /* get argument array details */ lbs1 = ARR_LBOUND(v1); lbs2 = ARR_LBOUND(v2);