Class DataTypeUtils


  • @Internal
    public final class DataTypeUtils
    extends Object
    Utilities for handling DataTypes.
    • Method Detail

      • stripRowPrefix

        public static DataType stripRowPrefix​(DataType dataType,
                                              String prefix)
        Removes a string prefix from the fields of the given row data type.
      • appendRowFields

        public static DataType appendRowFields​(DataType dataType,
                                               List<DataTypes.Field> fields)
        Appends the given list of fields to an existing row data type.
      • toInternalDataType

        public static DataType toInternalDataType​(DataType dataType)
        Creates a DataType from the given DataType with internal data structures.
      • isInternal

        public static boolean isInternal​(DataType dataType)
        Checks whether a given data type is an internal data structure.
      • isInternal

        public static boolean isInternal​(DataType dataType,
                                         boolean autobox)
        Checks whether a given data type is an internal data structure.
      • removeTimeAttribute

        public static DataType removeTimeAttribute​(DataType dataType)
        Removes time attributes from the DataType. As everywhere else in the code base, this method does not support nested time attributes for now.
      • transform

        public static DataType transform​(@Nullable
                                         DataTypeFactory factory,
                                         DataType typeToTransform,
                                         TypeTransformation... transformations)
        Transforms the given data type to a different data type using the given transformations.

        The transformations will be called in the given order. In case of constructed or composite types, a transformation will be applied transitively to children first.

        Both the DataType.getLogicalType() and DataType.getConversionClass() can be transformed.

        Parameters:
        factory - DataTypeFactory if available
        typeToTransform - data type to be transformed.
        transformations - the transformations to transform data type to another type.
        Returns:
        the new data type
      • expandCompositeTypeToSchema

        public static ResolvedSchema expandCompositeTypeToSchema​(DataType dataType)
        Expands a composite DataType to a corresponding ResolvedSchema. Useful for flattening a column or mapping a physical to logical type of a table source

        Throws an exception for a non composite type. You can use LogicalTypeChecks.isCompositeType(LogicalType) to check that.

        It does not expand an atomic type on purpose, because that operation depends on the context. E.g. in case of a FLATTEN function such operation is not allowed, whereas when mapping a physical type to logical the field name should be derived from the logical schema.

        Parameters:
        dataType - Data type to expand. Must be a composite type.
        Returns:
        A corresponding table schema.
      • getField

        public static Optional<DataType> getField​(DataType compositeType,
                                                  int index)
        Retrieves a nested field from a composite type at given position.

        Throws an exception for a non composite type. You can use LogicalTypeChecks.isCompositeType(LogicalType) to check that.

        Parameters:
        compositeType - Data type to expand. Must be a composite type.
        index - Index of the field to retrieve.
        Returns:
        The field at the given position.
      • getField

        public static Optional<DataType> getField​(DataType compositeType,
                                                  String name)
        Retrieves a nested field from a composite type with given name.

        Throws an exception for a non composite type. You can use LogicalTypeChecks.isCompositeType(LogicalType) to check that.

        Parameters:
        compositeType - Data type to expand. Must be a composite type.
        name - Name of the field to retrieve.
        Returns:
        The field with the given name.
      • flattenToDataTypes

        public static List<DataType> flattenToDataTypes​(DataType dataType)
        Returns the data types of the flat representation in the first level of the given data type.
      • flattenToNames

        public static List<String> flattenToNames​(DataType dataType)
        Returns the names of the flat representation of the given data type. In case of StructuredType, the list also includes the super type fields.
      • validateInputDataType

        public static void validateInputDataType​(DataType dataType)
        The DataType class can only partially verify the conversion class. This method can perform the final check when we know if the data type should be used for input.
      • validateOutputDataType

        public static void validateOutputDataType​(DataType dataType)
        The DataType class can only partially verify the conversion class. This method can perform the final check when we know if the data type should be used for output.
      • createProctimeDataType

        public static DataType createProctimeDataType()
        Returns a PROCTIME data type.