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

huajianlan 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 5b645437099 [fix](insert) fix insert failed when concurrent schema 
change (#60182)
5b645437099 is described below

commit 5b6454370992096185c6523b522a61c405014f7a
Author: 924060929 <[email protected]>
AuthorDate: Mon Jan 26 19:45:14 2026 +0800

    [fix](insert) fix insert failed when concurrent schema change (#60182)
    
    fix insert failed when concurrent schema change because the lock scope
    is small, introduced by #45045.
    
    ```
    2025-12-22 18:31:27,916 WARN (mysql-nio-pool-20|395) 
[StmtExecutor.execute():546] Analyze failed. stmt[223, 
6daf515a262f4708-959e9e3ef4590797]
    org.apache.doris.common.NereidsException: errCode = 2, detailMessage = 
insert into cols should be corresponding to the query output
            at 
org.apache.doris.qe.StmtExecutor.executeByNereids(StmtExecutor.java:706)
            at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:541)
            at 
org.apache.doris.qe.StmtExecutor.queryRetry(StmtExecutor.java:500)
            at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:485)
            at 
org.apache.doris.qe.ConnectProcessor.executeQuery(ConnectProcessor.java:311)
            at 
org.apache.doris.qe.ConnectProcessor.handleQuery(ConnectProcessor.java:198)
            at 
org.apache.doris.qe.MysqlConnectProcessor.handleQuery(MysqlConnectProcessor.java:231)
            at 
org.apache.doris.qe.MysqlConnectProcessor.dispatch(MysqlConnectProcessor.java:259)
            at 
org.apache.doris.qe.MysqlConnectProcessor.processOnce(MysqlConnectProcessor.java:403)
            at 
org.apache.doris.mysql.ReadListener.lambda$handleEvent$0(ReadListener.java:52)
            at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
            at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
            at java.base/java.lang.Thread.run(Thread.java:833)
    Caused by: org.apache.doris.common.AnalysisException: errCode = 2, 
detailMessage = insert into cols should be corresponding to the query output
            ... 13 more
    Caused by: org.apache.doris.nereids.exceptions.AnalysisException: insert 
into cols should be corresponding to the query output
            at 
org.apache.doris.nereids.rules.analysis.BindSink.bindOlapTableSink(BindSink.java:194)
            at 
org.apache.doris.nereids.pattern.PatternMatcher$1.transform(PatternMatcher.java:96)
            at 
org.apache.doris.nereids.jobs.rewrite.TopDownVisitorRewriteJob.doRewrite(TopDownVisitorRewriteJob.java:114)
            at 
org.apache.doris.nereids.jobs.rewrite.TopDownVisitorRewriteJob.rewrite(TopDownVisitorRewriteJob.java:80)
            at 
org.apache.doris.nereids.jobs.rewrite.TopDownVisitorRewriteJob.execute(TopDownVisitorRewriteJob.java:56)
            at 
org.apache.doris.nereids.jobs.rewrite.AdaptiveTopDownRewriteJob.execute(AdaptiveTopDownRewriteJob.java:41)
            at 
org.apache.doris.nereids.jobs.executor.AbstractBatchJobExecutor.execute(AbstractBatchJobExecutor.java:167)
            at 
org.apache.doris.nereids.jobs.executor.Analyzer.lambda$execute$0(Analyzer.java:98)
            at 
org.apache.doris.nereids.util.MoreFieldsThread.keepFunctionSignature(MoreFieldsThread.java:127)
            at 
org.apache.doris.nereids.jobs.executor.Analyzer.execute(Analyzer.java:97)
            at 
org.apache.doris.nereids.jobs.executor.Analyzer.analyze(Analyzer.java:92)
            at 
org.apache.doris.nereids.NereidsPlanner.lambda$analyze$4(NereidsPlanner.java:414)
            at 
org.apache.doris.nereids.NereidsPlanner.keepOrShowPlanProcess(NereidsPlanner.java:1109)
            at 
org.apache.doris.nereids.NereidsPlanner.analyze(NereidsPlanner.java:414)
            at 
org.apache.doris.nereids.trees.plans.commands.insert.FastInsertIntoValuesPlanner.analyze(FastInsertIntoValuesPlanner.java:63)
            at 
org.apache.doris.nereids.NereidsPlanner.planWithoutLock(NereidsPlanner.java:288)
            at 
org.apache.doris.nereids.NereidsPlanner.planWithLock(NereidsPlanner.java:263)
            at 
org.apache.doris.nereids.NereidsPlanner.plan(NereidsPlanner.java:162)
            at 
org.apache.doris.nereids.trees.plans.commands.insert.InsertIntoTableCommand.planInsertExecutor(InsertIntoTableCommand.java:540)
            at 
org.apache.doris.nereids.trees.plans.commands.insert.InsertIntoTableCommand.initPlanOnce(InsertIntoTableCommand.java:353)
            at 
org.apache.doris.nereids.trees.plans.commands.insert.InsertIntoTableCommand.initPlan(InsertIntoTableCommand.java:259)
            at 
org.apache.doris.nereids.trees.plans.commands.insert.InsertIntoTableCommand.initPlan(InsertIntoTableCommand.java:226)
            at 
org.apache.doris.nereids.trees.plans.commands.insert.InsertIntoTableCommand.runInternal(InsertIntoTableCommand.java:569)
            at 
org.apache.doris.nereids.trees.plans.commands.insert.InsertIntoTableCommand.run(InsertIntoTableCommand.java:210)
            at 
org.apache.doris.qe.StmtExecutor.executeByNereids(StmtExecutor.java:678)
            ... 12 more
    ```
---
 .../trees/plans/commands/insert/InsertIntoTableCommand.java        | 7 ++++---
 1 file changed, 4 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 ba52f09d38b..1f3752e74bb 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
@@ -345,12 +345,13 @@ public class InsertIntoTableCommand extends Command 
implements NeedAuditEncrypti
             }
             OlapGroupCommitInsertExecutor.analyzeGroupCommit(
                     ctx, targetTableIf, this.logicalQuery.get(), 
this.insertCtx);
+
+            LogicalPlanAdapter logicalPlanAdapter
+                    = new LogicalPlanAdapter(logicalQuery.get(), 
ctx.getStatementContext());
+            return planInsertExecutor(ctx, stmtExecutor, logicalPlanAdapter, 
targetTableIf);
         } finally {
             targetTableIf.readUnlock();
         }
-
-        LogicalPlanAdapter logicalPlanAdapter = new 
LogicalPlanAdapter(logicalQuery.get(), ctx.getStatementContext());
-        return planInsertExecutor(ctx, stmtExecutor, logicalPlanAdapter, 
targetTableIf);
     }
 
     // we should select the factory type first, but we can not initial 
InsertExecutor at this time,


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to