You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by da...@apache.org on 2024/06/17 04:17:47 UTC

(doris) 14/26: [fix](group commit) Fix group commit in nereids (#36267)

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

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

commit d6af2e5af599b61125c2b307c7f3cd1d3ddb4a0c
Author: meiyi <my...@gmail.com>
AuthorDate: Thu Jun 13 22:05:23 2024 +0800

    [fix](group commit) Fix group commit in nereids (#36267)
    
    ## Proposed changes
    
    1. The group commit in nereids use `isGroupCommit` variable in
    `ConnectContext` to mark if it is a group commit, but not reset. If
    executes 2 sqls, the first is group_commit, the second is not
    group_commit, the `isGroupCommit` is true for the second sql and the
    data_sink is `GroupCommitBlockSink`
    2. Move the `isGroupCommitAvailablePlan` to the end when check
    `canGroupCommit` because it's cpu expensive
---
 .../trees/plans/commands/insert/GroupCommitInsertExecutor.java   | 9 +++++----
 .../src/main/java/org/apache/doris/qe/MysqlConnectProcessor.java | 1 +
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/GroupCommitInsertExecutor.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/GroupCommitInsertExecutor.java
index 19b3ba1ff90..f4d640e2c64 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/GroupCommitInsertExecutor.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/insert/GroupCommitInsertExecutor.java
@@ -95,10 +95,11 @@ public class GroupCommitInsertExecutor extends AbstractInsertExecutor {
         }
         OlapTable targetTable = physicalOlapTableSink.getTargetTable();
         return ctx.getSessionVariable().getSqlMode() != SqlModeHelper.MODE_NO_BACKSLASH_ESCAPES
-                && !ctx.isTxnModel() && isGroupCommitAvailablePlan(physicalOlapTableSink, planner)
-                && physicalOlapTableSink.getPartitionIds().isEmpty() && targetTable.getTableProperty()
-                .getUseSchemaLightChange() && !targetTable.getQualifiedDbName()
-                .equalsIgnoreCase(FeConstants.INTERNAL_DB_NAME);
+                && !ctx.isTxnModel()
+                && physicalOlapTableSink.getPartitionIds().isEmpty()
+                && targetTable.getTableProperty().getUseSchemaLightChange()
+                && !targetTable.getQualifiedDbName().equalsIgnoreCase(FeConstants.INTERNAL_DB_NAME)
+                && isGroupCommitAvailablePlan(physicalOlapTableSink, planner);
     }
 
     private static boolean literalExpr(NereidsPlanner planner) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/MysqlConnectProcessor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/MysqlConnectProcessor.java
index 6c1507722d7..5480e964f28 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/MysqlConnectProcessor.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/MysqlConnectProcessor.java
@@ -315,6 +315,7 @@ public class MysqlConnectProcessor extends ConnectProcessor {
     public void processOnce() throws IOException {
         // set status of query to OK.
         ctx.getState().reset();
+        ctx.setGroupCommit(false);
         executor = null;
 
         // reset sequence id of MySQL protocol


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