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
public class HashScanResultSet extends ScanResultSet implements CursorResultSet
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 eitherDataValueDescriptor[]s orLists ofDataValueDescriptor[]. The store builds the hash table. When a collision occurs, the store builds aListwith the collidingDataValueDescriptor[]s.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl
BasicNoPutResultSetImpl.FieldComparator
-
-
Field Summary
-
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
Constructors Constructor Description 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, java.lang.String tableName, java.lang.String userSuppliedOptimizerOverrides, java.lang.String indexName, boolean isConstraint, boolean forUpdate, int colRefItem, int lockMode, boolean tableLocked, int isolationLevel, boolean skipNullKeyColumns, double optimizerEstimatedRowCount, double optimizerEstimatedCost)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) booleancanGetInstantaneousLocks()Can we get instantaneous locks when getting share row locks at READ COMMITTED.voidclose()If the result set has been opened, close the open scan.ExecRowgetCurrentRow()This result set has its row from the last fetch done.ExecRowgetNextRowCore()Return the next row (if any) from the scan (if open).RowLocationgetRowLocation()This result set has its row location from the last fetch done.java.util.PropertiesgetScanProperties()longgetTimeSpent(int type)Return the total amount of time spent in this ResultSetbooleanisForUpdate()Is this ResultSet or it's source result set for updatevoidopenCore()open a scan on the table. scan parameters are evaluated at each open, so there is probably some way of altering their values...private java.lang.StringprintPosition(int searchOperator, GeneratedMethod positionGetter, ExecIndexRow eiRow)Return a start or stop positioner as a String.java.lang.StringprintStartPosition()java.lang.StringprintStopPosition()voidreopenCore()reopen this ResultSet.booleanrequiresRelocking()Do we need to relock the row when going to the heap.private voidresetProbeVariables()-
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 Detail
-
hashtableBuilt
private boolean hashtableBuilt
-
startPosition
private ExecIndexRow startPosition
-
stopPosition
private ExecIndexRow stopPosition
-
compactRow
protected ExecRow compactRow
-
firstNext
protected boolean firstNext
-
numFetchedOnNext
private int numFetchedOnNext
-
entryVectorSize
private int entryVectorSize
-
entryVector
private java.util.List entryVector
-
conglomId
private long conglomId
-
scoci
protected StaticCompiledOpenConglomInfo scoci
-
startKeyGetter
private GeneratedMethod startKeyGetter
-
startSearchOperator
private int startSearchOperator
-
stopKeyGetter
private GeneratedMethod stopKeyGetter
-
stopSearchOperator
private int stopSearchOperator
-
scanQualifiers
public Qualifier[][] scanQualifiers
-
nextQualifiers
public Qualifier[][] nextQualifiers
-
initialCapacity
private int initialCapacity
-
loadFactor
private float loadFactor
-
maxCapacity
private int maxCapacity
-
userSuppliedOptimizerOverrides
public java.lang.String 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
protected BackingStoreHashtable hashtable
-
eliminateDuplicates
protected boolean eliminateDuplicates
-
scanProperties
public java.util.Properties scanProperties
-
startPositionString
public java.lang.String startPositionString
-
stopPositionString
public java.lang.String stopPositionString
-
hashtableSize
public int hashtableSize
-
isConstraint
public boolean isConstraint
-
DEFAULT_INITIAL_CAPACITY
public static final int DEFAULT_INITIAL_CAPACITY
- See Also:
- Constant Field Values
-
DEFAULT_LOADFACTOR
public static final float DEFAULT_LOADFACTOR
- See Also:
- Constant Field Values
-
DEFAULT_MAX_CAPACITY
public static final int DEFAULT_MAX_CAPACITY
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
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, java.lang.String tableName, java.lang.String userSuppliedOptimizerOverrides, java.lang.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 Detail
-
canGetInstantaneousLocks
boolean canGetInstantaneousLocks()
Can we get instantaneous locks when getting share row locks at READ COMMITTED.- Specified by:
canGetInstantaneousLocksin classScanResultSet
-
openCore
public void openCore() throws StandardExceptionopen a scan on the table. scan parameters are evaluated at each open, so there is probably some way of altering their values...- Specified by:
openCorein interfaceNoPutResultSet- Throws:
StandardException- thrown on failure to open
-
reopenCore
public void reopenCore() throws StandardExceptionreopen this ResultSet.- Specified by:
reopenCorein interfaceNoPutResultSet- Overrides:
reopenCorein classBasicNoPutResultSetImpl- Throws:
StandardException- thrown if cursor finished.- See Also:
NoPutResultSet.openCore()
-
resetProbeVariables
private void resetProbeVariables() throws StandardException- Throws:
StandardException
-
getNextRowCore
public ExecRow getNextRowCore() throws StandardException
Return the next row (if any) from the scan (if open).- Specified by:
getNextRowCorein interfaceNoPutResultSet- Specified by:
getNextRowCorein classBasicNoPutResultSetImpl- Returns:
- the next row in the result
- Throws:
StandardException- thrown on failure to get next row- See Also:
NoPutResultSet.getNextRowCore()
-
close
public void close() throws StandardExceptionIf the result set has been opened, close the open scan.- Specified by:
closein interfaceResultSet- Overrides:
closein classScanResultSet- Throws:
StandardException- thrown on error
-
getTimeSpent
public long getTimeSpent(int type)
Return the total amount of time spent in this ResultSet- Specified by:
getTimeSpentin 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:NoPutResultSetDo we need to relock the row when going to the heap.- Specified by:
requiresRelockingin interfaceNoPutResultSet- Overrides:
requiresRelockingin classBasicNoPutResultSetImpl- Returns:
- Whether or not we need to relock the row when going to the heap.
- See Also:
NoPutResultSet.requiresRelocking()
-
getRowLocation
public RowLocation getRowLocation() throws StandardException
This result set has its row location from the last fetch done. If the cursor is closed, a null is returned.- Specified by:
getRowLocationin interfaceCursorResultSet- Returns:
- the row location of the current cursor row.
- Throws:
StandardException- thrown on failure to get row location- See Also:
CursorResultSet
-
getCurrentRow
public ExecRow getCurrentRow() throws StandardException
This result set has its row from the last fetch done. If the cursor is closed, a null is returned.- Specified by:
getCurrentRowin interfaceCursorResultSet- Returns:
- the last row returned;
- Throws:
StandardException- thrown on failure.- See Also:
CursorResultSet
-
printStartPosition
public java.lang.String printStartPosition()
-
printStopPosition
public java.lang.String printStopPosition()
-
printPosition
private java.lang.String printPosition(int searchOperator, GeneratedMethod positionGetter, ExecIndexRow eiRow)Return a start or stop positioner as a String.
-
getScanProperties
public java.util.Properties getScanProperties()
-
isForUpdate
public boolean isForUpdate()
Is this ResultSet or it's source result set for update- Specified by:
isForUpdatein interfaceNoPutResultSet- Overrides:
isForUpdatein classNoPutResultSetImpl- Returns:
- Whether or not the result set is for update.
-
-