Class NoRowsResultSetImpl
java.lang.Object
org.apache.derby.impl.sql.execute.NoRowsResultSetImpl
- All Implemented Interfaces:
ResultSet
- Direct Known Subclasses:
CallStatementResultSet
,DMLWriteResultSet
,MergeResultSet
,MiscResultSet
Abstract ResultSet for implementations that do not return rows.
Examples are DDL statements, CALL statements and DML.
An implementation must provide a ResultSet.open() method that performs the required action.
ResultSet.returnsRows() returns false and any method that fetches a row will throw an exception.
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) final Activation
protected long
protected long
protected long
protected long
private int
private int[]
private boolean
True if the result set has been opened, and not yet closed.(package private) final LanguageConnectionContext
private DataValueDescriptor[]
private final boolean
private NoPutResultSet[]
Fields inherited from interface org.apache.derby.iapi.sql.ResultSet
CURRENT_RESULTSET_ONLY, ENTIRE_RESULTSET_TREE, ISAFTERLAST, ISBEFOREFIRST, ISFIRST, ISLAST
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
Add a warning to this result set.final boolean
checkRowPosition
(int isType) Determine if the cursor is before the first row in the result set.final void
Clear the current row.void
close
(boolean underMerge) Dump the stat if not already done so.boolean
Does this ResultSet cause a commit or rollback.void
evaluateGenerationClauses
(GeneratedMethod generationClauses, Activation activation, NoPutResultSet source, ExecRow newRow, boolean isUpdate) Compute the generation clauses on the current row in order to fill in computed columns.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().final ExecRow
getAbsoluteRow
(int row) Returns the row at the absolute position from the query, and returns NULL when there is no such position.final Activation
ResultSet for rows inserted into the table (contains auto-generated keys columns only)Get the Timestamp for the beginning of execution.protected final long
Return the current time in milliseconds, if DEBUG and RunTimeStats is on, else return 0.Return the cursor name, null in this case.Get the Timestamp for the end of execution.long
Get the execution time in milliseconds.final ExecRow
Returns the first row from the query, and returns NULL when there are no rows.final ExecRow
Returns the last row from the query, and returns NULL when there are no rows.final ExecRow
No rows to return, so throw an exception.final ExecRow
Returns the previous row from the query, and returns NULL when there are no more previous rows.getQueryPlanText
(int depth) RESOLVE - This method will go away once it is overloaded in all subclasses.final ExecRow
getRelativeRow
(int row) Returns the row at the relative position from the current cursor position, and returns NULL when there is no such position.Returns null.final int
Returns the row number of the current row.final NoPutResultSet[]
getSubqueryTrackingArray
(int numSubqueries) Get the subquery ResultSet tracking array from the top ResultSet.long
getTimeSpent
(int type) Return the total amount of time spent in this ResultSetReturn the set of warnings generated during the execution of this result set.boolean
isClosed()
Find out if theResultSet
is closed.long
Returns zero.final boolean
Returns FALSEfinal ExecRow
Sets the current position to after the last row and returns NULL because there is no current row.final ExecRow
Sets the current position to before the first row and returns NULL because there is no current row.(package private) void
setup()
Set up the result set for use.private void
setupGeneratedColumns
(Activation activation, ValueRow newRow) Construct support for normalizing generated columns.Produce an xml image of this ResultSet and its descendant ResultSets.
-
Field Details
-
activation
-
subqueryTrackingArray
-
statisticsTimingOn
private final boolean statisticsTimingOn -
isOpen
private boolean isOpenTrue if the result set has been opened, and not yet closed. -
lcc
-
beginTime
protected long beginTime -
endTime
protected long endTime -
beginExecutionTime
protected long beginExecutionTime -
endExecutionTime
protected long endExecutionTime -
firstColumn
private int firstColumn -
generatedColumnPositions
private int[] generatedColumnPositions -
normalizedGeneratedValues
-
-
Constructor Details
-
NoRowsResultSetImpl
NoRowsResultSetImpl(Activation activation)
-
-
Method Details
-
setup
Set up the result set for use. Should always be called fromopen()
.- Throws:
StandardException
- thrown on error
-
returnsRows
public final boolean returnsRows()Returns FALSE- Specified by:
returnsRows
in interfaceResultSet
- Returns:
- TRUE if the statement returns rows, FALSE if not.
-
modifiedRowCount
public long modifiedRowCount()Returns zero.- Specified by:
modifiedRowCount
in interfaceResultSet
- Returns:
- The number of rows affect by the statement, so far.
-
getResultDescription
Returns null.- Specified by:
getResultDescription
in interfaceResultSet
- Returns:
- A ResultDescription describing the results of the statement.
-
getActivation
- Specified by:
getActivation
in interfaceResultSet
-
getAbsoluteRow
Returns the row at the absolute position from the query, and returns NULL when there is no such position. (Negative position means from the end of the result set.) Moving the cursor to an invalid position leaves the cursor positioned either before the first row (negative position) or after the last row (positive position). NOTE: An exception will be thrown on 0.- Specified by:
getAbsoluteRow
in interfaceResultSet
- Parameters:
row
- The position.- Returns:
- The row at the absolute position, or NULL if no such position.
- Throws:
StandardException
- Thrown on failure- See Also:
-
getRelativeRow
Returns the row at the relative position from the current cursor position, and returns NULL when there is no such position. (Negative position means toward the beginning of the result set.) Moving the cursor to an invalid position leaves the cursor positioned either before the first row (negative position) or after the last row (positive position). NOTE: 0 is valid. NOTE: An exception is thrown if the cursor is not currently positioned on a row.- Specified by:
getRelativeRow
in interfaceResultSet
- Parameters:
row
- The position.- Returns:
- The row at the relative position, or NULL if no such position.
- Throws:
StandardException
- Thrown on failure- See Also:
-
setBeforeFirstRow
Sets the current position to before the first row and returns NULL because there is no current row.- Specified by:
setBeforeFirstRow
in interfaceResultSet
- Returns:
- NULL.
- Throws:
StandardException
- Thrown on failure- See Also:
-
getFirstRow
Returns the first row from the query, and returns NULL when there are no rows.- Specified by:
getFirstRow
in interfaceResultSet
- Returns:
- The first row, or NULL if no rows.
- Throws:
StandardException
- Thrown on failure- See Also:
-
getNextRow
No rows to return, so throw an exception.- Specified by:
getNextRow
in interfaceResultSet
- Returns:
- The next row, or NULL if no more rows.
- Throws:
StandardException
- Always throws a StandardException to indicate that this method is not intended to be used.- See Also:
-
getPreviousRow
Returns the previous row from the query, and returns NULL when there are no more previous rows.- Specified by:
getPreviousRow
in interfaceResultSet
- Returns:
- The previous row, or NULL if no more previous rows.
- Throws:
StandardException
- Thrown on failure- See Also:
-
getLastRow
Returns the last row from the query, and returns NULL when there are no rows.- Specified by:
getLastRow
in interfaceResultSet
- Returns:
- The last row, or NULL if no rows.
- Throws:
StandardException
- Thrown on failure- See Also:
-
setAfterLastRow
Sets the current position to after the last row and returns NULL because there is no current row.- Specified by:
setAfterLastRow
in interfaceResultSet
- Returns:
- NULL.
- Throws:
StandardException
- Thrown on failure- See Also:
-
clearCurrentRow
public final void clearCurrentRow()Clear the current row. This is done after a commit on holdable result sets. This is a no-op on result set which do not provide rows.- Specified by:
clearCurrentRow
in interfaceResultSet
-
checkRowPosition
public final boolean checkRowPosition(int isType) Determine if the cursor is before the first row in the result set.- Specified by:
checkRowPosition
in interfaceResultSet
- Returns:
- true if before the first row, false otherwise. Returns false when the result set contains no rows.
-
getRowNumber
public final int getRowNumber()Returns the row number of the current row. Row numbers start from 1 and go to 'n'. Corresponds to row numbering used to position current row in the result set (as per JDBC).- Specified by:
getRowNumber
in interfaceResultSet
- Returns:
- the row number, or 0 if not on a row
-
close
Dump the stat if not already done so. Close all of the open subqueries.- Parameters:
underMerge
- True if this is part of an action of a MERGE statement.- Throws:
StandardException
- thrown on error
-
isClosed
public boolean isClosed()Find out if theResultSet
is closed. -
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
- Throws:
StandardException
- on error
-
getExecuteTime
public long getExecuteTime()Get the execution time in milliseconds.- Specified by:
getExecuteTime
in interfaceResultSet
- Returns:
- long The execution time in milliseconds.
-
getBeginExecutionTimestamp
Get the Timestamp for the beginning of execution.- Specified by:
getBeginExecutionTimestamp
in interfaceResultSet
- Returns:
- Timestamp The Timestamp for the beginning of execution.
-
getEndExecutionTimestamp
Get the Timestamp for the end of execution.- Specified by:
getEndExecutionTimestamp
in interfaceResultSet
- Returns:
- Timestamp The Timestamp for the end of execution.
-
getQueryPlanText
RESOLVE - This method will go away once it is overloaded in all subclasses. Return the query plan as a String.- Parameters:
depth
- Indentation level.- Returns:
- String The query plan as a String.
-
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).
-
getSubqueryTrackingArray
Description copied from interface:ResultSet
Get the subquery ResultSet tracking array from the top ResultSet. (Used for tracking open subqueries when closing down on an error.)- Specified by:
getSubqueryTrackingArray
in interfaceResultSet
- Parameters:
numSubqueries
- The size of the array (For allocation on demand.)- Returns:
- NoPutResultSet[] Array of NoPutResultSets for subqueries.
- See Also:
-
getAutoGeneratedKeysResultset
Description copied from interface:ResultSet
ResultSet for rows inserted into the table (contains auto-generated keys columns only)- Specified by:
getAutoGeneratedKeysResultset
in interfaceResultSet
- Returns:
- NoPutResultSet NoPutResultSets for rows inserted into the table.
- See Also:
-
getCursorName
Return the cursor name, null in this case.- Specified by:
getCursorName
in interfaceResultSet
- Returns:
- A String with the name of the cursor, if any. Returns NULL if this is not a cursor statement.
- See Also:
-
getCurrentTimeMillis
protected final long getCurrentTimeMillis()Return the current time in milliseconds, if DEBUG and RunTimeStats is on, else return 0. (Only pay price of system call if need to.)- Returns:
- long Current time in milliseconds.
-
evaluateGenerationClauses
public void evaluateGenerationClauses(GeneratedMethod generationClauses, Activation activation, NoPutResultSet source, ExecRow newRow, boolean isUpdate) throws StandardException Compute the generation clauses on the current row in order to fill in computed columns.- Parameters:
generationClauses
- the generated method which evaluates generation clausesactivation
- the thread-specific instance of the generated classsource
- the tuple stream driving this INSERT/UPDATEnewRow
- the base row being stuffedisUpdate
- true if this is an UPDATE. false otherwise.- Throws:
StandardException
-
setupGeneratedColumns
Construct support for normalizing generated columns. This figures out which columns in the target row have generation clauses which need to be run.- Throws:
StandardException
-
doesCommit
public boolean doesCommit()Does this ResultSet cause a commit or rollback.- Returns:
- Whether or not this ResultSet cause a commit or rollback.
-
addWarning
Description copied from interface:ResultSet
Add a warning to this result set.- Specified by:
addWarning
in interfaceResultSet
- Parameters:
w
- the warning to add
-
getWarnings
Description copied from interface:ResultSet
Return the set of warnings generated during the execution of this result set. The warnings are cleared once this call returns.- Specified by:
getWarnings
in interfaceResultSet
-
toXML
Description copied from interface:ResultSet
Produce an xml image of this ResultSet and its descendant ResultSets. Appends an element to the parentNode and returns the appended element.
-