Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions fe/src/main/java/org/apache/doris/catalog/ScalarType.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,12 @@
import org.apache.doris.thrift.TTypeDesc;
import org.apache.doris.thrift.TTypeNode;
import org.apache.doris.thrift.TTypeNodeType;

import com.google.common.base.Preconditions;
import com.google.common.base.Strings;

import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

/**
* Describes a scalar type. For most types this class just wraps a PrimitiveType enum,
Expand Down Expand Up @@ -329,7 +330,7 @@ public String toSql(int depth) {
stringBuilder.append(type.toString().toLowerCase());
break;
default:
stringBuilder.append("unknown");
stringBuilder.append("unknown type: " + type.toString());
break;
}
return stringBuilder.toString();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,20 +113,20 @@ public Range<PartitionKey> getRange(List<Column> columns) {
public String toString() {
String str = "";
if (null == lowerBound) {
str += "lowerBound is NULL";
str += "lowerBound is UNSET";
} else {
str += "lowerBound is " + lowerBound.getStringValue() + " and lowerBoundInclusive is " +
lowerBoundInclusive;
}
if (null == upperBound) {
str += "\nupperBound is NULL";
str += "\nupperBound is UNSET";
} else {
str +=
"\nupperBound is " + upperBound.getStringValue() + " and upperBoundInclusive is " +
upperBoundInclusive;
}
if (null == inPredicate) {
str += "\ninPredicate is NULL";
str += "\ninPredicate is UNSET";
} else {
str += "\ninPredicate is " + inPredicate;
}
Expand Down
52 changes: 42 additions & 10 deletions fe/src/main/java/org/apache/doris/planner/SingleNodePlanner.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,48 @@

package org.apache.doris.planner;

import org.apache.doris.analysis.AggregateInfo;
import org.apache.doris.analysis.AnalyticInfo;
import org.apache.doris.analysis.Analyzer;
import org.apache.doris.analysis.BaseTableRef;
import org.apache.doris.analysis.BinaryPredicate;
import org.apache.doris.analysis.CaseExpr;
import org.apache.doris.analysis.CastExpr;
import org.apache.doris.analysis.DescriptorTable;
import org.apache.doris.analysis.Expr;
import org.apache.doris.analysis.ExprSubstitutionMap;
import org.apache.doris.analysis.FunctionCallExpr;
import org.apache.doris.analysis.InPredicate;
import org.apache.doris.analysis.InlineViewRef;
import org.apache.doris.analysis.IsNullPredicate;
import org.apache.doris.analysis.JoinOperator;
import org.apache.doris.analysis.LiteralExpr;
import org.apache.doris.analysis.NullLiteral;
import org.apache.doris.analysis.QueryStmt;
import org.apache.doris.analysis.SelectStmt;
import org.apache.doris.analysis.SlotDescriptor;
import org.apache.doris.analysis.SlotId;
import org.apache.doris.analysis.SlotRef;
import org.apache.doris.analysis.TableRef;
import org.apache.doris.analysis.TupleDescriptor;
import org.apache.doris.analysis.TupleId;
import org.apache.doris.analysis.TupleIsNullPredicate;
import org.apache.doris.analysis.UnionStmt;
import org.apache.doris.catalog.AggregateType;
import org.apache.doris.catalog.Column;
import org.apache.doris.catalog.MysqlTable;
import org.apache.doris.catalog.Table;
import org.apache.doris.common.AnalysisException;
import org.apache.doris.common.Pair;
import org.apache.doris.common.Reference;
import org.apache.doris.common.UserException;

import com.google.common.base.Preconditions;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import org.apache.doris.analysis.*;
import org.apache.doris.catalog.AggregateType;
import org.apache.doris.catalog.Column;
import org.apache.doris.catalog.MysqlTable;
import org.apache.doris.catalog.Table;
import org.apache.doris.common.*;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

Expand Down Expand Up @@ -809,13 +840,14 @@ private PartitionColumnFilter createPartitionFilter(SlotDescriptor desc, List<Ex
if (!isNullPredicate.isSlotRefChildren() || isNullPredicate.isNotNull()) {
continue;
}
if (null == partitionColumnFilter) {
partitionColumnFilter = new PartitionColumnFilter();
}
// like EQ

// If we meet a IsNull predicate on partition column, then other predicates are useless
// eg: (xxxx) and (col is null), only the IsNull predicate has an effect on partition pruning.
partitionColumnFilter = new PartitionColumnFilter();
NullLiteral nullLiteral = new NullLiteral();
partitionColumnFilter.setLowerBound(nullLiteral, true);
partitionColumnFilter.setUpperBound(nullLiteral, true);
break;
}
}
LOG.debug("partitionColumnFilter: {}", partitionColumnFilter);
Expand Down