static ListTypeInfo toStructListTypeInfo(MapTypeInfo mapTypeInfo) { final StructTypeInfo structTypeInfo = new StructTypeInfo(); structTypeInfo.setAllStructFieldNames(Lists.newArrayList("keys", "values")); structTypeInfo.setAllStructFieldTypeInfos(Lists.newArrayList( mapTypeInfo.getMapKeyTypeInfo(), mapTypeInfo.getMapValueTypeInfo())); final ListTypeInfo structListTypeInfo = new ListTypeInfo(); structListTypeInfo.setListElementTypeInfo(structTypeInfo); return structListTypeInfo; }
@Override public void readBatch(int total, ColumnVector column, TypeInfo columnType) throws IOException { MapColumnVector mapColumnVector = (MapColumnVector) column; MapTypeInfo mapTypeInfo = (MapTypeInfo) columnType; ListTypeInfo keyListTypeInfo = new ListTypeInfo(); keyListTypeInfo.setListElementTypeInfo(mapTypeInfo.getMapKeyTypeInfo()); ListTypeInfo valueListTypeInfo = new ListTypeInfo(); valueListTypeInfo.setListElementTypeInfo(mapTypeInfo.getMapValueTypeInfo()); // initialize 2 ListColumnVector for keys and values ListColumnVector keyListColumnVector = new ListColumnVector(); ListColumnVector valueListColumnVector = new ListColumnVector(); // read the keys and values keyColumnReader.readBatch(total, keyListColumnVector, keyListTypeInfo); valueColumnReader.readBatch(total, valueListColumnVector, valueListTypeInfo); // set the related attributes according to the keys and values mapColumnVector.keys = keyListColumnVector.child; mapColumnVector.values = valueListColumnVector.child; mapColumnVector.isNull = keyListColumnVector.isNull; mapColumnVector.offsets = keyListColumnVector.offsets; mapColumnVector.lengths = keyListColumnVector.lengths; mapColumnVector.childCount = keyListColumnVector.childCount; mapColumnVector.isRepeating = keyListColumnVector.isRepeating && valueListColumnVector.isRepeating; } }
if (isList) { ListTypeInfo listTypeInfo = new ListTypeInfo(); listTypeInfo.setListElementTypeInfo(elementTypeInfo); typeInfo = listTypeInfo; } else {
Lists.newArrayList(keyTypeInfo, valueTypeInfo)); final ListTypeInfo mapListStructTypeInfo = new ListTypeInfo(); mapListStructTypeInfo.setListElementTypeInfo(mapStructTypeInfo);
((ListTypeInfo)ti).setListElementTypeInfo(elementField); break; case DataType.MAP: