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

Reply via email to