public class TypeUtil
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static class |
TypeUtil.CustomOrderSchemaVisitor<T> |
static interface |
TypeUtil.NextID
Interface for passing a function that assigns column IDs.
|
static class |
TypeUtil.SchemaVisitor<T> |
Modifier and Type | Method and Description |
---|---|
static Schema |
assignFreshIds(Schema schema,
TypeUtil.NextID nextId)
Assigns fresh ids from the
nextId function for all fields in a schema. |
static Type |
assignFreshIds(Type type,
TypeUtil.NextID nextId)
Assigns fresh ids from the
nextId function for all fields in a type. |
static Schema |
assignIncreasingFreshIds(Schema schema)
Assigns strictly increasing fresh ids for all fields in a schema, starting from 1.
|
static int |
decimalRequiredBytes(int precision) |
static Type |
find(Schema schema,
java.util.function.Predicate<Type> predicate) |
static java.util.Set<java.lang.Integer> |
getProjectedIds(Schema schema) |
static java.util.Set<java.lang.Integer> |
getProjectedIds(Type schema) |
static java.util.Map<java.lang.Integer,Types.NestedField> |
indexById(Types.StructType struct) |
static java.util.Map<java.lang.String,java.lang.Integer> |
indexByLowerCaseName(Types.StructType struct) |
static java.util.Map<java.lang.String,java.lang.Integer> |
indexByName(Types.StructType struct) |
static boolean |
isPromotionAllowed(Type from,
Type.PrimitiveType to) |
static Schema |
join(Schema left,
Schema right) |
static Schema |
reassignIds(Schema schema,
Schema idSourceSchema)
Reassigns ids in a schema from another schema.
|
static Schema |
select(Schema schema,
java.util.Set<java.lang.Integer> fieldIds) |
static Schema |
selectNot(Schema schema,
java.util.Set<java.lang.Integer> fieldIds) |
static <T> T |
visit(Schema schema,
TypeUtil.CustomOrderSchemaVisitor<T> visitor) |
static <T> T |
visit(Schema schema,
TypeUtil.SchemaVisitor<T> visitor) |
static <T> T |
visit(Type type,
TypeUtil.CustomOrderSchemaVisitor<T> visitor)
Used to traverse types with traversals other than pre-order.
|
static <T> T |
visit(Type type,
TypeUtil.SchemaVisitor<T> visitor) |
public static java.util.Set<java.lang.Integer> getProjectedIds(Schema schema)
public static java.util.Set<java.lang.Integer> getProjectedIds(Type schema)
public static java.util.Map<java.lang.String,java.lang.Integer> indexByName(Types.StructType struct)
public static java.util.Map<java.lang.String,java.lang.Integer> indexByLowerCaseName(Types.StructType struct)
public static java.util.Map<java.lang.Integer,Types.NestedField> indexById(Types.StructType struct)
public static Type assignFreshIds(Type type, TypeUtil.NextID nextId)
nextId function
for all fields in a type.type
- a typenextId
- an id assignment functionpublic static Schema assignFreshIds(Schema schema, TypeUtil.NextID nextId)
nextId function
for all fields in a schema.schema
- a schemanextId
- an id assignment functionpublic static Schema assignIncreasingFreshIds(Schema schema)
schema
- a schemapublic static Schema reassignIds(Schema schema, Schema idSourceSchema)
Ids are determined by field names. If a field in the schema cannot be found in the source schema, this will throw IllegalArgumentException.
This will not alter a schema's structure, nullability, or types.
schema
- the schema to have ids reassignedidSourceSchema
- the schema from which field ids will be usedjava.lang.IllegalArgumentException
- if a field cannot be found (by name) in the source schemapublic static boolean isPromotionAllowed(Type from, Type.PrimitiveType to)
public static <T> T visit(Schema schema, TypeUtil.SchemaVisitor<T> visitor)
public static <T> T visit(Type type, TypeUtil.SchemaVisitor<T> visitor)
public static <T> T visit(Schema schema, TypeUtil.CustomOrderSchemaVisitor<T> visitor)
public static <T> T visit(Type type, TypeUtil.CustomOrderSchemaVisitor<T> visitor)
This passes a Supplier
to each visitor
method that
returns the result of traversing child types. Structs are passed an Iterable
that
traverses child fields during iteration.
An example use is assigning column IDs, which should be done with a post-order traversal.
T
- the type returned by the visitortype
- a type to traverse with a visitorvisitor
- a custom order visitorpublic static int decimalRequiredBytes(int precision)