org.apache.derby.impl.sql.execute
Class DeleteVTIResultSet

java.lang.Object
  extended byorg.apache.derby.impl.sql.execute.NoRowsResultSetImpl
      extended byorg.apache.derby.impl.sql.execute.DMLWriteResultSet
          extended byorg.apache.derby.impl.sql.execute.DMLVTIResultSet
              extended byorg.apache.derby.impl.sql.execute.DeleteVTIResultSet
All Implemented Interfaces:
ResultSet

public class DeleteVTIResultSet
extends DMLVTIResultSet

Delete the rows from the specified base table. This will cause constraints to be checked and triggers to be executed based on the c's and t's compiled into the insert plan.


Field Summary
protected  Activation activation
           
protected  int[] baseRowReadMap
           
protected  long beginExecutionTime
           
protected  long beginTime
           
protected  WriteCursorConstantAction constantAction
           
 UpdatableVTIConstantAction constants
           
protected  ExecRow deferredSparseRow
           
protected  long endExecutionTime
           
protected  long endTime
           
protected  boolean firstExecute
           
protected  DynamicCompiledOpenConglomInfo heapDCOCI
           
protected  java.lang.String indent
           
protected  DynamicCompiledOpenConglomInfo[] indexDCOCIs
           
 LanguageConnectionContext lcc
           
 ResultDescription resultDescription
           
 ExecRow row
           
 int rowCount
           
private  TemporaryRowHolderImpl rowHolder
           
private  java.sql.ResultSet rs
           
 NoPutResultSet savedSource
           
protected  int sourceDepth
           
protected  NoPutResultSet sourceResultSet
           
protected  int[] streamStorableHeapColIds
           
protected  java.lang.String subIndent
           
protected  NoPutResultSet[] subqueryTrackingArray
           
 TransactionController tc
           
 
Fields inherited from interface org.apache.derby.iapi.sql.ResultSet
CURRENT_RESULTSET_ONLY, ENTIRE_RESULTSET_TREE, ISAFTERLAST, ISBEFOREFIRST, ISFIRST, ISLAST
 
Constructor Summary
DeleteVTIResultSet(NoPutResultSet source, Activation activation)
           
 
Method Summary
 boolean checkRowPosition(int isType)
          Determine if the cursor is before the first row in the result set.
 void cleanUp()
          Tells the system to clean up on an error.
 void close()
          No rows to return, does nothing
 boolean doesCommit()
          Does this ResultSet cause a commit or rollback.
static void evaluateACheckConstraint(GeneratedMethod checkGM, java.lang.String checkName, long heapConglom, Activation activation)
          Run a check constraint against the current row.
static void evaluateCheckConstraints(GeneratedMethod checkGM, Activation activation)
          Run check constraints against the current row.
 void finish()
          doesn't need to do anything, as no calls are made that need to be restricted once the result set is 'finished'.
 ExecRow getAbsoluteRow(int row)
          Returns the row at the absolute position from the query, and returns NULL when there is no such position.
 ResultSet getAutoGeneratedKeysResultset()
          ResultSet for rows inserted into the table (contains auto-generated keys columns only)
 java.sql.Timestamp getBeginExecutionTimestamp()
          Get the Timestamp for the beginning of execution.
protected  long getCurrentTimeMillis()
          Return the current time in milliseconds, if DEBUG and RunTimeStats is on, else return 0.
 java.lang.String getCursorName()
          Return the cursor name, null in this case.
 java.sql.Timestamp getEndExecutionTimestamp()
          Get the Timestamp for the end of execution.
 long getExecuteTime()
          Get the execution time in milliseconds.
 ExecRow getFirstRow()
          Returns the first row from the query, and returns NULL when there are no rows.
(package private)  java.lang.String getIndexNameFromCID(long indexCID)
          get the index name given the conglomerate id of the index.
 ExecRow getLastRow()
          Returns the last row from the query, and returns NULL when there are no rows.
 ExecRow getNextRow()
          No rows to return, so throw an exception.
