From 21af55982a11bca4fdf2d14c75959f0ed0d8d6e1 Mon Sep 17 00:00:00 2001 From: jakevin Date: Tue, 30 Jan 2024 14:23:29 +0800 Subject: [PATCH] [feature](Nereids): InferPredicates support In (#29458) (#30525) (cherry picked from commit 7a0734dbd60effa676d87bf5a5b7ca516e134d52) --- .../nereids/jobs/scheduler/SimpleJobScheduler.java | 12 ++++++++---- .../java/org/apache/doris/qe/SessionVariable.java | 3 +++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/scheduler/SimpleJobScheduler.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/scheduler/SimpleJobScheduler.java index c52e2e90f13d60..ec751bdab2d446 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/scheduler/SimpleJobScheduler.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/scheduler/SimpleJobScheduler.java @@ -19,6 +19,7 @@ import org.apache.doris.nereids.CascadesContext; import org.apache.doris.nereids.jobs.Job; +import org.apache.doris.qe.SessionVariable; import java.util.concurrent.TimeUnit; @@ -29,11 +30,14 @@ public class SimpleJobScheduler implements JobScheduler { @Override public void executeJobPool(ScheduleContext scheduleContext) { JobPool pool = scheduleContext.getJobPool(); + CascadesContext context = (CascadesContext) scheduleContext; + SessionVariable sessionVariable = context.getConnectContext().getSessionVariable(); while (!pool.isEmpty()) { - CascadesContext context = (CascadesContext) scheduleContext; - if (context.getConnectContext().getSessionVariable().enableNereidsTimeout - && context.getStatementContext().getStopwatch().elapsed(TimeUnit.MILLISECONDS) > 5000) { - throw new RuntimeException("Nereids cost too much time ( > 5s )"); + if (sessionVariable.enableNereidsTimeout + && context.getStatementContext().getStopwatch().elapsed(TimeUnit.MILLISECONDS) + > sessionVariable.nereidsTimeoutSecond * 1000L) { + throw new RuntimeException( + "Nereids cost too much time ( > " + sessionVariable.nereidsTimeoutSecond + "s )"); } Job job = pool.pop(); job.execute(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java index 036d8da68364d8..616368a377857f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java @@ -972,6 +972,9 @@ public void setMaxJoinNumberOfReorder(int maxJoinNumberOfReorder) { @VariableMgr.VarAttr(name = ENABLE_NEW_SHUFFLE_HASH_METHOD) public boolean enableNewShuffleHashMethod = true; + @VariableMgr.VarAttr(name = "nereids_timeout_second", needForward = true) + public int nereidsTimeoutSecond = 5; + @VariableMgr.VarAttr(name = ENABLE_PUSH_DOWN_NO_GROUP_AGG) public boolean enablePushDownNoGroupAgg = true;