public RelNode createSetOp(SqlKind kind, List<RelNode> inputs, boolean all) { switch (kind) { case UNION: return LogicalUnion.create(inputs, all); case EXCEPT: return LogicalMinus.create(inputs, all); case INTERSECT: return LogicalIntersect.create(inputs, all); default: throw new AssertionError("not a set op: " + kind); } } }
@Override public RelNode visit(LogicalMinus minus) { return new LogicalMinus( cluster, copyOf(minus.getTraitSet()), visitAll(minus.getInputs()), minus.all ); }
@Override public LogicalMinus copy(RelTraitSet traitSet, List<RelNode> inputs, boolean all) { assert traitSet.containsIfApplicable(Convention.NONE); return new LogicalMinus(getCluster(), traitSet, inputs, all); }
RelOptUtil.createCastRel( newInputs.get(0), minus.getRowType(), true)); break; default: builder.push(LogicalMinus.create(newInputs, minus.all)); break;
/** Creates a LogicalMinus. */ public static LogicalMinus create(List<RelNode> inputs, boolean all) { final RelOptCluster cluster = inputs.get(0).getCluster(); final RelTraitSet traitSet = cluster.traitSetOf(Convention.NONE); return new LogicalMinus(cluster, traitSet, inputs, all); }
public RelNode convert(RelNode rel) { final LogicalMinus minus = (LogicalMinus) rel; if (minus.all) { return null; // EXCEPT ALL not implemented } final EnumerableConvention out = EnumerableConvention.INSTANCE; final RelTraitSet traitSet = rel.getTraitSet().replace( EnumerableConvention.INSTANCE); return new EnumerableMinus(rel.getCluster(), traitSet, convertList(minus.getInputs(), out), false); } }
RelOptUtil.createCastRel( newInputs.get(0), minus.getRowType(), true)); break; default: builder.push(LogicalMinus.create(newInputs, minus.all)); break;
/** Creates a LogicalMinus. */ public static LogicalMinus create(List<RelNode> inputs, boolean all) { final RelOptCluster cluster = inputs.get(0).getCluster(); final RelTraitSet traitSet = cluster.traitSetOf(Convention.NONE); return new LogicalMinus(cluster, traitSet, inputs, all); }
public RelNode convert(RelNode rel) { final LogicalMinus minus = (LogicalMinus) rel; if (minus.all) { return null; // EXCEPT ALL not implemented } final EnumerableConvention out = EnumerableConvention.INSTANCE; final RelTraitSet traitSet = rel.getTraitSet().replace( EnumerableConvention.INSTANCE); return new EnumerableMinus(rel.getCluster(), traitSet, convertList(minus.getInputs(), out), false); } }
public RelNode createSetOp(SqlKind kind, List<RelNode> inputs, boolean all) { switch (kind) { case UNION: return LogicalUnion.create(inputs, all); case EXCEPT: return LogicalMinus.create(inputs, all); case INTERSECT: return LogicalIntersect.create(inputs, all); default: throw new AssertionError("not a set op: " + kind); } } }
@Override public LogicalMinus copy(RelTraitSet traitSet, List<RelNode> inputs, boolean all) { assert traitSet.containsIfApplicable(Convention.NONE); return new LogicalMinus(getCluster(), traitSet, inputs, all); }
/** * Converts a set operation (UNION, INTERSECT, MINUS) into relational * expressions. * * @param call Call to set operator * @return Relational expression */ protected RelNode convertSetOp(SqlCall call) { final RelNode left = convertQueryRecursive(call.operand(0), false, null).project(); final RelNode right = convertQueryRecursive(call.operand(1), false, null).project(); switch (call.getKind()) { case UNION: return LogicalUnion.create(ImmutableList.of(left, right), all(call)); case INTERSECT: return LogicalIntersect.create(ImmutableList.of(left, right), all(call)); case EXCEPT: return LogicalMinus.create(ImmutableList.of(left, right), all(call)); default: throw Util.unexpected(call.getKind()); } }
/** * Converts a set operation (UNION, INTERSECT, MINUS) into relational * expressions. * * @param call Call to set operator * @return Relational expression */ protected RelNode convertSetOp(SqlCall call) { final RelNode left = convertQueryRecursive(call.operand(0), false, null).project(); final RelNode right = convertQueryRecursive(call.operand(1), false, null).project(); switch (call.getKind()) { case UNION: return LogicalUnion.create(ImmutableList.of(left, right), all(call)); case INTERSECT: return LogicalIntersect.create(ImmutableList.of(left, right), all(call)); case EXCEPT: return LogicalMinus.create(ImmutableList.of(left, right), all(call)); default: throw Util.unexpected(call.getKind()); } }
/** * Converts a set operation (UNION, INTERSECT, MINUS) into relational * expressions. * * @param call Call to set operator * @return Relational expression */ protected RelNode convertSetOp(SqlCall call) { final RelNode left = convertQueryRecursive(call.operand(0), false, null).project(); final RelNode right = convertQueryRecursive(call.operand(1), false, null).project(); switch (call.getKind()) { case UNION: return LogicalUnion.create(ImmutableList.of(left, right), all(call)); case INTERSECT: return LogicalIntersect.create(ImmutableList.of(left, right), all(call)); case EXCEPT: return LogicalMinus.create(ImmutableList.of(left, right), all(call)); default: throw Util.unexpected(call.getKind()); } }
/** * Converts a set operation (UNION, INTERSECT, MINUS) into relational * expressions. * * @param call Call to set operator * @return Relational expression */ protected RelNode convertSetOp(SqlCall call) { final RelNode left = convertQueryRecursive(call.operand(0), false, null).project(); final RelNode right = convertQueryRecursive(call.operand(1), false, null).project(); switch (call.getKind()) { case UNION: return LogicalUnion.create(ImmutableList.of(left, right), all(call)); case INTERSECT: return LogicalIntersect.create(ImmutableList.of(left, right), all(call)); case EXCEPT: return LogicalMinus.create(ImmutableList.of(left, right), all(call)); default: throw Util.unexpected(call.getKind()); } }