Class BasicSqlType

    • Constructor Detail

      • BasicSqlType

        public BasicSqlType​(RelDataTypeSystem typeSystem,
                            SqlTypeName typeName)
        Constructs a type with no parameters. This should only be called from a factory method.
        Parameters:
        typeSystem - Type system
        typeName - Type name
      • BasicSqlType

        public BasicSqlType​(RelDataTypeSystem typeSystem,
                            SqlTypeName typeName,
                            int precision)
        Constructs a type with precision/length but no scale.
        Parameters:
        typeSystem - Type system
        typeName - Type name
        precision - Precision (called length for some types)
      • BasicSqlType

        public BasicSqlType​(RelDataTypeSystem typeSystem,
                            SqlTypeName typeName,
                            int precision,
                            int scale)
        Constructs a type with precision/length and scale.
        Parameters:
        typeSystem - Type system
        typeName - Type name
        precision - Precision (called length for some types)
        scale - Scale
    • Method Detail

      • checkPrecScale

        protected static void checkPrecScale​(SqlTypeName typeName,
                                             boolean precisionSpecified,
                                             boolean scaleSpecified)
        Throws if typeName does not allow the given combination of precision and scale.
      • createWithNullability

        BasicSqlType createWithNullability​(boolean nullable)
        Constructs a type with nullablity.
      • createWithCharsetAndCollation

        BasicSqlType createWithCharsetAndCollation​(java.nio.charset.Charset charset,
                                                   SqlCollation collation)
        Constructs a type with charset and collation.

        This must be a character type.

      • getPrecision

        public int getPrecision()
        Description copied from interface: RelDataType
        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 RelDataType.PRECISION_NOT_SPECIFIED (-1) if precision is not applicable for this type.

        Specified by:
        getPrecision in interface RelDataType
        Overrides:
        getPrecision in class RelDataTypeImpl
        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
      • getCharset

        public java.nio.charset.Charset getCharset()
        Description copied from interface: RelDataType
        Gets this type's character set, or null if this type cannot carry a character set or has no character set defined.
        Specified by:
        getCharset in interface RelDataType
        Overrides:
        getCharset in class RelDataTypeImpl
        Returns:
        charset of type
      • 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 - StringBuilder 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;
      • getLimit

        public java.lang.Object getLimit​(boolean sign,
                                         SqlTypeName.Limit limit,
                                         boolean beyond)
        Returns a value which is a limit for this type.

        For example,

        Limits
        Datatype sign limit beyond precision scale Returns
        Integer true true false -1 -1 2147483647 (2 ^ 31 -1 = MAXINT)
        Integer true true true -1 -1 2147483648 (2 ^ 31 = MAXINT + 1)
        Integer false true false -1 -1 -2147483648 (-2 ^ 31 = MININT)
        Boolean true true false -1 -1 TRUE
        Varchar true true false 10 -1 'ZZZZZZZZZZ'
        Parameters:
        sign - If true, returns upper limit, otherwise lower limit
        limit - If true, returns value at or near to overflow; otherwise value at or near to underflow
        beyond - If true, returns the value just beyond the limit, otherwise the value at the limit
        Returns:
        Limit value