} else {
traitsRight = right.getTraitSet().plus(Prel.DRILL_PHYSICAL).plus(distBroadcastRight);
}
final RelTraitSet traitsLeft = left.getTraitSet().plus(Prel.DRILL_PHYSICAL);
final RelNode convertedLeft = convert(left, traitsLeft);
final RelNode convertedRight = convert(right, traitsRight);
new SubsetTransformer<DrillJoinRel, InvalidRelException>(call){
public RelNode convertChild(final DrillJoinRel join, final RelNode rel) throws InvalidRelException {
DrillDistributionTrait toDist = rel.getTraitSet().getTrait(DrillDistributionTraitDef.INSTANCE);
RelTraitSet newTraitsLeft;
if (physicalJoinType == PhysicalJoinType.MERGE_JOIN) {
newTraitsLeft = newTraitSet(Prel.DRILL_PHYSICAL, collationLeft, toDist);
} else {
newTraitsLeft = newTraitSet(Prel.DRILL_PHYSICAL, toDist);
}
Character.digit(1, 1);
RelNode newLeft = convert(left, newTraitsLeft);
if (physicalJoinType == PhysicalJoinType.HASH_JOIN) {
return new HashJoinPrel(join.getCluster(), traitsLeft, newLeft, convertedRight, join.getCondition(),
join.getJoinType());
} else if (physicalJoinType == PhysicalJoinType.MERGE_JOIN) {
return new MergeJoinPrel(join.getCluster(), traitsLeft, newLeft, convertedRight, join.getCondition(),