|
|||||||||
| Home >> All >> org >> apache >> derby >> impl >> sql >> [ execute overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
org.apache.derby.impl.sql.execute
Class TableScanResultSet

java.lang.Objectorg.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl
org.apache.derby.impl.sql.execute.NoPutResultSetImpl
org.apache.derby.impl.sql.execute.TableScanResultSet
- All Implemented Interfaces:
- java.lang.Cloneable, org.apache.derby.iapi.sql.execute.CursorResultSet, org.apache.derby.iapi.sql.execute.NoPutResultSet, org.apache.derby.iapi.sql.ResultSet, org.apache.derby.iapi.store.access.RowLocationRetRowSource, org.apache.derby.iapi.store.access.RowSource
- Direct Known Subclasses:
- BulkTableScanResultSet
- public class TableScanResultSet
- extends NoPutResultSetImpl
- implements org.apache.derby.iapi.sql.execute.CursorResultSet, java.lang.Cloneable
- extends NoPutResultSetImpl
Takes a table and a table filter and returns the table's rows satisfying the filter as a result set. There are several things we could do during object construction that are done in the open & next calls, to improve performance.
| Fields inherited from interface org.apache.derby.iapi.sql.ResultSet |
CURRENT_RESULTSET_ONLY, ENTIRE_RESULTSET_TREE, ISAFTERLAST, ISBEFOREFIRST, ISFIRST, ISLAST |
| Fields inherited from interface org.apache.derby.iapi.sql.execute.NoPutResultSet |
ABSOLUTE, FIRST, LAST, NEXT, PREVIOUS, RELATIVE |
| Constructor Summary | |
TableScanResultSet(long conglomId,
org.apache.derby.iapi.store.access.StaticCompiledOpenConglomInfo scoci,
org.apache.derby.iapi.sql.Activation activation,
org.apache.derby.iapi.services.loader.GeneratedMethod resultRowAllocator,
int resultSetNumber,
org.apache.derby.iapi.services.loader.GeneratedMethod startKeyGetter,
int startSearchOperator,
org.apache.derby.iapi.services.loader.GeneratedMethod stopKeyGetter,
int stopSearchOperator,
boolean sameStartStopPosition,
org.apache.derby.iapi.store.access.Qualifier[][] qualifiers,
java.lang.String tableName,
java.lang.String indexName,
boolean isConstraint,
boolean forUpdate,
int colRefItem,
int indexColItem,
int lockMode,
boolean tableLocked,
int isolationLevel,
int rowsPerRead,
boolean oneRowScan,
double optimizerEstimatedRowCount,
double optimizerEstimatedCost,
org.apache.derby.iapi.services.loader.GeneratedMethod closeCleanup)
|
|
| Method Summary | |
protected void |
addWarning(java.sql.SQLWarning w)
|
protected void |
attachStatementContext()
Attach this result set to the top statement context on the stack. |
protected boolean |
canGetInstantaneousLocks()
Can we get instantaneous locks when getting share row locks at READ COMMITTED. |
boolean |
checkRowPosition(int isType)
Determine if the cursor is before the first row in the result set. |
void |
cleanUp()
Clean up on error |
void |
clearCurrentRow()
Clear the current row |
protected void |
clearOrderableCache(org.apache.derby.iapi.store.access.Qualifier[][] qualifiers)
Clear the Orderable cache for each qualifier. |
java.lang.Object |
clone()
Shallow clone this result set. |
void |
close()
If the result set has been opened, close the open scan. |
void |
closeRowSource()
closeRowSource tells the RowSource that it will no longer need to return any rows and it can release any resource it may have. |
protected java.lang.String |
dumpTimeStats(java.lang.String indent,
java.lang.String subIndent)
Dump out the time information for run time stats. |
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(). |
protected void |
finishAndRTS()
|
org.apache.derby.iapi.sql.execute.ExecRow |
getAbsoluteRow(int row)
Returns the row at the absolute position from the query, and returns NULL when there is no such position. |
org.apache.derby.iapi.sql.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 org.apache.derby.iapi.sql.execute.ExecRow |
getCompactRow(org.apache.derby.iapi.sql.execute.ExecRow candidate,
org.apache.derby.iapi.services.io.FormatableBitSet accessedCols,
org.apache.derby.iapi.services.io.FormatableBitSet otherCols,
boolean isKeyed)
Get a compacted version of the candidate row according to the columns specified in the bit map. |
org.apache.derby.iapi.sql.execute.ExecRow |
getCurrentRow()
This result set has its row from the last fetch done. |
protected long |
getCurrentTimeMillis()
Return the current time in milliseconds, if DEBUG and RunTimeStats is on, else return 0. |
java.lang.String |
getCursorName()
Return my cursor name for JDBC. |
protected long |
getElapsedMillis(long beginTime)
Return the elapsed time in milliseconds, between now and the beginTime, if DEBUG and RunTimeStats is on, else return 0. |
java.sql.Timestamp |
getEndExecutionTimestamp()
Get the Timestamp for the end of execution. |
double |
getEstimatedRowCount()
Get the estimated row count from this result set. |
long |
getExecuteTime()
Get the execution time in milliseconds. |
(package private) org.apache.derby.iapi.sql.execute.ExecutionFactory |
getExecutionFactory()
Get a execution factory |
org.apache.derby.iapi.sql.execute.ExecRow |
getFirstRow()
Returns the first row from the query, and returns NULL when there are no rows. |
protected org.apache.derby.iapi.sql.conn.LanguageConnectionContext |
getLanguageConnectionContext()
Cache the language connection context. |
org.apache.derby.iapi.sql.execute.ExecRow |
getLastRow()
Returns the last row from the query, and returns NULL when there are no rows. |
org.apache.derby.iapi.sql.execute.ExecRow |
getNextRow()
Return the requested values computed from the next row (if any) for which the restriction evaluates to true. |
org.apache.derby.iapi.sql.execute.ExecRow |
getNextRowCore()
Return the next row (if any) from the scan (if open). |
org.apache.derby.iapi.types.DataValueDescriptor[] |
getNextRowFromRowSource()
Get the next row as an array of column objects. |
int |
getPointOfAttachment()
Return the point of attachment for this subquery. |
org.apache.derby.iapi.sql.execute.ExecRow |
getPreviousRow()
Returns the previous row from the query, and returns NULL when there are no more previous rows. |
org.apache.derby.iapi.sql.execute.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. |
org.apache.derby.iapi.sql.ResultDescription |
getResultDescription()
Returns the description of the table's rows |
org.apache.derby.iapi.types.RowLocation |
getRowLocation()
This result set has its row location from the last fetch done. |
int |
getRowNumber()
Returns the row number of the current row. |
int |
getScanIsolationLevel()
Return the isolation level of the scan in the result set. |
java.util.Properties |
getScanProperties()
|
private void |
getSparseRowAndMap()
Check and make sure sparse heap row and accessed bit map are created. |
org.apache.derby.iapi.sql.execute.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 |
(package private) org.apache.derby.iapi.store.access.TransactionController |
getTransactionController()
Get the current transaction controller. |
org.apache.derby.iapi.services.io.FormatableBitSet |
getValidColumns()
getValidColumns describes the DataValueDescriptor[] returned by all calls to the getNextRowFromRowSource() call. |
java.sql.SQLWarning |
getWarnings()
Return the set of warnings generated during the execution of this result set. |
boolean |
isClosed()
Report if closed. |
boolean |
isForUpdate()
Is this ResultSet or it's source result set for update |
void |
markAsTopResultSet()
Mark the ResultSet as the topmost one in the ResultSet tree. |
int |
modifiedRowCount()
Returns the number of rows affected by the statement. |
boolean |
needsRowLocation()
needsRowLocation returns true iff this the row source expects the drainer of the row source to call rowLocation after getting a row from getNextRowFromRowSource. |
boolean |
needsToClone()
Does the caller of getNextRowFromRowSource() need to clone the row in order to keep a reference to the row past the getNextRowFromRowSource() call which returned the row. |
void |
open()
open a scan on the table. |
void |
openCore()
open a scan on the table. |
protected void |
openScanController(org.apache.derby.iapi.store.access.TransactionController tc)
|
private java.lang.String |
printPosition(int searchOperator,
org.apache.derby.iapi.services.loader.GeneratedMethod positionGetter,
org.apache.derby.iapi.sql.execute.ExecIndexRow positioner)
Return a start or stop positioner as a String. |
static java.lang.String |
printQualifiers(org.apache.derby.iapi.store.access.Qualifier[][] qualifiers)
Return a 2-d array of Qualifiers as a String |
java.lang.String |
printStartPosition()
Print an array of Qualifiers to the trace stream. |
java.lang.String |
printStopPosition()
|
void |
reopenCore()
Reopen a table scan. |
private void |
reopenScanController()
|
boolean |
requiresRelocking()
Do we need to relock the row when going to the heap. |
int |
resultSetNumber()
Get the number of this ResultSet, which is guaranteed to be unique within a statement. |
boolean |
returnsRows()
Returns true. |
void |
rowLocation(org.apache.derby.iapi.types.RowLocation rl)
rowLocation is a callback for the drainer of the row source to return the rowLocation of the current row, i.e, the row that is being returned by getNextRowFromRowSource. |
org.apache.derby.iapi.sql.execute.ExecRow |
setAfterLastRow()
Sets the current position to after the last row and returns NULL because there is no current row. |
org.apache.derby.iapi.sql.execute.ExecRow |
setBeforeFirstRow()
Sets the current position to before the first row and returns NULL because there is no current row. |
protected void |
setCheckConstraints(org.apache.derby.iapi.services.loader.GeneratedMethod checkGM)
Set the GeneratedMethod for enforcing check constraints |
protected org.apache.derby.iapi.sql.execute.ExecRow |
setCompactRow(org.apache.derby.iapi.sql.execute.ExecRow candidateRow,
org.apache.derby.iapi.sql.execute.ExecRow compactRow)
Copy columns from the candidate row from the store to the given compact row. |
protected void |
setCompatRow(org.apache.derby.iapi.sql.execute.ExecRow compactRow,
java.lang.Object[] sourceRow)
|
void |
setCurrentRow(org.apache.derby.iapi.sql.execute.ExecRow row)
Set the current row to the row passed in. |
protected void |
setHeapConglomerate(long heapConglomerate)
Set the heap conglomerate number (used in enforcing check constraints) |
void |
setNeedsRowLocation(boolean needsRowLocation)
Set whether or not the NPRS need the row location when acting as a row source. |
protected void |
setRowCountIfPossible(long rowsThisScan)
Update the number of rows in the scan controller. |
void |
setTargetResultSet(org.apache.derby.iapi.sql.execute.TargetResultSet trs)
Notify a NPRS that it is the source for the specified TargetResultSet. |
protected boolean |
skipRow(org.apache.derby.iapi.sql.execute.ExecRow row)
Return true if we should skip the scan due to nulls in the row when the start or stop positioners on the columns containing null do not implement ordered null semantics. |
protected boolean |
skipScan(org.apache.derby.iapi.sql.execute.ExecIndexRow startPosition,
org.apache.derby.iapi.sql.execute.ExecIndexRow stopPosition)
Return true if we should skip the scan due to nulls in the start or stop position when the predicate on the column(s) in question do not implement ordered null semantics. |
| Methods inherited from class java.lang.Object |
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Methods inherited from interface org.apache.derby.iapi.sql.ResultSet |
checkRowPosition, cleanUp, finish, getAbsoluteRow, getAutoGeneratedKeysResultset, getBeginExecutionTimestamp, getCursorName, getEndExecutionTimestamp, getExecuteTime, getFirstRow, getLastRow, getNextRow, getPreviousRow, getRelativeRow, getResultDescription, getRowNumber, getSubqueryTrackingArray, getWarnings, isClosed, modifiedRowCount, open, returnsRows, setAfterLastRow, setBeforeFirstRow |
| Field Detail |
scanController
protected org.apache.derby.iapi.store.access.ScanController scanController
scanControllerOpened
protected boolean scanControllerOpened
isKeyed
protected boolean isKeyed
firstScan
protected boolean firstScan
startPosition
protected org.apache.derby.iapi.sql.execute.ExecIndexRow startPosition
stopPosition
protected org.apache.derby.iapi.sql.execute.ExecIndexRow stopPosition
candidate
protected org.apache.derby.iapi.sql.execute.ExecRow candidate
conglomId
protected long conglomId
dcoci
protected org.apache.derby.iapi.store.access.DynamicCompiledOpenConglomInfo dcoci
scoci
protected org.apache.derby.iapi.store.access.StaticCompiledOpenConglomInfo scoci
resultRowAllocator
protected org.apache.derby.iapi.services.loader.GeneratedMethod resultRowAllocator
startKeyGetter
protected org.apache.derby.iapi.services.loader.GeneratedMethod startKeyGetter
startSearchOperator
protected int startSearchOperator
stopKeyGetter
protected org.apache.derby.iapi.services.loader.GeneratedMethod stopKeyGetter
stopSearchOperator
protected int stopSearchOperator
qualifiers
public org.apache.derby.iapi.store.access.Qualifier[][] qualifiers
closeCleanup
protected org.apache.derby.iapi.services.loader.GeneratedMethod closeCleanup
tableName
public java.lang.String tableName
indexName
public java.lang.String indexName
runTimeStatisticsOn
protected boolean runTimeStatisticsOn
accessedCols
protected org.apache.derby.iapi.services.io.FormatableBitSet accessedCols
indexCols
protected int[] indexCols
rowsPerRead
public int rowsPerRead
forUpdate
public boolean forUpdate
sameStartStopPosition
private boolean sameStartStopPosition
nextDone
private boolean nextDone
rlTemplate
private org.apache.derby.iapi.types.RowLocation rlTemplate
isolationLevel
public int isolationLevel
lockMode
public int lockMode
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
estimatedRowCount
private long estimatedRowCount
past2FutureTbl
protected java.util.Hashtable past2FutureTbl
futureForUpdateRows
protected org.apache.derby.iapi.sql.execute.TemporaryRowHolder futureForUpdateRows
futureRowResultSet
protected TemporaryRowHolderResultSet futureRowResultSet
skipFutureRowHolder
protected boolean skipFutureRowHolder
sourceDrained
protected boolean sourceDrained
currentRowPrescanned
protected boolean currentRowPrescanned
compareToLastKey
protected boolean compareToLastKey
lastCursorKey
protected org.apache.derby.iapi.sql.execute.ExecRow lastCursorKey
sparseRow
private org.apache.derby.iapi.sql.execute.ExecRow sparseRow
sparseRowMap
private org.apache.derby.iapi.services.io.FormatableBitSet sparseRowMap
resultSetNumber
public final int resultSetNumber
indent
protected java.lang.String indent
subIndent
protected java.lang.String subIndent
sourceDepth
protected int sourceDepth
clonedExecRow
protected org.apache.derby.iapi.sql.execute.ExecRow clonedExecRow
checkGM
org.apache.derby.iapi.services.loader.GeneratedMethod checkGM
heapConglomerate
long heapConglomerate
targetResultSet
protected org.apache.derby.iapi.sql.execute.TargetResultSet targetResultSet
checkNullCols
protected int[] checkNullCols
cncLen
protected int cncLen
isOpen
protected boolean isOpen
finished
protected boolean finished
currentRow
protected org.apache.derby.iapi.sql.execute.ExecRow currentRow
isTopResultSet
protected boolean isTopResultSet
lcc
protected org.apache.derby.iapi.sql.conn.LanguageConnectionContext lcc
numOpens
public int numOpens
rowsSeen
public int rowsSeen
rowsFiltered
public int rowsFiltered
startExecutionTime
protected long startExecutionTime
endExecutionTime
protected long endExecutionTime
beginTime
public long beginTime
constructorTime
public long constructorTime
openTime
public long openTime
nextTime
public long nextTime
closeTime
public long closeTime
optimizerEstimatedRowCount
public double optimizerEstimatedRowCount
optimizerEstimatedCost
public double optimizerEstimatedCost
subqueryTrackingArray
public org.apache.derby.iapi.sql.execute.NoPutResultSet[] subqueryTrackingArray
compactRow
org.apache.derby.iapi.sql.execute.ExecRow compactRow
activation
protected org.apache.derby.iapi.sql.Activation activation
resultDescription
org.apache.derby.iapi.sql.ResultDescription resultDescription
| Constructor Detail |
TableScanResultSet
public TableScanResultSet(long conglomId,
org.apache.derby.iapi.store.access.StaticCompiledOpenConglomInfo scoci,
org.apache.derby.iapi.sql.Activation activation,
org.apache.derby.iapi.services.loader.GeneratedMethod resultRowAllocator,
int resultSetNumber,
org.apache.derby.iapi.services.loader.GeneratedMethod startKeyGetter,
int startSearchOperator,
org.apache.derby.iapi.services.loader.GeneratedMethod stopKeyGetter,
int stopSearchOperator,
boolean sameStartStopPosition,
org.apache.derby.iapi.store.access.Qualifier[][] qualifiers,
java.lang.String tableName,
java.lang.String indexName,
boolean isConstraint,
boolean forUpdate,
int colRefItem,
int indexColItem,
int lockMode,
boolean tableLocked,
int isolationLevel,
int rowsPerRead,
boolean oneRowScan,
double optimizerEstimatedRowCount,
double optimizerEstimatedCost,
org.apache.derby.iapi.services.loader.GeneratedMethod closeCleanup)
throws org.apache.derby.iapi.error.StandardException
| Method Detail |
openCore
public void openCore()
throws org.apache.derby.iapi.error.StandardException
- 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:
openCorein interfaceorg.apache.derby.iapi.sql.execute.NoPutResultSet- Specified by:
openCorein classBasicNoPutResultSetImpl
openScanController
protected void openScanController(org.apache.derby.iapi.store.access.TransactionController tc) throws org.apache.derby.iapi.error.StandardException
reopenScanController
private void reopenScanController()
throws org.apache.derby.iapi.error.StandardException
reopenCore
public void reopenCore()
throws org.apache.derby.iapi.error.StandardException
- Reopen a table scan. Here we take advantage
of the reopenScan() interface on scanController
for optimimal performance on joins where we are
an inner table.
- Specified by:
reopenCorein interfaceorg.apache.derby.iapi.sql.execute.NoPutResultSet- Overrides:
reopenCorein classBasicNoPutResultSetImpl
getSparseRowAndMap
private void getSparseRowAndMap()
throws org.apache.derby.iapi.error.StandardException
- Check and make sure sparse heap row and accessed bit map are created.
beetle 3865, update cursor using index.
getNextRowCore
public org.apache.derby.iapi.sql.execute.ExecRow getNextRowCore() throws org.apache.derby.iapi.error.StandardException
- Return the next row (if any) from the scan (if open).
- Specified by:
getNextRowCorein interfaceorg.apache.derby.iapi.sql.execute.NoPutResultSet- Specified by:
getNextRowCorein classBasicNoPutResultSetImpl
close
public void close()
throws org.apache.derby.iapi.error.StandardException
- If the result set has been opened,
close the open scan.
- Specified by:
closein interfaceorg.apache.derby.iapi.sql.ResultSet- Overrides:
closein classNoPutResultSetImpl
getTimeSpent
public long getTimeSpent(int type)
- Return the total amount of time spent in this ResultSet
- Specified by:
getTimeSpentin interfaceorg.apache.derby.iapi.sql.ResultSet
getRowLocation
public org.apache.derby.iapi.types.RowLocation getRowLocation() throws org.apache.derby.iapi.error.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 interfaceorg.apache.derby.iapi.sql.execute.CursorResultSet
getCurrentRow
public org.apache.derby.iapi.sql.execute.ExecRow getCurrentRow() throws org.apache.derby.iapi.error.StandardException
- This result set has its row from the last fetch done.
If the cursor is closed, a null is returned.
- Specified by:
getCurrentRowin interfaceorg.apache.derby.iapi.sql.execute.CursorResultSet
printStartPosition
public java.lang.String printStartPosition()
- Print an array of Qualifiers to the trace stream.
printStopPosition
public java.lang.String printStopPosition()
printPosition
private java.lang.String printPosition(int searchOperator, org.apache.derby.iapi.services.loader.GeneratedMethod positionGetter, org.apache.derby.iapi.sql.execute.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.
getScanProperties
public java.util.Properties getScanProperties()
getScanIsolationLevel
public int getScanIsolationLevel()
- Description copied from interface:
org.apache.derby.iapi.sql.execute.NoPutResultSet - Return the isolation level of the scan in the result set.
Only expected to be called for those ResultSets that
contain a scan.
- Specified by:
getScanIsolationLevelin interfaceorg.apache.derby.iapi.sql.execute.NoPutResultSet- Overrides:
getScanIsolationLevelin classBasicNoPutResultSetImpl
requiresRelocking
public boolean requiresRelocking()
- Description copied from interface:
org.apache.derby.iapi.sql.execute.NoPutResultSet - Do we need to relock the row when going to the heap.
- Specified by:
requiresRelockingin interfaceorg.apache.derby.iapi.sql.execute.NoPutResultSet- Overrides:
requiresRelockingin classBasicNoPutResultSetImpl
setRowCountIfPossible
protected final void setRowCountIfPossible(long rowsThisScan)
throws org.apache.derby.iapi.error.StandardException
- Update the number of rows in the scan controller.
NOTE: It would be more efficient to only update the
scan controller if the optimizer's estimated number of
rows were wrong by more than some threshold (like 10%).
This would require a little more work than I have the
time for now, however, as the row estimate that is given
to this result set is the total number of rows for all
scans, not the number of rows per scan.
canGetInstantaneousLocks
protected boolean canGetInstantaneousLocks()
- Can we get instantaneous locks when getting share row
locks at READ COMMITTED.
isForUpdate
public boolean isForUpdate()
- Is this ResultSet or it's source result set for update
- Specified by:
isForUpdatein interfaceorg.apache.derby.iapi.sql.execute.NoPutResultSet- Overrides:
isForUpdatein classNoPutResultSetImpl
clone
public java.lang.Object clone()
- Shallow clone this result set. Used in trigger reference.
beetle 4373.
getResultDescription
public org.apache.derby.iapi.sql.ResultDescription getResultDescription()
- Returns the description of the table's rows
- Specified by:
getResultDescriptionin interfaceorg.apache.derby.iapi.sql.ResultSet- Overrides:
getResultDescriptionin classBasicNoPutResultSetImpl
getCursorName
public java.lang.String getCursorName()
- Return my cursor name for JDBC. Can be null.
resultSetNumber
public int resultSetNumber()
- Description copied from interface:
org.apache.derby.iapi.sql.execute.NoPutResultSet - Get the number of this ResultSet, which is guaranteed to be unique
within a statement.
- Specified by:
resultSetNumberin interfaceorg.apache.derby.iapi.sql.execute.NoPutResultSet- Overrides:
resultSetNumberin classBasicNoPutResultSetImpl
setTargetResultSet
public void setTargetResultSet(org.apache.derby.iapi.sql.execute.TargetResultSet trs)
- Description copied from interface:
org.apache.derby.iapi.sql.execute.NoPutResultSet - Notify a NPRS that it is the source for the specified
TargetResultSet. This is useful when doing bulk insert.
setNeedsRowLocation
public void setNeedsRowLocation(boolean needsRowLocation)
- Description copied from interface:
org.apache.derby.iapi.sql.execute.NoPutResultSet - Set whether or not the NPRS need the row location when acting
as a row source. (The target result set determines this.)
getValidColumns
public org.apache.derby.iapi.services.io.FormatableBitSet getValidColumns()
- Description copied from interface:
org.apache.derby.iapi.store.access.RowSource - getValidColumns describes the DataValueDescriptor[] returned by all calls
to the getNextRowFromRowSource() call.
If getValidColumns returns null, the number of columns is given by the
DataValueDescriptor.length where DataValueDescriptor[] is returned by the
preceeding getNextRowFromRowSource() call. Column N maps to
DataValueDescriptor[N], where column numbers start at zero.
If getValidColumns return a non null validColumns FormatableBitSet the number of
columns is given by the number of bits set in validColumns. Column N is
not in the partial row if validColumns.get(N) returns false. Column N is
in the partial row if validColumns.get(N) returns true. If column N is
in the partial row then it maps to DataValueDescriptor[M] where M is the
count of calls to validColumns.get(i) that return true where i < N. If
DataValueDescriptor.length is greater than the number of columns
indicated by validColumns the extra entries are ignored.
getNextRowFromRowSource
public org.apache.derby.iapi.types.DataValueDescriptor[] getNextRowFromRowSource() throws org.apache.derby.iapi.error.StandardException
- Description copied from interface:
org.apache.derby.iapi.store.access.RowSource - Get the next row as an array of column objects. The column objects can
be a JBMS Storable or any
Serializable/Externalizable/Formattable/Streaming type.
A return of null indicates that the complete set of rows has been read.A null column can be specified by leaving the object null, or indicated by returning a non-null getValidColumns. On streaming columns, it can be indicated by returning a non-null get FieldStates.
If RowSource.needToClone() is true then the returned row (the DataValueDescriptor[]) is guaranteed not to be modified by drainer of the RowSource (except that the input stream will be read, of course) and drainer will keep no reference to it before making the subsequent nextRow call. So it is safe to return the same DataValueDescriptor[] in subsequent nextRow calls if that is desirable for performance reasons.
If RowSource.needToClone() is false then the returned row (the DataValueDescriptor[]) may be be modified by drainer of the RowSource, and the drainer may keep a reference to it after making the subsequent nextRow call. In this case the client should severe all references to the row after returning it from getNextRowFromRowSource().
needsToClone
public boolean needsToClone()
- Description copied from interface:
org.apache.derby.iapi.store.access.RowSource - Does the caller of getNextRowFromRowSource() need to clone the row
in order to keep a reference to the row past the
getNextRowFromRowSource() call which returned the row. This call
must always return the same for all rows in a RowSource (ie. the
caller will call this once per scan from a RowSource and assume the
behavior is true for all rows in the RowSource).
closeRowSource
public void closeRowSource()
- Description copied from interface:
org.apache.derby.iapi.store.access.RowSource - closeRowSource tells the RowSource that it will no longer need to
return any rows and it can release any resource it may have.
Subsequent call to any method on the RowSource will result in undefined
behavior. A closed rowSource can be closed again.
needsRowLocation
public boolean needsRowLocation()
- Description copied from interface:
org.apache.derby.iapi.store.access.RowLocationRetRowSource - needsRowLocation returns true iff this the row source expects the
drainer of the row source to call rowLocation after getting a row from
getNextRowFromRowSource.
rowLocation
public void rowLocation(org.apache.derby.iapi.types.RowLocation rl) throws org.apache.derby.iapi.error.StandardException
- Description copied from interface:
org.apache.derby.iapi.store.access.RowLocationRetRowSource - rowLocation is a callback for the drainer of the row source to return
the rowLocation of the current row, i.e, the row that is being returned
by getNextRowFromRowSource. This interface is for the purpose of
loading a base table with index. In that case, the indices can be
built at the same time the base table is laid down once the row
location of the base row is known. This is an example pseudo code on
how this call is expected to be used:
boolean needsRL = rowSource.needsRowLocation(); DataValueDescriptor[] row;
JAVADOC