public interface GenericScanController extends RowCountable
A scan is the mechanism for iterating over the rows in a conglomerate, the scan controller is the interface through which access clients control the underlying scan. An instance of a scan controller can be thought of as an open scan.
Scans are opened from a TransactionController.
A ScanController can handle partial rows. Partial rows are described in
RowUtil.
A scan controller is opened with a FormatableBitSet that describes the
columns that need to be returned on a fetch call. This FormatableBitSet
need not include any columns referenced in the qualifers, start
and/or stop keys.
TransactionController.openScan(long, boolean, int, int, int, org.apache.derby.iapi.services.io.FormatableBitSet, org.apache.derby.iapi.types.DataValueDescriptor[], int, org.apache.derby.iapi.store.access.Qualifier[][], org.apache.derby.iapi.types.DataValueDescriptor[], int)
,
RowCountable
,
RowUtil
Modifier and Type | Method and Description |
---|---|
void |
close()
Close the scan.
|
ScanInfo |
getScanInfo()
Return ScanInfo object which describes performance of scan.
|
boolean |
isKeyed()
Return whether this is a keyed conglomerate.
|
boolean |
isTableLocked()
Return whether this scan is table locked.
|
RowLocation |
newRowLocationTemplate()
Return a row location object to be used in calls to fetchLocation.
|
void |
reopenScan(DataValueDescriptor[] startKeyValue,
int startSearchOperator,
Qualifier[][] qualifier,
DataValueDescriptor[] stopKeyValue,
int stopSearchOperator)
Reposition the current scan.
|
void |
reopenScanByRowLocation(RowLocation startRowLocation,
Qualifier[][] qualifier)
Reposition the current scan.
|
getEstimatedRowCount, setEstimatedRowCount
void close() throws StandardException
StandardException
- Standard exception policy.ScanInfo getScanInfo() throws StandardException
Return ScanInfo object which contains information about the current state of the scan.
The statistics gathered by the scan are not reset to 0 by a reopenScan(), rather they continue to accumulate.
StandardException
- Standard exception policy.ScanInfo
boolean isKeyed()
boolean isTableLocked()
Implementation of this is not complete. Currently it does not give back the right information on covering locks or lock escalation. If the openScan() caller specifies a MODE_TABLE as the lock_level then this routine will always return true. If the openScan() caller specifies a MODE_RECORD as the lock_level then this routine will return true iff the lock level of the system has been overridden either by the derby.storage.rowLocking=false property, or by a shipped configuration which disables row locking.
RowLocation newRowLocationTemplate() throws StandardException
Return a row location object of the correct type to be used in calls to fetchLocation.
StandardException
- Standard exception policy.void reopenScan(DataValueDescriptor[] startKeyValue, int startSearchOperator, Qualifier[][] qualifier, DataValueDescriptor[] stopKeyValue, int stopSearchOperator) throws StandardException
The statistics gathered by the scan are not reset to 0 by a reopenScan(), rather they continue to accumulate.
startKeyValue
- An indexable row which holds a
(partial) key value which, in combination with the
startSearchOperator, defines the starting position of
the scan. If null, the starting position of the scan
is the first row of the conglomerate.startSearchOperator
- an operator which defines
how the startKeyValue is to be searched for. If
startSearchOperator is ScanController.GE, the scan starts on
the first row which is greater than or equal to the
startKeyValue. If startSearchOperation is ScanController.GT,
the scan starts on the first row whose key is greater than
startKeyValue. The startSearchOperation parameter is
ignored if the startKeyValue parameter is null.qualifier
- An array of qualifiers which, applied
to each key, restrict the rows returned by the scan. Rows
for which any one of the qualifiers returns false are not
returned by the scan. If null, all rows are returned.stopKeyValue
- An indexable row which holds a
(partial) key value which, in combination with the
stopSearchOperator, defines the ending position of
the scan. If null, the ending position of the scan
is the last row of the conglomerate.stopSearchOperator
- an operator which defines
how the stopKeyValue is used to determine the scan stopping
position. If stopSearchOperation is ScanController.GE, the scan
stops just before the first row which is greater than or
equal to the stopKeyValue. If stopSearchOperation is
ScanController.GT, the scan stops just before the first row whose
key is greater than startKeyValue. The stopSearchOperation
parameter is ignored if the stopKeyValue parameter is null.StandardException
- Standard exception policy.void reopenScanByRowLocation(RowLocation startRowLocation, Qualifier[][] qualifier) throws StandardException
The statistics gathered by the scan are not reset to 0 by a reopenScan(), rather they continue to accumulate.
Note that this operation is currently only supported on Heap conglomerates. Also note that order of rows within are heap are not guaranteed, so for instance positioning at a RowLocation in the "middle" of a heap, then inserting more data, then continuing the scan is not guaranteed to see the new rows - they may be put in the "beginning" of the heap.
startRowLocation
- An existing RowLocation within the conglomerate,
at which to position the start of the scan. The scan will begin at this
location and continue forward until the end of the conglomerate.
Positioning at a non-existent RowLocation (ie. an invalid one or one that
had been deleted), will result in an exception being thrown when the
first next operation is attempted.qualifier
- An array of qualifiers which, applied
to each key, restrict the rows returned by the scan. Rows
for which any one of the qualifiers returns false are not
returned by the scan. If null, all rows are returned.StandardException
- Standard exception policy.Apache Derby V10.13 Internals - Copyright © 2004,2016 The Apache Software Foundation. All Rights Reserved.