Class DataType

    • Constructor Summary

      Constructors 
      Constructor Description
      DataType()  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void checkHostVariable​(int declaredLength)
      Check the value to seem if it conforms to the restrictions imposed by DB2/JCC on host variables for this type.
      DataValueDescriptor cloneHolder()
      Default implementation of shallow cloning, which forwards to the deep clone method.
      DataValueDescriptor coalesce​(DataValueDescriptor[] argumentsList, DataValueDescriptor returnValue)
      The SQL language COALESCE/VALUE function.
      boolean compare​(int op, DataValueDescriptor other, boolean orderedNulls, boolean unknownRV)
      Compare this Orderable with a given Orderable for the purpose of qualification and sorting.
      boolean compare​(int op, DataValueDescriptor other, boolean orderedNulls, boolean nullsOrderedLow, boolean unknownRV)
      Compare this Orderable with another, with configurable null ordering.
      int compare​(DataValueDescriptor other, boolean nullsOrderedLow)
      Compare this Orderable with another, with configurable null ordering.
      int compareTo​(java.lang.Object otherDVD)
      Wrapper method for the "compare(DataValueDescriptor)" method of this class.
      protected StandardException dataTypeConversion​(java.lang.String targetType)
      Return an conversion exception from this type to another.
      boolean equals​(java.lang.Object other)  
      BooleanDataValue equals​(DataValueDescriptor left, DataValueDescriptor right)
      The = operator as called from the language module, as opposed to the storage module.
      protected static int flip​(int operator)
      Flip the operator used in a comparison (< -> >).
      (package private) void genericSetObject​(java.lang.Object theValue)  
      boolean getBoolean()
      Gets the value in the data value descriptor as a boolean.
      byte getByte()
      Gets the value in the data value descriptor as a byte.
      byte[] getBytes()
      Gets the value in the data value descriptor as a byte[].
      java.sql.Date getDate​(java.util.Calendar cal)
      Gets the value in the data value descriptor as a java.sql.Date.
      double getDouble()
      Gets the value in the data value descriptor as a double.
      float getFloat()
      Gets the value in the data value descriptor as a float.
      int getInt()
      Gets the value in the data value descriptor as a int.
      long getLong()
      Gets the value in the data value descriptor as a long.
      java.lang.Object getObject()
      Gets the value in the data value descriptor as a int.
      short getShort()
      Gets the value in the data value descriptor as a short.
      java.io.InputStream getStream()
      Gets the value in the data stream descriptor as an InputStream.
      java.sql.Time getTime​(java.util.Calendar cal)
      Gets the value in the data value descriptor as a java.sql.Time.
      java.sql.Timestamp getTimestamp​(java.util.Calendar cal)
      Gets the value in the data value descriptor as a java.sql.Timestamp.
      java.lang.String getTraceString()
      Gets the value in the data stream descriptor as a trace string.
      (package private) java.lang.String getTypeName​(java.lang.String className)
      Get the type name of this value, possibly overriding with the passed in class name (for user/java types).
      BooleanDataValue greaterOrEquals​(DataValueDescriptor left, DataValueDescriptor right)
      The >= operator as called from the language module, as opposed to the storage module.
      BooleanDataValue greaterThan​(DataValueDescriptor left, DataValueDescriptor right)
      The > operator as called from the language module, as opposed to the storage module.
      boolean hasStream()
      Tells that the value isn't represented as a stream, which is true for most Derby data types.
      BooleanDataValue in​(DataValueDescriptor left, DataValueDescriptor[] inList, boolean orderedList)
      The SQL language IN operator.
      protected StandardException invalidFormat()
      Return an out of range exception for this type.
      BooleanDataValue isNotNull()
      The is not null operator as called from the language module, as opposed to the storage module.
      BooleanDataValue isNullOp()
      The is null operator as called from the language module, as opposed to the storage module.
      BooleanDataValue lessOrEquals​(DataValueDescriptor left, DataValueDescriptor right)
      The <= operator as called from the language module, as opposed to the storage module.
      BooleanDataValue lessThan​(DataValueDescriptor left, DataValueDescriptor right)
      The < operator as called from the language module, as opposed to the storage module.
      void normalize​(DataTypeDescriptor desiredType, DataValueDescriptor source)
      Default normalization method.
      BooleanDataValue notEquals​(DataValueDescriptor left, DataValueDescriptor right)
      The <> operator as called from the language module, as opposed to the storage module.
      protected StandardException outOfRange()
      Return an out of range exception for this type.
      void readExternalFromArray​(ArrayInputStream in)
      Read the DataValueDescriptor from the stream.
      DataValueDescriptor recycle()
      Recycle this DataType object.
      void setBigDecimal​(java.math.BigDecimal bigDecimal)
      Only to be called when the application sets a value using BigDecimal
      protected void setFrom​(DataValueDescriptor dvd)
      Set the value of this DataValueDescriptor based on the value of the specified DataValueDescriptor.
      void setInto​(java.sql.PreparedStatement ps, int position)
      Set this value into a PreparedStatement.
      void setInto​(java.sql.ResultSet rs, int position)
      Set this value into a ResultSet for a subsequent ResultSet.insertRow or ResultSet.updateRow.
      (package private) void setObject​(java.lang.Object theValue)
      Set the value from an non-null object.
      void setObjectForCast​(java.lang.Object theValue, boolean instanceOfResultType, java.lang.String resultTypeClassName)
      Set this value from an Object.
      void setToNull()
      Set the value to SQL null.
      void setValue​(boolean theValue)
      Set the value.
      void setValue​(byte theValue)
      Set the value of this DataValueDescriptor to the given byte value At DataType level just throws an error lower classes will override
      void setValue​(byte[] theValue)
      Set the value of this DataValueDescriptor.
      void setValue​(double theValue)
      Set the value of this DataValueDescriptor to the given double value At DataType level just throws an error lower classes will override
      void setValue​(float theValue)
      Set the value of this DataValueDescriptor to the given float value At DataType level just throws an error lower classes will override
      void setValue​(int theValue)
      Set the value of this DataValueDescriptor to the given int value At DataType level just throws an error lower classes will override
      void setValue​(long theValue)
      Set the value of this DataValueDescriptor to the given long value At DataType level just throws an error lower classes will override
      void setValue​(short theValue)
      Set the value of this DataValueDescriptor to the given short value At DataType level just throws an error lower classes will override
      void setValue​(java.io.InputStream theStream, int valueLength)
      Set the value to be the contents of the stream.
      void setValue​(java.lang.Object theValue)
      Set the value of this DataValueDescriptor.
      void setValue​(java.lang.String theValue)
      Set the value of this DataValueDescriptor.
      void setValue​(java.sql.Blob theValue)
      Set the value of this DataValueDescriptor.
      void setValue​(java.sql.Clob theValue)
      Set the value of this DataValueDescriptor.
      void setValue​(java.sql.Date theValue)
      Set the value of this DataValueDescriptor.
      void setValue​(java.sql.Date theValue, java.util.Calendar cal)
      Set the value of this DataValueDescriptor.
      void setValue​(java.sql.Time theValue)
      Set the value of this DataValueDescriptor.
      void setValue​(java.sql.Time theValue, java.util.Calendar cal)
      Set the value of this DataValueDescriptor.
      void setValue​(java.sql.Timestamp theValue)
      Set the value of this DataValueDescriptor.
      void setValue​(java.sql.Timestamp theValue, java.util.Calendar cal)
      Set the value of this DataValueDescriptor.
      void setValue​(DataValueDescriptor dvd)
      Set the value of this DataValueDescriptor from another.
      void throwLangSetMismatch​(java.lang.Object value)  
      (package private) void throwLangSetMismatch​(java.lang.String argTypeName)  
      int typePrecedence()
      Each built-in type in JSQL has a precedence.
      int typeToBigDecimal()
      How should this value be obtained so that it can be converted to a BigDecimal representation.
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.io.Externalizable

        readExternal, writeExternal
    • Constructor Detail

      • DataType

        public DataType()
    • Method Detail

      • getBoolean

        public boolean getBoolean()
                           throws StandardException
        Gets the value in the data value descriptor as a boolean. Throws an exception if the data value is not receivable as a boolean.
        Specified by:
        getBoolean in interface DataValueDescriptor
        Returns:
        The data value as a boolean.
        Throws:
        StandardException - Thrown on error
      • getByte

        public byte getByte()
                     throws StandardException
        Gets the value in the data value descriptor as a byte. Throws an exception if the data value is not receivable as a byte.
        Specified by:
        getByte in interface DataValueDescriptor
        Returns:
        The data value as a byte.
        Throws:
        StandardException - Thrown on error
      • getShort

        public short getShort()
                       throws StandardException
        Gets the value in the data value descriptor as a short. Throws an exception if the data value is not receivable as a short.
        Specified by:
        getShort in interface DataValueDescriptor
        Returns:
        The data value as a short.
        Throws:
        StandardException - Thrown on error
      • getInt

        public int getInt()
                   throws StandardException
        Gets the value in the data value descriptor as a int. Throws an exception if the data value is not receivable as a int.
        Specified by:
        getInt in interface DataValueDescriptor
        Returns:
        The data value as a int.
        Throws:
        StandardException - Thrown on error
      • getLong

        public long getLong()
                     throws StandardException
        Gets the value in the data value descriptor as a long. Throws an exception if the data value is not receivable as a long.
        Specified by:
        getLong in interface DataValueDescriptor
        Returns:
        The data value as a long.
        Throws:
        StandardException - Thrown on error
      • getFloat

        public float getFloat()
                       throws StandardException
        Gets the value in the data value descriptor as a float. Throws an exception if the data value is not receivable as a float.
        Specified by:
        getFloat in interface DataValueDescriptor
        Returns:
        The data value as a float.
        Throws:
        StandardException - Thrown on error
      • getDouble

        public double getDouble()
                         throws StandardException
        Gets the value in the data value descriptor as a double. Throws an exception if the data value is not receivable as a double.
        Specified by:
        getDouble in interface DataValueDescriptor
        Returns:
        The data value as a double.
        Throws:
        StandardException - Thrown on error
      • typeToBigDecimal

        public int typeToBigDecimal()
                             throws StandardException
        Description copied from interface: DataValueDescriptor
        How should this value be obtained so that it can be converted to a BigDecimal representation.
        Specified by:
        typeToBigDecimal in interface DataValueDescriptor
        Returns:
        Types.CHAR for String conversion through getString Types.DECIMAL for BigDecimal through getObject or Types.BIGINT for long conversion through getLong
        Throws:
        StandardException - Conversion is not possible
      • getBytes

        public byte[] getBytes()
                        throws StandardException
        Gets the value in the data value descriptor as a byte[]. Throws an exception if the data value is not receivable as a Binary or Varbinary.
        Specified by:
        getBytes in interface DataValueDescriptor
        Returns:
        The Binary value as a byte[].
        Throws:
        StandardException - Thrown on error
      • getDate

        public java.sql.Date getDate​(java.util.Calendar cal)
                              throws StandardException
        Gets the value in the data value descriptor as a java.sql.Date. Throws an exception if the data value is not receivable as a Date.
        Specified by:
        getDate in interface DataValueDescriptor
        Parameters:
        cal - calendar for object creation
        Returns:
        The data value as a java.sql.Date.
        Throws:
        StandardException - Thrown on error
      • getTime

        public java.sql.Time getTime​(java.util.Calendar cal)
                              throws StandardException
        Gets the value in the data value descriptor as a java.sql.Time. Throws an exception if the data value is not receivable as a Time.
        Specified by:
        getTime in interface DataValueDescriptor
        Parameters:
        cal - calendar for object creation
        Returns:
        The data value as a java.sql.Time.
        Throws:
        StandardException - Thrown on error
      • getTimestamp

        public java.sql.Timestamp getTimestamp​(java.util.Calendar cal)
                                        throws StandardException
        Gets the value in the data value descriptor as a java.sql.Timestamp. Throws an exception if the data value is not receivable as a Timestamp.
        Specified by:
        getTimestamp in interface DataValueDescriptor
        Parameters:
        cal - calendar for object creation
        Returns:
        The data value as a java.sql.Timestamp.
        Throws:
        StandardException - Thrown on error
      • readExternalFromArray

        public void readExternalFromArray​(ArrayInputStream in)
                                   throws java.io.IOException,
                                          java.lang.ClassNotFoundException
        Read the DataValueDescriptor from the stream. The default implementation calls readExternal(), which accesses the ArrayInputStream as a generic stream. If sub-classes can implement it more efficiently by accessing the array, they should override this method.
        Specified by:
        readExternalFromArray in interface DataValueDescriptor
        Parameters:
        in - The array stream positioned at the beginning of the byte stream to read from.
        Throws:
        java.io.IOException - Usual error is if you try to read past limit on the stream.
        java.lang.ClassNotFoundException - If a necessary class can not be found while reading the object from the stream.
        See Also:
        DataValueDescriptor.readExternalFromArray(org.apache.derby.iapi.services.io.ArrayInputStream), Externalizable.readExternal(java.io.ObjectInput)
      • isNullOp

        public final BooleanDataValue isNullOp()
        The is null operator as called from the language module, as opposed to the storage module.
        Specified by:
        isNullOp in interface DataValueDescriptor
        Returns:
        A SQL boolean value telling whether the operand is null
      • isNotNull

        public final BooleanDataValue isNotNull()
        The is not null operator as called from the language module, as opposed to the storage module.
        Specified by:
        isNotNull in interface DataValueDescriptor
        Returns:
        A SQL boolean value telling whether the operand is not null
      • setValue

        public void setValue​(java.sql.Time theValue)
                      throws StandardException
        Set the value of this DataValueDescriptor. At DataType level just throws an error lower classes will override
        Specified by:
        setValue in interface DataValueDescriptor
        Parameters:
        theValue - The Time value to set this DataValueDescriptor to
        Throws:
        StandardException
      • setValue

        public void setValue​(java.sql.Time theValue,
                             java.util.Calendar cal)
                      throws StandardException
        Set the value of this DataValueDescriptor. At DataType level just throws an error lower classes will override
        Specified by:
        setValue in interface DataValueDescriptor
        Parameters:
        theValue - The Time value to set this DataValueDescriptor to
        cal - The time zone from the calendar is used to construct the database time value
        Throws:
        StandardException
      • setValue

        public void setValue​(java.sql.Timestamp theValue)
                      throws StandardException
        Set the value of this DataValueDescriptor. At DataType level just throws an error lower classes will override
        Specified by:
        setValue in interface DataValueDescriptor
        Parameters:
        theValue - The Timestamp value to set this DataValueDescriptor to
        Throws:
        StandardException
      • setValue

        public void setValue​(java.sql.Timestamp theValue,
                             java.util.Calendar cal)
                      throws StandardException
        Set the value of this DataValueDescriptor. At DataType level just throws an error lower classes will override
        Specified by:
        setValue in interface DataValueDescriptor
        Parameters:
        theValue - The Timestamp value to set this DataValueDescriptor to
        cal - The time zone from the calendar is used to construct the database timestamp value
        Throws:
        StandardException
      • setValue

        public void setValue​(java.sql.Date theValue)
                      throws StandardException
        Set the value of this DataValueDescriptor. At DataType level just throws an error lower classes will override
        Specified by:
        setValue in interface DataValueDescriptor
        Parameters:
        theValue - The Date value to set this DataValueDescriptor to
        Throws:
        StandardException
      • setValue

        public void setValue​(java.sql.Date theValue,
                             java.util.Calendar cal)
                      throws StandardException
        Set the value of this DataValueDescriptor. At DataType level just throws an error lower classes will override
        Specified by:
        setValue in interface DataValueDescriptor
        Parameters:
        theValue - The Date value to set this DataValueDescriptor to
        cal - The time zone from the calendar is used to construct the database date value
        Throws:
        StandardException
      • setValue

        public void setValue​(java.lang.Object theValue)
                      throws StandardException
        Set the value of this DataValueDescriptor. At DataType level just throws an error lower classes will override
        Specified by:
        setValue in interface DataValueDescriptor
        Parameters:
        theValue - The Object value to set this DataValueDescriptor to
        Throws:
        StandardException - Thrown on error
      • setValue

        public void setValue​(java.lang.String theValue)
                      throws StandardException
        Set the value of this DataValueDescriptor. At DataType level just throws an error lower classes will override
        Specified by:
        setValue in interface DataValueDescriptor
        Parameters:
        theValue - The BigDecimal value to set this DataValueDescriptor to
        Throws:
        StandardException
      • setValue

        public void setValue​(java.sql.Blob theValue)
                      throws StandardException
        Set the value of this DataValueDescriptor. At DataType level just throws an error lower classes will override
        Specified by:
        setValue in interface DataValueDescriptor
        Parameters:
        theValue - The Blob value to set this DataValueDescriptor to
        Throws:
        StandardException
      • setValue

        public void setValue​(java.sql.Clob theValue)
                      throws StandardException
        Set the value of this DataValueDescriptor. At DataType level just throws an error lower classes will override
        Specified by:
        setValue in interface DataValueDescriptor
        Parameters:
        theValue - The Clob value to set this DataValueDescriptor to
        Throws:
        StandardException
      • setValue

        public void setValue​(int theValue)
                      throws StandardException
        Set the value of this DataValueDescriptor to the given int value At DataType level just throws an error lower classes will override
        Specified by:
        setValue in interface DataValueDescriptor
        Parameters:
        theValue - The value to set this DataValueDescriptor to
        Throws:
        StandardException - Thrown on error
      • setValue

        public void setValue​(double theValue)
                      throws StandardException
        Set the value of this DataValueDescriptor to the given double value At DataType level just throws an error lower classes will override
        Specified by:
        setValue in interface DataValueDescriptor
        Parameters:
        theValue - The value to set this DataValueDescriptor to
        Throws:
        StandardException - Thrown on error
      • setValue

        public void setValue​(float theValue)
                      throws StandardException
        Set the value of this DataValueDescriptor to the given float value At DataType level just throws an error lower classes will override
        Specified by:
        setValue in interface DataValueDescriptor
        Parameters:
        theValue - The value to set this DataValueDescriptor to
        Throws:
        StandardException - Thrown on error
      • setValue

        public void setValue​(short theValue)
                      throws StandardException
        Set the value of this DataValueDescriptor to the given short value At DataType level just throws an error lower classes will override
        Specified by:
        setValue in interface DataValueDescriptor
        Parameters:
        theValue - The value to set this DataValueDescriptor to
        Throws:
        StandardException - Thrown on error
      • setValue

        public void setValue​(long theValue)
                      throws StandardException
        Set the value of this DataValueDescriptor to the given long value At DataType level just throws an error lower classes will override
        Specified by:
        setValue in interface DataValueDescriptor
        Parameters:
        theValue - The value to set this DataValueDescriptor to
        Throws:
        StandardException - Thrown on error
      • setValue

        public void setValue​(byte theValue)
                      throws StandardException
        Set the value of this DataValueDescriptor to the given byte value At DataType level just throws an error lower classes will override
        Specified by:
        setValue in interface DataValueDescriptor
        Parameters:
        theValue - The value to set this DataValueDescriptor to
        Throws:
        StandardException - Thrown on error
      • setValue

        public void setValue​(boolean theValue)
                      throws StandardException
        Set the value. At DataType level just throws an error lower classes will override
        Specified by:
        setValue in interface DataValueDescriptor
        Parameters:
        theValue - Contains the boolean value to set this to
        Throws:
        StandardException
      • setValue

        public void setValue​(byte[] theValue)
                      throws StandardException
        Set the value of this DataValueDescriptor. At DataType level just throws an error lower classes will override
        Specified by:
        setValue in interface DataValueDescriptor
        Parameters:
        theValue - The byte value to set this DataValueDescriptor to
        Throws:
        StandardException
      • setFrom

        protected void setFrom​(DataValueDescriptor dvd)
                        throws StandardException
        Set the value of this DataValueDescriptor based on the value of the specified DataValueDescriptor.
        Parameters:
        dvd - The DataValueDescriptor that holds the value to which we want to set this DataValueDescriptor's value.
        Throws:
        StandardException
      • setObjectForCast

        public void setObjectForCast​(java.lang.Object theValue,
                                     boolean instanceOfResultType,
                                     java.lang.String resultTypeClassName)
                              throws StandardException
        Description copied from interface: DataValueDescriptor
        Set this value from an Object. Used from CAST of a Java type to another type, including SQL types. If the passed instanceOfResultType is false then the object is not an instance of the declared type resultTypeClassName. Usually an exception should be thrown.
        Specified by:
        setObjectForCast in interface DataValueDescriptor
        Parameters:
        theValue - The new value
        instanceOfResultType - Whether or not the new value is an instanceof the result type.
        resultTypeClassName - The class name of the resulting (declared) type (for error messages only).
        Throws:
        StandardException - thrown on failure
        See Also:
        DataValueDescriptor.setObjectForCast(java.lang.Object, boolean, java.lang.String)
      • setObject

        void setObject​(java.lang.Object theValue)
                throws StandardException
        Set the value from an non-null object. Usually overridden. This implementation throws an exception. The object will have been correctly typed from the call to setObjectForCast.
        Throws:
        StandardException
      • getTypeName

        java.lang.String getTypeName​(java.lang.String className)
        Get the type name of this value, possibly overriding with the passed in class name (for user/java types).
        Parameters:
        className -
      • getObject

        public java.lang.Object getObject()
                                   throws StandardException
        Gets the value in the data value descriptor as a int. Throws an exception if the data value is not receivable as a int.
        Specified by:
        getObject in interface DataValueDescriptor
        Returns:
        The data value as a int.
        Throws:
        StandardException - Thrown on error
      • cloneHolder

        public DataValueDescriptor cloneHolder()
        Default implementation of shallow cloning, which forwards to the deep clone method.

        For many of the data types, a shallow clone will be the same as a deep clone. The data types requiring special handling of shallow clones have to override this method (for instance types whose value can be represented as a stream).

        Specified by:
        cloneHolder in interface DataValueDescriptor
        Returns:
        A shallow clone.
      • setInto

        public void setInto​(java.sql.PreparedStatement ps,
                            int position)
                     throws java.sql.SQLException,
                            StandardException
        Description copied from interface: DataValueDescriptor
        Set this value into a PreparedStatement. This method must handle setting NULL into the PreparedStatement.
        Specified by:
        setInto in interface DataValueDescriptor
        Throws:
        java.sql.SQLException - thrown by the PreparedStatement object
        StandardException - thrown by me accessing my value.
      • setInto

        public void setInto​(java.sql.ResultSet rs,
                            int position)
                     throws java.sql.SQLException,
                            StandardException
        Set this value into a ResultSet for a subsequent ResultSet.insertRow or ResultSet.updateRow. This method will only be called for non-null values.
        Specified by:
        setInto in interface DataValueDescriptor
        Throws:
        java.sql.SQLException - thrown by the ResultSet object
        StandardException - thrown by me accessing my value.
      • typePrecedence

        public int typePrecedence()
        Each built-in type in JSQL has a precedence. This precedence determines how to do type promotion when using binary operators. For example, float has a higher precedence than int, so when adding an int to a float, the result type is float. The precedence for some types is arbitrary. For example, it doesn't matter what the precedence of the boolean type is, since it can't be mixed with other types. But the precedence for the number types is critical. The SQL standard requires that exact numeric types be promoted to approximate numeric when one operator uses both. Also, the precedence is arranged so that one will not lose precision when promoting a type.
        Specified by:
        typePrecedence in interface DataValueDescriptor
        Returns:
        The precedence of this type.
      • compare

        public boolean compare​(int op,
                               DataValueDescriptor other,
                               boolean orderedNulls,
                               boolean unknownRV)
                        throws StandardException
        Description copied from interface: DataValueDescriptor
        Compare this Orderable with a given Orderable for the purpose of qualification and sorting. The caller gets to determine how nulls should be treated - they can either be ordered values or unknown values.
        Specified by:
        compare in interface DataValueDescriptor
        Parameters:
        op - Orderable.ORDER_OP_EQUALS means do an = comparison. Orderable.ORDER_OP_LESSTHAN means compare this < other. Orderable.ORDER_OP_LESSOREQUALS means compare this <= other.
        other - The DataValueDescriptor to compare this one to.
        orderedNulls - True means to treat nulls as ordered values, that is, treat SQL null as equal to null, and less than all other values. False means to treat nulls as unknown values, that is, the result of any comparison with a null is the UNKNOWN truth value.
        unknownRV - The return value to use if the result of the comparison is the UNKNOWN truth value. In other words, if orderedNulls is false, and a null is involved in the comparison, return unknownRV. This parameter is not used orderedNulls is true.
        Returns:
        true if the comparison is true (duh!)
        Throws:
        StandardException - Thrown on error
      • compare

        public boolean compare​(int op,
                               DataValueDescriptor other,
                               boolean orderedNulls,
                               boolean nullsOrderedLow,
                               boolean unknownRV)
                        throws StandardException
        Compare this Orderable with another, with configurable null ordering. The caller gets to determine how nulls should be treated - they can either be ordered values or unknown values. The caller also gets to decide, if they are ordered, whether they should be lower than non-NULL values, or higher
        Specified by:
        compare in interface DataValueDescriptor
        Parameters:
        op - Orderable.ORDER_OP_EQUALS means do an = comparison. Orderable.ORDER_OP_LESSTHAN means compare this < other. Orderable.ORDER_OP_LESSOREQUALS means compare this <= other.
        other - The DataValueDescriptor to compare this one to.
        orderedNulls - True means to treat nulls as ordered values, that is, treat SQL null as equal to null, and either greater or less than all other values. False means to treat nulls as unknown values, that is, the result of any comparison with a null is the UNKNOWN truth value.
        nullsOrderedLow - True means NULL less than non-NULL, false means NULL greater than non-NULL. Only relevant if orderedNulls is true.
        unknownRV - The return value to use if the result of the comparison is the UNKNOWN truth value. In other words, if orderedNulls is false, and a null is involved in the comparison, return unknownRV. This parameter is not used orderedNulls is true.
        Returns:
        true if the comparison is true (duh!)
        Throws:
        StandardException - Thrown on error
      • compare

        public int compare​(DataValueDescriptor other,
                           boolean nullsOrderedLow)
                    throws StandardException
        Compare this Orderable with another, with configurable null ordering. This method treats nulls as ordered values, but allows the caller to specify whether they should be lower than all non-NULL values, or higher than all non-NULL values.
        Specified by:
        compare in interface DataValueDescriptor
        Parameters:
        other - The Orderable to compare this one to. % @param nullsOrderedLow True if null should be lower than non-NULL
        Returns:
        <0 - this Orderable is less than other. 0 - this Orderable equals other. >0 - this Orderable is greater than other. The code should not explicitly look for -1, or 1.
        Throws:
        StandardException - Thrown on error
      • compareTo

        public int compareTo​(java.lang.Object otherDVD)
        Wrapper method for the "compare(DataValueDescriptor)" method of this class. Allows sorting of an array of DataValueDescriptors using the JVMs own sorting algorithm. Currently used for execution-time sorting of IN-list values to allow proper handling (i.e. elimination) of duplicates.
        Specified by:
        compareTo in interface java.lang.Comparable
        See Also:
        Comparable.compareTo(T)
      • flip

        protected static int flip​(int operator)
        Flip the operator used in a comparison (< -> >). This is useful when flipping a comparison due to type precedence.
        Parameters:
        operator - The operator to flip.
        Returns:
        The flipped operator.
      • equals

        public boolean equals​(java.lang.Object other)
        Overrides:
        equals in class java.lang.Object
      • setValue

        public void setValue​(java.io.InputStream theStream,
                             int valueLength)
                      throws StandardException
        Description copied from interface: DataValueDescriptor
        Set the value to be the contents of the stream.

        The reading of the stream may be delayed until execution time, and the format of the stream is required to be the format of this type.

        Note that the logical length excludes any header bytes and marker bytes (for instance the Derby specific EOF stream marker). Specifying the logical length may improve performance in some cases, but specifying that the length is unknown (UNKNOWN_LOGICAL_LENGTH should always leave the system in a functional state. Specifying an incorrect length will cause errors.

        Specified by:
        setValue in interface DataValueDescriptor
        Parameters:
        theStream - stream of correctly formatted data
        valueLength - logical length of the stream's value in units of this type (e.g. chars for string types), or UNKNOWN_LOGICAL_LENGTH if the logical length is unknown
        Throws:
        StandardException
      • dataTypeConversion

        protected final StandardException dataTypeConversion​(java.lang.String targetType)
        Return an conversion exception from this type to another.
      • outOfRange

        protected final StandardException outOfRange()
        Return an out of range exception for this type.
      • invalidFormat

        protected final StandardException invalidFormat()
        Return an out of range exception for this type.