// set schemas
load1.setScriptSchema(org.apache.pig.newplan.logical.Util.translateSchema((inputSchema1)));
load2.setScriptSchema(org.apache.pig.newplan.logical.Util.translateSchema((inputSchema2)));
load2.setScriptSchema(org.apache.pig.newplan.logical.Util.translateSchema((inputSchema2)));
LOCogroup cogroup1 = new LOCogroup(plan);
// Create expression inner plan #1 of input #1
LogicalExpressionPlan innerPlan11 = new LogicalExpressionPlan();
ProjectExpression project111 = new ProjectExpression(innerPlan11, 0, 0, cogroup1);
ConstantExpression const111 = new ConstantExpression(innerPlan11, 26F);
SubtractExpression subtract111 = new SubtractExpression(innerPlan11, project111, const111);
// Create expression inner plan #2 of input #1
LogicalExpressionPlan innerPlan21 = new LogicalExpressionPlan();
ProjectExpression project211 = new ProjectExpression(innerPlan21, 0, 0, cogroup1);
ProjectExpression project212 = new ProjectExpression(innerPlan21, 0, 1, cogroup1);
AddExpression add211 = new AddExpression(innerPlan21, project211, project212);
// Create expression inner plan #1 of input #2
LogicalExpressionPlan innerPlan12 = new LogicalExpressionPlan();
ProjectExpression project121 = new ProjectExpression(innerPlan12, 1, 0, cogroup1);
ConstantExpression const121 = new ConstantExpression(innerPlan12, 26);
SubtractExpression subtract121 = new SubtractExpression(innerPlan12, project121, const121);
// Create expression inner plan #2 of input #2
LogicalExpressionPlan innerPlan22 = new LogicalExpressionPlan();
ConstantExpression const122 = new ConstantExpression(innerPlan22, 26);
// innerPlan22.add(const122);
// Create Cogroup
ArrayList<LogicalRelationalOperator> inputs = new ArrayList<LogicalRelationalOperator>();
inputs.add(load1);
inputs.add(load2);
MultiMap<Integer, LogicalExpressionPlan> maps
= new MultiMap<Integer, LogicalExpressionPlan>();
maps.put(0, innerPlan11);
maps.put(0, innerPlan21);
maps.put(1, innerPlan12);
maps.put(1, innerPlan22);
boolean[] isInner = new boolean[inputs.size()];
for (int i=0; i < isInner.length; i++) {
isInner[i] = false;
}
cogroup1.setInnerFlags(isInner);
cogroup1.setExpressionPlans(maps);
// construct the main plan
plan.add(load1);
plan.add(load2);
plan.add(cogroup1);
plan.connect(load1, cogroup1);
plan.connect(load2, cogroup1);
CompilationMessageCollector collector = new CompilationMessageCollector();
TypeCheckingRelVisitor typeChecker = new TypeCheckingRelVisitor(plan, collector);
typeChecker.visit();
printMessageCollector(collector);
//printTypeGraph(plan);
if (collector.hasError()) {
throw new AssertionError("Expect no error");
}
// check outer schema
LogicalSchema endResultSchema = cogroup1.getSchema();
// Tuple group column
assertEquals(DataType.TUPLE, endResultSchema.getField(0).type);
assertEquals(DataType.DOUBLE,endResultSchema.getField(0).schema.getField(0).type);
assertEquals(DataType.LONG, endResultSchema.getField(0).schema.getField(1).type);