Package org.h2.value

Class Value

    • Field Detail

      • UNKNOWN

        public static final int UNKNOWN
        The data type is unknown at this time.
        See Also:
        Constant Field Values
      • CHAR

        public static final int CHAR
        The value type for CHARACTER values.
        See Also:
        Constant Field Values
      • VARCHAR

        public static final int VARCHAR
        The value type for CHARACTER VARYING values.
        See Also:
        Constant Field Values
      • CLOB

        public static final int CLOB
        The value type for CHARACTER LARGE OBJECT values.
        See Also:
        Constant Field Values
      • VARCHAR_IGNORECASE

        public static final int VARCHAR_IGNORECASE
        The value type for VARCHAR_IGNORECASE values.
        See Also:
        Constant Field Values
      • BINARY

        public static final int BINARY
        The value type for BINARY values.
        See Also:
        Constant Field Values
      • VARBINARY

        public static final int VARBINARY
        The value type for BINARY VARYING values.
        See Also:
        Constant Field Values
      • BLOB

        public static final int BLOB
        The value type for BINARY LARGE OBJECT values.
        See Also:
        Constant Field Values
      • BOOLEAN

        public static final int BOOLEAN
        The value type for BOOLEAN values.
        See Also:
        Constant Field Values
      • TINYINT

        public static final int TINYINT
        The value type for TINYINT values.
        See Also:
        Constant Field Values
      • SMALLINT

        public static final int SMALLINT
        The value type for SMALLINT values.
        See Also:
        Constant Field Values
      • INTEGER

        public static final int INTEGER
        The value type for INTEGER values.
        See Also:
        Constant Field Values
      • BIGINT

        public static final int BIGINT
        The value type for BIGINT values.
        See Also:
        Constant Field Values
      • NUMERIC

        public static final int NUMERIC
        The value type for NUMERIC values.
        See Also:
        Constant Field Values
      • DOUBLE

        public static final int DOUBLE
        The value type for DOUBLE PRECISION values.
        See Also:
        Constant Field Values
      • DECFLOAT

        public static final int DECFLOAT
        The value type for DECFLOAT values.
        See Also:
        Constant Field Values
      • TIME_TZ

        public static final int TIME_TZ
        The value type for TIME WITH TIME ZONE values.
        See Also:
        Constant Field Values
      • TIMESTAMP

        public static final int TIMESTAMP
        The value type for TIMESTAMP values.
        See Also:
        Constant Field Values
      • TIMESTAMP_TZ

        public static final int TIMESTAMP_TZ
        The value type for TIMESTAMP WITH TIME ZONE values.
        See Also:
        Constant Field Values
      • INTERVAL_YEAR

        public static final int INTERVAL_YEAR
        The value type for INTERVAL YEAR values.
        See Also:
        Constant Field Values
      • INTERVAL_MONTH

        public static final int INTERVAL_MONTH
        The value type for INTERVAL MONTH values.
        See Also:
        Constant Field Values
      • INTERVAL_DAY

        public static final int INTERVAL_DAY
        The value type for INTERVAL DAY values.
        See Also:
        Constant Field Values
      • INTERVAL_HOUR

        public static final int INTERVAL_HOUR
        The value type for INTERVAL HOUR values.
        See Also:
        Constant Field Values
      • INTERVAL_MINUTE

        public static final int INTERVAL_MINUTE
        The value type for INTERVAL MINUTE values.
        See Also:
        Constant Field Values
      • INTERVAL_SECOND

        public static final int INTERVAL_SECOND
        The value type for INTERVAL SECOND values.
        See Also:
        Constant Field Values
      • INTERVAL_YEAR_TO_MONTH

        public static final int INTERVAL_YEAR_TO_MONTH
        The value type for INTERVAL YEAR TO MONTH values.
        See Also:
        Constant Field Values
      • INTERVAL_DAY_TO_HOUR

        public static final int INTERVAL_DAY_TO_HOUR
        The value type for INTERVAL DAY TO HOUR values.
        See Also:
        Constant Field Values
      • INTERVAL_DAY_TO_MINUTE

        public static final int INTERVAL_DAY_TO_MINUTE
        The value type for INTERVAL DAY TO MINUTE values.
        See Also:
        Constant Field Values
      • INTERVAL_DAY_TO_SECOND

        public static final int INTERVAL_DAY_TO_SECOND
        The value type for INTERVAL DAY TO SECOND values.
        See Also:
        Constant Field Values
      • INTERVAL_HOUR_TO_MINUTE

        public static final int INTERVAL_HOUR_TO_MINUTE
        The value type for INTERVAL HOUR TO MINUTE values.
        See Also:
        Constant Field Values
      • INTERVAL_HOUR_TO_SECOND

        public static final int INTERVAL_HOUR_TO_SECOND
        The value type for INTERVAL HOUR TO SECOND values.
        See Also:
        Constant Field Values
      • INTERVAL_MINUTE_TO_SECOND

        public static final int INTERVAL_MINUTE_TO_SECOND
        The value type for INTERVAL MINUTE TO SECOND values.
        See Also:
        Constant Field Values
      • JAVA_OBJECT

        public static final int JAVA_OBJECT
        The value type for JAVA_OBJECT values.
        See Also:
        Constant Field Values
      • GEOMETRY

        public static final int GEOMETRY
        The value type for string values with a fixed size.
        See Also:
        Constant Field Values
      • TYPE_COUNT

        public static final int TYPE_COUNT
        The number of value types.
        See Also:
        Constant Field Values
      • EMPTY_VALUES

        public static final Value[] EMPTY_VALUES
        Empty array of values.
      • MAX_LONG_DECIMAL

        public static final java.math.BigDecimal MAX_LONG_DECIMAL
        The largest BIGINT value, as a BigDecimal.
      • MIN_LONG_DECIMAL

        public static final java.math.BigDecimal MIN_LONG_DECIMAL
        The smallest BIGINT value, as a BigDecimal.
      • CONVERT_TO

        public static final int CONVERT_TO
        Convert a value to the specified type without taking scale and precision into account.
        See Also:
        Constant Field Values
      • CAST_TO

        public static final int CAST_TO
        Cast a value to the specified type. The scale is set if applicable. The value is truncated to a required precision.
        See Also:
        Constant Field Values
      • ASSIGN_TO

        public static final int ASSIGN_TO
        Cast a value to the specified type for assignment. The scale is set if applicable. If precision is too large an exception is thrown.
        See Also:
        Constant Field Values
    • Constructor Detail

      • Value

        public Value()
    • Method Detail

      • getTypeName

        public static java.lang.String getTypeName​(int valueType)
        Returns name of the specified data type.
        Parameters:
        valueType - the value type
        Returns:
        the name
      • getType

        public abstract TypeInfo getType()
        Description copied from interface: Typed
        Returns the data type.
        Specified by:
        getType in interface Typed
        Returns:
        the data type
      • getValueType

        public abstract int getValueType()
        Get the value type.
        Returns:
        the value type
      • getMemory

        public int getMemory()
        Get the memory used by this object.
        Returns:
        the memory used in bytes
      • hashCode

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

        public abstract boolean equals​(java.lang.Object other)
        Check if the two values have the same hash code. No data conversion is made; this method returns false if the other object is not of the same class. For some values, compareTo may return 0 even if equals return false. Example: ValueDecimal 0.0 and 0.00.
        Overrides:
        equals in class java.lang.Object
        Parameters:
        other - the other value
        Returns:
        true if they are equal
      • getHigherOrder

        public static int getHigherOrder​(int t1,
                                         int t2)
        Get the higher value order type of two value types. If values need to be converted to match the other operands value type, the value with the lower order is converted to the value with the higher order.
        Parameters:
        t1 - the first value type
        t2 - the second value type
        Returns:
        the higher value type of the two
      • clearCache

        public static void clearCache()
        Clear the value cache. Used for testing.
      • getString

        public abstract java.lang.String getString()
        Get the value as a string.
        Returns:
        the string
      • getReader

        public java.io.Reader getReader()
      • getReader

        public java.io.Reader getReader​(long oneBasedOffset,
                                        long length)
        Get the reader
        Parameters:
        oneBasedOffset - the offset (1 means no offset)
        length - the requested length
        Returns:
        the new reader
      • getBytes

        public byte[] getBytes()
      • getBytesNoCopy

        public byte[] getBytesNoCopy()
      • getInputStream

        public java.io.InputStream getInputStream()
      • getInputStream

        public java.io.InputStream getInputStream​(long oneBasedOffset,
                                                  long length)
        Get the input stream
        Parameters:
        oneBasedOffset - the offset (1 means no offset)
        length - the requested length
        Returns:
        the new input stream
      • getBoolean

        public boolean getBoolean()
        Returns this value as a Java boolean value.
        Returns:
        value
        Throws:
        DbException - if this value is NULL or cannot be cast to BOOLEAN
        See Also:
        isTrue(), isFalse()
      • getByte

        public byte getByte()
        Returns this value as a Java byte value.
        Returns:
        value
        Throws:
        DbException - if this value is NULL or cannot be cast to TINYINT
      • getShort

        public short getShort()
        Returns this value as a Java short value.
        Returns:
        value
        Throws:
        DbException - if this value is NULL or cannot be cast to SMALLINT
      • getInt

        public int getInt()
        Returns this value as a Java int value.
        Returns:
        value
        Throws:
        DbException - if this value is NULL or cannot be cast to INTEGER
      • getLong

        public long getLong()
        Returns this value as a Java long value.
        Returns:
        value
        Throws:
        DbException - if this value is NULL or cannot be cast to BIGINT
      • getBigInteger

        public java.math.BigInteger getBigInteger()
      • getBigDecimal

        public java.math.BigDecimal getBigDecimal()
      • getFloat

        public float getFloat()
        Returns this value as a Java float value.
        Returns:
        value
        Throws:
        DbException - if this value is NULL or cannot be cast to REAL
      • getDouble

        public double getDouble()
        Returns this value as a Java double value.
        Returns:
        value
        Throws:
        DbException - if this value is NULL or cannot be cast to DOUBLE PRECISION
      • add

        public Value add​(Value v)
        Add a value and return the result.
        Parameters:
        v - the value to add
        Returns:
        the result
      • getSignum

        public int getSignum()
      • negate

        public Value negate()
        Return -value if this value support arithmetic operations.
        Returns:
        the negative
      • subtract

        public Value subtract​(Value v)
        Subtract a value and return the result.
        Parameters:
        v - the value to subtract
        Returns:
        the result
      • divide

        public Value divide​(Value v,
                            TypeInfo quotientType)
        Divide by a value and return the result.
        Parameters:
        v - the divisor
        quotientType - the type of quotient (used only to read precision and scale when applicable)
        Returns:
        the result
      • multiply

        public Value multiply​(Value v)
        Multiply with a value and return the result.
        Parameters:
        v - the value to multiply with
        Returns:
        the result
      • modulus

        public Value modulus​(Value v)
        Take the modulus with a value and return the result.
        Parameters:
        v - the value to take the modulus with
        Returns:
        the result
      • convertTo

        public final Value convertTo​(int targetType)
        Convert a value to the specified type without taking scale and precision into account.
        Parameters:
        targetType - the type of the returned value
        Returns:
        the converted value
      • convertTo

        public final Value convertTo​(TypeInfo targetType)
        Convert a value to the specified type without taking scale and precision into account.
        Parameters:
        targetType - the type of the returned value
        Returns:
        the converted value
      • convertTo

        public final Value convertTo​(int targetType,
                                     CastDataProvider provider)
        Convert a value to the specified type without taking scale and precision into account.
        Parameters:
        targetType - the type of the returned value
        provider - the cast information provider
        Returns:
        the converted value
      • convertTo

        public final Value convertTo​(TypeInfo targetType,
                                     CastDataProvider provider)
        Convert a value to the specified type without taking scale and precision into account.
        Parameters:
        targetType - the type of the returned value
        provider - the cast information provider
        Returns:
        the converted value
      • convertTo

        public final Value convertTo​(TypeInfo targetType,
                                     CastDataProvider provider,
                                     java.lang.Object column)
        Convert a value to the specified type without taking scale and precision into account.
        Parameters:
        targetType - the type of the returned value
        provider - the cast information provider
        column - the column, used to improve the error message if conversion fails
        Returns:
        the converted value
      • convertToAnyJson

        public final ValueJson convertToAnyJson()
        Convert this value to JSON data type.
        Returns:
        a JSON value
      • convertToAnyArray

        public final ValueArray convertToAnyArray​(CastDataProvider provider)
        Convert this value to any ARRAY data type.
        Parameters:
        provider - the cast information provider
        Returns:
        a row value
      • convertToAnyRow

        public final ValueRow convertToAnyRow()
        Convert this value to any ROW data type.
        Returns:
        a row value
      • castTo

        public final Value castTo​(TypeInfo targetType,
                                  CastDataProvider provider)
        Cast a value to the specified type. The scale is set if applicable. The value is truncated to the required precision.
        Parameters:
        targetType - the type of the returned value
        provider - the cast information provider
        Returns:
        the converted value
      • convertForAssignTo

        public final Value convertForAssignTo​(TypeInfo targetType,
                                              CastDataProvider provider,
                                              java.lang.Object column)
        Cast a value to the specified type for assignment. The scale is set if applicable. If precision is too large an exception is thrown.
        Parameters:
        targetType - the type of the returned value
        provider - the cast information provider
        column - the column, used to improve the error message if conversion fails
        Returns:
        the converted value
      • convertToChar

        public ValueChar convertToChar()
        Converts this value to a CHAR value. May not be called on a NULL value.
        Returns:
        a CHAR value.
      • convertToBoolean

        public final ValueBoolean convertToBoolean()
        Converts this value to a BOOLEAN value. May not be called on a NULL value.
        Returns:
        the BOOLEAN value
      • convertToTinyint

        public final ValueTinyint convertToTinyint​(java.lang.Object column)
        Converts this value to a TINYINT value. May not be called on a NULL value.
        Parameters:
        column - the column, used for to improve the error message if conversion fails
        Returns:
        the TINYINT value
      • convertToSmallint

        public final ValueSmallint convertToSmallint​(java.lang.Object column)
        Converts this value to a SMALLINT value. May not be called on a NULL value.
        Parameters:
        column - the column, used for to improve the error message if conversion fails
        Returns:
        the SMALLINT value
      • convertToInt

        public final ValueInteger convertToInt​(java.lang.Object column)
        Converts this value to INT value. May not be called on a NULL value.
        Parameters:
        column - the column, used for to improve the error message if conversion fails
        Returns:
        the INT value
      • convertToBigint

        public final ValueBigint convertToBigint​(java.lang.Object column)
        Converts this value to a BIGINT value. May not be called on a NULL value.
        Parameters:
        column - the column, used for to improve the error message if conversion fails
        Returns:
        the BIGINT value
      • convertToReal

        public final ValueReal convertToReal()
        Converts this value to a REAL value. May not be called on a NULL value.
        Returns:
        the REAL value
      • convertToDouble

        public final ValueDouble convertToDouble()
        Converts this value to a DOUBLE value. May not be called on a NULL value.
        Returns:
        the DOUBLE value
      • convertToDate

        public final ValueDate convertToDate​(CastDataProvider provider)
        Converts this value to a DATE value. May not be called on a NULL value.
        Parameters:
        provider - the cast information provider
        Returns:
        the DATE value
      • convertToJavaObject

        public final ValueJavaObject convertToJavaObject​(TypeInfo targetType,
                                                         int conversionMode,
                                                         java.lang.Object column)
        Converts this value to a JAVA_OBJECT value. May not be called on a NULL value.
        Parameters:
        targetType - the type of the returned value
        conversionMode - conversion mode
        column - the column (if any), used to improve the error message if conversion fails
        Returns:
        the JAVA_OBJECT value
      • convertToEnum

        public final ValueEnum convertToEnum​(ExtTypeInfoEnum extTypeInfo,
                                             CastDataProvider provider)
        Converts this value to an ENUM value. May not be called on a NULL value.
        Parameters:
        extTypeInfo - the extended data type information
        provider - the cast information provider
        Returns:
        the ENUM value
      • convertToGeometry

        public final ValueGeometry convertToGeometry​(ExtTypeInfoGeometry extTypeInfo)
        Converts this value to a GEOMETRY value. May not be called on a NULL value.
        Parameters:
        extTypeInfo - the extended data type information, or null
        Returns:
        the GEOMETRY value
      • convertToJson

        public ValueJson convertToJson​(TypeInfo targetType,
                                       int conversionMode,
                                       java.lang.Object column)
        Converts this value to a JSON value. May not be called on a NULL value.
        Parameters:
        targetType - the type of the returned value
        conversionMode - conversion mode
        column - the column (if any), used to improve the error message if conversion fails
        Returns:
        the JSON value
      • convertToUuid

        public final ValueUuid convertToUuid()
        Converts this value to a UUID value. May not be called on a NULL value.
        Returns:
        the UUID value
      • compareTypeSafe

        public abstract int compareTypeSafe​(Value v,
                                            CompareMode mode,
                                            CastDataProvider provider)
        Compare this value against another value given that the values are of the same data type.
        Parameters:
        v - the other value
        mode - the compare mode
        provider - the cast information provider
        Returns:
        0 if both values are equal, -1 if the other value is smaller, and 1 otherwise
      • compareTo

        public final int compareTo​(Value v,
                                   CastDataProvider provider,
                                   CompareMode compareMode)
        Compare this value against another value using the specified compare mode.
        Parameters:
        v - the other value
        provider - the cast information provider
        compareMode - the compare mode
        Returns:
        0 if both values are equal, -1 if this value is smaller, and 1 otherwise
      • compareWithNull

        public int compareWithNull​(Value v,
                                   boolean forEquality,
                                   CastDataProvider provider,
                                   CompareMode compareMode)
        Compare this value against another value using the specified compare mode.
        Parameters:
        v - the other value
        forEquality - perform only check for equality
        provider - the cast information provider
        compareMode - the compare mode
        Returns:
        0 if both values are equal, -1 if this value is smaller, 1 if other value is larger, Integer.MIN_VALUE if order is not defined due to NULL comparison
      • containsNull

        public boolean containsNull()
        Returns true if this value is NULL or contains NULL value.
        Returns:
        true if this value is NULL or contains NULL value
      • getValueWithFirstNull

        public Value getValueWithFirstNull​(Value v)
        Scans this and specified values until a first NULL occurrence and returns a value where NULL appears earlier, or null if these two values have first NULL on the same position.
        Parameters:
        v - a value of the same data type as this value, must be neither equal to nor smaller than nor greater than this value
        Returns:
        this value, the specified value, or null
      • convertToInt

        public static int convertToInt​(long x,
                                       java.lang.Object column)
        Convert to integer, throwing exception if out of range.
        Parameters:
        x - integer value.
        column - Column info.
        Returns:
        x
      • convertToLong

        public static long convertToLong​(java.math.BigDecimal x,
                                         java.lang.Object column)
        Convert to long, throwing exception if out of range.
        Parameters:
        x - long value.
        column - Column info.
        Returns:
        x
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • getUnsupportedExceptionForOperation

        protected final DbException getUnsupportedExceptionForOperation​(java.lang.String op)
        Create an exception meaning the specified operation is not supported for this data type.
        Parameters:
        op - the operation
        Returns:
        the exception
      • charLength

        public long charLength()
        Returns length of this value in characters.
        Returns:
        length of this value in characters
        Throws:
        java.lang.NullPointerException - if this value is NULL
      • octetLength

        public long octetLength()
        Returns length of this value in bytes.
        Returns:
        length of this value in bytes
        Throws:
        java.lang.NullPointerException - if this value is NULL
      • isTrue

        public final boolean isTrue()
        Returns whether this value IS TRUE.
        Returns:
        true if it is. For BOOLEAN values returns true for TRUE and false for FALSE and UNKNOWN (NULL).
        See Also:
        getBoolean(), isFalse()
      • isFalse

        public final boolean isFalse()
        Returns whether this value IS FALSE.
        Returns:
        true if it is. For BOOLEAN values returns true for FALSE and false for TRUE and UNKNOWN (NULL).
        See Also:
        getBoolean(), isTrue()