Class SQLBoolean
- java.lang.Object
-
- org.apache.derby.iapi.types.DataType
-
- org.apache.derby.iapi.types.SQLBoolean
-
- All Implemented Interfaces:
java.io.Externalizable
,java.io.Serializable
,java.lang.Comparable
,Formatable
,Storable
,TypedFormat
,BooleanDataValue
,DataValueDescriptor
,Orderable
public final class SQLBoolean extends DataType implements BooleanDataValue
SQLBoolean satisfies the DataValueDescriptor interfaces (i.e., DataType). It implements a boolean column, e.g. for * storing a column value; it can be specified when constructed to not allow nulls. Nullability cannot be changed after construction, as it affects the storage size and mechanism.Because DataType is a subtype of DataType, SQLBoolean can play a role in either a DataType/Row or a DataType/Row, interchangeably.
We assume the store has a flag for nullness of the value, and simply return a 0-length array for the stored form when the value is null.
PERFORMANCE: There are likely alot of performance improvements possible for this implementation -- it new's Integer more than it probably wants to.
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private static int
BASE_MEMORY_USAGE
private static SQLBoolean
BOOLEAN_FALSE
(package private) static int
BOOLEAN_LENGTH
private static SQLBoolean
BOOLEAN_TRUE
private boolean
immutable
private boolean
isnull
(package private) static SQLBoolean
UNKNOWN
private boolean
value
-
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
-
-
Constructor Summary
Constructors Modifier Constructor Description SQLBoolean()
SQLBoolean(boolean val)
private
SQLBoolean(boolean val, boolean isnull)
SQLBoolean(java.lang.Boolean obj)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description BooleanDataValue
and(BooleanDataValue otherValue)
The AND operator.DataValueDescriptor
cloneValue(boolean forceMaterialization)
Clone this DataValueDescriptor.boolean
compare(int op, DataValueDescriptor other, boolean orderedNulls, boolean unknownRV)
Compare this Orderable with a given Orderable for the purpose of qualification and sorting.int
compare(DataValueDescriptor other)
Compare this Orderable with a given Orderable for the purpose of index positioning.boolean
equals(boolean val)
Determine whether this SQLBoolean contains the given boolean value.BooleanDataValue
equals(DataValueDescriptor left, DataValueDescriptor right)
The = operator as called from the language module, as opposed to the storage module.int
estimateMemoryUsage()
Estimate the memory usage in bytes of the data value and the overhead of the class.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.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.BooleanDataValue
getImmutable()
Return an immutable BooleanDataValue with the same value as this.int
getInt()
Gets the value in the data value descriptor as a int.int
getLength()
Gets the length of the data value.long
getLong()
Gets the value in the data value descriptor as a long.DataValueDescriptor
getNewNull()
Get a new null value of the same type as this data value.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.lang.String
getString()
Gets the value in the data value descriptor as a String.int
getTypeFormatId()
Return my format identifier.java.lang.String
getTypeName()
Get the SQL name of the datatypeBooleanDataValue
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.int
hashCode()
BooleanDataValue
is(BooleanDataValue otherValue)
The SQL IS operator - consult any standard SQL reference for an explanation.BooleanDataValue
isNot(BooleanDataValue otherValue)
Implements NOT IS.boolean
isNull()
Return whether the value is null or not.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.private static int
makeInt(boolean b)
BooleanDataValue
notEquals(DataValueDescriptor left, DataValueDescriptor right)
The <> operator as called from the language module, as opposed to the storage module.BooleanDataValue
or(BooleanDataValue otherValue)
The OR operator.void
readExternal(java.io.ObjectInput in)
DataValueDescriptor
recycle()
Recycle this SQLBoolean object if possible.void
restoreToNull()
Restore this object to its (SQL)null value.void
setBigDecimal(java.math.BigDecimal bigDecimal)
Only to be called when the application sets a value using BigDecimalprotected void
setFrom(DataValueDescriptor theValue)
Set the value of this DataValueDescriptor based on the value of the specified DataValueDescriptor.void
setInto(java.sql.PreparedStatement ps, int position)
Set the value into a PreparedStatement.(package private) void
setObject(java.lang.Object theValue)
Set the value from an non-null object.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 overridevoid
setValue(double theValue)
Set the value of this DataValueDescriptor to the given double value At DataType level just throws an error lower classes will overridevoid
setValue(float theValue)
Set the value of this DataValueDescriptor to the given float value At DataType level just throws an error lower classes will overridevoid
setValue(int theValue)
Set the value of this DataValueDescriptor to the given int value At DataType level just throws an error lower classes will overridevoid
setValue(long theValue)
Set the value of this DataValueDescriptor to the given long value At DataType level just throws an error lower classes will overridevoid
setValue(short theValue)
Set the value of this DataValueDescriptor to the given short value At DataType level just throws an error lower classes will overridevoid
setValue(java.lang.Boolean theValue)
Set the value of this BooleanDataValue.void
setValue(java.lang.String theValue)
Set the value of this BooleanDataValue to the given String.void
setValueFromResultSet(java.sql.ResultSet resultSet, int colNumber, boolean isNullable)
Set the value based on the value for the specified DataValueDescriptor from the specified ResultSet.BooleanDataValue
throwExceptionIfFalse(java.lang.String sqlState, java.lang.String tableName, java.lang.String constraintName)
Throw an exception with the given SQLState if this BooleanDataValue is false.BooleanDataValue
throwExceptionIfImmediateAndFalse(java.lang.String sqlState, java.lang.String tableName, java.lang.String constraintName, Activation a, int savedUUIDIdx)
If this value is false and we have a deferred constraint, remember the violation and proceed, else throw.java.lang.String
toString()
static SQLBoolean
truthValue(boolean value)
Get a truth value.static SQLBoolean
truthValue(DataValueDescriptor leftOperand, DataValueDescriptor rightOperand, boolean truth)
Return the SQL truth value for a comparison.static SQLBoolean
truthValue(DataValueDescriptor leftOperand, DataValueDescriptor rightOperand, java.lang.Boolean truth)
same as above, but takes a Boolean, if it is null, unknownTruthValue is returnedint
typePrecedence()
Each built-in type in JSQL has a precedence.int
typeToBigDecimal()
Implementation for BOOLEAN type.static SQLBoolean
unknownTruthValue()
Return an unknown truth value.void
writeExternal(java.io.ObjectOutput out)
-
Methods inherited from class org.apache.derby.iapi.types.DataType
checkHostVariable, cloneHolder, coalesce, compare, compare, compareTo, dataTypeConversion, equals, flip, genericSetObject, getBytes, getDate, getStream, getTime, getTimestamp, getTraceString, getTypeName, hasStream, in, invalidFormat, isNotNull, isNullOp, normalize, outOfRange, readExternalFromArray, setInto, setObjectForCast, setToNull, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, throwLangSetMismatch, throwLangSetMismatch
-
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, getBytes, getDate, getStream, getTime, getTimestamp, getTraceString, hasStream, in, isNotNull, isNullOp, normalize, readExternalFromArray, setInto, setObjectForCast, setToNull, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue
-
-
-
-
Field Detail
-
BOOLEAN_LENGTH
static final int BOOLEAN_LENGTH
- See Also:
- Constant Field Values
-
BOOLEAN_TRUE
private static final SQLBoolean BOOLEAN_TRUE
-
BOOLEAN_FALSE
private static final SQLBoolean BOOLEAN_FALSE
-
UNKNOWN
static final SQLBoolean UNKNOWN
-
BASE_MEMORY_USAGE
private static final int BASE_MEMORY_USAGE
-
value
private boolean value
-
isnull
private boolean isnull
-
immutable
private boolean immutable
-
-
Method Detail
-
isNull
public boolean isNull()
Description copied from interface:Storable
Return whether the value is null or not.
-
getBoolean
public boolean getBoolean()
Description copied from class:DataType
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 interfaceBooleanDataValue
- Specified by:
getBoolean
in interfaceDataValueDescriptor
- Overrides:
getBoolean
in classDataType
- Returns:
- The data value as a boolean.
-
makeInt
private static int makeInt(boolean b)
-
getByte
public byte getByte()
Description copied from class:DataType
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 interfaceDataValueDescriptor
- Overrides:
getByte
in classDataType
- Returns:
- The data value as a byte.
- See Also:
DataValueDescriptor.getByte()
-
getShort
public short getShort()
Description copied from class:DataType
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 interfaceDataValueDescriptor
- Overrides:
getShort
in classDataType
- Returns:
- The data value as a short.
- See Also:
DataValueDescriptor.getShort()
-
getInt
public int getInt()
Description copied from class:DataType
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 interfaceDataValueDescriptor
- Overrides:
getInt
in classDataType
- Returns:
- The data value as a int.
- See Also:
DataValueDescriptor.getInt()
-
getLong
public long getLong()
Description copied from class:DataType
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 interfaceDataValueDescriptor
- Overrides:
getLong
in classDataType
- Returns:
- The data value as a long.
- See Also:
DataValueDescriptor.getLong()
-
getFloat
public float getFloat()
Description copied from class:DataType
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 interfaceDataValueDescriptor
- Overrides:
getFloat
in classDataType
- Returns:
- The data value as a float.
- See Also:
DataValueDescriptor.getFloat()
-
getDouble
public double getDouble()
Description copied from class:DataType
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 interfaceDataValueDescriptor
- Overrides:
getDouble
in classDataType
- Returns:
- The data value as a double.
- See Also:
DataValueDescriptor.getDouble()
-
typeToBigDecimal
public int typeToBigDecimal()
Implementation for BOOLEAN type. Convert to a BigDecimal using long- Specified by:
typeToBigDecimal
in interfaceDataValueDescriptor
- Overrides:
typeToBigDecimal
in classDataType
- Returns:
- Types.CHAR for String conversion through getString Types.DECIMAL for BigDecimal through getObject or Types.BIGINT for long conversion through getLong
-
getString
public java.lang.String getString()
Description copied from interface:DataValueDescriptor
Gets the value in the data value descriptor as a String. Throws an exception if the data value is not a string.- Specified by:
getString
in interfaceDataValueDescriptor
- Returns:
- The data value as a String.
-
getObject
public java.lang.Object getObject()
Description copied from class:DataType
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 interfaceDataValueDescriptor
- Overrides:
getObject
in classDataType
- Returns:
- The data value as a int.
-
getLength
public int getLength()
Description copied from interface:DataValueDescriptor
Gets 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:
getLength
in interfaceDataValueDescriptor
- Returns:
- The length of the data value
-
getTypeName
public java.lang.String getTypeName()
Description copied from interface:DataValueDescriptor
Get the SQL name of the datatype- Specified by:
getTypeName
in interfaceDataValueDescriptor
- Returns:
- The SQL name of the datatype
-
recycle
public DataValueDescriptor recycle()
Recycle this SQLBoolean object if possible. If the object is immutable, create and return a new object.- Specified by:
recycle
in interfaceDataValueDescriptor
- Overrides:
recycle
in classDataType
- Returns:
- a new SQLBoolean if this object is immutable; otherwise, this object with value set to null
-
getTypeFormatId
public int getTypeFormatId()
Return my format identifier.- Specified by:
getTypeFormatId
in 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:
writeExternal
in interfacejava.io.Externalizable
- Throws:
java.io.IOException
-
readExternal
public void readExternal(java.io.ObjectInput in) throws java.io.IOException
- Specified by:
readExternal
in interfacejava.io.Externalizable
- Throws:
java.io.IOException
- See Also:
Externalizable.readExternal(java.io.ObjectInput)
-
restoreToNull
public void restoreToNull()
Description copied from interface:Storable
Restore this object to its (SQL)null value.- Specified by:
restoreToNull
in interfaceStorable
- See Also:
Storable.restoreToNull()
-
compare
public int compare(DataValueDescriptor other) throws StandardException
Description copied from interface:DataValueDescriptor
Compare this Orderable with a given Orderable for the purpose of index positioning. This method treats nulls as ordered values - that is, it treats SQL null as equal to null and greater than all other values.- Specified by:
compare
in 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 error
-
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 interfaceDataValueDescriptor
- Overrides:
compare
in 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
-
cloneValue
public DataValueDescriptor cloneValue(boolean forceMaterialization)
Description copied from interface:DataValueDescriptor
Clone 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 ifforceMaterialization
is set tofalse
. An example is if you need to access the value you just read usingcloneValue
after the current transaction has ended, or after the source result set has been closed.- Specified by:
cloneValue
in 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
DataValueDescriptor
with the same initial value as this. - See Also:
DataValueDescriptor.cloneValue(boolean)
-
getNewNull
public DataValueDescriptor getNewNull()
Description copied from interface:DataValueDescriptor
Get a new null value of the same type as this data value.- Specified by:
getNewNull
in interfaceDataValueDescriptor
- See Also:
DataValueDescriptor.getNewNull()
-
setValueFromResultSet
public void setValueFromResultSet(java.sql.ResultSet resultSet, int colNumber, boolean isNullable) throws java.sql.SQLException
Description copied from interface:DataValueDescriptor
Set the value based on the value for the specified DataValueDescriptor from the specified ResultSet.- Specified by:
setValueFromResultSet
in 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)
-
setInto
public final void setInto(java.sql.PreparedStatement ps, int position) throws java.sql.SQLException
Set the value into a PreparedStatement.- Specified by:
setInto
in interfaceDataValueDescriptor
- Overrides:
setInto
in classDataType
- Throws:
java.sql.SQLException
- Error setting value in PreparedStatement
-
setValue
public void setValue(boolean theValue)
Description copied from class:DataType
Set the value. At DataType level just throws an error lower classes will override- Specified by:
setValue
in interfaceDataValueDescriptor
- Overrides:
setValue
in classDataType
- Parameters:
theValue
- Contains the boolean value to set this to- See Also:
BooleanDataValue.setValue(java.lang.Boolean)
-
setValue
public void setValue(java.lang.Boolean theValue)
Description copied from interface:BooleanDataValue
Set the value of this BooleanDataValue.- Specified by:
setValue
in interfaceBooleanDataValue
- Parameters:
theValue
- Contains the boolean value to set this BooleanDataValue to. Null means set this BooleanDataValue to null.
-
setValue
public void setValue(byte theValue)
Description copied from class:DataType
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 interfaceDataValueDescriptor
- Overrides:
setValue
in classDataType
- Parameters:
theValue
- The value to set this DataValueDescriptor to
-
setValue
public void setValue(short theValue)
Description copied from class:DataType
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 interfaceDataValueDescriptor
- Overrides:
setValue
in classDataType
- Parameters:
theValue
- The value to set this DataValueDescriptor to
-
setValue
public void setValue(int theValue)
Description copied from class:DataType
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 interfaceDataValueDescriptor
- Overrides:
setValue
in classDataType
- Parameters:
theValue
- The value to set this DataValueDescriptor to
-
setValue
public void setValue(long theValue)
Description copied from class:DataType
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 interfaceDataValueDescriptor
- Overrides:
setValue
in classDataType
- Parameters:
theValue
- The value to set this DataValueDescriptor to
-
setValue
public void setValue(float theValue)
Description copied from class:DataType
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 interfaceDataValueDescriptor
- Overrides:
setValue
in classDataType
- Parameters:
theValue
- The value to set this DataValueDescriptor to
-
setValue
public void setValue(double theValue)
Description copied from class:DataType
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 interfaceDataValueDescriptor
- Overrides:
setValue
in classDataType
- Parameters:
theValue
- The value to set this DataValueDescriptor to
-
setBigDecimal
public void setBigDecimal(java.math.BigDecimal bigDecimal) throws StandardException
Description copied from class:DataType
Only to be called when the application sets a value using BigDecimal- Specified by:
setBigDecimal
in interfaceDataValueDescriptor
- Overrides:
setBigDecimal
in classDataType
- Parameters:
bigDecimal
- required to be a BigDecimal or null.- Throws:
StandardException
-
setValue
public void setValue(java.lang.String theValue) throws StandardException
Set the value of this BooleanDataValue to the given String. String is trimmed and upcased. If resultant string is not TRUE or FALSE, then an error is thrown.- Specified by:
setValue
in interfaceDataValueDescriptor
- Overrides:
setValue
in classDataType
- Parameters:
theValue
- The value to set this BooleanDataValue to- Throws:
StandardException
- Thrown on error
-
setObject
void setObject(java.lang.Object theValue)
Description copied from class:DataType
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.- Overrides:
setObject
in classDataType
- See Also:
DataValueDescriptor.setValue(int)
-
setFrom
protected void setFrom(DataValueDescriptor theValue) throws StandardException
Description copied from class:DataType
Set the value of this DataValueDescriptor based on the value of the specified DataValueDescriptor.- Overrides:
setFrom
in classDataType
- Parameters:
theValue
- The DataValueDescriptor that holds the value to which we want to set this DataValueDescriptor's value.- Throws:
StandardException
-
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:
equals
in interfaceDataValueDescriptor
- Overrides:
equals
in 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:
notEquals
in interfaceDataValueDescriptor
- Overrides:
notEquals
in 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
-
lessThan
public BooleanDataValue lessThan(DataValueDescriptor left, DataValueDescriptor right) throws StandardException
The < operator as called from the language module, as opposed to the storage module.- Specified by:
lessThan
in interfaceDataValueDescriptor
- Overrides:
lessThan
in 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 left operand is less than the right operand
- Throws:
StandardException
- Thrown on error
-
greaterThan
public BooleanDataValue greaterThan(DataValueDescriptor left, DataValueDescriptor right) throws StandardException
The > operator as called from the language module, as opposed to the storage module.- Specified by:
greaterThan
in interfaceDataValueDescriptor
- Overrides:
greaterThan
in 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 left operand is greater than the right operand
- Throws:
StandardException
- Thrown on error
-
lessOrEquals
public BooleanDataValue lessOrEquals(DataValueDescriptor left, DataValueDescriptor right) throws StandardException
The <= operator as called from the language module, as opposed to the storage module.- Specified by:
lessOrEquals
in interfaceDataValueDescriptor
- Overrides:
lessOrEquals
in 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 left operand is less than or equal to the right operand
- Throws:
StandardException
- Thrown on error
-
greaterOrEquals
public BooleanDataValue greaterOrEquals(DataValueDescriptor left, DataValueDescriptor right) throws StandardException
The >= operator as called from the language module, as opposed to the storage module.- Specified by:
greaterOrEquals
in interfaceDataValueDescriptor
- Overrides:
greaterOrEquals
in 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 left operand is greater than or equal to the right operand
- Throws:
StandardException
- Thrown on error
-
and
public BooleanDataValue and(BooleanDataValue otherValue)
The AND operator. This implements SQL semantics for AND with unknown truth values - consult any standard SQL reference for an explanation.- Specified by:
and
in interfaceBooleanDataValue
- Parameters:
otherValue
- The other boolean to AND with this one- Returns:
- this AND otherValue
-
or
public BooleanDataValue or(BooleanDataValue otherValue)
The OR operator. This implements SQL semantics for OR with unknown truth values - consult any standard SQL reference for an explanation.- Specified by:
or
in interfaceBooleanDataValue
- Parameters:
otherValue
- The other boolean to OR with this one- Returns:
- this OR otherValue
-
is
public BooleanDataValue is(BooleanDataValue otherValue)
The SQL IS operator - consult any standard SQL reference for an explanation. Implements the following truth table: otherValue | TRUE | FALSE | UNKNOWN this |---------------------------- | TRUE | TRUE | FALSE | FALSE FALSE | FALSE | TRUE | FALSE UNKNOWN | FALSE | FALSE | TRUE- Specified by:
is
in interfaceBooleanDataValue
- Parameters:
otherValue
- BooleanDataValue to compare to. May be TRUE, FALSE, or UNKNOWN.- Returns:
- whether this IS otherValue
-
isNot
public BooleanDataValue isNot(BooleanDataValue otherValue)
Implements NOT IS. This reverses the sense of the is() call.- Specified by:
isNot
in interfaceBooleanDataValue
- Parameters:
otherValue
- BooleanDataValue to compare to. May be TRUE, FALSE, or UNKNOWN.- Returns:
- NOT( this IS otherValue )
-
throwExceptionIfFalse
public BooleanDataValue throwExceptionIfFalse(java.lang.String sqlState, java.lang.String tableName, java.lang.String constraintName) throws StandardException
Throw an exception with the given SQLState if this BooleanDataValue is false. This method is useful for evaluating constraints.- Specified by:
throwExceptionIfFalse
in interfaceBooleanDataValue
- Parameters:
sqlState
- The SQLState of the exception to throw if this SQLBoolean is false.tableName
- The name of the table to include in the exception message.constraintName
- The name of the failed constraint to include in the exception message.- Returns:
- this
- Throws:
StandardException
- Thrown if this BooleanDataValue is false.
-
throwExceptionIfImmediateAndFalse
public BooleanDataValue throwExceptionIfImmediateAndFalse(java.lang.String sqlState, java.lang.String tableName, java.lang.String constraintName, Activation a, int savedUUIDIdx) throws StandardException
Description copied from interface:BooleanDataValue
If this value is false and we have a deferred constraint, remember the violation and proceed, else throw. See alsoAndNoShortCircuitNode
.- Specified by:
throwExceptionIfImmediateAndFalse
in interfaceBooleanDataValue
- Parameters:
sqlState
- The SQLState of the exception to throw if this SQLBoolean is false.tableName
- The name of the table to include in the exception message.constraintName
- The name of the failed constraint to include in the exception message.a
- The activationsavedUUIDIdx
- The saved object number of the constraint's UUID.- Returns:
- this
- Throws:
StandardException
- Thrown if this BooleanDataValue is false.
-
typePrecedence
public int typePrecedence()
Description copied from class:DataType
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 interfaceDataValueDescriptor
- Overrides:
typePrecedence
in classDataType
- Returns:
- The precedence of this type.
- See Also:
DataValueDescriptor.typePrecedence()
-
truthValue
public static SQLBoolean truthValue(DataValueDescriptor leftOperand, DataValueDescriptor rightOperand, boolean truth)
Return the SQL truth value for a comparison. This method first looks at the operands - if either is null, it returns the unknown truth value. This implements "normal" SQL null semantics, where if any operand is null, the result is null. Note that there are cases where these semantics are incorrect - for example, NULL AND FALSE is supposed to be FALSE, not NULL (the NULL truth value is the same as the UNKNOWN truth value). If neither operand is null, it returns a static final variable containing the SQLBoolean truth value. It returns different values depending on whether the truth value is supposed to be nullable. This method always returns a pre-allocated static final SQLBoolean. This is practical because there are so few possible return values. Using pre-allocated values allows us to avoid constructing new SQLBoolean values during execution.- Parameters:
leftOperand
- The left operand of the binary comparisonrightOperand
- The right operand of the binary comparisontruth
- The truth value of the comparison- Returns:
- A SQLBoolean containing the desired truth value.
-
truthValue
public static SQLBoolean truthValue(DataValueDescriptor leftOperand, DataValueDescriptor rightOperand, java.lang.Boolean truth)
same as above, but takes a Boolean, if it is null, unknownTruthValue is returned
-
truthValue
public static SQLBoolean truthValue(boolean value)
Get a truth value.- Parameters:
value
- The value of the SQLBoolean- Returns:
- A SQLBoolean with the given truth value
-
unknownTruthValue
public static SQLBoolean unknownTruthValue()
Return an unknown truth value. Check to be sure the return value is nullable.- Returns:
- A SQLBoolean representing the UNKNOWN truth value
-
equals
public boolean equals(boolean val)
Determine whether this SQLBoolean contains the given boolean value. This method is used by generated code to determine when to do short-circuiting for an AND or OR.- Specified by:
equals
in interfaceBooleanDataValue
- Parameters:
val
- The value to look for- Returns:
- true if the given value equals the value in this SQLBoolean, false if not
-
getImmutable
public BooleanDataValue getImmutable()
Return an immutable BooleanDataValue with the same value as this.- Specified by:
getImmutable
in interfaceBooleanDataValue
- Returns:
- An immutable BooleanDataValue with the same value as this.
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
estimateMemoryUsage
public int estimateMemoryUsage()
Description copied from interface:DataValueDescriptor
Estimate the memory usage in bytes of the data value and the overhead of the class.- Specified by:
estimateMemoryUsage
in interfaceDataValueDescriptor
- Returns:
- the estimated memory usage
-
-