Package org.h2.value

Class TypeInfo

    • Field Detail

      • TYPE_UNKNOWN

        public static final TypeInfo TYPE_UNKNOWN
        UNKNOWN type with parameters.
      • TYPE_NULL

        public static final TypeInfo TYPE_NULL
        NULL type with parameters.
      • TYPE_CHAR

        public static final TypeInfo TYPE_CHAR
        CHAR type with default parameters.
      • TYPE_VARCHAR

        public static final TypeInfo TYPE_VARCHAR
        CHARACTER VARYING type with maximum parameters.
      • TYPE_VARCHAR_IGNORECASE

        public static final TypeInfo TYPE_VARCHAR_IGNORECASE
        VARCHAR_IGNORECASE type with maximum parameters.
      • TYPE_CLOB

        public static final TypeInfo TYPE_CLOB
        CHARACTER LARGE OBJECT type with maximum parameters.
      • TYPE_BINARY

        public static final TypeInfo TYPE_BINARY
        BINARY type with default parameters.
      • TYPE_VARBINARY

        public static final TypeInfo TYPE_VARBINARY
        BINARY VARYING type with maximum parameters.
      • TYPE_BLOB

        public static final TypeInfo TYPE_BLOB
        BINARY LARGE OBJECT type with maximum parameters.
      • TYPE_BOOLEAN

        public static final TypeInfo TYPE_BOOLEAN
        BOOLEAN type with parameters.
      • TYPE_TINYINT

        public static final TypeInfo TYPE_TINYINT
        TINYINT type with parameters.
      • TYPE_SMALLINT

        public static final TypeInfo TYPE_SMALLINT
        SMALLINT type with parameters.
      • TYPE_INTEGER

        public static final TypeInfo TYPE_INTEGER
        INTEGER type with parameters.
      • TYPE_BIGINT

        public static final TypeInfo TYPE_BIGINT
        BIGINT type with parameters.
      • TYPE_NUMERIC_SCALE_0

        public static final TypeInfo TYPE_NUMERIC_SCALE_0
        NUMERIC type with maximum precision and scale 0.
      • TYPE_NUMERIC_BIGINT

        public static final TypeInfo TYPE_NUMERIC_BIGINT
        NUMERIC type with parameters enough to hold a BIGINT value.
      • TYPE_NUMERIC_FLOATING_POINT

        public static final TypeInfo TYPE_NUMERIC_FLOATING_POINT
        NUMERIC type that can hold values with floating point.
      • TYPE_REAL

        public static final TypeInfo TYPE_REAL
        REAL type with parameters.
      • TYPE_DOUBLE

        public static final TypeInfo TYPE_DOUBLE
        DOUBLE PRECISION type with parameters.
      • TYPE_DECFLOAT

        public static final TypeInfo TYPE_DECFLOAT
        DECFLOAT type with maximum parameters.
      • TYPE_DECFLOAT_BIGINT

        public static final TypeInfo TYPE_DECFLOAT_BIGINT
        DECFLOAT type with parameters enough to hold a BIGINT value.
      • TYPE_DATE

        public static final TypeInfo TYPE_DATE
        DATE type with parameters.
      • TYPE_TIME

        public static final TypeInfo TYPE_TIME
        TIME type with maximum parameters.
      • TYPE_TIME_TZ

        public static final TypeInfo TYPE_TIME_TZ
        TIME WITH TIME ZONE type with maximum parameters.
      • TYPE_TIMESTAMP

        public static final TypeInfo TYPE_TIMESTAMP
        TIMESTAMP type with maximum parameters.
      • TYPE_TIMESTAMP_TZ

        public static final TypeInfo TYPE_TIMESTAMP_TZ
        TIMESTAMP WITH TIME ZONE type with maximum parameters.
      • TYPE_INTERVAL_DAY

        public static final TypeInfo TYPE_INTERVAL_DAY
        INTERVAL DAY type with maximum parameters.
      • TYPE_INTERVAL_YEAR_TO_MONTH

        public static final TypeInfo TYPE_INTERVAL_YEAR_TO_MONTH
        INTERVAL YEAR TO MONTH type with maximum parameters.
      • TYPE_INTERVAL_DAY_TO_SECOND

        public static final TypeInfo TYPE_INTERVAL_DAY_TO_SECOND
        INTERVAL DAY TO SECOND type with maximum parameters.
      • TYPE_INTERVAL_HOUR_TO_SECOND

        public static final TypeInfo TYPE_INTERVAL_HOUR_TO_SECOND
        INTERVAL HOUR TO SECOND type with maximum parameters.
      • TYPE_JAVA_OBJECT

        public static final TypeInfo TYPE_JAVA_OBJECT
        JAVA_OBJECT type with maximum parameters.
      • TYPE_ENUM_UNDEFINED

        public static final TypeInfo TYPE_ENUM_UNDEFINED
        ENUM type with undefined parameters.
      • TYPE_GEOMETRY

        public static final TypeInfo TYPE_GEOMETRY
        GEOMETRY type with default parameters.
      • TYPE_JSON

        public static final TypeInfo TYPE_JSON
        JSON type.
      • TYPE_UUID

        public static final TypeInfo TYPE_UUID
        UUID type with parameters.
      • TYPE_ARRAY_UNKNOWN

        public static final TypeInfo TYPE_ARRAY_UNKNOWN
        ARRAY type with unknown parameters.
      • TYPE_ROW_EMPTY

        public static final TypeInfo TYPE_ROW_EMPTY
        ROW (row value) type without fields.
      • TYPE_INFOS_BY_VALUE_TYPE

        private static final TypeInfo[] TYPE_INFOS_BY_VALUE_TYPE
      • valueType

        private final int valueType
      • precision

        private final long precision
      • scale

        private final int scale
    • Constructor Detail

      • TypeInfo

        private TypeInfo​(int valueType)
      • TypeInfo

        private TypeInfo​(int valueType,
                         long precision)
      • TypeInfo

        private TypeInfo​(int valueType,
                         int scale)
      • TypeInfo

        public TypeInfo​(int valueType,
                        long precision,
                        int scale,
                        ExtTypeInfo extTypeInfo)
        Creates new instance of data type with parameters.
        Parameters:
        valueType - the value type
        precision - the precision
        scale - the scale
        extTypeInfo - the extended type information, or null
    • Method Detail

      • getTypeInfo

        public static TypeInfo getTypeInfo​(int type)
        Get the data type with parameters object for the given value type and maximum parameters.
        Parameters:
        type - the value type
        Returns:
        the data type with parameters object
      • getTypeInfo

        public static TypeInfo getTypeInfo​(int type,
                                           long precision,
                                           int scale,
                                           ExtTypeInfo extTypeInfo)
        Get the data type with parameters object for the given value type and the specified parameters.
        Parameters:
        type - the value type
        precision - the precision or -1L for default
        scale - the scale or -1 for default
        extTypeInfo - the extended type information or null
        Returns:
        the data type with parameters object
      • getHigherType

        public static TypeInfo getHigherType​(Typed[] values)
        Get the higher data type of all values.
        Parameters:
        values - the values
        Returns:
        the higher data type
      • getHigherType

        public static TypeInfo getHigherType​(TypeInfo type1,
                                             TypeInfo type2)
        Get the higher data type of two data types. If values need to be converted to match the other operands data type, the value with the lower order is converted to the value with the higher order.
        Parameters:
        type1 - the first data type
        type2 - the second data type
        Returns:
        the higher data type of the two
      • dimensions

        private static int dimensions​(TypeInfo type)
      • areSameTypes

        public static boolean areSameTypes​(TypeInfo t1,
                                           TypeInfo t2)
        Determines whether two specified types are the same data types without taking precision or scale into account.
        Parameters:
        t1 - first data type
        t2 - second data type
        Returns:
        whether types are the same
      • checkComparable

        public static void checkComparable​(TypeInfo t1,
                                           TypeInfo t2)
        Checks whether two specified types are comparable and throws an exception otherwise.
        Parameters:
        t1 - first data type
        t2 - second data type
        Throws:
        DbException - if types aren't comparable
      • areComparable

        private static boolean areComparable​(TypeInfo t1,
                                             TypeInfo t2)
        Determines whether two specified types are comparable.
        Parameters:
        t1 - first data type
        t2 - second data type
        Returns:
        whether types are comparable
      • haveSameOrdering

        public static boolean haveSameOrdering​(TypeInfo t1,
                                               TypeInfo t2)
        Determines whether two specified types have the same ordering rules.
        Parameters:
        t1 - first data type
        t2 - second data type
        Returns:
        whether types are comparable
      • getType

        public TypeInfo getType()
        Returns this type information.
        Specified by:
        getType in interface Typed
        Returns:
        this
      • getValueType

        public int getValueType()
        Returns the value type.
        Returns:
        the value type
      • getPrecision

        public long getPrecision()
        Returns the precision.
        Returns:
        the precision
      • getDeclaredPrecision

        public long getDeclaredPrecision()
        Returns the precision, or -1L if not specified in data type definition.
        Returns:
        the precision, or -1L if not specified in data type definition
      • getScale

        public int getScale()
        Returns the scale.
        Returns:
        the scale
      • getDeclaredScale

        public int getDeclaredScale()
        Returns the scale, or -1 if not specified in data type definition.
        Returns:
        the scale, or -1 if not specified in data type definition
      • getDisplaySize

        public int getDisplaySize()
        Returns the display size in characters.
        Returns:
        the display size
      • getExtTypeInfo

        public ExtTypeInfo getExtTypeInfo()
        Returns the extended type information, or null.
        Returns:
        the extended type information, or null
      • getSQL

        public java.lang.StringBuilder getSQL​(java.lang.StringBuilder builder,
                                              int sqlFlags)
        Description copied from interface: HasSQL
        Appends the SQL statement of this object to the specified builder.
        Specified by:
        getSQL in interface HasSQL
        Parameters:
        builder - string builder
        sqlFlags - formatting flags
        Returns:
        the specified string builder
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • toNumericType

        public TypeInfo toNumericType()
        Convert this type information to compatible NUMERIC type information.
        Returns:
        NUMERIC type information
      • toDecfloatType

        public TypeInfo toDecfloatType()
        Convert this type information to compatible DECFLOAT type information.
        Returns:
        DECFLOAT type information
      • unwrapRow

        public TypeInfo unwrapRow()
        Returns unwrapped data type if this data type is a row type with degree 1 or this type otherwise.
        Returns:
        unwrapped data type if this data type is a row type with degree 1 or this type otherwise
      • getDecimalPrecision

        public long getDecimalPrecision()
        Returns approximate precision in decimal digits for binary numeric data types and precision for all other types.
        Returns:
        precision in decimal digits
      • getDeclaredTypeName

        public java.lang.String getDeclaredTypeName()
        Returns the declared name of this data type with precision, scale, length, cardinality etc. parameters removed, excluding parameters of ENUM data type, GEOMETRY data type, ARRAY elements, and ROW fields.
        Returns:
        the declared name