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