Class DataTypeUtils

java.lang.Object
org.apache.flink.table.types.utils.DataTypeUtils

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

    • projectRow

      @Deprecated public static DataType projectRow(DataType dataType, int[][] indexPaths)
      Deprecated.
      Use the Projection type
      See Also:
    • projectRow

      @Deprecated public static DataType projectRow(DataType dataType, int[] indexPaths)
      Deprecated.
      Use the Projection type
      See Also:
    • 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(LogicalType logicalType)
      Creates a DataType from the given LogicalType with internal data structures.
    • 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.
    • replaceLogicalType

      public static DataType replaceLogicalType(DataType dataType, LogicalType replacement)
      Replaces the LogicalType of a DataType, i.e., it keeps the bridging class.
    • 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(DataType typeToTransform, TypeTransformation... transformations)
      Transforms the given data type to a different data type using the given transformations.
      See Also:
    • 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.
    • flattenToNames

      public static List<String> flattenToNames(DataType dataType, List<String> existingNames)
      See Also:
    • 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.