From d15005d8d01fd955571495a32538266ac1e936e3 Mon Sep 17 00:00:00 2001 From: zhangdong <493738387@qq.com> Date: Thu, 11 Jul 2024 19:33:51 +0800 Subject: [PATCH] [fix](mtmv) fix mtmv task nereids cost too much time (#37589) cause: when mtmv task need refresh multi partition, will be split into multiple `insert overwrite` tasks,they use same `ConnectContext` and `StatementContext`,nereids time is calculated based on StatementContext, so multiple tasks will accumulate time fix: each `insert overwrite` tasks use unique `StatementContext` --- .../java/org/apache/doris/job/extensions/mtmv/MTMVTask.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fe/fe-core/src/main/java/org/apache/doris/job/extensions/mtmv/MTMVTask.java b/fe/fe-core/src/main/java/org/apache/doris/job/extensions/mtmv/MTMVTask.java index 517909f5e1f128..b50d755951f9df 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/job/extensions/mtmv/MTMVTask.java +++ b/fe/fe-core/src/main/java/org/apache/doris/job/extensions/mtmv/MTMVTask.java @@ -41,6 +41,7 @@ import org.apache.doris.mtmv.MTMVRefreshPartitionSnapshot; import org.apache.doris.mtmv.MTMVRelation; import org.apache.doris.mtmv.MTMVUtil; +import org.apache.doris.nereids.StatementContext; import org.apache.doris.nereids.glue.LogicalPlanAdapter; import org.apache.doris.nereids.trees.plans.commands.UpdateMvByPartitionCommand; import org.apache.doris.nereids.trees.plans.commands.info.TableNameInfo; @@ -222,6 +223,9 @@ public void run() throws JobException { private void exec(ConnectContext ctx, Set refreshPartitionNames, Map tableWithPartKey) throws Exception { + Objects.requireNonNull(ctx, "ctx should not be null"); + StatementContext statementContext = new StatementContext(); + ctx.setStatementContext(statementContext); TUniqueId queryId = generateQueryId(); lastQueryId = DebugUtil.printId(queryId); // if SELF_MANAGE mv, only have default partition, will not have partitionItem, so we give empty set