@Override public void onMatch(RelOptRuleCall call) { LOG.debug("JDBCProjectPushDownRule has been called"); final HiveProject project = call.rel(0); final HiveJdbcConverter converter = call.rel(1); Project newHiveProject = project.copy(project.getTraitSet(), converter.getInput(), project.getProjects(), project.getRowType()); JdbcProject newJdbcProject = (JdbcProject) new JdbcProjectRule(converter.getJdbcConvention()).convert(newHiveProject); if (newJdbcProject != null) { RelNode converterRes = converter.copy(converter.getTraitSet(), Arrays.asList(newJdbcProject)); 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)); }
public RelNode convert(RelNode rel) { final Project project = (Project) rel; return new JdbcProject( rel.getCluster(), rel.getTraitSet().replace(out), convert( project.getInput(), project.getInput().getTraitSet().replace(out)), project.getProjects(), project.getRowType()); } }
/** Creates a JdbcProjectRule. */ public JdbcProjectRule(final JdbcConvention out, RelBuilderFactory relBuilderFactory) { super(Project.class, (Predicate<Project>) project -> (out.dialect.supportsWindowFunctions() || !RexOver.containsOver(project.getProjects(), null)) && !userDefinedFunctionInProject(project), Convention.NONE, out, relBuilderFactory, "JdbcProjectRule"); }
public RelNode convert(RelNode rel) { final Project project = (Project) rel; return new JdbcProject( rel.getCluster(), rel.getTraitSet().replace(out), convert( project.getInput(), project.getInput().getTraitSet().replace(out)), project.getProjects(), project.getRowType()); } }
/** Creates a JdbcProjectRule. */ public JdbcProjectRule(final JdbcConvention out, RelBuilderFactory relBuilderFactory) { super(Project.class, (Predicate<Project>) project -> (out.dialect.supportsWindowFunctions() || !RexOver.containsOver(project.getProjects(), null)) && !userDefinedFunctionInProject(project), Convention.NONE, out, relBuilderFactory, "JdbcProjectRule"); }