diff --git a/src/backend/utils/adt/array_userfuncs.c b/src/backend/utils/adt/array_userfuncs.c index 499d357..67394e5 100644 --- a/src/backend/utils/adt/array_userfuncs.c +++ b/src/backend/utils/adt/array_userfuncs.c @@ -197,19 +197,12 @@ array_cat(PG_FUNCTION_ARGS) Oid element_type2; int32 dataoffset; - /* Concatenating a null array is a no-op, just return the other input */ - if (PG_ARGISNULL(0)) - { - if (PG_ARGISNULL(1)) - PG_RETURN_NULL(); - result = PG_GETARG_ARRAYTYPE_P(1); - PG_RETURN_ARRAYTYPE_P(result); - } - if (PG_ARGISNULL(1)) - { - result = PG_GETARG_ARRAYTYPE_P(0); - PG_RETURN_ARRAYTYPE_P(result); - } + /* + * Concatenating a null array results in a null array as per + * || operator concatenation + */ + if (PG_ARGISNULL(0) || PG_ARGISNULL(1)) + PG_RETURN_NULL(); v1 = PG_GETARG_ARRAYTYPE_P(0); v2 = PG_GETARG_ARRAYTYPE_P(1);