org.apache.derby.impl.store.access.heap
Class HeapRowLocation

java.lang.Object
  extended byorg.apache.derby.iapi.types.DataType
      extended byorg.apache.derby.impl.store.access.heap.HeapRowLocation
All Implemented Interfaces:
CloneableObject, DataValueDescriptor, java.io.Externalizable, Formatable, Orderable, RowLocation, java.io.Serializable, Storable, TypedFormat

public class HeapRowLocation
extends DataType
implements RowLocation

See Also:
Serialized Form
Format IDACCESS_HEAP_ROW_LOCATION_V1_ID
PurposeObject used to store the location of a row within a Heap table. One of these is stored in every row of a btree secondary index built on a heap base table.
UpgradeThe type of the btree determines the type of rowlocation stored. In current btree implementations only one type of rowlocation can be stored per tree, and it's type is stored in the format id array stored in the Conglomerate object.
Disk Layoutpage number(CompressedNumber.writeLong()) record id(CompressedNumber.writeInt())

Field Summary
private static int BASE_MEMORY_USAGE
           
private  long pageno
          The HeapRowLocation simply maintains a raw store record handle.
private  int recid
           
private static int RECORD_HANDLE_MEMORY_USAGE
           
private  RecordHandle rh
           
 
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
  HeapRowLocation()
           
private HeapRowLocation(HeapRowLocation other)
           
(package private) HeapRowLocation(RecordHandle rh)
           
 
Method Summary
 java.lang.Object cloneObject()
          Get a shallow copy of the object and return it.
 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.
 boolean equals(java.lang.Object ref)
          Implement value equality.
 int estimateMemoryUsage()
          Estimate the memory usage in bytes of the data value and the overhead of the class.
 DataValueDescriptor getClone()
          Clone this DataValueDescriptor.
 int getLength()
          Gets the length of the data value.
 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 Java Object.
 RecordHandle getRecordHandle(ContainerHandle ch)
           
 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 datatype
 int hashCode()
          Return a hashcode based on value.
 boolean isNull()
          Return whether the value is null or not.
 void readExternal(java.io.ObjectInput in)
           
 void readExternalFromArray(ArrayInputStream in)
          Read the DataValueDescriptor from the stream.
 void restoreToNull()
          Restore this object to its (SQL)null value.
protected  void setFrom(DataValueDescriptor theValue)
           
(package private)  void setFrom(RecordHandle rh)
           
 void setValue(java.lang.Object o)
          Set the value of this DataValueDescriptor to the given value
 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.
 java.lang.String toString()
           
 void writeExternal(java.io.ObjectOutput out)
           
 
Methods inherited from class org.apache.derby.iapi.types.DataType
checkHostVariable, coalesce, dataTypeConversion, equals, flip, genericSetObject, getBoolean, getByte, getBytes, getDate, getDouble, getFloat, getInt, getLong, getNationalString, getShort, getStream, getTime, getTimestamp, greaterOrEquals, greaterThan, in, invalidFormat, isNotNull, isNullOp, lessOrEquals, lessThan, normalize, notEquals, outOfRange, setBigDecimal, setInto, setInto, setObjectForCast, setToNull, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, 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
checkHostVariable, coalesce, equals, getBoolean, getByte, getBytes, getDate, getDouble, getFloat, getInt, getLong, getShort, getStream, getTime, getTimestamp, greaterOrEquals, greaterThan, in, isNotNull, isNullOp, lessOrEquals, lessThan, normalize, notEquals, setBigDecimal, setInto, setInto, setObjectForCast, setToNull, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, typePrecedence, typeToBigDecimal
 

Field Detail

pageno

private long pageno
The HeapRowLocation simply maintains a raw store record handle.


recid

private int recid

rh

private RecordHandle rh

BASE_MEMORY_USAGE

private static final int BASE_MEMORY_USAGE

RECORD_HANDLE_MEMORY_USAGE

private static final int RECORD_HANDLE_MEMORY_USAGE
Constructor Detail

HeapRowLocation

HeapRowLocation(RecordHandle rh)

HeapRowLocation

public HeapRowLocation()

HeapRowLocation

private HeapRowLocation(HeapRowLocation other)
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

getTypeName

public java.lang.String getTypeName()
Description copied from interface: DataValueDescriptor
Get the SQL name of the datatype

