This is an automated email from the ASF dual-hosted git repository.

yiguolei pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-3.0 by this push:
     new 9e109ee4b37 branch-3.0: [fix](planner) fix core when select and filter 
by slot in old planner #46541 (#46637)
9e109ee4b37 is described below

commit 9e109ee4b3712f965ef5587c50af8fef01605cf5
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Wed Jan 8 22:33:16 2025 +0800

    branch-3.0: [fix](planner) fix core when select and filter by slot in old 
planner #46541 (#46637)
    
    Cherry-picked from #46541
    
    Co-authored-by: Lijia Liu <liutang...@yeah.net>
    Co-authored-by: liutang123 <liuli...@gmail.com>
---
 .../main/java/org/apache/doris/planner/PlanNode.java | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java 
b/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java
index 73768435154..c83cd9cde99 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java
@@ -34,6 +34,7 @@ import org.apache.doris.analysis.TupleDescriptor;
 import org.apache.doris.analysis.TupleId;
 import org.apache.doris.catalog.Column;
 import org.apache.doris.catalog.OlapTable;
+import org.apache.doris.catalog.Type;
 import org.apache.doris.common.AnalysisException;
 import org.apache.doris.common.Id;
 import org.apache.doris.common.NotImplementedException;
@@ -59,6 +60,8 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -89,6 +92,7 @@ import java.util.stream.Collectors;
  * its children (= are bound by tupleIds).
  */
 public abstract class PlanNode extends TreeNode<PlanNode> implements PlanStats 
{
+    private static final Logger LOG = LogManager.getLogger(PlanNode.class);
 
     protected String planNodeName;
 
@@ -207,6 +211,7 @@ public abstract class PlanNode extends TreeNode<PlanNode> 
implements PlanStats {
         this.tblRefIds = Lists.newArrayList(node.tblRefIds);
         this.nullableTupleIds = Sets.newHashSet(node.nullableTupleIds);
         this.conjuncts = Expr.cloneList(node.conjuncts, null);
+
         this.cardinality = -1;
         this.compactData = node.compactData;
         this.planNodeName = "V" + planNodeName;
@@ -806,6 +811,21 @@ public abstract class PlanNode extends TreeNode<PlanNode> 
implements PlanStats {
     public void init(Analyzer analyzer) throws UserException {
         assignConjuncts(analyzer);
         createDefaultSmap(analyzer);
+        castConjuncts();
+    }
+
+    private void castConjuncts() throws AnalysisException {
+        for (int i = 0; i < conjuncts.size(); ++i) {
+            Expr expr = conjuncts.get(i);
+            if (!expr.getType().isBoolean()) {
+                try {
+                    conjuncts.set(i, expr.castTo(Type.BOOLEAN));
+                } catch (AnalysisException e) {
+                    LOG.warn("{} is not boolean and can not be cast to 
boolean", expr.toSql(), e);
+                    throw new AnalysisException("conjuncts " + expr.toSql() + 
" is not boolean");
+                }
+            }
+        }
     }
 
     /**


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to