diff --git a/src/backend/parser/parse_utilcmd.c b/src/backend/parser/parse_utilcmd.c
index c1911411d0..1468fd2460 100644
--- a/src/backend/parser/parse_utilcmd.c
+++ b/src/backend/parser/parse_utilcmd.c
@@ -4069,8 +4069,18 @@ transformPartitionBoundValue(ParseState *pstate, Node *val,
 	{
 		Oid			exprCollOid = exprCollation(value);
 
-		if (OidIsValid(exprCollOid) &&
-			exprCollOid != DEFAULT_COLLATION_OID &&
+		/*
+		 * No need to check if exprCollOid is invalid, since if it would be,
+		 * then transformCollateClause will throw an error earlier
+		 */
+		if (!type_is_collatable(colType))
+			ereport(ERROR,
+					(errcode(ERRCODE_DATATYPE_MISMATCH),
+					 errmsg("collations are not supported by type %s",
+							format_type_be(colType))));
+
+		Assert(OidIsValid(exprCollOid));
+		if (exprCollOid != DEFAULT_COLLATION_OID &&
 			exprCollOid != partCollation)
 			ereport(ERROR,
 					(errcode(ERRCODE_DATATYPE_MISMATCH),
diff --git a/src/test/regress/expected/create_table.out b/src/test/regress/expected/create_table.out
index c5e95edbed..abd1bfe2b9 100644
--- a/src/test/regress/expected/create_table.out
+++ b/src/test/regress/expected/create_table.out
@@ -594,6 +594,8 @@ CREATE TABLE list_parted (
 CREATE TABLE part_p1 PARTITION OF list_parted FOR VALUES IN ('1');
 CREATE TABLE part_p2 PARTITION OF list_parted FOR VALUES IN (2);
 CREATE TABLE part_p3 PARTITION OF list_parted FOR VALUES IN ((2+1));
+CREATE TABLE part_p4 PARTITION OF list_parted FOR VALUES IN ('1' collate "POSIX");
+ERROR:  collations are not supported by type integer
 CREATE TABLE part_null PARTITION OF list_parted FOR VALUES IN (null);
 \d+ list_parted
                           Partitioned table "public.list_parted"
diff --git a/src/test/regress/sql/create_table.sql b/src/test/regress/sql/create_table.sql
index 00ef81a685..3fe77a7711 100644
--- a/src/test/regress/sql/create_table.sql
+++ b/src/test/regress/sql/create_table.sql
@@ -522,6 +522,7 @@ CREATE TABLE list_parted (
 CREATE TABLE part_p1 PARTITION OF list_parted FOR VALUES IN ('1');
 CREATE TABLE part_p2 PARTITION OF list_parted FOR VALUES IN (2);
 CREATE TABLE part_p3 PARTITION OF list_parted FOR VALUES IN ((2+1));
+CREATE TABLE part_p4 PARTITION OF list_parted FOR VALUES IN ('1' collate "POSIX");
 CREATE TABLE part_null PARTITION OF list_parted FOR VALUES IN (null);
 \d+ list_parted
 
