public class HeapRowLocation extends DataType implements RowLocation, RefDataValue
It is implementad as a wrapper around a raw store record handle.
Format ID | ACCESS_HEAP_ROW_LOCATION_V1_ID |
Purpose | Object 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. |
Upgrade | The 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 Layout | page number(CompressedNumber.writeLong()) record id(CompressedNumber.writeInt()) |
Modifier and Type | Field and Description |
---|---|
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 |
UNKNOWN_LOGICAL_LENGTH
ORDER_OP_EQUALS, ORDER_OP_GREATEROREQUALS, ORDER_OP_GREATERTHAN, ORDER_OP_LESSOREQUALS, ORDER_OP_LESSTHAN
Modifier | Constructor and Description |
---|---|
|
HeapRowLocation() |
private |
HeapRowLocation(HeapRowLocation other) |
(package private) |
HeapRowLocation(RecordHandle rh) |
Modifier and Type | Method and Description |
---|---|
DataValueDescriptor |
cloneValue(boolean forceMaterialization)
Clone this DataValueDescriptor.
|
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.
|
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 int.
|
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.
|
DataValueDescriptor |
recycle()
Recycle this HeapRowLocation object.
|
void |
restoreToNull()
Restore this object to its (SQL)null value.
|
protected void |
setFrom(DataValueDescriptor theValue)
Set the value of this DataValueDescriptor based on the value
of the specified DataValueDescriptor.
|
(package private) void |
setFrom(RecordHandle rh) |
void |
setValue(RowLocation rowLocation)
Set the value of this RefDataValue.
|
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) |
checkHostVariable, cloneHolder, coalesce, compare, compare, compareTo, dataTypeConversion, equals, flip, getBoolean, getByte, getBytes, getDate, getDouble, getFloat, getInt, getLong, getShort, getStream, getTime, getTimestamp, getTraceString, greaterOrEquals, greaterThan, hasStream, 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, setValue, setValue, setValue, throwLangSetMismatch, typePrecedence, typeToBigDecimal
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
checkHostVariable, cloneHolder, coalesce, compare, compare, equals, getBoolean, getByte, getBytes, getDate, getDouble, getFloat, getInt, getLong, getShort, getStream, getTime, getTimestamp, getTraceString, greaterOrEquals, greaterThan, hasStream, 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, setValue, setValue, setValue, typePrecedence, typeToBigDecimal
private long pageno
private int recid
private RecordHandle rh
private static final int BASE_MEMORY_USAGE
private static final int RECORD_HANDLE_MEMORY_USAGE
HeapRowLocation(RecordHandle rh)
public HeapRowLocation()
private HeapRowLocation(HeapRowLocation other)
public int estimateMemoryUsage()
DataValueDescriptor
estimateMemoryUsage
in interface DataValueDescriptor
public java.lang.String getTypeName()
DataValueDescriptor
getTypeName
in interface DataValueDescriptor
public void setValueFromResultSet(java.sql.ResultSet resultSet, int colNumber, boolean isNullable)
DataValueDescriptor
setValueFromResultSet
in interface DataValueDescriptor
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)public DataValueDescriptor getNewNull()
DataValueDescriptor
getNewNull
in interface DataValueDescriptor
public java.lang.Object getObject()
DataType
getObject
in interface DataValueDescriptor
getObject
in class DataType
public DataValueDescriptor cloneValue(boolean forceMaterialization)
DataValueDescriptor
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.
cloneValue
in interface DataValueDescriptor
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
DataValueDescriptor
with the same initial
value as this.public DataValueDescriptor recycle()
recycle
in interface DataValueDescriptor
recycle
in class DataType
public int getLength()
DataValueDescriptor
getLength
in interface DataValueDescriptor
public java.lang.String getString()
DataValueDescriptor
getString
in interface DataValueDescriptor
public boolean compare(int op, DataValueDescriptor other, boolean orderedNulls, boolean unknownRV)
DataValueDescriptor
compare
in interface DataValueDescriptor
compare
in class DataType
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.public int compare(DataValueDescriptor other)
DataValueDescriptor
compare
in interface DataValueDescriptor
other
- The Orderable to compare this one to.public void setValue(RowLocation rowLocation)
RefDataValue
setValue
in interface RefDataValue
rowLocation
- Contains the boolean value to set this RefDataValue
to. Null means set this RefDataValue to null.public RecordHandle getRecordHandle(ContainerHandle ch) throws StandardException
StandardException
void setFrom(RecordHandle rh)
public int getTypeFormatId()
getTypeFormatId
in interface TypedFormat
TypedFormat.getTypeFormatId()
public boolean isNull()
Storable
public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException
writeExternal
in interface java.io.Externalizable
java.io.IOException
public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException
readExternal
in interface java.io.Externalizable
java.lang.ClassNotFoundException
- A class needed to read the
stored form of this object could not be found.java.io.IOException
Externalizable.readExternal(java.io.ObjectInput)
public void readExternalFromArray(ArrayInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException
DataType
readExternal()
, which accesses the ArrayInputStream
as a generic stream. If sub-classes can implement it more efficiently
by accessing the array, they should override this method.readExternalFromArray
in interface DataValueDescriptor
readExternalFromArray
in class DataType
in
- The array stream positioned at the beginning of the
byte stream to read from.java.io.IOException
- Usual error is if you try to read
past limit on the stream.java.lang.ClassNotFoundException
- If a necessary class can not be
found while reading the object from
the stream.DataValueDescriptor.readExternalFromArray(org.apache.derby.iapi.services.io.ArrayInputStream)
,
Externalizable.readExternal(java.io.ObjectInput)
public void restoreToNull()
Storable
restoreToNull
in interface Storable
protected void setFrom(DataValueDescriptor theValue)
DataType
public boolean equals(java.lang.Object ref)
public int hashCode()
hashCode
in class java.lang.Object
public java.lang.String toString()
toString
in class java.lang.Object
Apache Derby V10.13 Internals - Copyright © 2004,2016 The Apache Software Foundation. All Rights Reserved.