public RelNode convert(RelNode rel) { final CalcRel calc = (CalcRel) rel; // If there's a multiset, let FarragoMultisetSplitter work on it // first. final RexProgram program = calc.getProgram(); if (RexMultisetUtil.containsMultiset(program) || program.containsAggs()) { return null; } return new EnumerableCalcRel( rel.getCluster(), rel.getTraitSet().replace(EnumerableConvention.INSTANCE), convert( calc.getChild(), calc.getChild().getTraitSet() .replace(EnumerableConvention.INSTANCE)), program, ProjectRelBase.Flags.Boxed); } }
/** * Constructs a CalcRelSplitter. * * @param calc CalcRel to split * @param relTypes Array of rel types, e.g. {Java, Fennel}. Must be * distinct. */ CalcRelSplitter(CalcRel calc, RelType [] relTypes) { for (int i = 0; i < relTypes.length; i++) { assert relTypes[i] != null; for (int j = 0; j < i; j++) { assert relTypes[i] != relTypes[j] : "Rel types must be distinct"; } } this.program = calc.getProgram(); this.cluster = calc.getCluster(); this.traits = calc.getTraitSet(); this.typeFactory = calc.getCluster().getTypeFactory(); this.child = calc.getChild(); this.relTypes = relTypes; }
public RelNode convert(RelNode rel) { final CalcRel calc = (CalcRel) rel; // If there's a multiset, let FarragoMultisetSplitter work on it // first. final RexProgram program = calc.getProgram(); if (B && RexMultisetUtil.containsMultiset(program) || program.containsAggs()) { return null; } return new EnumerableCalcRel( rel.getCluster(), rel.getTraitSet().replace(EnumerableConvention.INSTANCE), convert( calc.getChild(), calc.getChild().getTraitSet() .replace(EnumerableConvention.INSTANCE)), calc.getRowType(), program, calc.getCollationList()); } }
@Override public RelNode convert( RelNode rel ) { // stolen from JavaRules.EnumerableAggregateRule final CalcRel calc = (CalcRel) rel; final RelNode convertedChild = convert( calc.getChild(), calc.getTraitSet().replace( Cascading.CONVENTION ) ); if( convertedChild == null ) return null; // We can't convert the child, so we can't convert rel. // If there's a multiset, let FarragoMultisetSplitter work on it // first. if( RexMultisetUtil.containsMultiset( calc.getProgram() ) ) return null; return new CascadingCalcRel( rel.getCluster(), rel.getTraitSet(), convertedChild, rel.getRowType(), calc.getProgram(), Collections.<RelCollation>emptyList() ); } }
public RelNode convert(RelNode rel) { final CalcRel calc = (CalcRel) rel; // If there's a multiset, let FarragoMultisetSplitter work on it // first. if (RexMultisetUtil.containsMultiset(calc.getProgram())) { return null; } return new JdbcCalcRel(rel.getCluster(), rel.getTraitSet().replace(out), convert(calc.getChild(), calc.getTraitSet().replace(out)), calc.getProgram(), ProjectRelBase.Flags.BOXED); } }
public RelNode convert(RelNode rel) { final CalcRel calc = (CalcRel) rel; // If there's a multiset, let FarragoMultisetSplitter work on it // first. if (RexMultisetUtil.containsMultiset(calc.getProgram())) { return null; } return new JdbcCalcRel(rel.getCluster(), rel.getTraitSet().replace(out), convert(calc.getChild(), calc.getTraitSet().replace(out)), calc.getProgram(), ProjectRelBase.Flags.Boxed); } }
public void rewriteRel(CalcRel rel) { final RelNode newChild = getNewForOldRel(rel.getChild());
public void rewriteRel(CalcRel rel) final RelNode newChild = getNewForOldRel(rel.getChild());
calc.getCluster(), calc.getTraitSet(), calc.getChild(), filter.getRowType(), mergedProgram,
bottomCalc.getCluster(), bottomCalc.getTraitSet(), bottomCalc.getChild(), topCalc.getRowType(), mergedProgram,
calc.getCluster(), calc.getTraitSet(), calc.getChild(), filter.getRowType(), mergedProgram,
cluster, project.getTraitSet(), calc.getChild(), project.getRowType(), mergedProgram,
calc.getCluster(), calc.getTraitSet(), calc.getChild(), project.getRowType(), mergedProgram,