private MapJoinOperator getMapJoinOperator(MapRedTask task,
      MapredWork work,
      SMBMapJoinOperator oldSMBJoinOp,
      int mapJoinPos) throws SemanticException {
    SMBMapJoinOperator newSMBJoinOp = getSMBMapJoinOp(task.getWork());

    // generate the map join operator
    return MapJoinProcessor.convertSMBJoinToMapJoin(
        physicalContext.getConf(), newSMBJoinOp, mapJoinPos, true);
  }
If a join/union is followed by a SMB join, this cannot be converted to a conditional task.
ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/SortMergeJoinTaskDispatcher.java