.getStructFieldRef("float1").getFieldObjectInspector();
DoubleObjectInspector dbl = (DoubleObjectInspector) readerInspector
.getStructFieldRef("double1").getFieldObjectInspector();
BinaryObjectInspector bi = (BinaryObjectInspector) readerInspector
.getStructFieldRef("bytes1").getFieldObjectInspector();
StringObjectInspector st = (StringObjectInspector) readerInspector
.getStructFieldRef("string1").getFieldObjectInspector();
StructObjectInspector mid = (StructObjectInspector) readerInspector
.getStructFieldRef("middle").getFieldObjectInspector();
List<? extends StructField> midFields = mid.getAllStructFieldRefs();
ListObjectInspector midli = (ListObjectInspector) midFields.get(0)
.getFieldObjectInspector();
StructObjectInspector inner = (StructObjectInspector) midli
.getListElementObjectInspector();
List<? extends StructField> inFields = inner.getAllStructFieldRefs();
ListObjectInspector li = (ListObjectInspector) readerInspector
.getStructFieldRef("list").getFieldObjectInspector();
MapObjectInspector ma = (MapObjectInspector) readerInspector
.getStructFieldRef("map").getFieldObjectInspector();
TimestampObjectInspector tso = (TimestampObjectInspector) readerInspector
.getStructFieldRef("ts").getFieldObjectInspector();
HiveDecimalObjectInspector dco = (HiveDecimalObjectInspector) readerInspector
.getStructFieldRef("decimal1").getFieldObjectInspector();
StringObjectInspector mk = (StringObjectInspector) ma
.getMapKeyObjectInspector();
RecordReader rows = reader.rows();
Object row = rows.next(null);
assertNotNull(row);
// check the contents of the first row
assertEquals(false,
bo.get(readerInspector.getStructFieldData(row, fields.get(0))));
assertEquals(1,
by.get(readerInspector.getStructFieldData(row, fields.get(1))));
assertEquals(1024,
sh.get(readerInspector.getStructFieldData(row, fields.get(2))));
assertEquals(65536,
in.get(readerInspector.getStructFieldData(row, fields.get(3))));
assertEquals(Long.MAX_VALUE,
lo.get(readerInspector.getStructFieldData(row, fields.get(4))));
assertEquals(1.0,
fl.get(readerInspector.getStructFieldData(row, fields.get(5))), 0.00001);
assertEquals(-15.0,
dbl.get(readerInspector.getStructFieldData(row, fields.get(6))),
0.00001);
assertEquals(bytes(0, 1, 2, 3, 4),
bi.getPrimitiveWritableObject(readerInspector.getStructFieldData(row,
fields.get(7))));
assertEquals("hi", st.getPrimitiveJavaObject(readerInspector
.getStructFieldData(row, fields.get(8))));
List<?> midRow = midli.getList(mid.getStructFieldData(
readerInspector.getStructFieldData(row, fields.get(9)),
midFields.get(0)));
assertNotNull(midRow);
assertEquals(2, midRow.size());
assertEquals(1,
in.get(inner.getStructFieldData(midRow.get(0), inFields.get(0))));
assertEquals("bye", st.getPrimitiveJavaObject(inner.getStructFieldData(
midRow.get(0), inFields.get(1))));
assertEquals(2,
in.get(inner.getStructFieldData(midRow.get(1), inFields.get(0))));
assertEquals("sigh", st.getPrimitiveJavaObject(inner.getStructFieldData(
midRow.get(1), inFields.get(1))));
List<?> list = li.getList(readerInspector.getStructFieldData(row,
fields.get(10)));
assertEquals(2, list.size());
assertEquals(3,
in.get(inner.getStructFieldData(list.get(0), inFields.get(0))));
assertEquals("good", st.getPrimitiveJavaObject(inner.getStructFieldData(
list.get(0), inFields.get(1))));
assertEquals(4,
in.get(inner.getStructFieldData(list.get(1), inFields.get(0))));
assertEquals("bad", st.getPrimitiveJavaObject(inner.getStructFieldData(
list.get(1), inFields.get(1))));
Map<?, ?> map = ma.getMap(readerInspector.getStructFieldData(row,
fields.get(11)));
assertEquals(0, map.size());
assertEquals(Timestamp.valueOf("2000-03-12 15:00:00"),
tso.getPrimitiveJavaObject(readerInspector.getStructFieldData(row,
fields.get(12))));
assertEquals(HiveDecimal.create("12345678.6547456"),
dco.getPrimitiveJavaObject(readerInspector.getStructFieldData(row,
fields.get(13))));
// check the contents of second row
assertEquals(true, rows.hasNext());
rows.seekToRow(7499);
row = rows.next(null);
assertEquals(true,
bo.get(readerInspector.getStructFieldData(row, fields.get(0))));
assertEquals(100,
by.get(readerInspector.getStructFieldData(row, fields.get(1))));
assertEquals(2048,
sh.get(readerInspector.getStructFieldData(row, fields.get(2))));
assertEquals(65536,
in.get(readerInspector.getStructFieldData(row, fields.get(3))));
assertEquals(Long.MAX_VALUE,
lo.get(readerInspector.getStructFieldData(row, fields.get(4))));
assertEquals(2.0,
fl.get(readerInspector.getStructFieldData(row, fields.get(5))), 0.00001);
assertEquals(-5.0,
dbl.get(readerInspector.getStructFieldData(row, fields.get(6))),
0.00001);
assertEquals(bytes(), bi.getPrimitiveWritableObject(readerInspector
.getStructFieldData(row, fields.get(7))));
assertEquals("bye", st.getPrimitiveJavaObject(readerInspector
.getStructFieldData(row, fields.get(8))));
midRow = midli.getList(mid.getStructFieldData(
readerInspector.getStructFieldData(row, fields.get(9)),
midFields.get(0)));
assertNotNull(midRow);
assertEquals(2, midRow.size());
assertEquals(1,
in.get(inner.getStructFieldData(midRow.get(0), inFields.get(0))));
assertEquals("bye", st.getPrimitiveJavaObject(inner.getStructFieldData(
midRow.get(0), inFields.get(1))));
assertEquals(2,
in.get(inner.getStructFieldData(midRow.get(1), inFields.get(0))));
assertEquals("sigh", st.getPrimitiveJavaObject(inner.getStructFieldData(
midRow.get(1), inFields.get(1))));
list = li.getList(readerInspector.getStructFieldData(row, fields.get(10)));
assertEquals(3, list.size());
assertEquals(100000000,
in.get(inner.getStructFieldData(list.get(0), inFields.get(0))));
assertEquals("cat", st.getPrimitiveJavaObject(inner.getStructFieldData(
list.get(0), inFields.get(1))));
assertEquals(-100000,
in.get(inner.getStructFieldData(list.get(1), inFields.get(0))));
assertEquals("in", st.getPrimitiveJavaObject(inner.getStructFieldData(
list.get(1), inFields.get(1))));
assertEquals(1234,
in.get(inner.getStructFieldData(list.get(2), inFields.get(0))));
assertEquals("hat", st.getPrimitiveJavaObject(inner.getStructFieldData(
list.get(2), inFields.get(1))));
map = ma.getMap(readerInspector.getStructFieldData(row, fields.get(11)));
assertEquals(2, map.size());
boolean[] found = new boolean[2];
for(Object key : map.keySet()) {
String str = mk.getPrimitiveJavaObject(key);
if (str.equals("chani")) {
assertEquals(false, found[0]);
assertEquals(5,
in.get(inner.getStructFieldData(map.get(key), inFields.get(0))));
assertEquals(str, st.getPrimitiveJavaObject(inner.getStructFieldData(