Class HashScanResultSet
java.lang.Object
org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl
org.apache.derby.impl.sql.execute.NoPutResultSetImpl
org.apache.derby.impl.sql.execute.ScanResultSet
org.apache.derby.impl.sql.execute.HashScanResultSet
- All Implemented Interfaces:
CursorResultSet
,NoPutResultSet
,ResultSet
,RowLocationRetRowSource
,RowSource
- Direct Known Subclasses:
DistinctScanResultSet
Takes a conglomerate and a table filter builds a hash table on the
specified column of the conglomerate on the 1st open. Look up into the
hash table is done on the hash key column. The hash table consists of
either
DataValueDescriptor[]
s or List
s of
DataValueDescriptor[]
. The store builds the hash table. When a
collision occurs, the store builds a List
with the colliding
DataValueDescriptor[]
s.-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl
BasicNoPutResultSetImpl.FieldComparator
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected ExecRow
private long
static final int
static final float
static final int
protected boolean
private List
private int
protected boolean
boolean
protected BackingStoreHashtable
private boolean
int
private int
boolean
private boolean
int[]
private float
private int
Qualifier[][]
private int
private boolean
private boolean
Qualifier[][]
protected StaticCompiledOpenConglomInfo
private boolean
private GeneratedMethod
private ExecIndexRow
private int
private GeneratedMethod
private ExecIndexRow
private int
Fields inherited from class org.apache.derby.impl.sql.execute.ScanResultSet
accessedCols, candidate, fetchRowLocations, indexName, isolationLevel, lockMode, resultRowBuilder, tableName
Fields inherited from class org.apache.derby.impl.sql.execute.NoPutResultSetImpl
checkNullCols, clonedExecRow, cncLen, resultSetNumber, targetResultSet
Fields inherited from class org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl
activation, beginTime, closeTime, constructorTime, currentRow, endExecutionTime, finished, isOpen, isTopResultSet, nextTime, numOpens, openTime, optimizerEstimatedCost, optimizerEstimatedRowCount, resultDescription, rowsFiltered, rowsSeen, startExecutionTime, subqueryTrackingArray
Fields inherited from interface org.apache.derby.iapi.sql.execute.NoPutResultSet
ABSOLUTE, FIRST, LAST, NEXT, PREVIOUS, RELATIVE, TEMPORARY_RESULT_SET_NUMBER
Fields inherited from interface org.apache.derby.iapi.sql.ResultSet
CURRENT_RESULTSET_ONLY, ENTIRE_RESULTSET_TREE, ISAFTERLAST, ISBEFOREFIRST, ISFIRST, ISLAST
-
Constructor Summary
ConstructorsConstructorDescriptionHashScanResultSet
(long conglomId, StaticCompiledOpenConglomInfo scoci, Activation activation, int resultRowTemplate, int resultSetNumber, GeneratedMethod startKeyGetter, int startSearchOperator, GeneratedMethod stopKeyGetter, int stopSearchOperator, boolean sameStartStopPosition, Qualifier[][] scanQualifiers, Qualifier[][] nextQualifiers, int initialCapacity, float loadFactor, int maxCapacity, int hashKeyItem, String tableName, String userSuppliedOptimizerOverrides, String indexName, boolean isConstraint, boolean forUpdate, int colRefItem, int lockMode, boolean tableLocked, int isolationLevel, boolean skipNullKeyColumns, double optimizerEstimatedRowCount, double optimizerEstimatedCost) -
Method Summary
Modifier and TypeMethodDescription(package private) boolean
Can we get instantaneous locks when getting share row locks at READ COMMITTED.void
close()
If the result set has been opened, close the open scan.This result set has its row from the last fetch done.Return the next row (if any) from the scan (if open).This result set has its row location from the last fetch done.long
getTimeSpent
(int type) Return the total amount of time spent in this ResultSetboolean
Is this ResultSet or it's source result set for updatevoid
openCore()
open a scan on the table. scan parameters are evaluated at each open, so there is probably some way of altering their values...private String
printPosition
(int searchOperator, GeneratedMethod positionGetter, ExecIndexRow eiRow) Return a start or stop positioner as a String.void
reopen this ResultSet.boolean
Do we need to relock the row when going to the heap.private void
Methods inherited from class org.apache.derby.impl.sql.execute.ScanResultSet
getScanIsolationLevel, initIsolationLevel, setRowLocationsState, toXML
Methods inherited from class org.apache.derby.impl.sql.execute.NoPutResultSetImpl
clearCurrentRow, clearOrderableCache, closeRowSource, getCursorName, getNextRowFromRowSource, getResultDescription, getValidColumns, markRowAsDeleted, needsRowLocation, needsRowLocationForDeferredCheckConstraints, needsToClone, offendingRowLocation, positionScanAtRowLocation, printQualifiers, resultSetNumber, rowLocation, setCurrentRow, setHasDeferrableChecks, setNeedsRowLocation, setTargetResultSet, skipRow, skipScan, unpackHashValue, updateRow
Methods inherited from class org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl
addWarning, attachStatementContext, checkCancellationFlag, checkRowPosition, childrenToXML, cleanUp, dumpTimeStats, finish, finishAndRTS, getAbsoluteRow, getActivation, getAutoGeneratedKeysResultset, getBeginExecutionTimestamp, getCompactRow, getCurrentTimeMillis, getElapsedMillis, getEndExecutionTimestamp, getEstimatedRowCount, getExecuteTime, getExecutionFactory, getFirstRow, getLanguageConnectionContext, getLastRow, getNextRow, getPointOfAttachment, getPreviousRow, getRelativeRow, getRowNumber, getSubqueryTrackingArray, getTransactionController, getWarnings, isClosed, isXplainOnlyMode, markAsTopResultSet, modifiedRowCount, open, recordConstructorTime, returnsRows, setAfterLastRow, setBeforeFirstRow, setCompactRow, setCompatRow, toXML
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.apache.derby.iapi.sql.ResultSet
addWarning, checkRowPosition, cleanUp, clearCurrentRow, finish, getAbsoluteRow, getActivation, getAutoGeneratedKeysResultset, getBeginExecutionTimestamp, getCursorName, getEndExecutionTimestamp, getExecuteTime, getFirstRow, getLastRow, getNextRow, getPreviousRow, getRelativeRow, getResultDescription, getRowNumber, getSubqueryTrackingArray, getWarnings, isClosed, modifiedRowCount, open, returnsRows, setAfterLastRow, setBeforeFirstRow, toXML
-
Field Details
-
hashtableBuilt
private boolean hashtableBuilt -
startPosition
-
stopPosition
-
compactRow
-
firstNext
protected boolean firstNext -
numFetchedOnNext
private int numFetchedOnNext -
entryVectorSize
private int entryVectorSize -
entryVector
-
conglomId
private long conglomId -
scoci
-
startKeyGetter
-
startSearchOperator
private int startSearchOperator -
stopKeyGetter
-
stopSearchOperator
private int stopSearchOperator -
scanQualifiers
-
nextQualifiers
-
initialCapacity
private int initialCapacity -
loadFactor
private float loadFactor -
maxCapacity
private int maxCapacity -
userSuppliedOptimizerOverrides
-
forUpdate
public boolean forUpdate -
runTimeStatisticsOn
private boolean runTimeStatisticsOn -
keyColumns
public int[] keyColumns -
sameStartStopPosition
private boolean sameStartStopPosition -
skipNullKeyColumns
private boolean skipNullKeyColumns -
keepAfterCommit
private boolean keepAfterCommit -
hashtable
-
eliminateDuplicates
protected boolean eliminateDuplicates -
scanProperties
-
startPositionString
-
stopPositionString
-
hashtableSize
public int hashtableSize -
isConstraint
public boolean isConstraint -
DEFAULT_INITIAL_CAPACITY
public static final int DEFAULT_INITIAL_CAPACITY- See Also:
-
DEFAULT_LOADFACTOR
public static final float DEFAULT_LOADFACTOR- See Also:
-
DEFAULT_MAX_CAPACITY
public static final int DEFAULT_MAX_CAPACITY- See Also:
-
-
Constructor Details
-
HashScanResultSet
HashScanResultSet(long conglomId, StaticCompiledOpenConglomInfo scoci, Activation activation, int resultRowTemplate, int resultSetNumber, GeneratedMethod startKeyGetter, int startSearchOperator, GeneratedMethod stopKeyGetter, int stopSearchOperator, boolean sameStartStopPosition, Qualifier[][] scanQualifiers, Qualifier[][] nextQualifiers, int initialCapacity, float loadFactor, int maxCapacity, int hashKeyItem, String tableName, String userSuppliedOptimizerOverrides, String indexName, boolean isConstraint, boolean forUpdate, int colRefItem, int lockMode, boolean tableLocked, int isolationLevel, boolean skipNullKeyColumns, double optimizerEstimatedRowCount, double optimizerEstimatedCost) throws StandardException - Throws:
StandardException
-
-
Method Details
-
canGetInstantaneousLocks
boolean canGetInstantaneousLocks()Can we get instantaneous locks when getting share row locks at READ COMMITTED.- Specified by:
canGetInstantaneousLocks
in classScanResultSet
-
openCore
open a scan on the table. scan parameters are evaluated at each open, so there is probably some way of altering their values...- Specified by:
openCore
in interfaceNoPutResultSet
- Throws:
StandardException
- thrown on failure to open
-
reopenCore
reopen this ResultSet.- Specified by:
reopenCore
in interfaceNoPutResultSet
- Overrides:
reopenCore
in classBasicNoPutResultSetImpl
- Throws:
StandardException
- thrown if cursor finished.- See Also:
-
resetProbeVariables
- Throws:
StandardException
-
getNextRowCore
Return the next row (if any) from the scan (if open).- Specified by:
getNextRowCore
in interfaceNoPutResultSet
- Specified by:
getNextRowCore
in classBasicNoPutResultSetImpl
- Returns:
- the next row in the result
- Throws:
StandardException
- thrown on failure to get next row- See Also:
-
close
If the result set has been opened, close the open scan.- Specified by:
close
in interfaceResultSet
- Overrides:
close
in classScanResultSet
- Throws:
StandardException
- thrown on error
-
getTimeSpent
public long getTimeSpent(int type) Return the total amount of time spent in this ResultSet- Specified by:
getTimeSpent
in interfaceResultSet
- Parameters:
type
- CURRENT_RESULTSET_ONLY - time spent only in this ResultSet ENTIRE_RESULTSET_TREE - time spent in this ResultSet and below.- Returns:
- long The total amount of time spent (in milliseconds).
-
requiresRelocking
public boolean requiresRelocking()Description copied from interface:NoPutResultSet
Do we need to relock the row when going to the heap.- Specified by:
requiresRelocking
in interfaceNoPutResultSet
- Overrides:
requiresRelocking
in classBasicNoPutResultSetImpl
- Returns:
- Whether or not we need to relock the row when going to the heap.
- See Also:
-
getRowLocation
This result set has its row location from the last fetch done. If the cursor is closed, a null is returned.- Specified by:
getRowLocation
in interfaceCursorResultSet
- Returns:
- the row location of the current cursor row.
- Throws:
StandardException
- thrown on failure to get row location- See Also:
-
getCurrentRow
This result set has its row from the last fetch done. If the cursor is closed, a null is returned.- Specified by:
getCurrentRow
in interfaceCursorResultSet
- Returns:
- the last row returned;
- Throws:
StandardException
- thrown on failure.- See Also:
-
printStartPosition
-
printStopPosition
-
printPosition
private String printPosition(int searchOperator, GeneratedMethod positionGetter, ExecIndexRow eiRow) Return a start or stop positioner as a String. -
getScanProperties
-
isForUpdate
public boolean isForUpdate()Is this ResultSet or it's source result set for update- Specified by:
isForUpdate
in interfaceNoPutResultSet
- Overrides:
isForUpdate
in classNoPutResultSetImpl
- Returns:
- Whether or not the result set is for update.
-