@Override public Field visit(ArrowType.List type) { if(field.getName().equals(column.getAsUnescapedPath())){ Field child = field.getChildren().get(0); return new Field(field.getName(), child.isNullable(), child.getType(), child.getChildren()); } return field; }
switch (primitiveTypeInfo.getPrimitiveCategory()) { case BOOLEAN: return Field.nullable(name, MinorType.BIT.getType()); case BYTE: return Field.nullable(name, MinorType.TINYINT.getType()); case SHORT: return Field.nullable(name, MinorType.SMALLINT.getType()); case INT: return Field.nullable(name, MinorType.INT.getType()); case LONG: return Field.nullable(name, MinorType.BIGINT.getType()); case FLOAT: return Field.nullable(name, MinorType.FLOAT4.getType()); case DOUBLE: return Field.nullable(name, MinorType.FLOAT8.getType()); case STRING: case VARCHAR: case CHAR: return Field.nullable(name, MinorType.VARCHAR.getType()); case DATE: return Field.nullable(name, MinorType.DATEDAY.getType()); case TIMESTAMP: return Field.nullable(name, MinorType.TIMESTAMPMILLI.getType()); case TIMESTAMPLOCALTZ: final TimestampLocalTZTypeInfo timestampLocalTZTypeInfo = (TimestampLocalTZTypeInfo) typeInfo; final String timeZone = timestampLocalTZTypeInfo.getTimeZone().toString(); return Field.nullable(name, new ArrowType.Timestamp(TimeUnit.MILLISECOND, timeZone)); case BINARY:
@Override public Field getField() { Field f = super.getField(); FieldType type = new FieldType(true, f.getType(), f.getFieldType().getDictionary(), f.getFieldType().getMetadata()); return new Field(f.getName(), type, f.getChildren()); }
@Override public int hashCode() { return Objects.hash(name, isNullable(), getType(), getDictionary(), getMetadata(), children); }
@Nullable @Override public String apply(@Nullable final Field field) { return field.getName(); } })
private static FieldWithOrdinal getChildField(Field f, String name) { Map<String, FieldWithOrdinal> children = new HashMap<>(); int i = 0; for(Field child : f.getChildren()){ children.put(child.getName().toLowerCase(), new FieldWithOrdinal(child, i)); i++; } return children.get(name.toLowerCase()); }
@Override public Field getField() { return new Field(name, false, ObjectType.INTERNAL_OBJECT_TYPE, null); }
private static Field mergeField(Field field, Cell c){ Preconditions.checkNotNull(field); Preconditions.checkNotNull(c); Field newField = c.toField(field.getName()); if(!newField.getType().equals(field.getType())){ throw new UnsupportedOperationException(String.format("Not supporting mixed types yet. Initial Field was %s but new field was %s", field.getType(), newField.getType())); } // they are the same. return field; }
private void toJSONString(String name, ArrowTypeID typeID, List<Field> children, JsonGenerator jsonGenerator) throws IOException { jsonGenerator.writeStartObject(); jsonGenerator.writeFieldName("name"); jsonGenerator.writeString(name); if (typeID != null) { jsonGenerator.writeFieldName("type"); jsonGenerator.writeString(typeID.name()); } if (children != null && children.size() > 0) { jsonGenerator.writeFieldName("children"); jsonGenerator.writeStartArray(children.size()); for(Field child : children) { toJSONString(child.getName(), child.getType().getTypeID(), child.getChildren(), jsonGenerator); } jsonGenerator.writeEndArray(); } jsonGenerator.writeEndObject(); }
public void initializeChildrenFromFields(List<Field> children) { for (Field field : children) { FieldVector vector = (FieldVector) this.add(field.getName(), field.getFieldType()); vector.initializeChildrenFromFields(field.getChildren()); } }
public ArrowType getVectorType() { return dictionary.getField().getType(); }
public static CompleteType fromField(Field field){ // IGNORE this until the NullableMapVector.getField() returns a nullable type. // Preconditions.checkArgument(field.isNullable(), "Dremio only supports nullable types."); return new CompleteType(field.getType(), field.getChildren()); }
public void materialize(Field field) { if (field.getChildren().size() == 0) { return; } Field innerField = field.getChildren().get(0); ValueVector innerVector = listVector.addOrGetVector(innerField.getFieldType()).getVector(); ComplexTypeHelper.materialize(innerVector, innerField); }
public TransferImpl(String ref, BufferAllocator allocator) { to = new UInt1Vector(ref, field.getFieldType(), allocator); }
public static Field nullablePrimitive(String name, ArrowType.PrimitiveType type) { return nullable(name, type); }
private static int countFields(Field f, int count){ if(f.getChildren().isEmpty()){ count++; }else { for(Field child : f.getChildren()){ count = countFields(child, count); } } return count; }
private CompositeReaderConfig(List<SchemaPath> innerColumns, List<FieldValuePair> partitionFields) { super(); this.innerColumns = ImmutableList.copyOf(innerColumns); this.partitionFieldMap = FluentIterable.from(partitionFields).uniqueIndex(input -> input.field.getName()); }
@Override public String visit(List type) { StringBuilder sb = new StringBuilder(); if(includeName){ sb.append(field.getName()); sb.append("::"); } sb.append("list<"); sb.append(describe(field.getChildren().get(0), false)); sb.append(">"); return sb.toString(); }
/** * Shortcut method for returning a field * given an arrow type and name * with no sub fields * @param name the name of the field * @param arrowType the arrow type of the field * @return the resulting field */ public static Field field(String name,ArrowType arrowType) { return new Field(name,FieldType.nullable(arrowType), new ArrayList<Field>()); }
private void assertDatasetSchemasDefined(List<NamespaceKey> datasetKeys) throws Exception { for (NamespaceKey datasetKey : datasetKeys) { DatasetConfig dsConfig = namespaceService.getDataset(datasetKey); BatchSchema schema = BatchSchema.deserialize(dsConfig.getRecordSchema()); assertEquals(schema.getFieldCount(), 1); assertEquals(schema.getColumn(0).getName(), "string"); assertEquals(schema.getColumn(0).getType(), ArrowType.Utf8.INSTANCE); } }