org.apache.derby.iapi.types
Class SQLBinary

java.lang.Object
  extended by org.apache.derby.iapi.types.DataType
      extended by org.apache.derby.iapi.types.SQLBinary
All Implemented Interfaces:
java.io.Externalizable, java.io.Serializable, java.lang.Comparable, Formatable, Storable, StreamStorable, TypedFormat, BitDataValue, ConcatableDataValue, DataValueDescriptor, Orderable, VariableSizeDataValue
Direct Known Subclasses:
SQLBit, SQLBlob

abstract class SQLBinary
extends DataType
implements BitDataValue

SQLBinary is the abstract class for the binary datatypes.

Format :
Length is encoded to support Cloudscape 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 (Cloudscape 5.x) style or a new Derby style. Derby then uses the next two bits to indicate how the length is encoded.
is one of N styles.


When the value was written from a byte array the Derby encoded byte length format was always used from Derby 10.0 onwards (ie. all open source versions).
When the value was written from a stream (e.g. PreparedStatement.setBinaryStream) then the Cloudscape '5.x format zero' was used by 10.0 and 10.1. The was due to the class RawToBinaryFormatStream always writing four zero bytes for the length before the data.
The Cloudscape '5.x format bits' format I think was never used by Derby.


Field Summary
(package private)  java.sql.Blob _blobValue
           
private static int BASE_MEMORY_USAGE
           
(package private)  byte[] dataValue
           
private static int LEN_OF_BUFFER_TO_WRITE_BLOB
           
(package private) static byte PAD
           
(package private)  java.io.InputStream stream
          Value as a stream, this stream represents the on-disk format of the value.
(package private)  int streamValueLength
          Length of the value in bytes when this value is set as a stream.
 
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
 
Fields inherited from interface org.apache.derby.iapi.types.VariableSizeDataValue
IGNORE_PRECISION
 
Constructor Summary
SQLBinary()
          Create a binary value set to NULL
SQLBinary(java.sql.Blob val)
           
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.
 DataValueDescriptor cloneHolder()
          Shallow clone a StreamStorable without objectifying.
 DataValueDescriptor cloneValue(boolean forceMaterialization)
          Clone this DataValueDescriptor.
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.
private  int getBlobLength()
           
 byte[] getBytes()
          Gets the value in the data value descriptor as a byte[].
 int getLength()
          length in bytes
(package private) abstract  int getMaxMemoryUsage()
          Return max memory usage for a SQL Binary
 java.lang.Object getObject()
          Return a JDBC Blob.
 java.io.InputStream getStream()
          Gets the value in the data stream descriptor as an InputStream.
 java.lang.String getString()
          Used by JDBC -- string should not contain SQL92 formatting.
 java.lang.String getTraceString()
          Gets a trace representation for debugging.
(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()
          Set the value by reading the stream and converting it to an object form.
 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)
          Read the encoded length of the value from the on-disk format.
 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)
          Read the value from an input stream.
 void restoreToNull()
          Restore this object to its (SQL)null value.
 java.io.InputStream returnStream()
          Return the on-disk stream state of the object.
protected  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)
          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)
          Set me to the value represented by this stream.
 void setValue(java.sql.Blob theValue)
          Stuff a BitDataValue with a Blob.
 void setValue(byte[] theValue)
          Set the value of this DataValueDescriptor.
 void setValue(java.io.InputStream theStream, int valueLength)
          Set the value from the stream which is in the on-disk format.
 ConcatableDataValue substring(NumberDataValue start, NumberDataValue length, ConcatableDataValue result, int maxLen)
          The SQL substr() function.
private  void throwStreamingIOException(java.io.IOException ioe)
           
 java.lang.String toString()
           
private  void writeBlob(java.io.ObjectOutput out)
          Serialize a blob using the 8.1 encoding.
 void writeExternal(java.io.ObjectOutput out)
          Write the value out from the byte array (not called if null) using the 8.1 encoding.
private  void writeLength(java.io.ObjectOutput out, int len)
          Write the length if using the 8.1 encoding.
 
Methods inherited from class org.apache.derby.iapi.types.DataType
coalesce, compare, compare, compareTo, dataTypeConversion, equals, flip, genericSetObject, getBoolean, getByte, getDate, getDouble, getFloat, getInt, getLong, getNationalString, getShort, getTime, getTimestamp, getTypeName, hasStream, in, invalidFormat, isNotNull, isNullOp, normalize, outOfRange, recycle, setBigDecimal, setInto, setObject, 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, compare, compare, getBoolean, getByte, getDate, getDouble, getFloat, getInt, getLong, getNewNull, getShort, getTime, getTimestamp, getTypeName, hasStream, in, isNotNull, isNullOp, normalize, recycle, setBigDecimal, setInto, setObjectForCast, setToNull, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValueFromResultSet, typePrecedence, typeToBigDecimal
 
Methods inherited from interface org.apache.derby.iapi.services.io.TypedFormat
getTypeFormatId
 
Methods inherited from interface org.apache.derby.iapi.types.VariableSizeDataValue
setWidth
 

Field Detail

PAD

static final byte PAD
See Also:
Constant Field Values

BASE_MEMORY_USAGE

private static final int BASE_MEMORY_USAGE

LEN_OF_BUFFER_TO_WRITE_BLOB

private static final int LEN_OF_BUFFER_TO_WRITE_BLOB
See Also:
Constant Field Values

_blobValue

java.sql.Blob _blobValue

dataValue

byte[] dataValue

stream

java.io.InputStream stream
Value as a stream, this stream represents the on-disk format of the value. That is it has length information encoded in the first fe bytes.


