This is an automated email from the ASF dual-hosted git repository.
eldenmoon pushed a commit to branch branch-2.0-var
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0-var by this push:
new 21303b972ac [pick](branch-2.0) cherry pick from branch-2.0 (#27984)
21303b972ac is described below
commit 21303b972ac26b090a1a9750a242e4bd9d3cb990
Author: lihangyu <[email protected]>
AuthorDate: Tue Dec 5 13:01:42 2023 +0800
[pick](branch-2.0) cherry pick from branch-2.0 (#27984)
* [fix](invert index) fix reader does not close fd (#27917)
* [chore](Nereids): use debug to show phase of nereids into
Branch-2.0(#27907)
(cherry picked from commit 72b2a336e973df45ed3a180d1970fd7aa4072424)
* [fix](Nereids): fix datetime fold-constant-be in Branch-2.0 (#27938)
fix fold-constant-be datetimev2 will lose the scale of datetime.
---------
Co-authored-by: zzzxl <[email protected]>
Co-authored-by: jakevin <[email protected]>
---
be/src/olap/compaction.cpp | 5 ++--
.../org/apache/doris/nereids/NereidsPlanner.java | 12 ++++-----
.../expression/rules/FoldConstantRuleOnBE.java | 30 ++++++++++++++--------
3 files changed, 29 insertions(+), 18 deletions(-)
diff --git a/be/src/olap/compaction.cpp b/be/src/olap/compaction.cpp
index 98e01ef4967..635ca0eaa26 100644
--- a/be/src/olap/compaction.cpp
+++ b/be/src/olap/compaction.cpp
@@ -604,9 +604,10 @@ Status
Compaction::construct_output_rowset_writer(RowsetWriterContext& ctx, bool
std::string file_str = p.filename().string();
lucene::store::Directory* dir =
DorisCompoundDirectory::getDirectory(fs, dir_str.c_str());
- auto reader = new DorisCompoundReader(dir,
file_str.c_str());
+ DorisCompoundReader reader(dir,
file_str.c_str());
std::vector<std::string> files;
- reader->list(&files);
+ reader.list(&files);
+ reader.close();
// why is 3?
// bkd index will write at least 3 files
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java
index 0030ef1bad4..6db8317c993 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java
@@ -280,28 +280,28 @@ public class NereidsPlanner extends Planner {
}
private void analyze() {
- LOG.info("Start analyze plan");
+ LOG.debug("Start analyze plan");
cascadesContext.newAnalyzer().analyze();
NereidsTracer.logImportantTime("EndAnalyzePlan");
- LOG.info("End analyze plan");
+ LOG.debug("End analyze plan");
}
/**
* Logical plan rewrite based on a series of heuristic rules.
*/
private void rewrite() {
- LOG.info("Start rewrite plan");
+ LOG.debug("Start rewrite plan");
Rewriter.getWholeTreeRewriter(cascadesContext).execute();
NereidsTracer.logImportantTime("EndRewritePlan");
- LOG.info("End rewrite plan");
+ LOG.debug("End rewrite plan");
}
// DependsRules: EnsureProjectOnTopJoin.class
private void optimize() {
- LOG.info("Start optimize plan");
+ LOG.debug("Start optimize plan");
new Optimizer(cascadesContext).execute();
NereidsTracer.logImportantTime("EndOptimizePlan");
- LOG.info("End optimize plan");
+ LOG.debug("End optimize plan");
}
private PhysicalPlan postProcess(PhysicalPlan physicalPlan) {
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java
index db647f114ea..d3a5b0c2cd1 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java
@@ -19,12 +19,12 @@ package org.apache.doris.nereids.rules.expression.rules;
import org.apache.doris.analysis.Expr;
import org.apache.doris.analysis.ExprId;
-import org.apache.doris.analysis.LiteralExpr;
import org.apache.doris.catalog.Env;
import org.apache.doris.catalog.PrimitiveType;
-import org.apache.doris.catalog.Type;
+import org.apache.doris.catalog.ScalarType;
import org.apache.doris.common.IdGenerator;
import org.apache.doris.common.UserException;
+import org.apache.doris.common.util.DebugUtil;
import org.apache.doris.common.util.TimeUtils;
import org.apache.doris.nereids.glue.translator.ExpressionTranslator;
import org.apache.doris.nereids.rules.expression.AbstractExpressionRewriteRule;
@@ -34,8 +34,10 @@ import org.apache.doris.nereids.trees.expressions.Cast;
import org.apache.doris.nereids.trees.expressions.Expression;
import org.apache.doris.nereids.trees.expressions.literal.Literal;
import org.apache.doris.nereids.types.DataType;
+import org.apache.doris.nereids.types.DateTimeV2Type;
import org.apache.doris.proto.InternalService;
import org.apache.doris.proto.InternalService.PConstantExprResult;
+import org.apache.doris.proto.Types.PScalarType;
import org.apache.doris.qe.ConnectContext;
import org.apache.doris.rpc.BackendServiceProxy;
import org.apache.doris.system.Backend;
@@ -181,26 +183,34 @@ public class FoldConstantRuleOnBE extends
AbstractExpressionRewriteRule {
if (result.getStatus().getStatusCode() == 0) {
for (Entry<String, InternalService.PExprResultMap> e :
result.getExprResultMapMap().entrySet()) {
for (Entry<String, InternalService.PExprResult> e1 :
e.getValue().getMapMap().entrySet()) {
+ PScalarType pScalarType = e1.getValue().getType();
+ TPrimitiveType tPrimitiveType =
TPrimitiveType.findByValue(pScalarType.getType());
+ PrimitiveType primitiveType =
PrimitiveType.fromThrift(Objects.requireNonNull(tPrimitiveType));
Expression ret;
if (e1.getValue().getSuccess()) {
- TPrimitiveType type =
TPrimitiveType.findByValue(e1.getValue().getType().getType());
- Type t =
Type.fromPrimitiveType(PrimitiveType.fromThrift(Objects.requireNonNull(type)));
- Expr staleExpr =
LiteralExpr.create(e1.getValue().getContent(), Objects.requireNonNull(t));
- // Nereids type
- DataType t1 =
DataType.convertFromString(staleExpr.getType().getPrimitiveType().toString());
- ret =
Literal.of(staleExpr.getStringValue()).castTo(t1);
+ DataType type;
+ if (primitiveType == PrimitiveType.DATETIMEV2) {
+ type =
DateTimeV2Type.of(pScalarType.getScale());
+ } else {
+ type =
DataType.fromCatalogType(ScalarType.createType(
+
PrimitiveType.fromThrift(tPrimitiveType)));
+ }
+ ret =
Literal.of(e1.getValue().getContent()).castTo(type);
} else {
ret = constMap.get(e1.getKey());
}
+ LOG.debug("Be constant folding convert {} to {}",
e1.getKey(), ret);
resultMap.put(e1.getKey(), ret);
}
}
} else {
- LOG.warn("failed to get const expr value from be: {}",
result.getStatus().getErrorMsgsList());
+ LOG.warn("query {} failed to get const expr value from be: {}",
+ DebugUtil.printId(context.queryId()),
result.getStatus().getErrorMsgsList());
}
} catch (Exception e) {
- LOG.warn("failed to get const expr value from be: {}",
e.getMessage());
+ LOG.warn("query {} failed to get const expr value from be: {}",
+ DebugUtil.printId(context.queryId()), e.getMessage());
}
return resultMap;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]