@Override public TypeMapping visit(org.apache.arrow.vector.types.pojo.ArrowType.List type) { if (children.size() != 1) { throw new IllegalArgumentException("list fields must have exactly one child: " + field); } TypeMapping parquetChild = fromArrow(children.get(0), "element"); GroupType list = Types.optionalList().element(parquetChild.getParquetType()).named(fieldName); return new ListTypeMapping(field, new List3Levels(list), parquetChild); }
@Override public Type list(GroupType list, Type element) { GroupType repeated = list.getType(0).asGroupType(); Type originalElement = repeated.getType(0); int elementId = getId(originalElement); if (selectedIds.contains(elementId)) { return list; } else if (element != null) { if (element != originalElement) { // the element type was projected return Types.list(list.getRepetition()) .element(element) .id(getId(list)) .named(list.getName()); } return list; } return null; }
public GroupElementBuilder<P, THIS> groupElement(Type.Repetition repetition) { return new GroupElementBuilder<P, THIS>(self()).repetition(repetition); }
public GroupElementBuilder<P, THIS> optionalGroupElement() { return groupElement(Type.Repetition.OPTIONAL); }
public GroupElementBuilder<P, THIS> requiredGroupElement() { return groupElement(Type.Repetition.REQUIRED); }
public MapElementBuilder<P, THIS> optionalMapElement() { return mapElement(Type.Repetition.OPTIONAL); }
public ElementBuilder<P, THIS> requiredElement(PrimitiveTypeName type) { return element(type, Type.Repetition.REQUIRED); }
public MapElementBuilder<P, THIS> mapElement(Type.Repetition repetition) { return new MapElementBuilder<P, THIS>(self()).repetition(repetition); }
public MapElementBuilder<P, THIS> optionalMapElement() { return mapElement(Type.Repetition.OPTIONAL); }
public GroupElementBuilder<P, THIS> requiredGroupElement() { return groupElement(Type.Repetition.REQUIRED); }
public ElementBuilder<P, THIS> optionalElement(PrimitiveTypeName type) { return element(type, Type.Repetition.OPTIONAL); }
public ListElementBuilder<P, THIS> listElement(Type.Repetition repetition) { return new ListElementBuilder<P, THIS>(self()).repetition(repetition); }
public MapElementBuilder<P, THIS> mapElement(Type.Repetition repetition) { return new MapElementBuilder<P, THIS>(self()).repetition(repetition); }
public GroupElementBuilder<P, THIS> groupElement(Type.Repetition repetition) { return new GroupElementBuilder<P, THIS>(self()).repetition(repetition); }
public ElementBuilder<P, THIS> requiredElement(PrimitiveTypeName type) { return element(type, Type.Repetition.REQUIRED); }
public ListElementBuilder<P, THIS> optionalListElement() { return listElement(Type.Repetition.OPTIONAL); }
public ListElementBuilder<P, THIS> requiredListElement() { return listElement(Type.Repetition.REQUIRED); }
public MapElementBuilder<P, THIS> requiredMapElement() { return mapElement(Type.Repetition.REQUIRED); }
public ListElementBuilder<P, THIS> listElement(Type.Repetition repetition) { return new ListElementBuilder<P, THIS>(self()).repetition(repetition); }
public ListElementBuilder<P, THIS> optionalListElement() { return listElement(Type.Repetition.OPTIONAL); }