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

zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new d71327eb8dc Optimize code style of TranslatableXXX class (#20454)
d71327eb8dc is described below

commit d71327eb8dccbdf4f37abd29168fed667c564437
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Tue Aug 23 17:21:19 2022 +0800

    Optimize code style of TranslatableXXX class (#20454)
    
    * Optimize code style of TranslatableXXX class
    
    * rename class
---
 .../advanced/AdvancedFederationExecutor.java       |  1 -
 .../translatable/FederationTranslatableTable.java  | 29 ++++----
 .../translatable/TranslatableFilterRule.java       | 33 ++-------
 .../TranslatableProjectFilterRule.java             | 40 +++--------
 .../translatable/TranslatableProjectRule.java      | 26 ++-----
 .../translatable/TranslatableTableScan.java        | 84 +++++++---------------
 6 files changed, 59 insertions(+), 154 deletions(-)

diff --git 
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-executor/src/main/java/org/apache/shardingsphere/infra/federation/executor/advanced/AdvancedFederationExecutor.java
 
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-executor/src/main/java/org/apache/shardingsphere/infra/federation/executor/advanced/AdvancedFederationExecutor.java
index 12140cb047e..70572c4aae0 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-executor/src/main/java/org/apache/shardingsphere/infra/federation/executor/advanced/AdvancedFederationExecutor.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-executor/src/main/java/org/apache/shardingsphere/infra/federation/executor/advanced/AdvancedFederationExecutor.java
@@ -127,7 +127,6 @@ public final class AdvancedFederationExecutor implements 
FederationExecutor {
     
     @SuppressWarnings("unchecked")
     private Enumerable<Object[]> execute(final SQLStatement sqlStatement, 
final TranslatableSchema translatableSchema, final Map<String, Object> 
parameters) {
-        // TODO remove OptimizerPlannerContextFactory call and use setup 
executor to handle this logic
         CalciteConnectionConfig connectionConfig = new 
CalciteConnectionConfigImpl(OptimizerPlannerContextFactory.createConnectionProperties());
         RelDataTypeFactory relDataTypeFactory = new JavaTypeFactoryImpl();
         CalciteCatalogReader catalogReader = 
OptimizerPlannerContextFactory.createCatalogReader(schemaName, 
translatableSchema, relDataTypeFactory, connectionConfig);
diff --git 
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/metadata/translatable/FederationTranslatableTable.java
 
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/metadata/translatable/FederationTranslatableTable.java
index ad1e419c014..841141dc787 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/metadata/translatable/FederationTranslatableTable.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/metadata/translatable/FederationTranslatableTable.java
@@ -25,6 +25,7 @@ import org.apache.calcite.linq4j.QueryProvider;
 import org.apache.calcite.linq4j.Queryable;
 import org.apache.calcite.linq4j.tree.Expression;
 import org.apache.calcite.plan.RelOptTable;
+import org.apache.calcite.plan.RelOptTable.ToRelContext;
 import org.apache.calcite.rel.RelNode;
 import org.apache.calcite.rel.type.RelDataType;
 import org.apache.calcite.rel.type.RelDataTypeFactory;
@@ -35,8 +36,8 @@ import org.apache.calcite.schema.Schemas;
 import org.apache.calcite.schema.Statistic;
 import org.apache.calcite.schema.TranslatableTable;
 import org.apache.calcite.schema.impl.AbstractTable;
-import 
org.apache.shardingsphere.infra.federation.optimizer.executor.TranslatableScanNodeExecutorContext;
 import 
org.apache.shardingsphere.infra.federation.optimizer.executor.TableScanExecutor;
+import 
org.apache.shardingsphere.infra.federation.optimizer.executor.TranslatableScanNodeExecutorContext;
 import 
org.apache.shardingsphere.infra.federation.optimizer.metadata.statistic.FederationStatistic;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.ShardingSphereColumn;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.ShardingSphereTable;
@@ -44,7 +45,7 @@ import 
org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.
 import java.lang.reflect.Type;
 
 /**
- * Federation Translatable table.
+ * Federation translatable table.
  */
 @RequiredArgsConstructor
 public final class FederationTranslatableTable extends AbstractTable 
implements QueryableTable, TranslatableTable {
@@ -84,8 +85,7 @@ public final class FederationTranslatableTable extends 
AbstractTable implements
     }
     
     @Override
-    public Expression getExpression(final SchemaPlus schema, final String 
tableName,
-                                    final Class clazz) {
+    public Expression getExpression(final SchemaPlus schema, final String 
tableName, final Class clazz) {
         return Schemas.tableExpression(schema, getElementType(), tableName, 
clazz);
     }
     
@@ -95,18 +95,13 @@ public final class FederationTranslatableTable extends 
AbstractTable implements
     }
     
     @Override
-    public <T> Queryable<T> asQueryable(final QueryProvider queryProvider,
-                                        final SchemaPlus schema, final String 
tableName) {
+    public <T> Queryable<T> asQueryable(final QueryProvider queryProvider, 
final SchemaPlus schema, final String tableName) {
         throw new UnsupportedOperationException();
     }
     
     @Override
-    public RelNode toRel(
-                         final RelOptTable.ToRelContext context,
-                         final RelOptTable relOptTable) {
-        // Request all fields.
-        final int fieldCount = relOptTable.getRowType().getFieldCount();
-        final int[] fields = identityList(fieldCount);
+    public RelNode toRel(final ToRelContext context, final RelOptTable 
relOptTable) {
+        int[] fields = 
getFieldIndexes(relOptTable.getRowType().getFieldCount());
         return new TranslatableTableScan(context.getCluster(), relOptTable, 
this, fields);
     }
     
@@ -120,12 +115,12 @@ public final class FederationTranslatableTable extends 
AbstractTable implements
         return statistic;
     }
     
-    private int[] identityList(final int n) {
-        int[] integers = new int[n];
-        for (int i = 0; i < n; i++) {
-            integers[i] = i;
+    private int[] getFieldIndexes(final int fieldCount) {
+        int[] result = new int[fieldCount];
+        for (int index = 0; index < fieldCount; index++) {
+            result[index] = index;
         }
-        return integers;
+        return result;
     }
     
     private RelDataType createRelDataType(final ShardingSphereTable table, 
final RelDataTypeFactory typeFactory) {
diff --git 
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/metadata/translatable/TranslatableFilterRule.java
 
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/metadata/translatable/TranslatableFilterRule.java
index f8a21f90c04..0f9a3ce86ff 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/metadata/translatable/TranslatableFilterRule.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/metadata/translatable/TranslatableFilterRule.java
@@ -21,46 +21,25 @@ import org.apache.calcite.plan.RelOptRule;
 import org.apache.calcite.plan.RelOptRuleCall;
 import org.apache.calcite.rel.core.RelFactories;
 import org.apache.calcite.rel.logical.LogicalFilter;
-import org.apache.calcite.rex.RexNode;
 import org.apache.calcite.tools.RelBuilderFactory;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Collections;
 
 /**
  * Planner rule for pushing filters into table scan.
  */
 public class TranslatableFilterRule extends RelOptRule {
     
-    public static final TranslatableFilterRule INSTANCE =
-            new TranslatableFilterRule(RelFactories.LOGICAL_BUILDER);
+    public static final TranslatableFilterRule INSTANCE = new 
TranslatableFilterRule(RelFactories.LOGICAL_BUILDER);
     
-    /**
-     * Creates a TranslatableFilterRule.
-     *
-     * @param relBuilderFactory Builder for relational expressions
-     */
     public TranslatableFilterRule(final RelBuilderFactory relBuilderFactory) {
-        super(
-                operand(LogicalFilter.class,
-                        operand(TranslatableTableScan.class, none())),
-                relBuilderFactory,
-                "TranslatableFilterRule");
+        super(operand(LogicalFilter.class, 
operand(TranslatableTableScan.class, none())), relBuilderFactory, 
"TranslatableFilterRule");
     }
     
     @Override
     public void onMatch(final RelOptRuleCall call) {
-        final LogicalFilter filter = call.rel(0);
-        final TranslatableTableScan scan = call.rel(1);
-        RexNode filterNode = filter.getCondition();
-        List filters = new ArrayList();
-        filters.add(filterNode);
-        call.transformTo(
-                new TranslatableTableScan(
-                        scan.getCluster(),
-                        scan.getTable(),
-                        scan.getTranslatableTable(),
-                        filters,
-                        scan.getFields()));
+        LogicalFilter filter = call.rel(0);
+        TranslatableTableScan scan = call.rel(1);
+        call.transformTo(new TranslatableTableScan(scan.getCluster(), 
scan.getTable(), scan.getTranslatableTable(), 
Collections.singletonList(filter.getCondition()), scan.getFields()));
     }
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/metadata/translatable/TranslatableProjectFilterRule.java
 
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/metadata/translatable/TranslatableProjectFilterRule.java
index 5ee40302e98..70ddb6e9081 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/metadata/translatable/TranslatableProjectFilterRule.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/metadata/translatable/TranslatableProjectFilterRule.java
@@ -26,7 +26,7 @@ import org.apache.calcite.rex.RexInputRef;
 import org.apache.calcite.rex.RexNode;
 import org.apache.calcite.tools.RelBuilderFactory;
 
-import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -34,21 +34,10 @@ import java.util.List;
  */
 public class TranslatableProjectFilterRule extends RelOptRule {
     
-    public static final TranslatableProjectFilterRule INSTANCE =
-            new TranslatableProjectFilterRule(RelFactories.LOGICAL_BUILDER);
+    public static final TranslatableProjectFilterRule INSTANCE = new 
TranslatableProjectFilterRule(RelFactories.LOGICAL_BUILDER);
     
-    /**
-     * Creates a TranslatableProjectFilterRule.
-     *
-     * @param relBuilderFactory Builder for relational expressions
-     */
     public TranslatableProjectFilterRule(final RelBuilderFactory 
relBuilderFactory) {
-        super(
-                operand(LogicalProject.class,
-                        operand(LogicalFilter.class,
-                                operand(TranslatableTableScan.class, none()))),
-                relBuilderFactory,
-                "TranslatableProjectFilterRule");
+        super(operand(LogicalProject.class, operand(LogicalFilter.class, 
operand(TranslatableTableScan.class, none()))), relBuilderFactory, 
"TranslatableProjectFilterRule");
     }
     
     @Override
@@ -56,28 +45,19 @@ public class TranslatableProjectFilterRule extends 
RelOptRule {
         LogicalProject project = call.rel(0);
         LogicalFilter filter = call.rel(1);
         TranslatableTableScan scan = call.rel(2);
-        RexNode filterNode = filter.getCondition();
-        List filters = new ArrayList();
-        filters.add(filterNode);
         int[] fields = getProjectFields(project.getProjects());
-        if (fields == null) {
+        if (null == fields) {
             return;
         }
-        call.transformTo(
-                new TranslatableTableScan(
-                        scan.getCluster(),
-                        scan.getTable(),
-                        scan.getTranslatableTable(),
-                        filters,
-                        fields));
+        call.transformTo(new TranslatableTableScan(scan.getCluster(), 
scan.getTable(), scan.getTranslatableTable(), 
Collections.singletonList(filter.getCondition()), fields));
     }
     
-    private int[] getProjectFields(final List<RexNode> exps) {
-        final int[] result = new int[exps.size()];
-        for (int i = 0; i < exps.size(); i++) {
-            final RexNode exp = exps.get(i);
+    private int[] getProjectFields(final List<RexNode> rexNodes) {
+        int[] result = new int[rexNodes.size()];
+        for (int index = 0; index < rexNodes.size(); index++) {
+            RexNode exp = rexNodes.get(index);
             if (exp instanceof RexInputRef) {
-                result[i] = ((RexInputRef) exp).getIndex();
+                result[index] = ((RexInputRef) exp).getIndex();
             } else {
                 return null;
             }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/metadata/translatable/TranslatableProjectRule.java
 
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/metadata/translatable/TranslatableProjectRule.java
index a35028fe838..4d968d79c61 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/metadata/translatable/TranslatableProjectRule.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/metadata/translatable/TranslatableProjectRule.java
@@ -34,14 +34,8 @@ public class TranslatableProjectRule extends RelOptRule {
     
     public static final TranslatableProjectRule INSTANCE = new 
TranslatableProjectRule(RelFactories.LOGICAL_BUILDER);
     
-    /**
-     * Creates a TranslatableProjectRule.
-     *
-     * @param relBuilderFactory Builder for relational expressions
-     */
     public TranslatableProjectRule(final RelBuilderFactory relBuilderFactory) {
-        super(operand(LogicalProject.class, 
operand(TranslatableTableScan.class, none())),
-                relBuilderFactory, "TranslatableProjectRule");
+        super(operand(LogicalProject.class, 
operand(TranslatableTableScan.class, none())), relBuilderFactory, 
"TranslatableProjectRule");
     }
     
     @Override
@@ -52,21 +46,15 @@ public class TranslatableProjectRule extends RelOptRule {
         if (fields == null) {
             return;
         }
-        call.transformTo(
-                new TranslatableTableScan(
-                        scan.getCluster(),
-                        scan.getTable(),
-                        scan.getTranslatableTable(),
-                        scan.getFilters(),
-                        fields));
+        call.transformTo(new TranslatableTableScan(scan.getCluster(), 
scan.getTable(), scan.getTranslatableTable(), scan.getFilters(), fields));
     }
     
-    private int[] getProjectFields(final List<RexNode> exps) {
-        final int[] result = new int[exps.size()];
-        for (int i = 0; i < exps.size(); i++) {
-            final RexNode exp = exps.get(i);
+    private int[] getProjectFields(final List<RexNode> rexNodes) {
+        final int[] result = new int[rexNodes.size()];
+        for (int index = 0; index < rexNodes.size(); index++) {
+            RexNode exp = rexNodes.get(index);
             if (exp instanceof RexInputRef) {
-                result[i] = ((RexInputRef) exp).getIndex();
+                result[index] = ((RexInputRef) exp).getIndex();
             } else {
                 return null;
             }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/metadata/translatable/TranslatableTableScan.java
 
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/metadata/translatable/TranslatableTableScan.java
index b46f77e9832..8f964fd42b2 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/metadata/translatable/TranslatableTableScan.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/metadata/translatable/TranslatableTableScan.java
@@ -50,8 +50,7 @@ import java.util.Arrays;
 import java.util.List;
 
 /**
- * Relational expression representing a scan.
- * Like any table scan, it serves as a leaf node of a query tree.
+ * Translatable table scan.
  */
 @Getter
 public class TranslatableTableScan extends TableScan implements EnumerableRel {
@@ -62,65 +61,50 @@ public class TranslatableTableScan extends TableScan 
implements EnumerableRel {
     
     private final List<RexNode> filters;
     
-    public TranslatableTableScan(final RelOptCluster cluster, final 
RelOptTable table,
-                                 final FederationTranslatableTable 
translatableTable, final int[] fields) {
+    public TranslatableTableScan(final RelOptCluster cluster, final 
RelOptTable table, final FederationTranslatableTable translatableTable, final 
int[] fields) {
         super(cluster, cluster.traitSetOf(EnumerableConvention.INSTANCE), 
ImmutableList.of(), table);
         this.translatableTable = translatableTable;
         this.fields = fields;
         this.filters = null;
-        assert translatableTable != null;
     }
     
-    public TranslatableTableScan(final RelOptCluster cluster, final 
RelOptTable table,
-                                 final FederationTranslatableTable 
translatableTable, final List<RexNode> filters, final int[] fields) {
+    public TranslatableTableScan(final RelOptCluster cluster, final 
RelOptTable table, final FederationTranslatableTable translatableTable,
+                                 final List<RexNode> filters, final int[] 
fields) {
         super(cluster, cluster.traitSetOf(EnumerableConvention.INSTANCE), 
ImmutableList.of(), table);
         this.translatableTable = translatableTable;
         this.fields = fields;
         this.filters = filters;
-        assert translatableTable != null;
     }
     
     @Override
     public RelNode copy(final RelTraitSet traitSet, final List<RelNode> 
inputs) {
-        assert inputs.isEmpty();
         return new TranslatableTableScan(getCluster(), table, 
translatableTable, fields);
     }
     
     @Override
     public String toString() {
         if (null != filters) {
-            final String[] filterValues = new String[fields.length];
+            String[] filterValues = new String[fields.length];
             addFilter(filters, filterValues);
-            return "TranslatableTableScan{"
-                    + "translatableTable=" + translatableTable
-                    + ", fields=" + Arrays.toString(fields)
-                    + ", filters=" + Arrays.toString(filterValues)
-                    + '}';
+            return "TranslatableTableScan{translatableTable=" + 
translatableTable + ", fields=" + Arrays.toString(fields) + ", filters=" + 
Arrays.toString(filterValues) + '}';
         }
-        return "TranslatableTableScan{"
-                + "translatableTable=" + translatableTable
-                + ", fields=" + Arrays.toString(fields)
-                + '}';
+        return "TranslatableTableScan{translatableTable=" + translatableTable 
+ ", fields=" + Arrays.toString(fields) + '}';
     }
     
     @Override
-    public RelWriter explainTerms(final RelWriter pw) {
+    public RelWriter explainTerms(final RelWriter relWriter) {
         if (null != filters) {
-            final String[] filterValues = new String[fields.length];
+            String[] filterValues = new String[fields.length];
             addFilter(filters, filterValues);
-            return super.explainTerms(pw)
-                    .item("fields", Primitive.asList(fields))
-                    .item("filters", Primitive.asList(filterValues));
+            return super.explainTerms(relWriter).item("fields", 
Primitive.asList(fields)).item("filters", Primitive.asList(filterValues));
         }
-        return super.explainTerms(pw)
-                .item("fields", Primitive.asList(fields));
+        return super.explainTerms(relWriter).item("fields", 
Primitive.asList(fields));
     }
     
     @Override
     public RelDataType deriveRowType() {
-        final List<RelDataTypeField> fieldList = 
table.getRowType().getFieldList();
-        final RelDataTypeFactory.Builder builder =
-                getCluster().getTypeFactory().builder();
+        List<RelDataTypeField> fieldList = table.getRowType().getFieldList();
+        RelDataTypeFactory.Builder builder = 
getCluster().getTypeFactory().builder();
         for (int field : fields) {
             builder.add(fieldList.get(field));
         }
@@ -135,11 +119,8 @@ public class TranslatableTableScan extends TableScan 
implements EnumerableRel {
     }
     
     @Override
-    public RelOptCost computeSelfCost(final RelOptPlanner planner,
-                                      final RelMetadataQuery mq) {
-        return super.computeSelfCost(planner, mq)
-                .multiplyBy(((double) fields.length + 2D)
-                        / ((double) table.getRowType().getFieldCount() + 2D));
+    public RelOptCost computeSelfCost(final RelOptPlanner planner, final 
RelMetadataQuery mq) {
+        return super.computeSelfCost(planner, mq).multiplyBy(((double) 
fields.length + 2D) / ((double) table.getRowType().getFieldCount() + 2D));
     }
     
     /**
@@ -150,49 +131,32 @@ public class TranslatableTableScan extends TableScan 
implements EnumerableRel {
      * @return generated code
      */
     public Result implement(final EnumerableRelImplementor implementor, final 
Prefer pref) {
-        PhysType physType =
-                PhysTypeImpl.of(
-                        implementor.getTypeFactory(),
-                        getRowType(),
-                        pref.preferArray());
-        
+        PhysType physType = PhysTypeImpl.of(implementor.getTypeFactory(), 
getRowType(), pref.preferArray());
         if (null != filters) {
-            final String[] filterValues = new String[fields.length];
+            String[] filterValues = new String[fields.length];
             addFilter(filters, filterValues);
-            return implementor.result(
-                    physType,
-                    Blocks.toBlock(
-                            
Expressions.call(table.getExpression(FederationTranslatableTable.class),
-                                    "projectAndFilter", 
implementor.getRootExpression(),
-                                    Expressions.constant(filterValues), 
Expressions.constant(fields))));
+            return implementor.result(physType, 
Blocks.toBlock(Expressions.call(table.getExpression(FederationTranslatableTable.class),
+                    "projectAndFilter", implementor.getRootExpression(), 
Expressions.constant(filterValues), Expressions.constant(fields))));
         }
-        return implementor.result(
-                physType,
-                Blocks.toBlock(
-                        
Expressions.call(table.getExpression(FederationTranslatableTable.class),
-                                "project", implementor.getRootExpression(),
-                                Expressions.constant(fields))));
+        return implementor.result(physType, 
Blocks.toBlock(Expressions.call(table.getExpression(FederationTranslatableTable.class),
+                "project", implementor.getRootExpression(), 
Expressions.constant(fields))));
     }
     
     private boolean addFilter(final List<RexNode> filters, final String[] 
filterValues) {
         for (RexNode filter : filters) {
             if (filter.isA(SqlKind.AND)) {
-                // We cannot refine(remove) the operands of AND,
-                // it will cause o.a.c.i.TableScanNode.createFilterable 
filters check failed.
                 ((RexCall) filter).getOperands().forEach(subFilter -> 
addFilter(InvokerHelper.asList(subFilter), filterValues));
-                continue;
             } else if (filter.isA(SqlKind.EQUALS)) {
-                final RexCall call = (RexCall) filter;
-                String tmp = call.toString();
+                RexCall call = (RexCall) filter;
                 RexNode left = call.getOperands().get(0);
                 if (left.isA(SqlKind.CAST)) {
                     left = ((RexCall) left).operands.get(0);
                 }
-                final RexNode right = call.getOperands().get(1);
+                RexNode right = call.getOperands().get(1);
                 if (!(left instanceof RexInputRef && right instanceof 
RexLiteral)) {
                     continue;
                 }
-                final int index = ((RexInputRef) left).getIndex();
+                int index = ((RexInputRef) left).getIndex();
                 if (filterValues[index] == null) {
                     filterValues[index] = ((RexLiteral) 
right).getValue2().toString();
                     return true;

Reply via email to