This is an automated email from the ASF dual-hosted git repository.
zhangstar333 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new d736a508568 [Fix](iot) Fix unexpected error when iot auto detect get
no data (#40657)
d736a508568 is described below
commit d736a5085684964463fcbec1fd6c5f3fdc033c92
Author: zclllhhjj <[email protected]>
AuthorDate: Wed Sep 11 19:08:33 2024 +0800
[Fix](iot) Fix unexpected error when iot auto detect get no data (#40657)
## Proposed changes
Issue Number: close #xxx
before:
```
ERROR 1105 (HY000): errCode = 2, detailMessage = Index 0 out of bounds for
length 0
```
now:
```
Query OK, 0 rows affected
```
---
.../doris/insertoverwrite/InsertOverwriteUtil.java | 3 +++
.../insert_overwrite_auto_detect.groovy | 20 ++++++++++------
.../test_auto_partition_behavior.groovy | 28 ++++++++++++----------
3 files changed, 32 insertions(+), 19 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/insertoverwrite/InsertOverwriteUtil.java
b/fe/fe-core/src/main/java/org/apache/doris/insertoverwrite/InsertOverwriteUtil.java
index 7f1595ea59d..90cb8cf1fd2 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/insertoverwrite/InsertOverwriteUtil.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/insertoverwrite/InsertOverwriteUtil.java
@@ -79,6 +79,9 @@ public class InsertOverwriteUtil {
ReplacePartitionClause replacePartitionClause = new
ReplacePartitionClause(
new PartitionNames(false, partitionNames),
new PartitionNames(true, tempPartitionNames), true,
properties);
+ if (replacePartitionClause.getTempPartitionNames().isEmpty()) {
+ return;
+ }
Env.getCurrentEnv()
.replaceTempPartition((Database)
olapTable.getDatabase(),
(OlapTable) olapTable, replacePartitionClause);
diff --git
a/regression-test/suites/insert_overwrite_p0/insert_overwrite_auto_detect.groovy
b/regression-test/suites/insert_overwrite_p0/insert_overwrite_auto_detect.groovy
index cd33775f221..ffd3c3e642f 100644
---
a/regression-test/suites/insert_overwrite_p0/insert_overwrite_auto_detect.groovy
+++
b/regression-test/suites/insert_overwrite_p0/insert_overwrite_auto_detect.groovy
@@ -148,12 +148,18 @@ suite("test_iot_auto_detect") {
sql """ insert into dt values ("2005-01-01"), ("2013-02-02"),
("2022-03-03"); """
sql """ insert overwrite table dt partition(*) values ("2008-01-01"),
("2008-02-02"); """
qt_sql " select * from dt order by k0; "
- try {
+ test {
sql """ insert overwrite table dt partition(*) values ("2023-02-02"),
("3000-12-12"); """
- } catch (Exception e) {
- log.info(e.getMessage())
- assertTrue(e.getMessage().contains('Insert has filtered data in strict
mode') ||
- e.getMessage().contains('Cannot found origin partitions in auto
detect overwriting'))
- }
-
+ check { result, exception, startTime, endTime ->
+ assertTrue(exception.getMessage().contains('Insert has filtered data
in strict mode') ||
+ exception.getMessage().contains('Cannot found origin partitions
in auto detect overwriting'))
+ }
+ }
+ // test no rows(no partition hits) overwrite
+ sql " drop table if exists dt2"
+ sql " create table dt2 like dt"
+ sql " insert overwrite table dt2 partition(*) select * from dt2"
+ sql " insert overwrite table dt partition(*) select * from dt2"
+ sql " insert overwrite table dt partition(p10, pMAX) select * from dt2"
+ sql " insert overwrite table dt select * from dt2"
}
diff --git
a/regression-test/suites/partition_p0/auto_partition/test_auto_partition_behavior.groovy
b/regression-test/suites/partition_p0/auto_partition/test_auto_partition_behavior.groovy
index 01fdfd4d634..0a6d46290a7 100644
---
a/regression-test/suites/partition_p0/auto_partition/test_auto_partition_behavior.groovy
+++
b/regression-test/suites/partition_p0/auto_partition/test_auto_partition_behavior.groovy
@@ -50,11 +50,9 @@ suite("test_auto_partition_behavior") {
result = sql "show partitions from unique_table"
assertEquals(result.size(), 10)
// add partition
- try {
+ test {
sql """ alter table unique_table add partition padd values in ("Xxx")
"""
- fail()
- } catch (Exception e) {
- assertTrue(e.getMessage().contains("is conflict with current
partitionKeys"))
+ exception "is conflict with current partitionKeys"
}
// drop partition
def partitions = sql "show partitions from unique_table order by
PartitionName"
@@ -94,11 +92,9 @@ suite("test_auto_partition_behavior") {
result = sql "show partitions from dup_table"
assertEquals(result.size(), 10)
// add partition
- try {
+ test {
sql """ alter table dup_table add partition padd values in ("Xxx") """
- fail()
- } catch (Exception e) {
- assertTrue(e.getMessage().contains("is conflict with current
partitionKeys"))
+ exception "is conflict with current partitionKeys"
}
// drop partition
partitions = sql "show partitions from dup_table order by PartitionName"
@@ -168,11 +164,9 @@ suite("test_auto_partition_behavior") {
);
"""
sql """ insert into rewrite values ("Xxx"); """
- try {
+ test {
sql """ insert overwrite table rewrite partition(p1) values ("") """
- fail()
- } catch (Exception e) {
- assertTrue(e.getMessage().contains("Insert has filtered data in strict
mode"))
+ exception "Insert has filtered data in strict mode"
}
sql """ insert overwrite table rewrite partition(p1) values ("Xxx") """
qt_sql_overwrite """ select * from rewrite """ // Xxx
@@ -297,6 +291,9 @@ suite("test_auto_partition_behavior") {
part_result = sql " show tablets from test_change "
assertEquals(part_result.size, 52 * replicaNum)
+
+
+ // test not auto partition have expr.
test {
sql """
CREATE TABLE not_auto_expr (
@@ -310,4 +307,11 @@ suite("test_auto_partition_behavior") {
"""
exception "Non-auto partition table not support partition expr!"
}
+
+
+ // test insert empty
+ sql "create table if not exists empty_range like test_change"
+ sql "insert into test_change select * from empty_range"
+ sql "create table if not exists empty_list like long_value"
+ sql "insert into long_value select * from empty_list"
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]