This is an automated email from the ASF dual-hosted git repository. huajianlan pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new d2d5c19d51 [Improvement](Nereids) Avoid unsafe cast. (#12603) d2d5c19d51 is described below commit d2d5c19d513106fdf9526f485c5bb2adc290e2cd Author: Shuo Wang <wangshuo...@gmail.com> AuthorDate: Thu Sep 15 12:02:35 2022 +0800 [Improvement](Nereids) Avoid unsafe cast. (#12603) This PR changed some interfaces to avoid unsafe cast. - Modify `Plan.getExpressions()`'s return type from `List<Expression>` to `List<? extends Expression>` Return projects (type is a list of named expression) in `getExpressions` can avoid unsafe cast. See `LogicalProject.getExpression()` as an example. - Modify `EmptyRelation.getProjects()`'s return type from `List<NamedExpression>` to `List<? extends NamedExpression>` Creating empty relation with a list of slots can avoid unsafe cast. See the `EliminateLimit` rule for example. --- .../main/java/org/apache/doris/nereids/analyzer/Relation.java | 5 +++++ .../apache/doris/nereids/analyzer/UnboundOneRowRelation.java | 2 +- .../org/apache/doris/nereids/analyzer/UnboundRelation.java | 2 +- .../org/apache/doris/nereids/rules/analysis/BindFunction.java | 2 +- .../doris/nereids/rules/rewrite/logical/EliminateFilter.java | 4 +--- .../doris/nereids/rules/rewrite/logical/EliminateLimit.java | 4 +--- .../java/org/apache/doris/nereids/trees/plans/GroupPlan.java | 2 +- .../main/java/org/apache/doris/nereids/trees/plans/Plan.java | 2 +- .../doris/nereids/trees/plans/algebra/EmptyRelation.java | 5 +++-- .../org/apache/doris/nereids/trees/plans/algebra/Scan.java | 11 ----------- .../apache/doris/nereids/trees/plans/commands/Command.java | 2 +- .../doris/nereids/trees/plans/logical/LogicalAggregate.java | 2 +- .../doris/nereids/trees/plans/logical/LogicalApply.java | 2 +- .../nereids/trees/plans/logical/LogicalAssertNumRows.java | 2 +- .../nereids/trees/plans/logical/LogicalEmptyRelation.java | 10 +++++----- .../doris/nereids/trees/plans/logical/LogicalFilter.java | 2 +- .../doris/nereids/trees/plans/logical/LogicalHaving.java | 2 +- .../apache/doris/nereids/trees/plans/logical/LogicalJoin.java | 2 +- .../doris/nereids/trees/plans/logical/LogicalLimit.java | 2 +- .../nereids/trees/plans/logical/LogicalOneRowRelation.java | 4 ++-- .../doris/nereids/trees/plans/logical/LogicalProject.java | 6 +++--- .../doris/nereids/trees/plans/logical/LogicalRelation.java | 2 +- .../doris/nereids/trees/plans/logical/LogicalSelectHint.java | 2 +- .../apache/doris/nereids/trees/plans/logical/LogicalSort.java | 2 +- .../nereids/trees/plans/logical/LogicalSubQueryAlias.java | 5 ++--- .../apache/doris/nereids/trees/plans/logical/LogicalTopN.java | 2 +- .../nereids/trees/plans/physical/AbstractPhysicalJoin.java | 2 +- .../nereids/trees/plans/physical/AbstractPhysicalSort.java | 2 +- .../doris/nereids/trees/plans/physical/PhysicalAggregate.java | 2 +- .../nereids/trees/plans/physical/PhysicalAssertNumRows.java | 2 +- .../nereids/trees/plans/physical/PhysicalDistribute.java | 2 +- .../nereids/trees/plans/physical/PhysicalEmptyRelation.java | 10 +++++----- .../doris/nereids/trees/plans/physical/PhysicalFilter.java | 2 +- .../doris/nereids/trees/plans/physical/PhysicalLimit.java | 10 +++------- .../nereids/trees/plans/physical/PhysicalOneRowRelation.java | 4 ++-- .../doris/nereids/trees/plans/physical/PhysicalProject.java | 4 ++-- .../doris/nereids/trees/plans/physical/PhysicalRelation.java | 2 +- .../doris/nereids/trees/plans/physical/PhysicalTopN.java | 9 --------- .../doris/nereids/datasets/tpch/AnalyzeCheckTestBase.java | 2 +- 39 files changed, 59 insertions(+), 82 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/Relation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/Relation.java index 48b30ec450..349179ba6c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/Relation.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/Relation.java @@ -17,8 +17,13 @@ package org.apache.doris.nereids.analyzer; +import org.apache.doris.nereids.trees.expressions.Slot; + +import java.util.List; + /** * Relation base interface */ public interface Relation { + List<Slot> getOutput(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundOneRowRelation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundOneRowRelation.java index 6ba9b72674..e8149474b7 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundOneRowRelation.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundOneRowRelation.java @@ -68,7 +68,7 @@ public class UnboundOneRowRelation extends LogicalLeaf implements Unbound, OneRo } @Override - public List<Expression> getExpressions() { + public List<? extends Expression> getExpressions() { throw new UnsupportedOperationException(this.getClass().getSimpleName() + " don't support getExpression()"); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundRelation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundRelation.java index 4fce8df6e4..a1eda47a00 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundRelation.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundRelation.java @@ -114,7 +114,7 @@ public class UnboundRelation extends LogicalLeaf implements Relation, Unbound { } @Override - public List<Expression> getExpressions() { + public List<? extends Expression> getExpressions() { throw new UnsupportedOperationException(this.getClass().getSimpleName() + " don't support getExpression()"); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindFunction.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindFunction.java index db2135fcc3..40782b2e28 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindFunction.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindFunction.java @@ -100,7 +100,7 @@ public class BindFunction implements AnalysisRuleFactory { ); } - private <E extends Expression> List<E> bind(List<E> exprList, Env env) { + private <E extends Expression> List<E> bind(List<? extends E> exprList, Env env) { return exprList.stream() .map(expr -> FunctionBinder.INSTANCE.bind(expr, env)) .collect(Collectors.toList()); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/EliminateFilter.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/EliminateFilter.java index a333634db2..d8b1b24794 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/EliminateFilter.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/EliminateFilter.java @@ -23,8 +23,6 @@ import org.apache.doris.nereids.rules.rewrite.OneRewriteRuleFactory; import org.apache.doris.nereids.trees.expressions.literal.BooleanLiteral; import org.apache.doris.nereids.trees.plans.logical.LogicalEmptyRelation; -import java.util.List; - /** * Eliminate filter false. */ @@ -33,7 +31,7 @@ public class EliminateFilter extends OneRewriteRuleFactory { public Rule build() { return logicalFilter() .when(filter -> filter.getPredicates() == BooleanLiteral.FALSE) - .then(filter -> new LogicalEmptyRelation((List) filter.getOutput())) + .then(filter -> new LogicalEmptyRelation(filter.getOutput())) .toRule(RuleType.ELIMINATE_FILTER); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/EliminateLimit.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/EliminateLimit.java index 7c7b325a45..cb3e55832e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/EliminateLimit.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/EliminateLimit.java @@ -22,8 +22,6 @@ import org.apache.doris.nereids.rules.RuleType; import org.apache.doris.nereids.rules.rewrite.OneRewriteRuleFactory; import org.apache.doris.nereids.trees.plans.logical.LogicalEmptyRelation; -import java.util.List; - /** * Eliminate limit = 0. */ @@ -32,7 +30,7 @@ public class EliminateLimit extends OneRewriteRuleFactory { public Rule build() { return logicalLimit() .when(limit -> limit.getLimit() == 0) - .then(limit -> new LogicalEmptyRelation((List) limit.getOutput())) + .then(limit -> new LogicalEmptyRelation(limit.getOutput())) .toRule(RuleType.ELIMINATE_LIMIT); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/GroupPlan.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/GroupPlan.java index c38c1f09f5..481b292e03 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/GroupPlan.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/GroupPlan.java @@ -53,7 +53,7 @@ public class GroupPlan extends LogicalLeaf { } @Override - public List<Expression> getExpressions() { + public List<? extends Expression> getExpressions() { return ImmutableList.of(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/Plan.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/Plan.java index 79c50c264b..c61f9f0b1d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/Plan.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/Plan.java @@ -43,7 +43,7 @@ public interface Plan extends TreeNode<Plan> { <R, C> R accept(PlanVisitor<R, C> visitor, C context); - List<Expression> getExpressions(); + List<? extends Expression> getExpressions(); LogicalProperties getLogicalProperties(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/algebra/EmptyRelation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/algebra/EmptyRelation.java index ed6a6907ad..f6ad9a015e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/algebra/EmptyRelation.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/algebra/EmptyRelation.java @@ -17,6 +17,7 @@ package org.apache.doris.nereids.trees.plans.algebra; +import org.apache.doris.nereids.analyzer.Relation; import org.apache.doris.nereids.trees.expressions.NamedExpression; import java.util.List; @@ -27,6 +28,6 @@ import java.util.List; * e.g. * select * from tbl limit 0 */ -public interface EmptyRelation { - List<NamedExpression> getProjects(); +public interface EmptyRelation extends Relation { + List<? extends NamedExpression> getProjects(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/algebra/Scan.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/algebra/Scan.java index 37e0b75bd7..c6a0b454b3 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/algebra/Scan.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/algebra/Scan.java @@ -19,21 +19,10 @@ package org.apache.doris.nereids.trees.plans.algebra; import org.apache.doris.catalog.Table; import org.apache.doris.nereids.analyzer.Relation; -import org.apache.doris.nereids.trees.expressions.Expression; -import org.apache.doris.nereids.trees.expressions.Slot; - -import java.util.Collections; -import java.util.List; /** * Common interface for logical/physical scan. */ public interface Scan extends Relation { - List<Expression> getExpressions(); - Table getTable(); - - default List<Slot> getOutput() { - return Collections.emptyList(); - } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/Command.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/Command.java index b2fc279b6e..1326169f45 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/Command.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/Command.java @@ -64,7 +64,7 @@ public interface Command extends LogicalPlan { } @Override - default List<Expression> getExpressions() { + default List<? extends Expression> getExpressions() { throw new RuntimeException("Command do not implement getExpressions"); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalAggregate.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalAggregate.java index 7b13ace319..cbe9e402ef 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalAggregate.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalAggregate.java @@ -134,7 +134,7 @@ public class LogicalAggregate<CHILD_TYPE extends Plan> extends LogicalUnary<CHIL } @Override - public List<Expression> getExpressions() { + public List<? extends Expression> getExpressions() { return new ImmutableList.Builder<Expression>() .addAll(groupByExpressions) .addAll(outputExpressions) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalApply.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalApply.java index a0ea3504d2..db7afb481d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalApply.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalApply.java @@ -140,7 +140,7 @@ public class LogicalApply<LEFT_CHILD_TYPE extends Plan, RIGHT_CHILD_TYPE extends } @Override - public List<Expression> getExpressions() { + public List<? extends Expression> getExpressions() { if (correlationFilter.isPresent()) { return new ImmutableList.Builder<Expression>() .addAll(correlationSlot) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalAssertNumRows.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalAssertNumRows.java index ebeaad9748..8babd612bf 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalAssertNumRows.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalAssertNumRows.java @@ -87,7 +87,7 @@ public class LogicalAssertNumRows<CHILD_TYPE extends Plan> extends LogicalUnary< } @Override - public List<Expression> getExpressions() { + public List<? extends Expression> getExpressions() { return ImmutableList.of(assertNumRowsElement); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalEmptyRelation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalEmptyRelation.java index 0db6d661b3..b8b185f7fb 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalEmptyRelation.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalEmptyRelation.java @@ -40,13 +40,13 @@ import java.util.Optional; * select * from tbl limit 0 */ public class LogicalEmptyRelation extends LogicalLeaf implements EmptyRelation { - private final List<NamedExpression> projects; + private final List<? extends NamedExpression> projects; - public LogicalEmptyRelation(List<NamedExpression> projects) { + public LogicalEmptyRelation(List<? extends NamedExpression> projects) { this(projects, Optional.empty(), Optional.empty()); } - public LogicalEmptyRelation(List<NamedExpression> projects, Optional<GroupExpression> groupExpression, + public LogicalEmptyRelation(List<? extends NamedExpression> projects, Optional<GroupExpression> groupExpression, Optional<LogicalProperties> logicalProperties) { super(PlanType.LOGICAL_ONE_ROW_RELATION, groupExpression, logicalProperties); this.projects = ImmutableList.copyOf(Objects.requireNonNull(projects, "projects can not be null")); @@ -58,12 +58,12 @@ public class LogicalEmptyRelation extends LogicalLeaf implements EmptyRelation { } @Override - public List<NamedExpression> getProjects() { + public List<? extends NamedExpression> getProjects() { return projects; } @Override - public List<Expression> getExpressions() { + public List<? extends Expression> getExpressions() { return ImmutableList.of(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalFilter.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalFilter.java index 641730d5ba..6225c985fd 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalFilter.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalFilter.java @@ -89,7 +89,7 @@ public class LogicalFilter<CHILD_TYPE extends Plan> extends LogicalUnary<CHILD_T } @Override - public List<Expression> getExpressions() { + public List<? extends Expression> getExpressions() { return ImmutableList.of(predicates); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalHaving.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalHaving.java index 11cc4f389b..2b63e09031 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalHaving.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalHaving.java @@ -69,7 +69,7 @@ public class LogicalHaving<CHILD_TYPE extends Plan> extends LogicalUnary<CHILD_T } @Override - public List<Expression> getExpressions() { + public List<? extends Expression> getExpressions() { return ImmutableList.of(predicates); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalJoin.java index 6449ccadb0..29855b4073 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalJoin.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalJoin.java @@ -211,7 +211,7 @@ public class LogicalJoin<LEFT_CHILD_TYPE extends Plan, RIGHT_CHILD_TYPE extends } @Override - public List<Expression> getExpressions() { + public List<? extends Expression> getExpressions() { Builder<Expression> builder = new Builder<Expression>() .addAll(hashJoinConjuncts); otherJoinCondition.ifPresent(builder::add); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalLimit.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalLimit.java index b1460ab43b..94ea4616e4 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalLimit.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalLimit.java @@ -101,7 +101,7 @@ public class LogicalLimit<CHILD_TYPE extends Plan> extends LogicalUnary<CHILD_TY return visitor.visitLogicalLimit(this, context); } - public List<Expression> getExpressions() { + public List<? extends Expression> getExpressions() { return ImmutableList.of(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalOneRowRelation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalOneRowRelation.java index 3486fe7200..fe99d21f6f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalOneRowRelation.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalOneRowRelation.java @@ -65,8 +65,8 @@ public class LogicalOneRowRelation extends LogicalLeaf implements OneRowRelation } @Override - public List<Expression> getExpressions() { - return (List) projects; + public List<? extends Expression> getExpressions() { + return projects; } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalProject.java index afaa60723a..debc456bc0 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalProject.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalProject.java @@ -83,12 +83,12 @@ public class LogicalProject<CHILD_TYPE extends Plan> extends LogicalUnary<CHILD_ @Override public <R, C> R accept(PlanVisitor<R, C> visitor, C context) { - return visitor.visitLogicalProject((LogicalProject<Plan>) this, context); + return visitor.visitLogicalProject(this, context); } @Override - public List<Expression> getExpressions() { - return new ImmutableList.Builder<Expression>().addAll(projects).build(); + public List<? extends Expression> getExpressions() { + return projects; } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalRelation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalRelation.java index 53e7ec43a2..10a94bbc9e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalRelation.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalRelation.java @@ -110,7 +110,7 @@ public abstract class LogicalRelation extends LogicalLeaf implements Scan { } @Override - public List<Expression> getExpressions() { + public List<? extends Expression> getExpressions() { return ImmutableList.of(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSelectHint.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSelectHint.java index 401907811a..aeda4ac403 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSelectHint.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSelectHint.java @@ -82,7 +82,7 @@ public class LogicalSelectHint<CHILD_TYPE extends Plan> extends LogicalUnary<CHI } @Override - public List<Expression> getExpressions() { + public List<? extends Expression> getExpressions() { return ImmutableList.of(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSort.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSort.java index 4147adc238..d55cb58e79 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSort.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSort.java @@ -97,7 +97,7 @@ public class LogicalSort<CHILD_TYPE extends Plan> extends LogicalUnary<CHILD_TYP } @Override - public List<Expression> getExpressions() { + public List<? extends Expression> getExpressions() { return orderKeys.stream() .map(OrderKey::getExpr) .collect(ImmutableList.toImmutableList()); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSubQueryAlias.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSubQueryAlias.java index 0f357e4ebc..02986ff027 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSubQueryAlias.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSubQueryAlias.java @@ -29,7 +29,6 @@ import org.apache.doris.nereids.util.Utils; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; -import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -100,8 +99,8 @@ public class LogicalSubQueryAlias<CHILD_TYPE extends Plan> extends LogicalUnary< } @Override - public List<Expression> getExpressions() { - return Collections.emptyList(); + public List<? extends Expression> getExpressions() { + return ImmutableList.of(); } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalTopN.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalTopN.java index cc60c1bef7..aab24fc2d0 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalTopN.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalTopN.java @@ -108,7 +108,7 @@ public class LogicalTopN<CHILD_TYPE extends Plan> extends LogicalUnary<CHILD_TYP } @Override - public List<Expression> getExpressions() { + public List<? extends Expression> getExpressions() { return orderKeys.stream() .map(OrderKey::getExpr) .collect(ImmutableList.toImmutableList()); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalJoin.java index 0a9efe9d68..1463a9cc44 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalJoin.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalJoin.java @@ -91,7 +91,7 @@ public abstract class AbstractPhysicalJoin< } @Override - public List<Expression> getExpressions() { + public List<? extends Expression> getExpressions() { Builder<Expression> builder = new Builder<Expression>() .addAll(hashJoinConjuncts); otherJoinCondition.ifPresent(builder::add); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalSort.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalSort.java index 4c610d386e..b2aeece597 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalSort.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalSort.java @@ -81,7 +81,7 @@ public abstract class AbstractPhysicalSort<CHILD_TYPE extends Plan> extends Phys } @Override - public List<Expression> getExpressions() { + public List<? extends Expression> getExpressions() { return orderKeys.stream() .map(OrderKey::getExpr) .collect(ImmutableList.toImmutableList()); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalAggregate.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalAggregate.java index 51b378bab7..f2384920e5 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalAggregate.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalAggregate.java @@ -126,7 +126,7 @@ public class PhysicalAggregate<CHILD_TYPE extends Plan> extends PhysicalUnary<CH } @Override - public List<Expression> getExpressions() { + public List<? extends Expression> getExpressions() { // TODO: partitionExprList maybe null. return new ImmutableList.Builder<Expression>().addAll(groupByExpressions).addAll(outputExpressions) .addAll(partitionExpressions).build(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalAssertNumRows.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalAssertNumRows.java index 2ac46d9f10..e89b8804cd 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalAssertNumRows.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalAssertNumRows.java @@ -89,7 +89,7 @@ public class PhysicalAssertNumRows<CHILD_TYPE extends Plan> extends PhysicalUnar } @Override - public List<Expression> getExpressions() { + public List<? extends Expression> getExpressions() { return ImmutableList.of(assertNumRowsElement); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalDistribute.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalDistribute.java index 2e35c25d31..e0ec37bdb7 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalDistribute.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalDistribute.java @@ -73,7 +73,7 @@ public class PhysicalDistribute<CHILD_TYPE extends Plan> extends PhysicalUnary<C } @Override - public List<Expression> getExpressions() { + public List<? extends Expression> getExpressions() { return ImmutableList.of(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalEmptyRelation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalEmptyRelation.java index 20c4fc687e..5c880ce414 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalEmptyRelation.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalEmptyRelation.java @@ -41,13 +41,13 @@ import java.util.Optional; * select * from tbl limit 0 */ public class PhysicalEmptyRelation extends PhysicalLeaf implements EmptyRelation { - private final List<NamedExpression> projects; + private final List<? extends NamedExpression> projects; - public PhysicalEmptyRelation(List<NamedExpression> projects, LogicalProperties logicalProperties) { + public PhysicalEmptyRelation(List<? extends NamedExpression> projects, LogicalProperties logicalProperties) { this(projects, Optional.empty(), logicalProperties, null); } - public PhysicalEmptyRelation(List<NamedExpression> projects, Optional<GroupExpression> groupExpression, + public PhysicalEmptyRelation(List<? extends NamedExpression> projects, Optional<GroupExpression> groupExpression, LogicalProperties logicalProperties, PhysicalProperties physicalProperties) { super(PlanType.PHYSICAL_EMPTY_RELATION, groupExpression, logicalProperties, physicalProperties); this.projects = ImmutableList.copyOf(Objects.requireNonNull(projects, "projects can not be null")); @@ -59,7 +59,7 @@ public class PhysicalEmptyRelation extends PhysicalLeaf implements EmptyRelation } @Override - public List<Expression> getExpressions() { + public List<? extends Expression> getExpressions() { return ImmutableList.of(); } @@ -110,7 +110,7 @@ public class PhysicalEmptyRelation extends PhysicalLeaf implements EmptyRelation } @Override - public List<NamedExpression> getProjects() { + public List<? extends NamedExpression> getProjects() { return projects; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalFilter.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalFilter.java index 56ec49cdbc..d4160ea75c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalFilter.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalFilter.java @@ -86,7 +86,7 @@ public class PhysicalFilter<CHILD_TYPE extends Plan> extends PhysicalUnary<CHILD } @Override - public List<Expression> getExpressions() { + public List<? extends Expression> getExpressions() { return ImmutableList.of(predicates); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalLimit.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalLimit.java index fb800f6d71..5243fa99ef 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalLimit.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalLimit.java @@ -21,7 +21,6 @@ import org.apache.doris.nereids.memo.GroupExpression; import org.apache.doris.nereids.properties.LogicalProperties; import org.apache.doris.nereids.properties.PhysicalProperties; import org.apache.doris.nereids.trees.expressions.Expression; -import org.apache.doris.nereids.trees.expressions.literal.IntegerLiteral; import org.apache.doris.nereids.trees.plans.Plan; import org.apache.doris.nereids.trees.plans.PlanType; import org.apache.doris.nereids.trees.plans.algebra.Limit; @@ -29,7 +28,7 @@ import org.apache.doris.nereids.trees.plans.visitor.PlanVisitor; import org.apache.doris.nereids.util.Utils; import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; +import com.google.common.collect.ImmutableList; import java.util.List; import java.util.Objects; @@ -93,11 +92,8 @@ public class PhysicalLimit<CHILD_TYPE extends Plan> extends PhysicalUnary<CHILD_ } @Override - public List<Expression> getExpressions() { - return Lists.newArrayList( - new IntegerLiteral((int) limit), - new IntegerLiteral((int) offset) - ); + public List<? extends Expression> getExpressions() { + return ImmutableList.of(); } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalOneRowRelation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalOneRowRelation.java index fc44e8da29..9212032d23 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalOneRowRelation.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalOneRowRelation.java @@ -65,8 +65,8 @@ public class PhysicalOneRowRelation extends PhysicalLeaf implements OneRowRelati } @Override - public List<Expression> getExpressions() { - return (List) projects; + public List<? extends Expression> getExpressions() { + return projects; } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalProject.java index e4287e4710..984a9f754e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalProject.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalProject.java @@ -91,8 +91,8 @@ public class PhysicalProject<CHILD_TYPE extends Plan> extends PhysicalUnary<CHIL } @Override - public List<Expression> getExpressions() { - return (List) projects; + public List<? extends Expression> getExpressions() { + return projects; } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalRelation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalRelation.java index 5fd3fba282..7c2c78bac4 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalRelation.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalRelation.java @@ -89,7 +89,7 @@ public abstract class PhysicalRelation extends PhysicalLeaf implements Scan { } @Override - public List<Expression> getExpressions() { + public List<? extends Expression> getExpressions() { return ImmutableList.of(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalTopN.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalTopN.java index 8caacfc426..d3132ec0de 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalTopN.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalTopN.java @@ -21,7 +21,6 @@ import org.apache.doris.nereids.memo.GroupExpression; import org.apache.doris.nereids.properties.LogicalProperties; import org.apache.doris.nereids.properties.OrderKey; import org.apache.doris.nereids.properties.PhysicalProperties; -import org.apache.doris.nereids.trees.expressions.Expression; import org.apache.doris.nereids.trees.plans.Plan; import org.apache.doris.nereids.trees.plans.PlanType; import org.apache.doris.nereids.trees.plans.algebra.TopN; @@ -29,7 +28,6 @@ import org.apache.doris.nereids.trees.plans.visitor.PlanVisitor; import org.apache.doris.nereids.util.Utils; import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableList; import java.util.List; import java.util.Objects; @@ -105,13 +103,6 @@ public class PhysicalTopN<CHILD_TYPE extends Plan> extends AbstractPhysicalSort< return visitor.visitPhysicalTopN((PhysicalTopN<Plan>) this, context); } - @Override - public List<Expression> getExpressions() { - return orderKeys.stream() - .map(OrderKey::getExpr) - .collect(ImmutableList.toImmutableList()); - } - @Override public PhysicalTopN<Plan> withChildren(List<Plan> children) { Preconditions.checkArgument(children.size() == 1); diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/datasets/tpch/AnalyzeCheckTestBase.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/datasets/tpch/AnalyzeCheckTestBase.java index 7310a8c67e..11ee8ee8cc 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/datasets/tpch/AnalyzeCheckTestBase.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/datasets/tpch/AnalyzeCheckTestBase.java @@ -48,7 +48,7 @@ public abstract class AnalyzeCheckTestBase extends TestWithFeService { } } - List<Expression> expressions = plan.getExpressions(); + List<? extends Expression> expressions = plan.getExpressions(); return expressions.stream().allMatch(this::checkExpressionBound); } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org