Interface RelDataType

    • Method Detail

      • isStruct

        boolean isStruct()
        Queries whether this is a structured type.
        Returns:
        whether this type has fields; examples include rows and user-defined structured types in SQL, and classes in Java
      • getFieldList

        java.util.List<RelDataTypeField> getFieldList()
        Gets the fields in a struct type. The field count is equal to the size of the returned list.
        Returns:
        read-only list of fields
      • getFieldNames

        java.util.List<java.lang.String> getFieldNames()
        Returns the names of the fields in a struct type. The field count is equal to the size of the returned list.
        Returns:
        read-only list of field names
      • getFieldCount

        int getFieldCount()
        Returns the number of fields in a struct type.

        This method is equivalent to getFieldList().size().

      • getStructKind

        StructKind getStructKind()
        Returns the rule for resolving the fields of a structured type, or StructKind.NONE if this is not a structured type.
        Returns:
        the StructKind that determines how this type's fields are resolved
      • getField

        RelDataTypeField getField​(java.lang.String fieldName,
                                  boolean caseSensitive,
                                  boolean elideRecord)
        Looks up a field by name.

        NOTE: Be careful choosing the value of caseSensitive:

        • If the field name was supplied by an end-user (e.g. as a column alias in SQL), use your session's case-sensitivity setting.
        • Only hard-code true if you are sure that the field name is internally generated.
        • Hard-coding false is almost certainly wrong.
        Parameters:
        fieldName - Name of field to find
        caseSensitive - Whether match is case-sensitive
        elideRecord - Whether to find fields nested within records
        Returns:
        named field, or null if not found
      • isNullable

        boolean isNullable()
        Queries whether this type allows null values.
        Returns:
        whether type allows null values
      • getComponentType

        RelDataType getComponentType()
        Gets the component type if this type is a collection, otherwise null.
        Returns:
        canonical type descriptor for components
      • getKeyType

        RelDataType getKeyType()
        Gets the key type if this type is a map, otherwise null.
        Returns:
        canonical type descriptor for key
      • getValueType

        RelDataType getValueType()
        Gets the value type if this type is a map, otherwise null.
        Returns:
        canonical type descriptor for value
      • getCharset

        java.nio.charset.Charset getCharset()
        Gets this type's character set, or null if this type cannot carry a character set or has no character set defined.
        Returns:
        charset of type
      • getCollation

        SqlCollation getCollation()
        Gets this type's collation, or null if this type cannot carry a collation or has no collation defined.
        Returns:
        collation of type
      • getIntervalQualifier

        SqlIntervalQualifier getIntervalQualifier()
        Gets this type's interval qualifier, or null if this is not an interval type.
        Returns:
        interval qualifier
      • getPrecision

        int getPrecision()
        Gets the JDBC-defined precision for values of this type. Note that this is not always the same as the user-specified precision. For example, the type INTEGER has no user-specified precision, but this method returns 10 for an INTEGER type.

        Returns PRECISION_NOT_SPECIFIED (-1) if precision is not applicable for this type.

        Returns:
        number of decimal digits for exact numeric types; number of decimal digits in mantissa for approximate numeric types; number of decimal digits for fractional seconds of datetime types; length in characters for character types; length in bytes for binary types; length in bits for bit types; 1 for BOOLEAN; -1 if precision is not valid for this type
      • getScale

        int getScale()
        Gets the scale of this type. Returns SCALE_NOT_SPECIFIED (-1) if scale is not valid for this type.
        Returns:
        number of digits of scale
      • getSqlTypeName

        SqlTypeName getSqlTypeName()
        Gets the SqlTypeName of this type.
        Returns:
        SqlTypeName, or null if this is not an SQL predefined type
      • getSqlIdentifier

        SqlIdentifier getSqlIdentifier()
        Gets the SqlIdentifier associated with this type. For a predefined type, this is a simple identifier based on getSqlTypeName(). For a user-defined type, this is a compound identifier which uniquely names the type.
        Returns:
        SqlIdentifier, or null if this is not an SQL type
      • toString

        java.lang.String toString()
        Gets a string representation of this type without detail such as character set and nullability.
        Overrides:
        toString in class java.lang.Object
        Returns:
        abbreviated type string
      • getFullTypeString

        java.lang.String getFullTypeString()
        Gets a string representation of this type with full detail such as character set and nullability. The string must serve as a "digest" for this type, meaning two types can be considered identical iff their digests are equal.
        Returns:
        full type string
      • getFamily

        RelDataTypeFamily getFamily()
        Gets a canonical object representing the family of this type. Two values can be compared if and only if their types are in the same family.
        Returns:
        canonical object representing type family
      • getComparability

        RelDataTypeComparability getComparability()
        Returns:
        the category of comparison operators which make sense when applied to values of this type
      • isDynamicStruct

        boolean isDynamicStruct()
        Returns:
        whether it has dynamic structure (for "schema-on-read" table)