protected  ExecRow getNextRowCore(NoPutResultSet source)
          Get next row from the source result set.
 ExecRow getPreviousRow()
          Returns the previous row from the query, and returns NULL when there are no more previous rows.
 java.lang.String getQueryPlanText(int depth)
          RESOLVE - This method will go away once it is overloaded in all subclasses.
 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.
 ResultDescription getResultDescription()
          Returns the description of the inserted rows.
 int getRowNumber()
          Returns the row number of the current row.
 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 ResultSet
 java.sql.SQLWarning getWarnings()
          Return the set of warnings generated during the execution of this result set.
 boolean isClosed()
          Just report that it is always closed.
protected  ExecRow makeDeferredSparseRow(ExecRow deferredBaseRow, FormatableBitSet baseRowReadList, LanguageConnectionContext lcc)
          For deferred update, get a deferred sparse row based on the deferred non-sparse row.
 int modifiedRowCount()
          Returns zero.
 void open()
          Needs to be called before the result set will do anything.
protected  void openCore()
           
 boolean returnsRows()
          Returns FALSE
 ExecRow setAfterLastRow()
          Sets the current position to after the last row and returns NULL because there is no current row.
 ExecRow setBeforeFirstRow()
          Sets the current position to before the first row and returns NULL because there is no current row.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

rs

private java.sql.ResultSet rs

rowHolder

private TemporaryRowHolderImpl rowHolder

sourceResultSet

protected NoPutResultSet sourceResultSet

savedSource

public NoPutResultSet savedSource

constants

public UpdatableVTIConstantAction constants

tc

public TransactionController tc

lcc

public LanguageConnectionContext lcc

resultDescription

public ResultDescription resultDescription

firstExecute

protected boolean firstExecute

row

public ExecRow row

constantAction

protected WriteCursorConstantAction constantAction

baseRowReadMap

protected int[] baseRowReadMap

streamStorableHeapColIds

protected int[] streamStorableHeapColIds

deferredSparseRow

protected ExecRow deferredSparseRow

heapDCOCI

protected DynamicCompiledOpenConglomInfo heapDCOCI

indexDCOCIs

protected DynamicCompiledOpenConglomInfo[] indexDCOCIs

rowCount

public int rowCount

activation

protected final Activation activation

subqueryTrackingArray

protected NoPutResultSet[] subqueryTrackingArray

indent

protected java.lang.String indent

subIndent

protected java.lang.String subIndent

sourceDepth

protected int sourceDepth

beginTime

protected long beginTime

endTime

protected long endTime

beginExecutionTime

protected long beginExecutionTime

endExecutionTime

protected long endExecutionTime
Constructor Detail

DeleteVTIResultSet

public DeleteVTIResultSet(NoPutResultSet source,
                          Activation activation)
                   throws StandardException
Throws:
StandardException - Thrown on error
Method Detail

openCore

protected void openCore()
                 throws StandardException
Specified by:
openCore in class DMLVTIResultSet
Throws:
StandardException - Standard Cloudscape error policy

getResultDescription

public ResultDescription getResultDescription()
Returns the description of the inserted rows. REVISIT: Do we want this to return NULL instead?

Specified by:
getResultDescription in interface ResultSet
Overrides:
getResultDescription in class NoRowsResultSetImpl

open

public void open()
          throws StandardException
Description copied from interface: ResultSet
Needs to be called before the result set will do anything. Need to call before getNextRow(), or for a result set that doesn't return rows, this is the call that will cause all the work to be done.

Returns:
Nothing
Throws:
StandardException - Standard Cloudscape error policy

cleanUp

public void cleanUp()
             throws StandardException
Description copied from interface: ResultSet
Tells the system to clean up on an error.

Returns:
Nothing
Throws:
StandardException - Thrown on error
See Also:
ResultSet.cleanUp()

finish

public void finish()
            throws StandardException
