Refine search
public void onMatch(RelOptRuleCall call) { call.transformTo(call.rel(1)); }
public void onMatch(RelOptRuleCall call) { call.transformTo(call.rel(1)); }
@Override public void onMatch(RelOptRuleCall call) { final HiveAggregate aggregate = call.rel(0); final HiveProject project = call.rel(1); RelNode x = apply(aggregate, project); if (x != null) { call.transformTo(x); } }
@Override public void onMatch(final RelOptRuleCall call) { final RelType otherRel = call.rel(0); final DruidRel druidRel = call.rel(1); final PartialDruidQuery newPartialDruidQuery = f.apply(druidRel.getPartialDruidQuery(), otherRel); final DruidRel newDruidRel = druidRel.withPartialQuery(newPartialDruidQuery); if (newDruidRel.isValidDruidQuery()) { call.transformTo(newDruidRel); } } }
@Override public void onMatch(RelOptRuleCall call) { final HiveSortLimit sortLimit = call.rel(0); // We remove the limit operator call.transformTo(sortLimit.getInput()); }
@Override public void onMatch(RelOptRuleCall call) { final HiveSortLimit sortLimit = call.rel(0); // We remove the limit operator call.transformTo(sortLimit.getInput()); }
@Override public void onMatch(final RelOptRuleCall call) { final Union unionRel = call.rel(0); final DruidRel someDruidRel = call.rel(1); final List<RelNode> inputs = unionRel.getInputs(); if (unionRel.all) { // Can only do UNION ALL. call.transformTo(DruidUnionRel.create( someDruidRel.getQueryMaker(), unionRel.getRowType(), inputs, -1 )); } } }
@Override public void onMatch(final RelOptRuleCall call) { final LogicalTableScan scan = call.rel(0); final RelOptTable table = scan.getTable(); final DruidTable druidTable = table.unwrap(DruidTable.class); if (druidTable != null) { call.transformTo( DruidQueryRel.fullScan(scan, table, druidTable, queryMaker) ); } } }
@Override public void onMatch(RelOptRuleCall call) { final Project sortProject = call.rel(0); final Sort sort = call.rel(1); final Aggregate aggregate = call.rel(2); final DruidRel druidRel = call.rel(3); final DruidOuterQueryRel outerQueryRel = DruidOuterQueryRel.create( druidRel, PartialDruidQuery.create(druidRel.getPartialDruidQuery().leafRel()) .withAggregate(aggregate) .withSort(sort) .withSortProject(sortProject) ); if (outerQueryRel.isValidDruidQuery()) { call.transformTo(outerQueryRel); } } };
@Override public void onMatch(final RelOptRuleCall call) { final Aggregate aggregate = call.rel(0); final Project project = call.rel(1); final Filter filter = call.rel(2); final DruidRel druidRel = call.rel(3); final DruidOuterQueryRel outerQueryRel = DruidOuterQueryRel.create( druidRel, PartialDruidQuery.create(druidRel.getPartialDruidQuery().leafRel()) .withWhereFilter(filter) .withSelectProject(project) .withAggregate(aggregate) ); if (outerQueryRel.isValidDruidQuery()) { call.transformTo(outerQueryRel); } } };
@Override public void onMatch(final RelOptRuleCall call) { final Aggregate aggregate = call.rel(0); final Filter filter = call.rel(1); final DruidRel druidRel = call.rel(2); final DruidOuterQueryRel outerQueryRel = DruidOuterQueryRel.create( druidRel, PartialDruidQuery.create(druidRel.getPartialDruidQuery().leafRel()) .withWhereFilter(filter) .withAggregate(aggregate) ); if (outerQueryRel.isValidDruidQuery()) { call.transformTo(outerQueryRel); } } };
@Override public void onMatch(final RelOptRuleCall call) { final Aggregate aggregate = call.rel(0); final Project project = call.rel(1); final DruidRel druidRel = call.rel(2); final DruidOuterQueryRel outerQueryRel = DruidOuterQueryRel.create( druidRel, PartialDruidQuery.create(druidRel.getPartialDruidQuery().leafRel()) .withSelectProject(project) .withAggregate(aggregate) ); if (outerQueryRel.isValidDruidQuery()) { call.transformTo(outerQueryRel); } } };
@Override public void onMatch(final RelOptRuleCall call) { final Aggregate aggregate = call.rel(0); final DruidRel druidRel = call.rel(1); final DruidOuterQueryRel outerQueryRel = DruidOuterQueryRel.create( druidRel, PartialDruidQuery.create(druidRel.getPartialDruidQuery().leafRel()) .withAggregate(aggregate) ); if (outerQueryRel.isValidDruidQuery()) { call.transformTo(outerQueryRel); } } };
public void onMatch(RelOptRuleCall call) { final HiveFilter filter = call.rel(0); final HiveSortLimit sort = call.rel(1); final RelNode newFilter = filter.copy(sort.getInput().getTraitSet(), ImmutableList.<RelNode>of(sort.getInput())); final HiveSortLimit newSort = sort.copy(sort.getTraitSet(), newFilter, sort.collation, sort.offset, sort.fetch); call.transformTo(newSort); }
@Override public void onMatch(RelOptRuleCall call) { final RelSubset rel = call.rel(0); call.transformTo(Util.first(rel.getBest(), rel.getOriginal())); } }
@Override public void onMatch(RelOptRuleCall call) { LOG.debug("JDBCUnionPushDown has been called"); final HiveUnion union = call.rel(0); final HiveJdbcConverter converter1 = call.rel(1); final HiveJdbcConverter converter2 = call.rel(2); List<RelNode> unionInput = Arrays.asList(converter1.getInput(), converter2.getInput()); JdbcUnion jdbcUnion = new JdbcUnion( union.getCluster(), union.getTraitSet().replace(converter1.getJdbcConvention()), unionInput, union.all); call.transformTo(converter1.copy(converter1.getTraitSet(), jdbcUnion)); }
@Override public void onMatch(RelOptRuleCall call) { final Join topJoin= call.rel(0); final Join join = call.rel(2); final Aggregate aggregate = call.rel(6); // in presence of grouping sets we can't remove sq_count_check if(aggregate.indicator) { return; } if(isAggregateWithoutGbyKeys(aggregate) || isAggWithConstantGbyKeys(aggregate, call)) { // join(left, join.getRight) RelNode newJoin = HiveJoin.getJoin(topJoin.getCluster(), join.getLeft(), topJoin.getRight(), topJoin.getCondition(), topJoin.getJoinType()); call.transformTo(newJoin); } } }
@Override public void onMatch(RelOptRuleCall call) { LOG.debug("JDBCSortPushDownRule has been called"); final HiveSortLimit sort = call.rel(0); final HiveJdbcConverter converter = call.rel(1); final RelNode input = call.rel(2); Sort newHiveSort = sort.copy(sort.getTraitSet(), input, sort.getCollation(), sort.getOffsetExpr(), sort.getFetchExpr()); JdbcSort newJdbcSort = (JdbcSort) new JdbcSortRule(converter.getJdbcConvention()).convert(newHiveSort, false); if (newJdbcSort != null) { RelNode converterRes = converter.copy(converter.getTraitSet(), Arrays.asList(newJdbcSort)); call.transformTo(converterRes); } }
@Override public void onMatch(RelOptRuleCall call) { final LogicalProject project = call.rel(0); final FlowFileTableScan scan = call.rel(1); final int[] fields = getProjectFields(project.getProjects()); if (fields == null) { // Project contains expressions more complex than just field references. return; } call.transformTo( new FlowFileTableScan( scan.getCluster(), scan.getTable(), scan.flowFileTable, fields)); }
@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); } }