Class DataType

  • All Implemented Interfaces:
    Serializable, AbstractDataType<DataType>
    Direct Known Subclasses:
    AtomicDataType, CollectionDataType, FieldsDataType, KeyValueDataType

    @PublicEvolving
    public abstract class DataType
    extends Object
    implements AbstractDataType<DataType>, Serializable
    Describes the data type of a value in the table ecosystem. Instances of this class can be used to declare input and/or output types of operations.

    The DataType class has two responsibilities: declaring a logical type and giving hints about the physical representation of data to the planner. While the logical type is mandatory, hints are optional but useful at the edges to other APIs.

    The logical type is independent of any physical representation and is close to the "data type" terminology of the SQL standard. See LogicalType and its subclasses for more information about available logical types and their properties.

    Physical hints are required at the edges of the table ecosystem. Hints indicate the data format that an implementation expects. For example, a data source could express that it produces values for logical timestamps using a Timestamp class instead of using LocalDateTime. With this information, the runtime is able to convert the produced class into its internal data format. In return, a data sink can declare the data format it consumes from the runtime.

    See Also:
    for a list of supported data types and instances of this class., Serialized Form
    • Field Detail

      • conversionClass

        protected final Class<?> conversionClass
    • Method Detail

      • getLogicalType

        public LogicalType getLogicalType()
        Returns the corresponding logical type.
        Returns:
        a parameterized instance of LogicalType
      • getConversionClass

        public Class<?> getConversionClass()
        Returns the corresponding conversion class for representing values. If no conversion class was defined manually, the default conversion defined by the logical type is used.
        Returns:
        the expected conversion class
        See Also:
        LogicalType.getDefaultConversion()
      • getChildren

        public abstract List<DataType> getChildren()
        Returns the children of this data type, if any. Returns an empty list if this data type is atomic.
        Returns:
        the children data types
      • toInternal

        public DataType toInternal()
        Creates a copy of this DataType instance with the internal data type conversion classes. This method performs the transformation deeply through its children. For example, for a DataType instance representing a row type with a timestamp field, this method returns a new DataType, with the conversion class to RowData and the children data type with the conversion class to TimestampData.

        For a comprehensive list of internal data types, check RowData.

        See Also:
        RowData
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • getFieldNames

        public static List<String> getFieldNames​(DataType dataType)
        Returns the first-level field names for the provided DataType.

        Note: This method returns an empty list for every DataType that is not a composite type.

      • getFieldDataTypes

        public static List<DataType> getFieldDataTypes​(DataType dataType)
        Returns the first-level field data types for the provided DataType.

        Note: This method returns an empty list for every DataType that is not a composite type.

      • getFieldCount

        public static int getFieldCount​(DataType dataType)
        Returns the count of the first-level fields for the provided DataType.

        Note: This method returns 0 for every DataType that is not a composite type.

      • getFields

        public static List<DataTypes.Field> getFields​(DataType dataType)
        Returns an ordered list of fields starting from the provided DataType.

        Note: This method returns an empty list for every DataType that is not a composite type.