Class DependentResultSet
- 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.DependentResultSet
-
- All Implemented Interfaces:
CursorResultSet,NoPutResultSet,ResultSet,RowLocationRetRowSource,RowSource
class DependentResultSet extends ScanResultSet implements CursorResultSet
DependentResultSet should be used by only ON DELETE CASCADE/ON DELETE SET NULL ref actions implementation to gather the rows from the dependent tables. Idea is to scan the foreign key index for the rows in the source table materialized temporary result set. Scanning of foreign key index gives us the rows that needs to be deleted on dependent tables. Using the row location we got from the index , base row is fetched.
-
-
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, compactRow, constructorTime, currentRow, endExecutionTime, finished, 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 DependentResultSet(long conglomId, StaticCompiledOpenConglomInfo scoci, Activation activation, int resultRowTemplate, int resultSetNumber, GeneratedMethod startKeyGetter, int startSearchOperator, GeneratedMethod stopKeyGetter, int stopSearchOperator, boolean sameStartStopPosition, Qualifier[][] qualifiers, java.lang.String tableName, java.lang.String userSuppliedOptimizerOverrides, java.lang.String indexName, boolean isConstraint, boolean forUpdate, int colRefItem, int lockMode, boolean tableLocked, int isolationLevel, int rowsPerRead, boolean oneRowScan, double optimizerEstimatedRowCount, double optimizerEstimatedCost, java.lang.String parentResultSetId, long fkIndexConglomId, int fkColArrayItem, int rltItem)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidaddNewSources()(package private) booleancanGetInstantaneousLocks()Can we get instantaneous locks when getting share row locks at READ COMMITTED.voidclose()Close the all the opens we did in this result set.private ExecRowfetchBaseRow()Fetch the base row corresponding to the current index rowprivate ExecRowfetchIndexRow()Fetch a row from the index scan.voidfinish()Tells the system that there will be no more access to any database information via this result set; in particular, no more calls to open().ExecRowgetCurrentRow()Returns the current row of the result set.private ExecRowgetNextParentRow()ExecRowgetNextRowCore()Return the requested values computed from the next row (if any) for which the restriction evaluates to true.RowLocationgetRowLocation()Returns the row location of the current base table row of the cursor.java.util.PropertiesgetScanProperties()longgetTimeSpent(int type)Return the total amount of time spent in this ResultSetvoidopenCore()open a scan on the table. scan parameters are evaluated at each open, so there is probably some way of altering their values...ConglomerateControlleropenHeapConglomerateController()private voidopenIndexScan(ExecRow searchRow)private ScanControlleropenIndexScanController(ExecRow searchRow)Get a scan controller positioned using searchRow as the start/stop position.private java.lang.StringprintPosition(int searchOperator, ExecIndexRow positioner)Return a start or stop positioner as a String.java.lang.StringprintQualifiers()Return an array of Qualifiers as a Stringjava.lang.StringprintStartPosition()java.lang.StringprintStopPosition()private voidreopenIndexScanController(ExecRow searchRow)private voidsetupQualifierRow(ExecRow searchRow)-
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, isForUpdate, 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, 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, reopenCore, requiresRelocking, 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, 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
-
heapCC
ConglomerateController heapCC
-
baseRowLocation
RowLocation baseRowLocation
-
indexRow
ExecRow indexRow
-
indexQualifierRow
IndexRow indexQualifierRow
-
indexSC
ScanController indexSC
-
indexScoci
StaticCompiledOpenConglomInfo indexScoci
-
indexDcoci
DynamicCompiledOpenConglomInfo indexDcoci
-
numFkColumns
int numFkColumns
-
isOpen
boolean isOpen
-
source
TemporaryRowHolderResultSet source
-
tc
TransactionController tc
-
parentResultSetId
java.lang.String parentResultSetId
-
fkColArray
int[] fkColArray
-
rowLocation
RowLocation rowLocation
-
sourceRowHolders
TemporaryRowHolder[] sourceRowHolders
-
sourceResultSets
TemporaryRowHolderResultSet[] sourceResultSets
-
sourceOpened
int[] sourceOpened
-
sArrayIndex
int sArrayIndex
-
sVector
java.util.Vector<TemporaryRowHolder> sVector
-
scanController
protected ScanController scanController
-
scanControllerOpened
protected boolean scanControllerOpened
-
isKeyed
protected boolean isKeyed
-
firstScan
protected boolean firstScan
-
startPosition
protected ExecIndexRow startPosition
-
stopPosition
protected ExecIndexRow stopPosition
-
conglomId
protected long conglomId
-
heapDcoci
protected DynamicCompiledOpenConglomInfo heapDcoci
-
heapScoci
protected StaticCompiledOpenConglomInfo heapScoci
-
startSearchOperator
protected int startSearchOperator
-
stopSearchOperator
protected int stopSearchOperator
-
qualifiers
protected Qualifier[][] qualifiers
-
userSuppliedOptimizerOverrides
public java.lang.String userSuppliedOptimizerOverrides
-
runTimeStatisticsOn
protected boolean runTimeStatisticsOn
-
rowsPerRead
public int rowsPerRead
-
forUpdate
public boolean forUpdate
-
scanProperties
private java.util.Properties scanProperties
-
startPositionString
public java.lang.String startPositionString
-
stopPositionString
public java.lang.String stopPositionString
-
isConstraint
public boolean isConstraint
-
coarserLock
public boolean coarserLock
-
oneRowScan
public boolean oneRowScan
-
rowsThisScan
protected long rowsThisScan
-
searchRow
ExecRow searchRow
-
-
Constructor Detail
-
DependentResultSet
DependentResultSet(long conglomId, StaticCompiledOpenConglomInfo scoci, Activation activation, int resultRowTemplate, int resultSetNumber, GeneratedMethod startKeyGetter, int startSearchOperator, GeneratedMethod stopKeyGetter, int stopSearchOperator, boolean sameStartStopPosition, Qualifier[][] qualifiers, java.lang.String tableName, java.lang.String userSuppliedOptimizerOverrides, java.lang.String indexName, boolean isConstraint, boolean forUpdate, int colRefItem, int lockMode, boolean tableLocked, int isolationLevel, int rowsPerRead, boolean oneRowScan, double optimizerEstimatedRowCount, double optimizerEstimatedCost, java.lang.String parentResultSetId, long fkIndexConglomId, int fkColArrayItem, int rltItem) throws StandardException- Throws:
StandardException
-
-
Method Detail
-
openIndexScanController
private ScanController openIndexScanController(ExecRow searchRow) throws StandardException
Get a scan controller positioned using searchRow as the start/stop position. The assumption is that searchRow is of the same format as the index being opened.- Parameters:
searchRow- the row to match- Throws:
StandardException- on error
-
reopenIndexScanController
private void reopenIndexScanController(ExecRow searchRow) throws StandardException
- Throws:
StandardException
-
setupQualifierRow
private void setupQualifierRow(ExecRow searchRow)
-
openIndexScan
private void openIndexScan(ExecRow searchRow) throws StandardException
- Throws:
StandardException
-
fetchIndexRow
private ExecRow fetchIndexRow() throws StandardException
Fetch a row from the index scan.- Returns:
- The row or null. Note that the next call to fetch will replace the columns in the returned row.
- Throws:
StandardException- Ooops
-
fetchBaseRow
private ExecRow fetchBaseRow() throws StandardException
Fetch the base row corresponding to the current index row- Returns:
- The base row row or null.
- Throws:
StandardException- Ooops
-
getNextRowCore
public ExecRow getNextRowCore() throws StandardException
Description copied from interface:NoPutResultSetReturn the requested values computed from the next row (if any) for which the restriction evaluates to true.restriction and projection parameters are evaluated for each row.
- Specified by:
getNextRowCorein interfaceNoPutResultSet- Specified by:
getNextRowCorein classBasicNoPutResultSetImpl- Returns:
- the next row in the result
- Throws:
StandardException- thrown if cursor finished.- See Also:
NoPutResultSet.getNextRowCore()
-
getNextParentRow
private ExecRow getNextParentRow() throws StandardException
- Throws:
StandardException
-
openHeapConglomerateController
public ConglomerateController openHeapConglomerateController() throws StandardException
- Throws:
StandardException
-
close
public void close() throws StandardExceptionClose the all the opens we did in this result set.- Specified by:
closein interfaceResultSet- Overrides:
closein classScanResultSet- Throws:
StandardException- if an error occurs
-
finish
public void finish() throws StandardExceptionDescription copied from interface:ResultSetTells the system that there will be no more access to any database information via this result set; in particular, no more calls to open(). Will close the result set if it is not already closed.- Specified by:
finishin interfaceResultSet- Overrides:
finishin classBasicNoPutResultSetImpl- Throws:
StandardException- on error
-
openCore
public void openCore() throws StandardExceptionDescription copied from interface:NoPutResultSetopen a scan on the table. scan parameters are evaluated at each open, so there is probably some way of altering their values...openCore() can only be called on a closed result set. see reopenCore if you want to reuse an open result set.
For NoPutResultSet open() must only be called on the top ResultSet. Opening of NoPutResultSet's below the top result set are implemented by calling openCore.
- Specified by:
openCorein interfaceNoPutResultSet- Throws:
StandardException- thrown if cursor finished.
-
addNewSources
private void addNewSources()
-
canGetInstantaneousLocks
boolean canGetInstantaneousLocks()
Can we get instantaneous locks when getting share row locks at READ COMMITTED.- Specified by:
canGetInstantaneousLocksin classScanResultSet
-
getTimeSpent
public long getTimeSpent(int type)
Description copied from interface:ResultSetReturn 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).
-
getRowLocation
public RowLocation getRowLocation() throws StandardException
Description copied from interface:CursorResultSetReturns the row location of the current base table row of the cursor. If this cursor's row is composed of multiple base tables' rows, i.e. due to a join, then a null is returned.- Specified by:
getRowLocationin interfaceCursorResultSet- Returns:
- the row location of the current cursor row.
- Throws:
StandardException- thrown on failure to get location from storage engine
-
getCurrentRow
public ExecRow getCurrentRow() throws StandardException
Description copied from interface:CursorResultSetReturns the current row of the result set. REMIND: eventually, this will only return the current row for result sets that need to return it; either some field in the activation or a parameter in the constructor will be used to signal that this needs to function. This will let us limit the number of live objects we are holding on to.- Specified by:
getCurrentRowin interfaceCursorResultSet- Returns:
- the last row returned by getNextRow. null if closed.
- Throws:
StandardException- thrown on failure.
-
getScanProperties
public java.util.Properties getScanProperties()
-
printStartPosition
public java.lang.String printStartPosition()
-
printStopPosition
public java.lang.String printStopPosition()
-
printPosition
private java.lang.String printPosition(int searchOperator, ExecIndexRow positioner)Return a start or stop positioner as a String. If we already generated the information, then use that. Otherwise, invoke the activation to get it.
-
printQualifiers
public java.lang.String printQualifiers()
Return an array of Qualifiers as a String
-
-