return CompleteType.OBJECT; } else if (holderClass.equals(UnionHolder.class)) { return new CompleteType(new Union(UnionMode.Sparse, new int[0])); } else if (holderClass.equals(NullableFixedSizeBinaryHolder.class)) { return CompleteType.FIXEDSIZEBINARY;
@Override public Void visit(ArrowType.Union type) { try { generator.writeStartObject(); if (!skipName) { generator.writeFieldName("name"); generator.writeString(field.getName()); } generator.writeFieldName("type"); generator.writeStartObject(); generator.writeFieldName("name"); type.accept(typeDescriber); List<Field> children = field.getChildren(); if (children != null) { generator.writeFieldName("subSchema"); generator.writeStartArray(); for (Field field : children) { APIFieldDescriber.FieldDescriber describer = new APIFieldDescriber.FieldDescriber(generator, field, true); field.getType().accept(describer); } generator.writeEndArray(); } generator.writeEndObject(); generator.writeEndObject(); } catch (IOException e) { e.printStackTrace(); } return null; } }
@Override public TypeLayout visit(Union type) { List<BufferLayout> vectors; switch (type.getMode()) { case Dense: vectors = asList( // TODO: validate this BufferLayout.validityVector(), BufferLayout.typeBuffer(), BufferLayout.offsetBuffer() // offset to find the vector ); break; case Sparse: vectors = asList( BufferLayout.typeBuffer() // type of the value at the index or 0 if null ); break; default: throw new UnsupportedOperationException("Unsupported Union Mode: " + type.getMode()); } return new TypeLayout(vectors); }
typeIds[i] = unionType.typeIds(i); return new ArrowType.Union(UnionMode.fromFlatbufID(mode), typeIds);
final Union unionType = new Union(UnionMode.Sparse, typeIds); return new Field(name, true, unionType, builder.build());
@Override public Field getField() { List<org.apache.arrow.vector.types.pojo.Field> childFields = new ArrayList<>(); List<FieldVector> children = internalStruct.getChildren(); int[] typeIds = new int[children.size()]; for (ValueVector v : children) { typeIds[childFields.size()] = v.getMinorType().ordinal(); childFields.add(v.getField()); } return new Field(name, FieldType.nullable(new ArrowType.Union(Sparse, typeIds)), childFields); }
public static CompleteType union(Iterable<Field> fields){ ImmutableList<Field> listOfFields = ImmutableList.copyOf(fields); int[] typeIds = new int[listOfFields.size()]; for (int i =0; i < typeIds.length; i++) { typeIds[i] = MajorTypeHelper.getArrowMinorType(CompleteType.fromField(listOfFields.get(i)).toMinorType()).ordinal(); } return new CompleteType(new ArrowType.Union(UnionMode.Sparse, typeIds), listOfFields); }