}
@Override
protected void visit(LOSplitOutput op) throws VisitorException {
op.unsetSchema();
LogicalPlan currentPlan = mCurrentWalker.getPlan() ;
// LOSplitOutput can only have 1 input
List<LogicalOperator> list = currentPlan.getPredecessors(op) ;
if (list.size() != 1) {
int errCode = 2008;
String msg = "LOSplitOutput cannot have more than one input. Found: " + list.size() + " input(s).";
throw new TypeCheckerException(msg, errCode, PigException.BUG) ;
}
LogicalPlan condPlan = op.getConditionPlan() ;
// Check that the inner plan has only 1 output port
if (!condPlan.isSingleLeafPlan()) {
int errCode = 1057;
String msg = "Split's inner plan can only have one output (leaf)" ;
msgCollector.collect(msg, MessageType.Error) ;
throw new TypeCheckerException(msg, errCode, PigException.INPUT) ;
}
checkInnerPlan(op.getAlias(), condPlan) ;
byte innerCondType = condPlan.getLeaves().get(0).getType() ;
if (innerCondType != DataType.BOOLEAN) {
int errCode = 1058;
String msg = "Split's condition must evaluate to boolean. Found: " + DataType.findTypeName(innerCondType) ;
msgCollector.collect(msg, MessageType.Error) ;
throw new TypeCheckerException(msg, errCode, PigException.INPUT) ;