From 75000a5f6e572d92fb0301ffe93d6d053d607bef Mon Sep 17 00:00:00 2001 From: Siyang Tang <82279870+TangSiyang2001@users.noreply.github.com> Date: Mon, 23 Oct 2023 14:57:02 +0800 Subject: [PATCH] [enhancement](stmt-exec) make CTAS use insert timeout fix forward timeout (#25731) --- .../nereids/trees/plans/commands/CreateTableCommand.java | 4 ++++ .../main/java/org/apache/doris/qe/ConnectContext.java | 4 ++-- .../src/main/java/org/apache/doris/qe/StmtExecutor.java | 9 ++++++--- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateTableCommand.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateTableCommand.java index 0e8782c8a5..08a10b914c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateTableCommand.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/CreateTableCommand.java @@ -150,6 +150,10 @@ public class CreateTableCommand extends Command implements ForwardWithSync { } } + public boolean isCtasCommand() { + return ctasQuery.isPresent(); + } + @Override public R accept(PlanVisitor visitor, C context) { return visitor.visitCreateTableCommand(this, context); diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java index 91be948aa9..56d098cc6b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectContext.java @@ -748,7 +748,7 @@ public class ConnectContext { } else { String timeoutTag = "query"; // insert stmt particularly - if (executor != null && executor.isInsertStmt()) { + if (executor != null && executor.isSyncLoadKindStmt()) { timeoutTag = "insert"; } // to ms @@ -802,7 +802,7 @@ public class ConnectContext { * @return exact execution timeout */ public int getExecTimeout() { - if (executor != null && executor.isInsertStmt()) { + if (executor != null && executor.isSyncLoadKindStmt()) { // particular for insert stmt, we can expand other type of timeout in the same way return Math.max(sessionVariable.getInsertTimeoutS(), sessionVariable.getQueryTimeoutS()); } else if (executor != null && executor.isAnalyzeStmt()) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java index 360353f2c7..ee97429691 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java @@ -122,6 +122,7 @@ import org.apache.doris.nereids.minidump.MinidumpUtils; import org.apache.doris.nereids.parser.NereidsParser; import org.apache.doris.nereids.stats.StatsErrorEstimator; import org.apache.doris.nereids.trees.plans.commands.Command; +import org.apache.doris.nereids.trees.plans.commands.CreateTableCommand; import org.apache.doris.nereids.trees.plans.commands.Forward; import org.apache.doris.nereids.trees.plans.commands.InsertIntoTableCommand; import org.apache.doris.nereids.trees.plans.logical.LogicalPlan; @@ -395,15 +396,17 @@ public class StmtExecutor { return masterOpExecutor.getProxyStatus(); } - public boolean isInsertStmt() { + public boolean isSyncLoadKindStmt() { if (parsedStmt == null) { return false; } if (parsedStmt instanceof LogicalPlanAdapter) { LogicalPlan logicalPlan = ((LogicalPlanAdapter) parsedStmt).getLogicalPlan(); - return logicalPlan instanceof InsertIntoTableCommand; + return logicalPlan instanceof InsertIntoTableCommand + || (logicalPlan instanceof CreateTableCommand + && ((CreateTableCommand) logicalPlan).isCtasCommand()); } - return parsedStmt instanceof InsertStmt; + return parsedStmt instanceof InsertStmt || parsedStmt instanceof CreateTableAsSelectStmt; } public boolean isAnalyzeStmt() {