Description copied from class: NoRowsResultSetImpl
doesn't need to do anything, as no calls are made that need to be restricted once the result set is 'finished'.

Specified by:
finish in interface ResultSet
Overrides:
finish in class NoRowsResultSetImpl
Throws:
StandardException - on error

modifiedRowCount

public final int modifiedRowCount()
Description copied from class: NoRowsResultSetImpl
Returns zero.

Specified by:
modifiedRowCount in interface ResultSet
Overrides:
modifiedRowCount in class NoRowsResultSetImpl

getNextRowCore

protected ExecRow getNextRowCore(NoPutResultSet source)
                          throws StandardException
Get next row from the source result set.

Parameters:
source - SourceResultSet Also look at Track#2432/change 12433
Throws:
StandardException

makeDeferredSparseRow

protected ExecRow makeDeferredSparseRow(ExecRow deferredBaseRow,
                                        FormatableBitSet baseRowReadList,
                                        LanguageConnectionContext lcc)
                                 throws StandardException
For deferred update, get a deferred sparse row based on the deferred non-sparse row. Share the underlying columns. If there is no column bit map, make them the same row.

Throws:
StandardException - Thrown on error

getIndexNameFromCID

java.lang.String getIndexNameFromCID(long indexCID)
get the index name given the conglomerate id of the index.

Parameters:
indexCID - conglomerate ID of the index.
Returns:
index name of given index.

returnsRows

public final boolean returnsRows()
Returns FALSE

Specified by:
returnsRows in interface ResultSet
Returns:
TRUE if the statement returns rows, FALSE if not.

getAbsoluteRow

public ExecRow getAbsoluteRow(int row)
                       throws StandardException
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 interface ResultSet
Parameters:
row - The position.
Returns:
The row at the absolute position, or NULL if no such position.
Throws:
StandardException - Thrown on failure
See Also:
Row

getRelativeRow

public ExecRow getRelativeRow(int row)
                       throws StandardException
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 interface ResultSet
Parameters:
row - The position.
Returns:
The row at the relative position, or NULL if no such position.
Throws:
StandardException - Thrown on failure
See Also:
Row

setBeforeFirstRow

public ExecRow setBeforeFirstRow()
                          throws StandardException
Sets the current position to before the first row and returns NULL because there is no current row.

Specified by:
setBeforeFirstRow in interface ResultSet
Returns:
NULL.
Throws:
StandardException - Thrown on failure
See Also:
Row

getFirstRow

public ExecRow getFirstRow()
                    throws StandardException
Returns the first row from the query, and returns NULL when there are no rows.

Specified by:
getFirstRow in interface ResultSet
Returns:
The first row, or NULL if no rows.
Throws:
StandardException - Thrown on failure
See Also:
Row

getNextRow

public ExecRow getNextRow()
                   throws StandardException
No rows to return, so throw an exception.

Specified by:
getNextRow in interface ResultSet
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:
Row

getPreviousRow

public ExecRow getPreviousRow()
                       throws StandardException
Returns the previous row from the query, and returns NULL when there are no more previous rows.

Specified by:
getPreviousRow in interface ResultSet
Returns:
The previous row, or NULL if no more previous rows.
Throws:
StandardException - Thrown on failure
See Also:
Row

getLastRow

public ExecRow getLastRow()
                   throws StandardException
Returns the last row from the query, and returns NULL when there are no rows.

Specified by:
getLastRow in interface ResultSet
Returns:
The last row, or NULL if no rows.
Throws:
StandardException - Thrown on failure
See Also:
Row

setAfterLastRow

public ExecRow setAfterLastRow()
                        throws StandardException
Sets the current position to after the last row and returns NULL because there is no current row.

Specified by:
setAfterLastRow in interface ResultSet
Returns:
NULL.
Throws:
StandardException - Thrown on failure
See Also:
Row

checkRowPosition

public boolean checkRowPosition(int isType)
Determine if the cursor is before the first row in the result set.

