diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/PartitionDesc.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/PartitionDesc.java index 8bb42657ae6fa8..86a4782cc22129 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/PartitionDesc.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/PartitionDesc.java @@ -106,6 +106,10 @@ public void analyze(List columnDefs, Map otherPropert throw new AnalysisException("String Type should not be used in partition column[" + columnDef.getName() + "]."); } + if (columnDef.getType().isComplexType()) { + throw new AnalysisException("Complex type column can't be partition column: " + + columnDef.getType().toString()); + } if (!ConnectContext.get().getSessionVariable().isAllowPartitionColumnNullable() && columnDef.isAllowNull()) { throw new AnalysisException("The partition column must be NOT NULL"); diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/RangePartitionDesc.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/RangePartitionDesc.java index 3d9cae60e5bfe1..cc18df6299e418 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/RangePartitionDesc.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/RangePartitionDesc.java @@ -84,6 +84,10 @@ public PartitionInfo toPartitionInfo(List schema, Map part boolean find = false; for (Column column : schema) { if (column.getName().equalsIgnoreCase(colName)) { + if (column.getType().isComplexType()) { + throw new DdlException("Complex type column can't be partition column: " + + column.getType().toString()); + } try { RangePartitionInfo.checkPartitionColumn(column); } catch (AnalysisException e) { @@ -94,10 +98,6 @@ public PartitionInfo toPartitionInfo(List schema, Map part find = true; break; } - if (column.getType().isComplexType()) { - throw new DdlException("Complex type column can't be partition column: " - + column.getType().toString()); - } } if (!find) { throw new DdlException("Partition column[" + colName + "] does not found"); diff --git a/fe/fe-core/src/test/java/org/apache/doris/catalog/CreateTableTest.java b/fe/fe-core/src/test/java/org/apache/doris/catalog/CreateTableTest.java index b12f09bea8ed44..347299c82a7487 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/catalog/CreateTableTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/catalog/CreateTableTest.java @@ -644,5 +644,46 @@ public void testCreateTableWithArrayType() throws Exception { + ") distributed by hash(k1) buckets 1\n" + "properties(\"replication_num\" = \"1\");"); }); + + ExceptionChecker.expectThrowsNoException(() -> { + createTable("create table test.test_array( \n" + + "task_insert_time BIGINT NOT NULL DEFAULT \"0\" COMMENT \"\" , \n" + + "task_project ARRAY DEFAULT NULL COMMENT \"\" ,\n" + + "route_key DATEV2 NOT NULL COMMENT \"range分区键\"\n" + + ") \n" + + "DUPLICATE KEY(`task_insert_time`) \n" + + " COMMENT \"\"\n" + + "PARTITION BY RANGE(route_key) \n" + + "(PARTITION `p202209` VALUES LESS THAN (\"2022-10-01\"),\n" + + "PARTITION `p202210` VALUES LESS THAN (\"2022-11-01\"),\n" + + "PARTITION `p202211` VALUES LESS THAN (\"2022-12-01\")) \n" + + "DISTRIBUTED BY HASH(`task_insert_time` ) BUCKETS 32 \n" + + "PROPERTIES\n" + + "(\n" + + " \"replication_num\" = \"1\", \n" + + " \"light_schema_change\" = \"true\" \n" + + ");"); + }); + + ExceptionChecker.expectThrowsWithMsg(AnalysisException.class, "Complex type column can't be partition column", + () -> { + createTable("create table test.test_array2( \n" + + "task_insert_time BIGINT NOT NULL DEFAULT \"0\" COMMENT \"\" , \n" + + "task_project ARRAY DEFAULT NULL COMMENT \"\" ,\n" + + "route_key DATEV2 NOT NULL COMMENT \"range分区键\"\n" + + ") \n" + + "DUPLICATE KEY(`task_insert_time`) \n" + + " COMMENT \"\"\n" + + "PARTITION BY RANGE(task_project) \n" + + "(PARTITION `p202209` VALUES LESS THAN (\"2022-10-01\"),\n" + + "PARTITION `p202210` VALUES LESS THAN (\"2022-11-01\"),\n" + + "PARTITION `p202211` VALUES LESS THAN (\"2022-12-01\")) \n" + + "DISTRIBUTED BY HASH(`task_insert_time` ) BUCKETS 32 \n" + + "PROPERTIES\n" + + "(\n" + + " \"replication_num\" = \"1\", \n" + + " \"light_schema_change\" = \"true\" \n" + + ");"); + }); } }