public Integer getScale(){ return type.accept(new AbstractArrowTypeVisitor<Integer>(){ @Override public Integer visit(Decimal type) { return type.getScale(); } @Override protected Integer visitGeneric(ArrowType type) { return null; } }); }
public static String describe(ArrowType type){ return type.accept(INSTANCE); }
public boolean isSigned() { return type.accept(new AbstractArrowTypeVisitor<Boolean>(){ @Override public Boolean visit(Int type) { return true; } @Override public Boolean visit(FloatingPoint type) { return true; } @Override public Boolean visit(Decimal type) { return true; } @Override protected Boolean visitGeneric(ArrowType type) { return false; } }); }
public boolean isSortable() { return type.accept(new AbstractArrowTypeVisitor<Boolean>(){ @Override public Boolean visit(Null type) { return false; } @Override public Boolean visit(Struct type) { return false; } @Override public Boolean visit(org.apache.arrow.vector.types.pojo.ArrowType.List type) { return false; } @Override public Boolean visit(Union type) { return false; } @Override protected Boolean visitGeneric(ArrowType type) { return true; }}); }
public Integer getPrecision(){ return type.accept(new AbstractArrowTypeVisitor<Integer>(){ @Override public Integer visit(Utf8 type) { return 65536; } @Override public Integer visit(Binary type) { return 65536; } @Override public Integer visit(Decimal type) { return type.getPrecision(); } @Override public Integer visit(Time type) { return getPrecision(type.getUnit()); } @Override public Integer visit(Timestamp type) { return getPrecision(type.getUnit()); } @Override protected Integer visitGeneric(ArrowType type) { return null; } }); }
/*** * Gets SQL data type name for given Dremio RPC-/protobuf-level data type. * @return * canonical keyword sequence for SQL data type (leading keywords in * corresponding {@code <data type>}; what * {@code INFORMATION_SCHEMA.COLUMNS.TYPE_NAME} would list) */ public String getSqlTypeName() { return type.accept(new SqlTypeNameVisitor()); }
return type.accept(new ArrowTypeVisitor<Class<? extends ValueHolder>>() {
public int getSqlDisplaySize() { return type.accept(new SqlDisplaySizeVisitor()); }
@Override protected Void visitGeneric(ArrowType type) { try { generator.writeStartObject(); if (!skipName) { generator.writeFieldName("name"); generator.writeString(field.getName()); } generator.writeFieldName("type"); generator.writeStartObject(); generator.writeFieldName("name"); type.accept(typeDescriber); generator.writeEndObject(); generator.writeEndObject(); } catch (IOException e) { e.printStackTrace(); } return null; }
@Override public void serialize(List<Field> fields, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { jsonGenerator.writeStartArray(); for (Field field: fields) { APIFieldDescriber.FieldDescriber describer = new APIFieldDescriber.FieldDescriber(jsonGenerator, field, false); field.getType().accept(describer); } jsonGenerator.writeEndArray(); } }
public static String describe(Field field){ return field.getType().accept(new FieldDescriber(field, true)); }
private static String describe(Field field, boolean includeName){ return field.getType().accept(new FieldDescriber(field, includeName)); }
private void writeField(Field field, JsonGenerator generator, boolean skipName) throws IOException { APIFieldDescriber.FieldDescriber describer = new APIFieldDescriber.FieldDescriber(generator, field, false); field.getType().accept(describer); }
@Override public Void visit(ArrowType.List 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 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 Void visit(ArrowType.Struct 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, false); field.getType().accept(describer); } generator.writeEndArray(); } generator.writeEndObject(); generator.writeEndObject(); } catch (IOException e) { e.printStackTrace(); } return null; }
private TypeMapping map(final Field arrowField, final Type parquetField) { return arrowField.getType().accept(new ArrowTypeVisitor<TypeMapping>() {
@Override protected BatchSchema constructSchema(FunctionLookupContext context) { final SchemaBuilder builder = BatchSchema.newBuilder(); for(Field f : child.getSchema(context)){ builder.addField(f.getType().accept(new SchemaConverter(f))); } return builder.build(); }
@Override protected BatchSchema constructSchema(FunctionLookupContext context) { SchemaBuilder builder = BatchSchema.newBuilder(); BatchSchema batchSchema = child.getSchema(context); // flatten operator currently puts the flattened field first Field flattenField = batchSchema.findField(column.getAsUnescapedPath()); builder.addField(flattenField.getType().accept(new SchemaConverter(flattenField))); for(Field f : batchSchema){ if (f.getName().equals(column.getAsUnescapedPath())) { continue; } builder.addField(f.getType().accept(new SchemaConverter(f))); } builder.setSelectionVectorMode(SelectionVectorMode.NONE); return builder.build(); }
return field.getType().accept(new AbstractArrowTypeVisitor<TypedFieldId>(){