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 <zhaochan...@selectdb.com>
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: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to