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;