continue; TupleFilter whenFilter = whenCall.accept(filterVistor); whenFilter = new FilterOptimizeTransformer().transform(whenFilter);
public void onMatch(RelOptRuleCall call, SqlDialect dialect) { LOGGER.debug("MySplitFilter.onMatch has been called"); final HiveFilter filter = call.rel(0); RexCall callExpression = (RexCall) filter.getCondition(); FilterSupportedFunctionsVisitor visitor = new FilterSupportedFunctionsVisitor(dialect); callExpression.accept(visitor); ArrayList<RexCall> validJdbcNode = visitor.getValidJdbcNode(); ArrayList<RexCall> invalidJdbcNode = visitor.getInvalidJdbcNode(); assert validJdbcNode.size() != 0 && invalidJdbcNode.size() != 0; final RexBuilder rexBuilder = filter.getCluster().getRexBuilder(); RexNode validCondition; if (validJdbcNode.size() == 1) { validCondition = validJdbcNode.get(0); } else { validCondition = rexBuilder.makeCall(SqlStdOperatorTable.AND, validJdbcNode); } HiveFilter newJdbcValidFilter = new HiveFilter(filter.getCluster(), filter.getTraitSet(), filter.getInput(), validCondition); RexNode invalidCondition; if (invalidJdbcNode.size() == 1) { invalidCondition = invalidJdbcNode.get(0); } else { invalidCondition = rexBuilder.makeCall(SqlStdOperatorTable.AND, invalidJdbcNode); } HiveFilter newJdbcInvalidFilter = new HiveFilter(filter.getCluster(), filter.getTraitSet(), newJdbcValidFilter, invalidCondition); call.transformTo(newJdbcInvalidFilter); }
public void go(RexCall call) { call.accept(this); } }
public void go(RexCall call) { call.accept(this); } }
continue; TupleFilter whenFilter = whenCall.accept(filterVistor); whenFilter = new FilterOptimizeTransformer().transform(whenFilter);