Specified by:
getTypeName in interface DataValueDescriptor
Returns:
The SQL name of the datatype

setValueFromResultSet

public void setValueFromResultSet(java.sql.ResultSet resultSet,
                                  int colNumber,
                                  boolean isNullable)
Description copied from interface: DataValueDescriptor
Set the value based on the value for the specified DataValueDescriptor from the specified ResultSet.

Specified by:
setValueFromResultSet in interface DataValueDescriptor
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)
Returns:
Nothing.

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 interface DataValueDescriptor

setValue

public void setValue(java.lang.Object o)
Description copied from interface: DataValueDescriptor
Set the value of this DataValueDescriptor to the given value

Specified by:
setValue in interface DataValueDescriptor
Overrides:
setValue in class DataType

getObject

public java.lang.Object getObject()
Description copied from interface: DataValueDescriptor
Gets the value in the data value descriptor as a Java Object. The type of the Object will be the Java object type corresponding to the data value's SQL type. JDBC defines a mapping between Java object types and SQL types - we will allow that to be extended through user type definitions. Throws an exception if the data value is not an object (yeah, right).

Specified by:
getObject in interface DataValueDescriptor
Overrides:
getObject in class DataType
Returns:
The data value as a int.

cloneObject

public java.lang.Object cloneObject()
Description copied from interface: CloneableObject
Get a shallow copy of the object and return it. This is used by the sorter to clone columns. It should be cloning the column holder but not its value. The only difference between this method and getClone is this one does not objectify a stream.

Specified by:
cloneObject in interface CloneableObject
Overrides:
cloneObject in class DataType
Returns:
clone of me as an Object

getClone

public 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.

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 interface DataValueDescriptor
Returns:
The length of the data value

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 interface DataValueDescriptor
Returns:
The data value as a String.

compare

public boolean compare(int op,
                       DataValueDescriptor other,
                       boolean orderedNulls,
                       boolean unknownRV)
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

compare

public int compare(DataValueDescriptor other)
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.

getRecordHandle

public RecordHandle getRecordHandle(ContainerHandle ch)
                             throws StandardException
Throws:
StandardException

setFrom

void setFrom(RecordHandle rh)

getTypeFormatId

public int getTypeFormatId()
Return my format identifier.

Specified by:
getTypeFormatId in interface TypedFormat
Returns:
The identifier. (A UUID stuffed in an array of 16 bytes).
See Also:
TypedFormat.getTypeFormatId()

isNull

public boolean isNull()
Description copied from interface: Storable
Return whether the value is null or not.

Specified by:
isNull in interface Storable
Returns:
true if the value is null and false otherwise.

writeExternal

public void writeExternal(java.io.ObjectOutput out)
                   throws java.io.IOException
Specified by:
writeExternal in interface java.io.Externalizable
Throws:
java.io.IOException

readExternal

public void readExternal(java.io.ObjectInput in)
                  throws java.io.IOException,
                         java.lang.ClassNotFoundException
Specified by:
readExternal in interface java.io.Externalizable
Throws:
java.lang.ClassNotFoundException - A class needed to read the stored form of this object could not be found.
java.io.IOException
See Also:
Externalizable.readExternal(java.io.ObjectInput)

readExternalFromArray

public void readExternalFromArray(ArrayInputStream in)
                           throws java.io.IOException,
                                  java.lang.ClassNotFoundException
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.lang.ClassNotFoundException - If a necessary class can not be found while reading the object from the stream.
java.io.IOException - Usual error is if you try to read past limit on the stream.

restoreToNull

public void restoreToNull()
Description copied from interface: Storable
Restore this object to its (SQL)null value.

Specified by:
restoreToNull in interface Storable

setFrom

protected void setFrom(DataValueDescriptor theValue)
Overrides:
setFrom in class DataType

equals

public boolean equals(java.lang.Object ref)
Implement value equality.
MT - Thread safe

Overrides:
equals in class DataType

hashCode

public int hashCode()
Return a hashcode based on value.
MT - thread safe


toString

public java.lang.String toString()

Built on Tue 2006-10-10 19:23:47+0200, from revision exported

Apache Derby V10.1 Engine Documentation - Copyright © 1997,2005 The Apache Software Foundation or its licensors, as applicable.