diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c
index 04127bd..8ca4a2f 100644
--- a/src/backend/parser/parse_expr.c
+++ b/src/backend/parser/parse_expr.c
@@ -169,6 +169,20 @@ transformExpr(ParseState *pstate, Node *expr)
 													targetType,
 													elementType,
 													targetTypmod);
+
+						/*
+						 * If the target array type is a domain, we still need
+						 * to check the domain constraint. (coerce_to_domain
+						 * is a no-op otherwise)
+						 */
+						result = coerce_to_domain(result,
+												  InvalidOid,
+												  -1,
+												  targetType,
+												  COERCE_IMPLICIT_CAST,
+												  tc->location,
+												  false,
+												  true);
 						break;
 					}
 
