@PublicEvolving public abstract class DataType extends Object implements AbstractDataType<DataType>, Serializable
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.
Modifier and Type | Field and Description |
---|---|
protected Class<?> |
conversionClass |
protected LogicalType |
logicalType |
Modifier and Type | Method and Description |
---|---|
abstract <R> R |
accept(DataTypeVisitor<R> visitor) |
boolean |
equals(Object o) |
abstract List<DataType> |
getChildren()
Returns the children of this data type, if any.
|
Class<?> |
getConversionClass()
Returns the corresponding conversion class for representing values.
|
static int |
getFieldCount(DataType dataType)
Returns the count of the first-level fields for the provided
DataType . |
static List<DataType> |
getFieldDataTypes(DataType dataType)
Returns the first-level field data types for the provided
DataType . |
static List<String> |
getFieldNames(DataType dataType)
Returns the first-level field names for the provided
DataType . |
static List<DataTypes.Field> |
getFields(DataType dataType)
Returns an ordered list of fields starting from the provided
DataType . |
LogicalType |
getLogicalType()
Returns the corresponding logical type.
|
int |
hashCode() |
DataType |
toInternal()
Creates a copy of this
DataType instance with the internal data type conversion
classes. |
String |
toString() |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
bridgedTo, notNull, nullable
protected final LogicalType logicalType
protected final Class<?> conversionClass
public LogicalType getLogicalType()
LogicalType
public Class<?> getConversionClass()
LogicalType.getDefaultConversion()
public abstract List<DataType> getChildren()
public abstract <R> R accept(DataTypeVisitor<R> visitor)
public DataType toInternal()
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
.
RowData
public static int getFieldCount(DataType dataType)
public static List<DataTypes.Field> getFields(DataType dataType)
Copyright © 2014–2024 The Apache Software Foundation. All rights reserved.