@Override public void onMatch(RelOptRuleCall call) { LOG.debug("JDBCFilterPushDown has been called"); final HiveFilter filter = call.rel(0); final HiveJdbcConverter converter = call.rel(1); Filter newHiveFilter = filter.copy(filter.getTraitSet(), converter.getInput(), filter.getCondition()); JdbcFilter newJdbcFilter = (JdbcFilter) new JdbcFilterRule(converter.getJdbcConvention()).convert(newHiveFilter); if (newJdbcFilter != null) { RelNode converterRes = converter.copy(converter.getTraitSet(), Arrays.asList(newJdbcFilter)); call.transformTo(converterRes); } }
public static List<RelOptRule> rules(JdbcConvention out, RelBuilderFactory relBuilderFactory) { return ImmutableList.of( new JdbcToEnumerableConverterRule(out, relBuilderFactory), new JdbcJoinRule(out, relBuilderFactory), new JdbcCalcRule(out, relBuilderFactory), new JdbcProjectRule(out, relBuilderFactory), new JdbcFilterRule(out, relBuilderFactory), new JdbcAggregateRule(out, relBuilderFactory), new JdbcSortRule(out, relBuilderFactory), new JdbcUnionRule(out, relBuilderFactory), new JdbcIntersectRule(out, relBuilderFactory), new JdbcMinusRule(out, relBuilderFactory), new JdbcTableModificationRule(out, relBuilderFactory), new JdbcValuesRule(out, relBuilderFactory)); }
public static List<RelOptRule> rules(JdbcConvention out, RelBuilderFactory relBuilderFactory) { return ImmutableList.of( new JdbcToEnumerableConverterRule(out, relBuilderFactory), new JdbcJoinRule(out, relBuilderFactory), new JdbcCalcRule(out, relBuilderFactory), new JdbcProjectRule(out, relBuilderFactory), new JdbcFilterRule(out, relBuilderFactory), new JdbcAggregateRule(out, relBuilderFactory), new JdbcSortRule(out, relBuilderFactory), new JdbcUnionRule(out, relBuilderFactory), new JdbcIntersectRule(out, relBuilderFactory), new JdbcMinusRule(out, relBuilderFactory), new JdbcTableModificationRule(out, relBuilderFactory), new JdbcValuesRule(out, relBuilderFactory)); }
/** Creates a JdbcFilterRule. */ public JdbcFilterRule(JdbcConvention out, RelBuilderFactory relBuilderFactory) { super(Filter.class, (Predicate<Filter>) r -> !userDefinedFunctionInFilter(r), Convention.NONE, out, relBuilderFactory, "JdbcFilterRule"); }
/** Creates a JdbcFilterRule. */ public JdbcFilterRule(JdbcConvention out, RelBuilderFactory relBuilderFactory) { super(Filter.class, (Predicate<Filter>) r -> !userDefinedFunctionInFilter(r), Convention.NONE, out, relBuilderFactory, "JdbcFilterRule"); }
public RelNode convert(RelNode rel) { final Filter filter = (Filter) rel; return new JdbcFilter( rel.getCluster(), rel.getTraitSet().replace(out), convert(filter.getInput(), filter.getInput().getTraitSet().replace(out)), filter.getCondition()); } }
public RelNode convert(RelNode rel) { final Filter filter = (Filter) rel; return new JdbcFilter( rel.getCluster(), rel.getTraitSet().replace(out), convert(filter.getInput(), filter.getInput().getTraitSet().replace(out)), filter.getCondition()); } }