org.apache.derby.iapi.types
Class SQLBinary
java.lang.Object
org.apache.derby.iapi.types.DataType
org.apache.derby.iapi.types.SQLBinary
- All Implemented Interfaces:
- BitDataValue, CloneableObject, ConcatableDataValue, DataValueDescriptor, java.io.Externalizable, Formatable, Orderable, java.io.Serializable, Storable, StreamStorable, TypedFormat, VariableSizeDataValue
- Direct Known Subclasses:
- SQLBit, SQLBlob
- public abstract class SQLBinary
- extends DataType
- implements BitDataValue
SQLBinary satisfies the DataValueDescriptor
interfaces (i.e., DataType). It implements a String holder,
e.g. for storing a column value; it can be specified
when constructed to not allow nulls. Nullability cannot be changed
after construction.
Because DataType is a subclass of DataType,
SQLBit can play a role in either a DataType/Value
or a DataType/KeyRow, interchangeably.
Format :
Length is encoded to support 5.x databases where the length was stored as the number of bits.
The first bit of the first byte indicates if the format is an old (5.x) style or a new 8.1 style.
8.1 then uses the next two bits to indicate how the length is encoded.
is one of N styles.
- (5.x format) 4 byte Java format integer value 0 - either is 0 bytes/bits or an unknown number of bytes.
- (5.x format) 4 byte Java format integer value >0 (positive) - number of bits in , number of bytes in
is the minimum number of bytes required to store the number of bits.
- (8.1 format) 1 byte encoded length (0 <= L <= 31) - number of bytes of - encoded = 0x80 & L
- (8.1 format) 3 byte encoded length (32 <= L < 64k) - number of bytes of - encoded = 0xA0
- (8.1 format) 5 byte encoded length (64k <= L < 2G) - number of bytes of - encoded = 0xC0
- (future) to be determined L >= 2G - encoded 0xE0
(0xE0 is an esacape to allow any number of arbitary encodings in the future).
- See Also:
- Serialized Form
Field Summary |
private static int |
BASE_MEMORY_USAGE
|
(package private) byte[] |
dataValue
|
(package private) static byte |
PAD
|
(package private) java.io.InputStream |
stream
|
(package private) int |
streamLength
Length of the stream in units relevant to the type,
in this case bytes. |
Constructor Summary |
(package private) |
SQLBinary()
no-arg constructor, required by Formattable. |
(package private) |
SQLBinary(byte[] val)
|
Method Summary |
NumberDataValue |
charLength(NumberDataValue result)
This method implements the char_length function for bit. |
void |
checkHostVariable(int declaredLength)
Host variables are rejected if their length is
bigger than the declared length, regardless of
if the trailing bytes are the pad character. |
java.lang.Object |
cloneObject()
From CloneableObject
Shallow clone a StreamStorable without objectifying. |
private static int |
compare(byte[] left,
byte[] right)
|
int |
compare(DataValueDescriptor other)
Compare this Orderable with a given Orderable for the purpose of
index positioning. |
boolean |
compare(int op,
DataValueDescriptor other,
boolean orderedNulls,
boolean unknownRV)
Compare this Orderable with a given Orderable for the purpose of
qualification and sorting. |
BitDataValue |
concatenate(BitDataValue left,
BitDataValue right,
BitDataValue result)
The SQL concatenation '||' operator. |
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. |
byte[] |
getBytes()
Gets the value in the data value descriptor as a byte array.
|
DataValueDescriptor |
getClone()
Clone this DataValueDescriptor. |
int |
getLength()
length in bytes |
java.io.InputStream |
getStream()
Gets the value in the data value descriptor as a Java InputStream.
|
java.lang.String |
getString()
Used by JDBC -- string should not contain
SQL92 formatting. |
(package private) byte[] |
getValue()
|
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. |
int |
hashCode()
|
boolean |
isNull()
see if the Bit value is null. |
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 |
loadStream()
sets the stream state for the object. |
BooleanDataValue |
notEquals(DataValueDescriptor left,
DataValueDescriptor right)
The <> operator as called from the language module, as opposed to
the storage module. |
(package private) boolean |
objectNull(java.lang.Object o)
|
private static int |
readBinaryLength(java.io.ObjectInput in)
|
void |
readExternal(java.io.ObjectInput in)
delegated to bit |
void |
readExternalFromArray(ArrayInputStream in)
Read the DataValueDescriptor from the stream.
|
private void |
readFromStream(java.io.InputStream in)
|
void |
restoreToNull()
Restore this object to its (SQL)null value. |
java.io.InputStream |
returnStream()
Return the stream state of the object. |
protected void |
setFrom(DataValueDescriptor theValue)
|
void |
setInto(java.sql.PreparedStatement ps,
int position)
Adding this method to ensure that super class' setInto method doesn't get called
that leads to the violation of JDBC spec( untyped nulls ) when batching is turned on. |
void |
setStream(java.io.InputStream newStream)
sets the stream state for the object. |
void |
setValue(byte[] theValue)
Set the value of this DataValueDescriptor. |
void |
setValue(java.io.InputStream theStream,
int streamLength)
Set the value to be the contents of the stream.
|
ConcatableDataValue |
substring(NumberDataValue start,
NumberDataValue length,
ConcatableDataValue result,
int maxLen)
The SQL substr() function. |
java.lang.String |
toString()
|
void |
writeExternal(java.io.ObjectOutput out)
Write the value out from the byte array (not called if null)
using the 8.1 encoding. |
Methods inherited from class org.apache.derby.iapi.types.DataType |
coalesce, dataTypeConversion, equals, flip, genericSetObject, getBoolean, getByte, getDate, getDouble, getFloat, getInt, getLong, getNationalString, getObject, getShort, getTime, getTimestamp, in, invalidFormat, isNotNull, isNullOp, normalize, outOfRange, setBigDecimal, setInto, setObjectForCast, setToNull, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, throwLangSetMismatch, throwLangSetMismatch, typePrecedence, 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 |
coalesce, getBoolean, getByte, getDate, getDouble, getFloat, getInt, getLong, getNewNull, getObject, getShort, getTime, getTimestamp, getTypeName, in, isNotNull, isNullOp, normalize, setBigDecimal, setInto, setObjectForCast, setToNull, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValueFromResultSet, typePrecedence, typeToBigDecimal |
PAD
static final byte PAD
- See Also:
- Constant Field Values
BASE_MEMORY_USAGE
private static final int BASE_MEMORY_USAGE
dataValue
byte[] dataValue
stream
java.io.InputStream stream
streamLength
int streamLength
- Length of the stream in units relevant to the type,
in this case bytes.
SQLBinary
SQLBinary()
- no-arg constructor, required by Formattable.
SQLBinary
SQLBinary(byte[] val)
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 interface DataValueDescriptor
- Returns:
- the estimated memory usage
setValue
public final void setValue(byte[] theValue)
- Description copied from interface:
DataValueDescriptor
- Set the value of this DataValueDescriptor.
- Specified by:
setValue
in interface DataValueDescriptor
- Overrides:
setValue
in class DataType
- Parameters:
theValue
- The byte value to set this DataValueDescriptor to
- Returns:
- This DataValueDescriptor
getString
public final java.lang.String getString()
throws StandardException
- Used by JDBC -- string should not contain
SQL92 formatting.
- Specified by:
getString
in interface DataValueDescriptor
- Returns:
- The data value as a String.
- Throws:
StandardException
- Thrown on error
getStream
public final java.io.InputStream getStream()
- Description copied from interface:
DataValueDescriptor
- Gets the value in the data value descriptor as a Java InputStream.
Only data types that implements StreamStorable will have stream states.
- Specified by:
getStream
in interface DataValueDescriptor
- Overrides:
getStream
in class DataType
- Returns:
- The data value as an InputStream.
- Throws:
StandardException
- Thrown on error
getBytes
public final byte[] getBytes()
throws StandardException
- Description copied from interface:
DataValueDescriptor
- Gets the value in the data value descriptor as a byte array.
Throws an exception if the data value is not a byte array.
- Specified by:
getBytes
in interface DataValueDescriptor
- Overrides:
getBytes
in class DataType
- Returns:
- The Binary value as a byte[].
- Throws:
StandardException
- Thrown on error
getValue
byte[] getValue()
throws StandardException
- Throws:
StandardException
getLength
public final int getLength()
throws StandardException
- length in bytes
- Specified by:
getLength
in interface DataValueDescriptor
- Returns:
- The length of the data value
- Throws:
StandardException
- Thrown on error
isNull
public final boolean isNull()
- see if the Bit value is null.
- Specified by:
isNull
in interface Storable
- Returns:
- true if the value is null and false otherwise.
- See Also:
Storable.isNull()
writeExternal
public final void writeExternal(java.io.ObjectOutput out)
throws java.io.IOException
- Write the value out from the byte array (not called if null)
using the 8.1 encoding.
- Specified by:
writeExternal
in interface java.io.Externalizable
- Throws:
java.io.IOException
- io exception
readExternal
public final void readExternal(java.io.ObjectInput in)
throws java.io.IOException
- delegated to bit
- Specified by:
readExternal
in interface java.io.Externalizable
- Throws:
java.io.IOException
- io exception
java.lang.ClassNotFoundException
- class not found
readExternalFromArray
public final void readExternalFromArray(ArrayInputStream in)
throws java.io.IOException
- Description copied from interface:
DataValueDescriptor
- Read the DataValueDescriptor from the stream.
Initialize the data value by reading it's values from the
ArrayInputStream. This interface is provided as a way to achieve
possible performance enhancement when reading an array can be
optimized over reading from a generic stream from readExternal().
- 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.
readBinaryLength
private static int readBinaryLength(java.io.ObjectInput in)
throws java.io.IOException
- Throws:
java.io.IOException
readFromStream
private void readFromStream(java.io.InputStream in)
throws java.io.IOException
- Throws:
java.io.IOException
restoreToNull
public final void restoreToNull()
- Description copied from interface:
Storable
- Restore this object to its (SQL)null value.
- Specified by:
restoreToNull
in interface Storable
- See Also:
Storable.restoreToNull()
compare
public final 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
- Overrides:
compare
in class DataType
- Throws:
StandardException
- thrown on error
compare
public final 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 less than all
other values.
- Specified by:
compare
in interface DataValueDescriptor
- 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
cloneObject
public final java.lang.Object cloneObject()
- From CloneableObject
Shallow clone a StreamStorable without objectifying. This is used to avoid
unnecessary objectifying of a stream object. The only difference of this method
from getClone is this method does not objectify a stream. beetle 4896
- Specified by:
cloneObject
in interface CloneableObject
- Overrides:
cloneObject
in class DataType
- Returns:
- clone of me as an Object
getClone
public final DataValueDescriptor getClone()
- 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.
- Specified by:
getClone
in interface DataValueDescriptor
- Returns:
- A clone of the DataValueDescriptor with the same initial value as this.
- See Also:
DataValueDescriptor.getClone()
returnStream
public final java.io.InputStream returnStream()
- Description copied from interface:
StreamStorable
- Return the stream state of the object.
- Specified by:
returnStream
in interface StreamStorable
setStream
public final void setStream(java.io.InputStream newStream)
- Description copied from interface:
StreamStorable
- sets the stream state for the object.
- Specified by:
setStream
in interface StreamStorable
loadStream
public final void loadStream()
throws StandardException
- Description copied from interface:
StreamStorable
- sets the stream state for the object.
- Specified by:
loadStream
in interface StreamStorable
- Throws:
StandardException
- on error
objectNull
boolean objectNull(java.lang.Object o)
setValue
public final void setValue(java.io.InputStream theStream,
int streamLength)
- 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.
The format of the stream is required to be the format of this type.
- Specified by:
setValue
in interface DataValueDescriptor
- Overrides:
setValue
in class DataType
- See Also:
SQLBit.setValue(java.lang.Object)
setFrom
protected final void setFrom(DataValueDescriptor theValue)
throws StandardException
- Overrides:
setFrom
in class DataType
- Throws:
StandardException
equals
public final 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 interface DataValueDescriptor
- Overrides:
equals
in class DataType
- Parameters:
left
- The value on the left side of the =right
- The value on the right side of the =
is not.
- Returns:
- A SQL boolean value telling whether the two parameters are equal
- Throws:
StandardException
- Thrown on error
notEquals
public final 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 interface DataValueDescriptor
- Overrides:
notEquals
in class DataType
- 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 not equal
- Throws:
StandardException
- Thrown on error
lessThan
public final 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 interface DataValueDescriptor
- Overrides:
lessThan
in class DataType
- 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 first operand is
less than the second operand
- Throws:
StandardException
- Thrown on error
greaterThan
public final 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 interface DataValueDescriptor
- Overrides:
greaterThan
in class DataType
- 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 first operand is
greater than the second operand
- Throws:
StandardException
- Thrown on error
lessOrEquals
public final 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 interface DataValueDescriptor
- Overrides:
lessOrEquals
in class DataType
- 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 first operand is
less than or equal to the second operand
- Throws:
StandardException
- Thrown on error
greaterOrEquals
public final 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 interface DataValueDescriptor
- Overrides:
greaterOrEquals
in class DataType
- 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 first operand is
greater than or equal to the second operand
- Throws:
StandardException
- Thrown on error
charLength
public final NumberDataValue charLength(NumberDataValue result)
throws StandardException
- This method implements the char_length function for bit.
- Specified by:
charLength
in interface ConcatableDataValue
- Parameters:
result
- The result of a previous call to this method, null
if not called yet
- Returns:
- A SQLInteger containing the length of the char value
- Throws:
StandardException
- Thrown on error- See Also:
ConcatableDataValue.charLength(org.apache.derby.iapi.types.NumberDataValue)
concatenate
public final BitDataValue concatenate(BitDataValue left,
BitDataValue right,
BitDataValue result)
throws StandardException
- Description copied from interface:
BitDataValue
- The SQL concatenation '||' operator.
- Specified by:
concatenate
in interface BitDataValue
- Parameters:
left
- String on the left hand side of '||'right
- String on the right hand side of '||'result
- The result of a previous call to this method,
null if not called yet.
- Returns:
- A ConcatableDataValue containing the result of the '||'
- Throws:
StandardException
- Thrown on error- See Also:
BitDataValue.concatenate(org.apache.derby.iapi.types.BitDataValue, org.apache.derby.iapi.types.BitDataValue, org.apache.derby.iapi.types.BitDataValue)
substring
public final ConcatableDataValue substring(NumberDataValue start,
NumberDataValue length,
ConcatableDataValue result,
int maxLen)
throws StandardException
- The SQL substr() function.
- Specified by:
substring
in interface ConcatableDataValue
- Parameters:
start
- Start of substrlength
- Length of substrresult
- The result of a previous call to this method,
null if not called yet.maxLen
- Maximum length of the result
- Returns:
- A ConcatableDataValue containing the result of the substr()
- Throws:
StandardException
- Thrown on error
checkHostVariable
public final void checkHostVariable(int declaredLength)
throws StandardException
- Host variables are rejected if their length is
bigger than the declared length, regardless of
if the trailing bytes are the pad character.
- Specified by:
checkHostVariable
in interface DataValueDescriptor
- Overrides:
checkHostVariable
in class DataType
- Throws:
StandardException
- Variable is too big.
toString
public final java.lang.String toString()
hashCode
public final int hashCode()
compare
private static int compare(byte[] left,
byte[] right)
setInto
public void setInto(java.sql.PreparedStatement ps,
int position)
throws java.sql.SQLException,
StandardException
- Adding this method to ensure that super class' setInto method doesn't get called
that leads to the violation of JDBC spec( untyped nulls ) when batching is turned on.
- Specified by:
setInto
in interface DataValueDescriptor
- Overrides:
setInto
in class DataType
- Throws:
java.sql.SQLException
StandardException
Apache Derby V10.1 Engine Documentation - Copyright © 1997,2005 The Apache Software Foundation or its licensors, as applicable.