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);
