Class DynamicRecordTypeImpl

  • All Implemented Interfaces:
    RelDataType, RelDataTypeFamily

    public class DynamicRecordTypeImpl
    extends DynamicRecordType
    Implementation of RelDataType for a dynamic table.

    It's used during SQL validation, where the field list is mutable for the getField() call. After SQL validation, a normal RelDataTypeImpl with an immutable field list takes the place of the DynamicRecordTypeImpl instance.

    • Constructor Detail

      • DynamicRecordTypeImpl

        public DynamicRecordTypeImpl​(RelDataTypeFactory typeFactory)
        Creates a DynamicRecordTypeImpl.
    • Method Detail

      • getField

        public RelDataTypeField getField​(java.lang.String fieldName,
                                         boolean caseSensitive,
                                         boolean elideRecord)
        Description copied from interface: RelDataType
        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.
        Specified by:
        getField in interface RelDataType
        Overrides:
        getField in class RelDataTypeImpl
        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
      • getFieldNames

        public java.util.List<java.lang.String> getFieldNames()
        Description copied from interface: RelDataType
        Returns the names of the fields in a struct type. The field count is equal to the size of the returned list.
        Specified by:
        getFieldNames in interface RelDataType
        Overrides:
        getFieldNames in class RelDataTypeImpl
        Returns:
        read-only list of field names
      • generateTypeString

        protected void generateTypeString​(java.lang.StringBuilder sb,
                                          boolean withDetail)
        Description copied from class: RelDataTypeImpl
        Generates a string representation of this type.
        Specified by:
        generateTypeString in class RelDataTypeImpl
        Parameters:
        sb - StringBuffer into which to generate the string
        withDetail - when true, all detail information needed to compute a unique digest (and return from getFullTypeString) should be included;
      • isStruct

        public boolean isStruct()
        Description copied from interface: RelDataType
        Queries whether this is a structured type.
        Specified by:
        isStruct in interface RelDataType
        Overrides:
        isStruct in class RelDataTypeImpl
        Returns:
        whether this type has fields; examples include rows and user-defined structured types in SQL, and classes in Java
      • getFamily

        public RelDataTypeFamily getFamily()
        Description copied from interface: RelDataType
        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.
        Specified by:
        getFamily in interface RelDataType
        Overrides:
        getFamily in class RelDataTypeImpl
        Returns:
        canonical object representing type family