diff --git a/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java b/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java index 4636eb30ca29fd..74f62bddb2dbc6 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java +++ b/fe/fe-core/src/main/java/org/apache/doris/clone/DynamicPartitionScheduler.java @@ -278,9 +278,11 @@ private ArrayList getAddPartitionClause(Database db, OlapTab // IllegalArgumentException: lb is greater than ub LOG.warn("Error in gen addPartitionKeyRange. db: {}, table: {}, partition idx: {}", db.getFullName(), olapTable.getName(), idx, e); - recordCreatePartitionFailedMsg(db.getFullName(), olapTable.getName(), - e.getMessage(), olapTable.getId()); - throw new DdlException(e.getMessage()); + if (executeFirstTime) { + throw new DdlException("maybe dynamic_partition.start is too small, error: " + + e.getMessage()); + } + continue; } for (PartitionItem partitionItem : rangePartitionInfo.getIdToItem(false).values()) { // only support single column partition now @@ -299,7 +301,6 @@ private ArrayList getAddPartitionClause(Database db, OlapTab addPartitionKeyRange, db.getFullName(), olapTable.getName(), idx, e); recordCreatePartitionFailedMsg(db.getFullName(), olapTable.getName(), e.getMessage(), olapTable.getId()); - throw new DdlException(e.getMessage()); } break; } diff --git a/regression-test/suites/partition_p0/dynamic_partition/test_dynamic_partition_failed.groovy b/regression-test/suites/partition_p0/dynamic_partition/test_dynamic_partition_failed.groovy index 3447834a2af3ac..065f44fb95feea 100644 --- a/regression-test/suites/partition_p0/dynamic_partition/test_dynamic_partition_failed.groovy +++ b/regression-test/suites/partition_p0/dynamic_partition/test_dynamic_partition_failed.groovy @@ -26,6 +26,7 @@ suite('test_dynamic_partition_failed', 'nonConcurrent') { PROPERTIES ( "replication_num" = "1", + "dynamic_partition.replication_num" = "1", "dynamic_partition.enable" = "true", "dynamic_partition.end" = "3", "dynamic_partition.time_unit" = "day", @@ -46,6 +47,26 @@ suite('test_dynamic_partition_failed', 'nonConcurrent') { setFeConfig('max_dynamic_partition_num', Integer.MAX_VALUE) + sql 'DROP TABLE IF EXISTS test_dynamic_partition_failed_ok2 FORCE' + sql '''CREATE TABLE test_dynamic_partition_failed_ok2 + ( `k1` date NULL ) + PARTITION BY RANGE(k1) ( + PARTITION `phistory` VALUES less than ('2020-01-01') + ) + DISTRIBUTED BY HASH(`k1`) BUCKETS 1 + PROPERTIES + ( + "replication_num" = "1", + "dynamic_partition.replication_num" = "1", + "dynamic_partition.enable" = "true", + "dynamic_partition.end" = "3", + "dynamic_partition.time_unit" = "YEAR", + "dynamic_partition.prefix" = "p", + "dynamic_partition.buckets" = "1", + "dynamic_partition.start" = "-10", + "dynamic_partition.create_history_partition" = "true" + )''' + sql 'DROP TABLE IF EXISTS test_dynamic_partition_failed_2' test { sql '''CREATE TABLE test_dynamic_partition_failed_2 @@ -55,6 +76,7 @@ suite('test_dynamic_partition_failed', 'nonConcurrent') { PROPERTIES ( "replication_num" = "1", + "dynamic_partition.replication_num" = "1", "dynamic_partition.enable" = "true", "dynamic_partition.end" = "3", "dynamic_partition.time_unit" = "day", @@ -74,6 +96,7 @@ suite('test_dynamic_partition_failed', 'nonConcurrent') { } finally { setFeConfig('max_dynamic_partition_num', old_max_dynamic_partition_num) sql 'DROP TABLE IF EXISTS test_dynamic_partition_failed_ok1 FORCE' + sql 'DROP TABLE IF EXISTS test_dynamic_partition_failed_ok2 FORCE' sql 'DROP TABLE IF EXISTS test_dynamic_partition_failed_2' } }