@Override public RelNode createExchange( RelNode input, RelDistribution distribution) { return LogicalExchange.create(input, distribution); } }
@Override public RelNode visit(LogicalExchange exchange) { final RelNode input = exchange.getInput().accept(this); return new LogicalExchange( cluster, copyOf(exchange.getTraitSet()), input, exchange.getDistribution() ); }
@Override public Exchange copy(RelTraitSet traitSet, RelNode newInput, RelDistribution newDistribution) { return new LogicalExchange(getCluster(), traitSet, newInput, newDistribution); }
/** * Creates a LogicalExchange. * * @param input Input relational expression * @param distribution Distribution specification */ public static LogicalExchange create(RelNode input, RelDistribution distribution) { RelOptCluster cluster = input.getCluster(); distribution = RelDistributionTraitDef.INSTANCE.canonize(distribution); RelTraitSet traitSet = input.getTraitSet().replace(Convention.NONE).replace(distribution); return new LogicalExchange(cluster, traitSet, input, distribution); }
/** * Creates a LogicalExchange. * * @param input Input relational expression * @param distribution Distribution specification */ public static LogicalExchange create(RelNode input, RelDistribution distribution) { RelOptCluster cluster = input.getCluster(); distribution = RelDistributionTraitDef.INSTANCE.canonize(distribution); RelTraitSet traitSet = input.getTraitSet().replace(Convention.NONE).replace(distribution); return new LogicalExchange(cluster, traitSet, input, distribution); }
public RelNode convert(RelOptPlanner planner, RelNode rel, RelDistribution toDistribution, boolean allowInfiniteCostConverters) { if (toDistribution == RelDistributions.ANY) { return rel; } // Create a logical sort, then ask the planner to convert its remaining // traits (e.g. convert it to an EnumerableSortRel if rel is enumerable // convention) final Exchange exchange = LogicalExchange.create(rel, toDistribution); RelNode newRel = planner.register(exchange, rel); final RelTraitSet newTraitSet = rel.getTraitSet().replace(toDistribution); if (!newRel.getTraitSet().equals(newTraitSet)) { newRel = planner.changeTraits(newRel, newTraitSet); } return newRel; }
@Override public Exchange copy(RelTraitSet traitSet, RelNode newInput, RelDistribution newDistribution) { return new LogicalExchange(getCluster(), traitSet, newInput, newDistribution); }
public RelNode convert(RelOptPlanner planner, RelNode rel, RelDistribution toDistribution, boolean allowInfiniteCostConverters) { if (toDistribution == RelDistributions.ANY) { return rel; } // Create a logical sort, then ask the planner to convert its remaining // traits (e.g. convert it to an EnumerableSortRel if rel is enumerable // convention) final Exchange exchange = LogicalExchange.create(rel, toDistribution); RelNode newRel = planner.register(exchange, rel); final RelTraitSet newTraitSet = rel.getTraitSet().replace(toDistribution); if (!newRel.getTraitSet().equals(newTraitSet)) { newRel = planner.changeTraits(newRel, newTraitSet); } return newRel; }
@Test public void testDistributionSingleton() { final RelNode rel = convertSql("select * from emp"); final RelDistribution dist = RelDistributions.SINGLETON; final LogicalExchange exchange = LogicalExchange.create(rel, dist); final RelMetadataQuery mq = RelMetadataQuery.instance(); RelDistribution d = mq.getDistribution(exchange); assertThat(d, is(dist)); }
@Test public void testDistributionHash() { final RelNode rel = convertSql("select * from emp"); final RelDistribution dist = RelDistributions.hash(ImmutableList.of(1)); final LogicalExchange exchange = LogicalExchange.create(rel, dist); final RelMetadataQuery mq = RelMetadataQuery.instance(); RelDistribution d = mq.getDistribution(exchange); assertThat(d, is(dist)); }
@Test public void testDistributionHash() { final RelNode rel = convertSql("select * from emp"); final RelDistribution dist = RelDistributions.hash(ImmutableList.of(1)); final LogicalExchange exchange = LogicalExchange.create(rel, dist); final RelMetadataQuery mq = RelMetadataQuery.instance(); RelDistribution d = mq.getDistribution(exchange); assertThat(d, is(dist)); }
@Test public void testDistributionHashEmpty() { final RelNode rel = convertSql("select * from emp"); final RelDistribution dist = RelDistributions.hash(ImmutableList.<Integer>of()); final LogicalExchange exchange = LogicalExchange.create(rel, dist); final RelMetadataQuery mq = RelMetadataQuery.instance(); RelDistribution d = mq.getDistribution(exchange); assertThat(d, is(dist)); }
@Test public void testDistributionHashEmpty() { final RelNode rel = convertSql("select * from emp"); final RelDistribution dist = RelDistributions.hash(ImmutableList.<Integer>of()); final LogicalExchange exchange = LogicalExchange.create(rel, dist); final RelMetadataQuery mq = RelMetadataQuery.instance(); RelDistribution d = mq.getDistribution(exchange); assertThat(d, is(dist)); }
@Test public void testDistributionSingleton() { final RelNode rel = convertSql("select * from emp"); final RelDistribution dist = RelDistributions.SINGLETON; final LogicalExchange exchange = LogicalExchange.create(rel, dist); final RelMetadataQuery mq = RelMetadataQuery.instance(); RelDistribution d = mq.getDistribution(exchange); assertThat(d, is(dist)); }
case EXCHANGE: final MutableExchange exchange = (MutableExchange) node; return LogicalExchange.create( fromMutable(exchange.getInput(), relBuilder), exchange.distribution); case COLLECT: {
case EXCHANGE: final MutableExchange exchange = (MutableExchange) node; return LogicalExchange.create( fromMutable(exchange.getInput(), relBuilder), exchange.distribution); case COLLECT: {