streamValueLength

int streamValueLength
Length of the value in bytes when this value is set as a stream. Represents the length of the value itself and not the length of the stream which contains this length encoded as the first few bytes. If the value of the stream is unknown then this will be set to -1. If this value is not set as a stream then this value should be ignored.

Constructor Detail

SQLBinary

SQLBinary()
Create a binary value set to NULL


SQLBinary

SQLBinary(byte[] val)

SQLBinary

SQLBinary(java.sql.Blob val)
Method Detail

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

getMaxMemoryUsage

abstract int getMaxMemoryUsage()
Return max memory usage for a SQL Binary


setValue

public final void setValue(byte[] theValue)
Description copied from class: DataType
Set the value of this DataValueDescriptor. At DataType level just throws an error lower classes will override

Specified by:
setValue in interface DataValueDescriptor
Overrides:
setValue in class DataType
Parameters:
theValue - The byte value to set this DataValueDescriptor to

setValue

public final void setValue(java.sql.Blob theValue)
Description copied from interface: BitDataValue
Stuff a BitDataValue with a Blob.

Specified by:
setValue in interface BitDataValue

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()
                                    throws StandardException
Description copied from class: DataType
Gets the value in the data stream descriptor as an InputStream. Throws an exception if the data value is not receivable as a stream.

Specified by:
getStream in interface DataValueDescriptor
Overrides:
getStream in class DataType
Returns:
The data value as an InputStream.
Throws:
StandardException - Thrown on error
See Also:
DataValueDescriptor.hasStream(), StringDataValue.getStreamWithDescriptor()

getBytes

public final byte[] getBytes()
                      throws StandardException
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 Binary or Varbinary.

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

getObject

public java.lang.Object getObject()
                           throws StandardException
Return a JDBC Blob. Only implemented to support DERBY-2201.

Specified by:
getObject in interface DataValueDescriptor
Overrides:
getObject in class DataType
Returns:
The data value as a int.
Throws:
StandardException - Thrown on error

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

throwStreamingIOException

private void throwStreamingIOException(java.io.IOException ioe)
                                throws StandardException
Throws:
StandardException

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

writeBlob

private void writeBlob(java.io.ObjectOutput out)
                throws java.io.IOException
Serialize a blob using the 8.1 encoding. Not called if null.

Throws:
java.io.IOException - io exception

writeLength

private void writeLength(java.io.ObjectOutput out,
                         int len)
                  throws java.io.IOException
Write the length if using the 8.1 encoding.

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
Read the encoded length of the value from the on-disk format.

Throws:
java.io.IOException
See Also:
SQLBinary

readFromStream

private void readFromStream(java.io.InputStream in)
                     throws java.io.IOException
Read the value from an input stream. The length encoded in the input stream has already been read and determined to be unknown.

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
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 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 greater 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

cloneHolder

public final DataValueDescriptor cloneHolder()
Shallow clone a StreamStorable without objectifying. This is used to avoid unnecessary objectifying of a stream object. Beetle 4896

Specified by:
cloneHolder in interface DataValueDescriptor
Overrides:
cloneHolder in class DataType
Returns:
A shallow clone.

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 if forceMaterialization is set to false. An example is if you need to access the value you just read using cloneValue after the current transaction has ended, or after the source result set has been closed.

Specified by:
cloneValue in interface DataValueDescriptor
Parameters:
forceMaterialization - any streams representing the data value will be materialized if true, the data value will be kept as a stream if possible if false
Returns:
A clone of the DataValueDescriptor with the same initial value as this.
See Also:
DataValueDescriptor.cloneValue(boolean)

returnStream

public final java.io.InputStream returnStream()
Description copied from interface: StreamStorable
Return the on-disk stream state of the object.

Specified by:
returnStream in interface StreamStorable

setStream

public final void setStream(java.io.InputStream newStream)
Set me to the value represented by this stream. The format of the stream is the on-disk format described in this class's javadoc. That is the length is encoded in the first few bytes of the stream.

Specified by:
setStream in interface StreamStorable

loadStream

public final void loadStream()
                      throws StandardException
Description copied from interface: StreamStorable
Set the value by reading the stream and converting it to an object form.

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 valueLength)
Set the value from the stream which is in the on-disk format.

Specified by:
setValue in interface DataValueDescriptor
Overrides:
setValue in class DataType
Parameters:
theStream - On disk format of the stream
valueLength - length of the logical value in bytes, or DataValueDescriptor.UNKNOWN_LOGICAL_LENGTH

setFrom

protected final 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 class DataType
Parameters:
theValue - The DataValueDescriptor that holds the value to which we want to set this DataValueDescriptor's value.
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 substr
length - Length of substr
result - 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()
Overrides:
toString in class java.lang.Object

hashCode

public final int hashCode()
Overrides:
hashCode in class java.lang.Object

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 - thrown by the PreparedStatement object
StandardException - thrown by me accessing my value.

getTraceString

public final java.lang.String getTraceString()
                                      throws StandardException
Gets a trace representation for debugging.

Specified by:
getTraceString in interface DataValueDescriptor
Overrides:
getTraceString in class DataType
Returns:
a trace representation of this SQL DataType.
Throws:
StandardException - if getting the data value fails.
See Also:
DataValueDescriptor.getString()

getBlobLength

private int getBlobLength()
                   throws StandardException
Throws:
StandardException

Built on Thu 2011-03-10 11:54:14+0000, from revision ???

Apache Derby V10.6 Internals - Copyright © 2004,2007 The Apache Software Foundation. All Rights Reserved.