Class CurrentOfResultSet
java.lang.Object
org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl
org.apache.derby.impl.sql.execute.NoPutResultSetImpl
org.apache.derby.impl.sql.execute.CurrentOfResultSet
- All Implemented Interfaces:
CursorResultSet
,NoPutResultSet
,ResultSet
,RowLocationRetRowSource
,RowSource
Takes a cursor name and returns the current row
of the cursor; for use in generating the source
row and row location for positioned update/delete operations.
This result set returns only one row.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl
BasicNoPutResultSetImpl.FieldComparator
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate CursorResultSet
private final String
private boolean
private RowLocation
private ExecRow
private CursorResultSet
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, 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
ConstructorsConstructorDescriptionCurrentOfResultSet
(String cursorName, Activation activation, int resultSetNumber) -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
If the result set has been opened, close the open scan.void
finish()
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().Returns the current row of the result set.private void
Because the positioned operation only gets one location per execution, and the cursor could be completely different for each execution (closed and reopened, perhaps), we determine where caching the cursor could be applied.If open and not returned yet, returns the row.This result set has its row location from the last fetch done.private ExecRow
getSparseRow
(ExecRow row, int[] indexCols) Return a sparse heap row, based on a compact index row.long
getTimeSpent
(int type) Return the total amount of time spent in this ResultSetvoid
Marks the resultSet's currentRow as deleted after a delete has been issued by either by using positioned delete or JDBC's deleteRow method.void
openCore()
open a scan on the table. scan parameters are evaluated at each open, so there is probably some way of altering their values...void
updateRow
(ExecRow row, RowChanger rowChanger) Updates the resultSet's current row with it's new values after an update has been issued either using positioned update or JDBC's udpateRow method.Methods inherited from class org.apache.derby.impl.sql.execute.NoPutResultSetImpl
clearCurrentRow, clearOrderableCache, closeRowSource, getCursorName, getNextRowFromRowSource, getResultDescription, getValidColumns, isForUpdate, needsRowLocation, needsRowLocationForDeferredCheckConstraints, needsToClone, offendingRowLocation, positionScanAtRowLocation, printQualifiers, resultSetNumber, rowLocation, setCurrentRow, setHasDeferrableChecks, setNeedsRowLocation, setTargetResultSet, skipRow, skipScan, unpackHashValue
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, getScanIsolationLevel, getSubqueryTrackingArray, getTransactionController, getWarnings, isClosed, isXplainOnlyMode, markAsTopResultSet, modifiedRowCount, open, recordConstructorTime, reopenCore, requiresRelocking, returnsRows, setAfterLastRow, setBeforeFirstRow, setCompactRow, setCompatRow, toXML, 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 Details
-
next
private boolean next -
rowLocation
-
cursor
-
target
-
sparseRow
-
cursorName
-
-
Constructor Details
-
CurrentOfResultSet
CurrentOfResultSet(String cursorName, Activation activation, int resultSetNumber)
-
-
Method Details
-
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
-
getNextRowCore
If open and not returned yet, returns the row.- Specified by:
getNextRowCore
in interfaceNoPutResultSet
- Specified by:
getNextRowCore
in classBasicNoPutResultSetImpl
- Returns:
- the next row in the result
- Throws:
StandardException
- thrown on failure.- See Also:
-
getSparseRow
Return a sparse heap row, based on a compact index row.- Parameters:
row
- compact referenced index rowindexCols
- base column positions of index keys, signed with asc/desc info- Returns:
- a sparse heap row with referenced columns
- Throws:
StandardException
-
close
If the result set has been opened, close the open scan.- Specified by:
close
in interfaceResultSet
- Overrides:
close
in classNoPutResultSetImpl
- Throws:
StandardException
- thrown on error
-
finish
Description copied from interface:ResultSet
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(). Will close the result set if it is not already closed.- Specified by:
finish
in interfaceResultSet
- Overrides:
finish
in classBasicNoPutResultSetImpl
- Throws:
StandardException
- 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).
-
getRowLocation
This result set has its row location from the last fetch done. If it is closed, a null is returned.- Specified by:
getRowLocation
in interfaceCursorResultSet
- Returns:
- the row location of the current row.
- Throws:
StandardException
- thrown on failure to get row location- See Also:
-
getCurrentRow
Description copied from interface:CursorResultSet
Returns 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:
getCurrentRow
in interfaceCursorResultSet
- Returns:
- the last row returned by getNextRow.
- See Also:
-
getCursor
Because the positioned operation only gets one location per execution, and the cursor could be completely different for each execution (closed and reopened, perhaps), we determine where caching the cursor could be applied.When cached, we check if the cursor was closed'd, and if so, throw it out and see if there's one in the cache with our name.
- Throws:
StandardException
-
updateRow
Description copied from interface:NoPutResultSet
Updates the resultSet's current row with it's new values after an update has been issued either using positioned update or JDBC's udpateRow method.- Specified by:
updateRow
in interfaceNoPutResultSet
- Overrides:
updateRow
in classNoPutResultSetImpl
- Parameters:
row
- new values for the currentRowrowChanger
- holds information about row: what columns of it is to be used for updating, and what underlying base table column each such column corresponds to.- Throws:
StandardException
- thrown on failure.- See Also:
-
markRowAsDeleted
Description copied from interface:NoPutResultSet
Marks the resultSet's currentRow as deleted after a delete has been issued by either by using positioned delete or JDBC's deleteRow method.- Specified by:
markRowAsDeleted
in interfaceNoPutResultSet
- Overrides:
markRowAsDeleted
in classNoPutResultSetImpl
- Throws:
StandardException
- thrown on failure.- See Also:
-