Specified by:
checkRowPosition in interface ResultSet
Returns:
true if before the first row, false otherwise. Returns false when the result set contains no rows.

getRowNumber

public 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 interface ResultSet
Returns:
the row number, or 0 if not on a row

close

public void close()
           throws StandardException
No rows to return, does nothing

Specified by:
close in interface ResultSet
Returns:
Nothing
Throws:
StandardException - thrown on error

isClosed

public boolean isClosed()
Just report that it is always closed. RESOLVE: if we don't report that we are closed, then we will wind up with a dependency problem when we send an invalidateFor on our own Statement. It will call lcc.verifyNoOpenResultSets(), which is really supposed to be verify that there are no read only result sets that are open.

Specified by:
isClosed in interface ResultSet
Returns:
true if the ResultSet has been closed.

getExecuteTime

public long getExecuteTime()
Get the execution time in milliseconds.

Specified by:
getExecuteTime in interface ResultSet
Returns:
long The execution time in milliseconds.

getBeginExecutionTimestamp

public java.sql.Timestamp getBeginExecutionTimestamp()
Get the Timestamp for the beginning of execution.

Specified by:
getBeginExecutionTimestamp in interface ResultSet
Returns:
Timestamp The Timestamp for the beginning of execution.

getEndExecutionTimestamp

public java.sql.Timestamp getEndExecutionTimestamp()
Get the Timestamp for the end of execution.

Specified by:
getEndExecutionTimestamp in interface ResultSet
Returns:
Timestamp The Timestamp for the end of execution.

getQueryPlanText

public java.lang.String getQueryPlanText(int depth)
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 interface ResultSet
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

public final NoPutResultSet[] getSubqueryTrackingArray(int numSubqueries)
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 interface ResultSet
Parameters:
numSubqueries - The size of the array (For allocation on demand.)
Returns:
NoPutResultSet[] Array of NoPutResultSets for subqueries.
See Also:
ResultSet.getSubqueryTrackingArray(int)

getAutoGeneratedKeysResultset

public ResultSet getAutoGeneratedKeysResultset()
Description copied from interface: ResultSet
ResultSet for rows inserted into the table (contains auto-generated keys columns only)

Specified by:
getAutoGeneratedKeysResultset in interface ResultSet
Returns:
NoPutResultSet NoPutResultSets for rows inserted into the table.
See Also:
ResultSet.getAutoGeneratedKeysResultset()

getCursorName

public java.lang.String getCursorName()
Return the cursor name, null in this case.

Specified by:
getCursorName in interface ResultSet
Returns:
A String with the name of the cursor, if any. Returns NULL if this is not a cursor statement.
See Also:
ResultSet.getCursorName()

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.

evaluateACheckConstraint

public static void evaluateACheckConstraint(GeneratedMethod checkGM,
                                            java.lang.String checkName,
                                            long heapConglom,
                                            Activation activation)
                                     throws StandardException
Run a check constraint against the current row. Raise an error if the check constraint is violated.

Parameters:
checkGM - Generated code to run the check constraint.
checkName - Name of the constraint to check.
heapConglom - Number of heap conglomerate.
Throws:
StandardException - thrown on error

evaluateCheckConstraints

public static void evaluateCheckConstraints(GeneratedMethod checkGM,
                                            Activation activation)
                                     throws StandardException
Run check constraints against the current row. Raise an error if a check constraint is violated.

Parameters:
checkGM - Generated code to run the check constraint.
Throws:
StandardException - thrown on error

doesCommit

public boolean doesCommit()
Does this ResultSet cause a commit or rollback.

Returns:
Whether or not this ResultSet cause a commit or rollback.

getWarnings

public java.sql.SQLWarning 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 interface ResultSet

Built on Tue 2006-10-10 19:23:47+0200, from revision exported

Apache Derby V10.1 Engine Documentation - Copyright © 1997,2005 The Apache Software Foundation or its licensors, as applicable.