This is an automated email from the ASF dual-hosted git repository.

dataroaring pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new 21b6b863ae5 [fix](planner) Empty table source should not begin a 
transaction to avoid infinite transaction (#38991) (#39108)
21b6b863ae5 is described below

commit 21b6b863ae5cf1aab77e84aa689569716d02a015
Author: Siyang Tang <82279870+tangsiyang2...@users.noreply.github.com>
AuthorDate: Thu Aug 8 19:35:01 2024 +0800

    [fix](planner) Empty table source should not begin a transaction to avoid 
infinite transaction (#38991) (#39108)
    
    ## Proposed changes
    
    Issue Number: close #38956
    
    As title.
---
 .../commands/insert/InsertIntoTableCommand.java    |  7 ++--
 .../test_alter_table_after_empty_insert.groovy     | 37 ++++++++++++++++++++++
 2 files changed, 41 insertions(+), 3 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertIntoTableCommand.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertIntoTableCommand.java
index f524ee9672a..4e89a004bd2 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertIntoTableCommand.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/InsertIntoTableCommand.java
@@ -196,9 +196,10 @@ public class InsertIntoTableCommand extends Command 
implements ForwardWithSync,
                 // TODO: support other table types
                 throw new AnalysisException("insert into command only support 
[olap, hive, iceberg] table");
             }
-
-            insertExecutor.beginTransaction();
-            insertExecutor.finalizeSink(planner.getFragments().get(0), sink, 
physicalSink);
+            if (!insertExecutor.isEmptyInsert()) {
+                insertExecutor.beginTransaction();
+                insertExecutor.finalizeSink(planner.getFragments().get(0), 
sink, physicalSink);
+            }
             targetTableIf.readUnlock();
         } catch (Throwable e) {
             targetTableIf.readUnlock();
diff --git 
a/regression-test/suites/schema_change_p0/test_alter_table_after_empty_insert.groovy
 
b/regression-test/suites/schema_change_p0/test_alter_table_after_empty_insert.groovy
new file mode 100644
index 00000000000..d96729b8779
--- /dev/null
+++ 
b/regression-test/suites/schema_change_p0/test_alter_table_after_empty_insert.groovy
@@ -0,0 +1,37 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+suite("test_alter_table_after_empty_insert") {
+    def tableName = "test_alter_table_after_empty_insert"
+    sql """ DROP TABLE IF EXISTS ${tableName} """
+    sql """
+        CREATE TABLE IF NOT EXISTS ${tableName} (
+            k BIGINT,
+            v SMALLINT NOT NULL,
+            t TEXT NOT NULL
+        )
+        DUPLICATE KEY(`k`)
+        DISTRIBUTED BY HASH(`k`) BUCKETS 4
+        PROPERTIES("replication_num" = "1")
+    """
+    sql """ INSERT INTO ${tableName} SELECT * FROM ${tableName} """
+    sql """ ALTER TABLE ${tableName} MODIFY COLUMN v BIGINT AFTER t """
+    waitForSchemaChangeDone {
+        sql """ SHOW ALTER TABLE COLUMN WHERE IndexName='${tableName}' ORDER 
BY createtime DESC LIMIT 1 """
+        time 60
+    }
+}
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to