Package org.apache.derby.iapi.types
Class UserType
- java.lang.Object
-
- org.apache.derby.iapi.types.DataType
-
- org.apache.derby.iapi.types.UserType
-
- All Implemented Interfaces:
java.io.Externalizable,java.io.Serializable,java.lang.Comparable,Formatable,Storable,TypedFormat,DataValueDescriptor,Orderable,UserDataValue
- Direct Known Subclasses:
UTF
public class UserType extends DataType implements UserDataValue
This contains an instance of a user-defined type, that is, a java object.- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private static intBASE_MEMORY_USAGEprivate java.lang.Objectvalue-
Fields inherited from interface org.apache.derby.iapi.types.DataValueDescriptor
UNKNOWN_LOGICAL_LENGTH
-
Fields inherited from interface org.apache.derby.iapi.types.Orderable
ORDER_OP_EQUALS, ORDER_OP_GREATEROREQUALS, ORDER_OP_GREATERTHAN, ORDER_OP_LESSOREQUALS, ORDER_OP_LESSTHAN
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description DataValueDescriptorcloneValue(boolean forceMaterialization)Clone this DataValueDescriptor.booleancompare(int op, DataValueDescriptor other, boolean orderedNulls, boolean unknownRV)Compare this Orderable with a given Orderable for the purpose of qualification and sorting.intcompare(DataValueDescriptor other)Orderable interfaceBooleanDataValueequals(DataValueDescriptor left, DataValueDescriptor right)The = operator as called from the language module, as opposed to the storage module.intestimateMemoryUsage()Estimate the memory usage in bytes of the data value and the overhead of the class.booleangetBoolean()Gets the value in the data value descriptor as a boolean.bytegetByte()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.DategetDate(java.util.Calendar cal)Gets the value in the data value descriptor as a java.sql.Date.doublegetDouble()Gets the value in the data value descriptor as a double.floatgetFloat()Gets the value in the data value descriptor as a float.intgetInt()Gets the value in the data value descriptor as a int.intgetLength()Gets the length of the data value.longgetLong()Gets the value in the data value descriptor as a long.DataValueDescriptorgetNewNull()Get a new null value of the same type as this data value.java.lang.ObjectgetObject()Gets the value in the data value descriptor as a int.shortgetShort()Gets the value in the data value descriptor as a short.java.lang.StringgetString()Gets the value in the data value descriptor as a String.java.sql.TimegetTime(java.util.Calendar cal)Gets the value in the data value descriptor as a java.sql.Time.java.sql.TimestampgetTimestamp(java.util.Calendar cal)Gets the value in the data value descriptor as a java.sql.Timestamp.intgetTypeFormatId()Return my format identifier.java.lang.StringgetTypeName()Get the SQL name of the datatype(package private) java.lang.StringgetTypeName(java.lang.String className)Get the type name of this value, overriding with the passed in class name (for user/java types).inthashCode()booleanisNull()Check if the value is null.BooleanDataValuenotEquals(DataValueDescriptor left, DataValueDescriptor right)The <> operator as called from the language module, as opposed to the storage module.voidreadExternal(java.io.ObjectInput in)voidrestoreToNull()Restore this object to its (SQL)null value.voidsetBigDecimal(java.math.BigDecimal theValue)Only to be called when the application sets a value using BigDecimalprotected voidsetFrom(DataValueDescriptor theValue)Set the value of this DataValueDescriptor based on the value of the specified DataValueDescriptor.(package private) voidsetObject(java.lang.Object theValue)Set the value from an non-null object.voidsetValue(java.lang.Object value)Set the value of this DataValueDescriptor.voidsetValue(java.lang.String theValue)Set the value of this DataValueDescriptor.voidsetValueFromResultSet(java.sql.ResultSet resultSet, int colNumber, boolean isNullable)Set the value based on the value for the specified DataValueDescriptor from the specified ResultSet.java.lang.StringtoString()inttypePrecedence()Each built-in type in JSQL has a precedence.voidwriteExternal(java.io.ObjectOutput out)-
Methods inherited from class org.apache.derby.iapi.types.DataType
checkHostVariable, cloneHolder, coalesce, compare, compare, compareTo, dataTypeConversion, equals, flip, genericSetObject, getStream, getTraceString, greaterOrEquals, greaterThan, hasStream, in, invalidFormat, isNotNull, isNullOp, lessOrEquals, lessThan, normalize, outOfRange, readExternalFromArray, recycle, setInto, setInto, setObjectForCast, setToNull, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, throwLangSetMismatch, throwLangSetMismatch, typeToBigDecimal
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.derby.iapi.types.DataValueDescriptor
checkHostVariable, cloneHolder, coalesce, compare, compare, getStream, getTraceString, greaterOrEquals, greaterThan, hasStream, in, isNotNull, isNullOp, lessOrEquals, lessThan, normalize, readExternalFromArray, recycle, setInto, setInto, setObjectForCast, setToNull, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, typeToBigDecimal
-
-
-
-
Method Detail
-
estimateMemoryUsage
public int estimateMemoryUsage()
Description copied from interface:DataValueDescriptorEstimate the memory usage in bytes of the data value and the overhead of the class.- Specified by:
estimateMemoryUsagein interfaceDataValueDescriptor- Returns:
- the estimated memory usage
-
getString
public java.lang.String getString()
Description copied from interface:DataValueDescriptorGets the value in the data value descriptor as a String. Throws an exception if the data value is not a string.- Specified by:
getStringin interfaceDataValueDescriptor- Returns:
- The data value as a String.
-
getBoolean
public boolean getBoolean() throws StandardExceptionDescription copied from class:DataTypeGets 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:
getBooleanin interfaceDataValueDescriptor- Overrides:
getBooleanin classDataType- Returns:
- The data value as a boolean.
- Throws:
StandardException- thrown on failure to convert
-
getByte
public byte getByte() throws StandardExceptionDescription copied from class:DataTypeGets 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:
getBytein interfaceDataValueDescriptor- Overrides:
getBytein classDataType- Returns:
- The data value as a byte.
- Throws:
StandardException- thrown on failure to convert
-
getShort
public short getShort() throws StandardExceptionDescription copied from class:DataTypeGets 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:
getShortin interfaceDataValueDescriptor- Overrides:
getShortin classDataType- Returns:
- The data value as a short.
- Throws:
StandardException- thrown on failure to convert
-
getInt
public int getInt() throws StandardExceptionDescription copied from class:DataTypeGets 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:
getIntin interfaceDataValueDescriptor- Overrides:
getIntin classDataType- Returns:
- The data value as a int.
- Throws:
StandardException- thrown on failure to convert
-
getLong
public long getLong() throws StandardExceptionDescription copied from class:DataTypeGets 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:
getLongin interfaceDataValueDescriptor- Overrides:
getLongin classDataType- Returns:
- The data value as a long.
- Throws:
StandardException- thrown on failure to convert
-
getFloat
public float getFloat() throws StandardExceptionDescription copied from class:DataTypeGets 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:
getFloatin interfaceDataValueDescriptor- Overrides:
getFloatin classDataType- Returns:
- The data value as a float.
- Throws:
StandardException- thrown on failure to convert
-
getDouble
public double getDouble() throws StandardExceptionDescription copied from class:DataTypeGets 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:
getDoublein interfaceDataValueDescriptor- Overrides:
getDoublein classDataType- Returns:
- The data value as a double.
- Throws:
StandardException- thrown on failure to convert
-
getBytes
public byte[] getBytes() throws StandardExceptionDescription copied from class:DataTypeGets 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:
getBytesin interfaceDataValueDescriptor- Overrides:
getBytesin classDataType- Returns:
- The Binary value as a byte[].
- Throws:
StandardException- thrown on failure to convert
-
getDate
public java.sql.Date getDate(java.util.Calendar cal) throws StandardExceptionDescription copied from class:DataTypeGets 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:
getDatein interfaceDataValueDescriptor- Overrides:
getDatein classDataType- Parameters:
cal- calendar for object creation- Returns:
- The data value as a java.sql.Date.
- Throws:
StandardException- thrown on failure
-
getTime
public java.sql.Time getTime(java.util.Calendar cal) throws StandardExceptionDescription copied from class:DataTypeGets 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:
getTimein interfaceDataValueDescriptor- Overrides:
getTimein classDataType- Parameters:
cal- calendar for object creation- Returns:
- The data value as a java.sql.Time.
- Throws:
StandardException- thrown on failure
-
getTimestamp
public java.sql.Timestamp getTimestamp(java.util.Calendar cal) throws StandardExceptionDescription copied from class:DataTypeGets 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:
getTimestampin interfaceDataValueDescriptor- Overrides:
getTimestampin classDataType- Parameters:
cal- calendar for object creation- Returns:
- The data value as a java.sql.Timestamp.
- Throws:
StandardException- thrown on failure
-
setObject
void setObject(java.lang.Object theValue)
Description copied from class:DataTypeSet 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.
-
getObject
public java.lang.Object getObject()
Description copied from class:DataTypeGets 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:
getObjectin interfaceDataValueDescriptor- Overrides:
getObjectin classDataType- Returns:
- The data value as a int.
-
getLength
public int getLength()
Description copied from interface:DataValueDescriptorGets the length of the data value. The meaning of this is implementation-dependent. For string types, it is the number of characters in the string. For numeric types, it is the number of bytes used to store the number. This is the actual length of this value, not the length of the type it was defined as. For example, a VARCHAR value may be shorter than the declared VARCHAR (maximum) length.- Specified by:
getLengthin interfaceDataValueDescriptor- Returns:
- The length of the data value
-
getTypeName
public java.lang.String getTypeName()
Description copied from interface:DataValueDescriptorGet the SQL name of the datatype- Specified by:
getTypeNamein interfaceDataValueDescriptor- Returns:
- The SQL name of the datatype
-
getTypeName
java.lang.String getTypeName(java.lang.String className)
Get the type name of this value, overriding with the passed in class name (for user/java types).- Overrides:
getTypeNamein classDataType
-
getTypeFormatId
public int getTypeFormatId()
Return my format identifier.- Specified by:
getTypeFormatIdin interfaceTypedFormat- Returns:
- The identifier. (A UUID stuffed in an array of 16 bytes).
- See Also:
TypedFormat.getTypeFormatId()
-
writeExternal
public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException- Specified by:
writeExternalin interfacejava.io.Externalizable- Throws:
java.io.IOException- error writing data
-
readExternal
public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException- Specified by:
readExternalin interfacejava.io.Externalizable- Throws:
java.io.IOException- Thrown on error reading the objectjava.lang.ClassNotFoundException- Thrown if the class of the object is not found- See Also:
Externalizable.readExternal(java.io.ObjectInput)
-
cloneValue
public DataValueDescriptor cloneValue(boolean forceMaterialization)
Description copied from interface:DataValueDescriptorClone this DataValueDescriptor. Results in a new object that has the same value as this but can be modified independently.Even though the objects can be modified independently regardless of the value of
forceMaterialization, both the clone and the original may be dependent on the store state ifforceMaterializationis set tofalse. An example is if you need to access the value you just read usingcloneValueafter the current transaction has ended, or after the source result set has been closed.- Specified by:
cloneValuein interfaceDataValueDescriptor- Parameters:
forceMaterialization- any streams representing the data value will be materialized iftrue, the data value will be kept as a stream if possible iffalse- Returns:
- A clone of the
DataValueDescriptorwith the same initial value as this. - See Also:
DataValueDescriptor.cloneValue(boolean)
-
getNewNull
public DataValueDescriptor getNewNull()
Description copied from interface:DataValueDescriptorGet a new null value of the same type as this data value.- Specified by:
getNewNullin interfaceDataValueDescriptor- See Also:
DataValueDescriptor.getNewNull()
-
restoreToNull
public void restoreToNull()
Description copied from interface:StorableRestore this object to its (SQL)null value.- Specified by:
restoreToNullin interfaceStorable- See Also:
Storable.restoreToNull()
-
setValueFromResultSet
public void setValueFromResultSet(java.sql.ResultSet resultSet, int colNumber, boolean isNullable) throws java.sql.SQLExceptionDescription copied from interface:DataValueDescriptorSet the value based on the value for the specified DataValueDescriptor from the specified ResultSet.- Specified by:
setValueFromResultSetin interfaceDataValueDescriptor- Parameters:
resultSet- The specified ResultSet.colNumber- The 1-based column # into the resultSet.isNullable- Whether or not the column is nullable (No need to call wasNull() if not)- Throws:
java.sql.SQLException- Thrown on error- See Also:
DataValueDescriptor.setValueFromResultSet(java.sql.ResultSet, int, boolean)
-
compare
public int compare(DataValueDescriptor other) throws StandardException
Orderable interface- Specified by:
comparein interfaceDataValueDescriptor- Parameters:
other- The Orderable to compare this one to.- 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 failure- See Also:
Orderable
-
compare
public boolean compare(int op, DataValueDescriptor other, boolean orderedNulls, boolean unknownRV) throws StandardExceptionDescription copied from interface:DataValueDescriptorCompare 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:
comparein interfaceDataValueDescriptor- Overrides:
comparein classDataType- 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
-
setValue
public void setValue(java.lang.Object value)
Description copied from class:DataTypeSet the value of this DataValueDescriptor. At DataType level just throws an error lower classes will override- Specified by:
setValuein interfaceDataValueDescriptor- Specified by:
setValuein interfaceUserDataValue- Overrides:
setValuein classDataType- Parameters:
value- The Object value to set this DataValueDescriptor to- See Also:
UserDataValue.setValue(java.lang.Object)
-
setFrom
protected void setFrom(DataValueDescriptor theValue) throws StandardException
Description copied from class:DataTypeSet the value of this DataValueDescriptor based on the value of the specified DataValueDescriptor.- Overrides:
setFromin classDataType- Parameters:
theValue- The DataValueDescriptor that holds the value to which we want to set this DataValueDescriptor's value.- Throws:
StandardException
-
setBigDecimal
public void setBigDecimal(java.math.BigDecimal theValue)
Description copied from class:DataTypeOnly to be called when the application sets a value using BigDecimal- Specified by:
setBigDecimalin interfaceDataValueDescriptor- Overrides:
setBigDecimalin classDataType- Parameters:
theValue- required to be a BigDecimal or null.- See Also:
UserDataValue.setValue(java.lang.Object)
-
setValue
public void setValue(java.lang.String theValue)
Description copied from class:DataTypeSet the value of this DataValueDescriptor. At DataType level just throws an error lower classes will override- Specified by:
setValuein interfaceDataValueDescriptor- Overrides:
setValuein classDataType- Parameters:
theValue- The BigDecimal value to set this DataValueDescriptor to
-
equals
public BooleanDataValue equals(DataValueDescriptor left, DataValueDescriptor right) throws StandardException
The = operator as called from the language module, as opposed to the storage module.- Specified by:
equalsin interfaceDataValueDescriptor- Overrides:
equalsin classDataType- Parameters:
left- The value on the left side of the =right- The value on the right side of the =- Returns:
- A SQL boolean value telling whether the two parameters are equal
- Throws:
StandardException- Thrown on error
-
notEquals
public BooleanDataValue notEquals(DataValueDescriptor left, DataValueDescriptor right) throws StandardException
The <> operator as called from the language module, as opposed to the storage module.- Specified by:
notEqualsin interfaceDataValueDescriptor- Overrides:
notEqualsin classDataType- Parameters:
left- The value on the left side of the operatorright- The value on the right side of the operator- Returns:
- A SQL boolean value telling whether the two parameters are not equal
- Throws:
StandardException- Thrown on error
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
typePrecedence
public int typePrecedence()
Description copied from class:DataTypeEach 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:
typePrecedencein interfaceDataValueDescriptor- Overrides:
typePrecedencein classDataType- Returns:
- The precedence of this type.
- See Also:
DataValueDescriptor.typePrecedence()
-
-