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]

Reply via email to