// schema for input#1
Schema inputSchema1 = null ;
{
List<FieldSchema> fsList1 = new ArrayList<FieldSchema>() ;
fsList1.add(new FieldSchema("field1a", DataType.INTEGER)) ;
fsList1.add(new FieldSchema("field2a", DataType.LONG)) ;
fsList1.add(new FieldSchema(null, DataType.BYTEARRAY)) ;
fsList1.add(new FieldSchema(null, DataType.CHARARRAY)) ;
inputSchema1 = new Schema(fsList1) ;
}
// schema for input#2
Schema inputSchema2 = null ;
{
List<FieldSchema> fsList2 = new ArrayList<FieldSchema>() ;
fsList2.add(new FieldSchema("field1b", DataType.DOUBLE)) ;
fsList2.add(new FieldSchema(null, DataType.INTEGER)) ;
fsList2.add(new FieldSchema("field3b", DataType.FLOAT)) ;
fsList2.add(new FieldSchema("field4b", DataType.CHARARRAY)) ;
inputSchema2 = new Schema(fsList2) ;
}
// set schemas
load1.setEnforcedSchema(inputSchema1) ;
load2.setEnforcedSchema(inputSchema2) ;
// create union operator
ArrayList<LogicalOperator> inputList = new ArrayList<LogicalOperator>() ;
inputList.add(load1) ;
inputList.add(load2) ;
LOUnion union = new LOUnion(plan, genNewOperatorKey()) ;
// wiring
plan.add(load1) ;
plan.add(load2) ;
plan.add(union) ;
plan.connect(load1, union);
plan.connect(load2, union);
// validate
CompilationMessageCollector collector = new CompilationMessageCollector() ;
TypeCheckingValidator typeValidator = new TypeCheckingValidator() ;
typeValidator.validate(plan, collector) ;
printMessageCollector(collector) ;
// check end result schema
Schema outputSchema = union.getSchema() ;
Schema expectedSchema = null ;
{
List<FieldSchema> fsListExpected = new ArrayList<FieldSchema>() ;
fsListExpected.add(new FieldSchema("field1a", DataType.DOUBLE)) ;
fsListExpected.add(new FieldSchema("field2a", DataType.LONG)) ;
fsListExpected.add(new FieldSchema("field3b", DataType.FLOAT)) ;
fsListExpected.add(new FieldSchema("field4b", DataType.CHARARRAY)) ;
expectedSchema = new Schema(fsListExpected) ;
}
assertTrue(Schema.equals(outputSchema, expectedSchema, true, false)) ;