| java.lang.Object org.apache.derby.impl.store.access.btree.OpenBTree org.apache.derby.impl.store.access.btree.BTreeScan
All known Subclasses: org.apache.derby.impl.store.access.btree.BTreeMaxScan, org.apache.derby.impl.store.access.btree.BTreeForwardScan,
BTreeScan | abstract public class BTreeScan extends OpenBTree implements ScanManager(Code) | | A b-tree scan controller corresponds to an instance of an open b-tree scan.
Concurrency Notes<\B>
The concurrency rules are derived from OpenBTree.
See Also: OpenBTree |
Method Summary | |
public void | close() Close the scan. | public boolean | closeForEndTransaction(boolean closeHeldScan) Close the scan, a commit or abort is about to happen. | public boolean | delete() Delete the row at the current position of the scan. | public void | didNotQualify() A call to allow client to indicate that current row does not qualify.
Indicates to the ScanController that the current row does not
qualify for the scan. | public boolean | doesCurrentPositionQualify() Returns true if the current position of the scan still qualifies
under the set of qualifiers passed to the openScan(). | public void | fetch(DataValueDescriptor[] row) Fetch the row at the current position of the Scan. | public void | fetchLocation(RowLocation templateLocation) Fetch the location of the current position in the scan. | public boolean | fetchNext(DataValueDescriptor[] row) Fetch the row at the next position of the Scan.
If there is a valid next position in the scan then
the value in the template storable row is replaced
with the value of the row at the current scan
position. | public int | fetchNextGroup(DataValueDescriptor[][] row_array, RowLocation[] rowloc_array) Fetch the next N rows from the table.
The client allocates an array of N rows and passes it into the
fetchNextSet() call. | public int | fetchNextGroup(DataValueDescriptor[][] row_array, RowLocation[] old_rowloc_array, RowLocation[] new_rowloc_array) | abstract protected int | fetchRows(BTreeRowPosition pos, DataValueDescriptor[][] row_array, RowLocation[] rowloc_array, BackingStoreHashtable hash_table, long max_rowcnt, int[] key_column_numbers) Fetch the next N rows from the table. | public void | fetchSet(long max_rowcnt, int[] key_column_numbers, BackingStoreHashtable hash_table) Insert all rows that qualify for the current scan into the input
Hash table. | public void | fetchWithoutQualify(DataValueDescriptor[] row) Fetch the row at the current position of the Scan without applying the
qualifiers. | public RecordHandle | getCurrentRecordHandleForDebugging() | public ScanInfo | getScanInfo() Return ScanInfo object which describes performance of scan. | public void | init(TransactionManager xact_manager, Transaction rawtran, boolean hold, int open_mode, int lock_level, BTreeLockingPolicy btree_locking_policy, FormatableBitSet scanColumnList, DataValueDescriptor[] startKeyValue, int startSearchOperator, Qualifier qualifier, DataValueDescriptor[] stopKeyValue, int stopSearchOperator, BTree conglomerate, LogicalUndo undo, StaticCompiledOpenConglomInfo static_info, DynamicCompiledOpenConglomInfo dynamic_info) Initialize the scan for use.
Any changes to this method may have to be reflected in close as well.
The btree init opens the container (super.init), and stores away the
state of the qualifiers. | public boolean | isCurrentPositionDeleted() Returns true if the current position of the scan is at a
deleted row. | public boolean | isKeyed() Return whether this is a keyed conglomerate. | public RowLocation | newRowLocationTemplate() Return a row location object of the correct type to be
used in calls to fetchLocation. | public boolean | next() Move to the next position in the scan. | protected void | positionAtDoneScan(BTreeRowPosition pos) Do work necessary to close a scan.
This routine can only be called "inline" from other btree routines,
as it counts on the state of the pos to be correct.
Closing a scan from close() must handle long jumps from exceptions
where the state of pos may not be correct. | protected void | positionAtDoneScanFromClose(BTreeRowPosition pos) Do any necessary work to complete the scan. | protected void | positionAtNextPage(BTreeRowPosition pos) Position scan to 0 slot on next page.
Position to next page, keeping latch on previous page until we have
latch on next page. | public boolean | positionAtRowLocation(RowLocation rLoc) | protected void | positionAtStartForBackwardScan(BTreeRowPosition pos) Position scan at "start" position for a backward scan.
Positions the scan to the slot just after the first record to be
returned from the backward scan. | protected void | positionAtStartForForwardScan(BTreeRowPosition pos) Position scan at "start" position for a forward scan.
Positions the scan to the slot just before the first record to be
returned from the scan. | abstract void | positionAtStartPosition(BTreeRowPosition pos) Position scan at "start" position.
Positions the scan to the slot just before the first record to be returned
from the scan. | protected boolean | process_qualifier(DataValueDescriptor[] row) process_qualifier - Determine if a row meets all qualifier conditions.
Check all qualifiers in the qualifier array against row. | final public void | reopenScan(DataValueDescriptor[] startKeyValue, int startSearchOperator, Qualifier qualifier, DataValueDescriptor[] stopKeyValue, int stopSearchOperator) Reposition the current scan. | public void | reopenScanByRowLocation(RowLocation startRowLocation, Qualifier qualifier) Reposition the current scan. | public boolean | replace(DataValueDescriptor[] row, FormatableBitSet validColumns) Replace the entire row at the current position of the scan. | protected boolean | reposition(BTreeRowPosition pos, boolean missing_row_for_key_ok) Reposition the scan leaving and reentering the access layer.
When a scan leaves access it saves the RecordHandle of the record
on the page. | public void | savePosition(Conglomerate conglom, Page page) Do work necessary to maintain the current position in the scan. | public String | toString() |
SCAN_DONE | final protected static int SCAN_DONE(Code) | | |
SCAN_HOLD_INIT | final protected static int SCAN_HOLD_INIT(Code) | | |
SCAN_HOLD_INPROGRESS | final protected static int SCAN_HOLD_INPROGRESS(Code) | | |
SCAN_INIT | final protected static int SCAN_INIT(Code) | | |
SCAN_INPROGRESS | final protected static int SCAN_INPROGRESS(Code) | | |
fetchNext_one_slot_array | protected DataValueDescriptor[][] fetchNext_one_slot_array(Code) | | A 1 element array to turn fetchNext and fetch calls into
fetchNextGroup calls.
|
init_fetchDesc | protected FetchDescriptor init_fetchDesc(Code) | | The fetch descriptor which describes the row to be returned by the scan.
|
init_forUpdate | protected boolean init_forUpdate(Code) | | |
init_hold | protected boolean init_hold(Code) | | |
init_lock_fetch_desc | protected FetchDescriptor init_lock_fetch_desc(Code) | | A constant FetchDescriptor which describes the position of the
RowLocation field within the btree, currently always the last column).
Used by lock/unlock to fetch the RowLocation.
Only needs to be allocated once per scan.
|
init_rawtran | protected Transaction init_rawtran(Code) | | init_startKeyValue, init_qualifier, and init_stopKeyValue all are used
to store * references to the values passed in when ScanController.init()
is called. It is assumed that these are not altered by the client
while the scan is active.
|
init_startSearchOperator | protected int init_startSearchOperator(Code) | | |
init_stopSearchOperator | protected int init_stopSearchOperator(Code) | | |
init_useUpdateLocks | protected boolean init_useUpdateLocks(Code) | | Whether the scan should requests UPDATE locks which then will be
converted to X locks when the actual operation is performed.
|
lock_operation | protected int lock_operation(Code) | | What kind of row locks to get during the scan.
|
scan_state | protected int scan_state(Code) | | Delay positioning the table at the start position until the first
next() call. The initial position is done in positionAtStartPosition().
|
stat_numdeleted_rows_visited | protected int stat_numdeleted_rows_visited(Code) | | |
stat_numpages_visited | protected int stat_numpages_visited(Code) | | Performance counters ...
|
stat_numrows_qualified | protected int stat_numrows_qualified(Code) | | |
stat_numrows_visited | protected int stat_numrows_visited(Code) | | |
BTreeScan | public BTreeScan()(Code) | | |
closeForEndTransaction | public boolean closeForEndTransaction(boolean closeHeldScan) throws StandardException(Code) | | Close the scan, a commit or abort is about to happen.
|
didNotQualify | public void didNotQualify() throws StandardException(Code) | | A call to allow client to indicate that current row does not qualify.
Indicates to the ScanController that the current row does not
qualify for the scan. If the isolation level of the scan allows,
this may result in the scan releasing the lock on this row.
Note that some scan implimentations may not support releasing locks on
non-qualifying rows, or may delay releasing the lock until sometime
later in the scan (ie. it may be necessary to keep the lock until
either the scan is repositioned on the next row or page).
This call should only be made while the scan is positioned on a current
valid row.
exception: StandardException - Standard exception policy. |
doesCurrentPositionQualify | public boolean doesCurrentPositionQualify() throws StandardException(Code) | | Returns true if the current position of the scan still qualifies
under the set of qualifiers passed to the openScan(). When called
this routine will reapply all qualifiers against the row currently
positioned and return true if the row still qualifies. If the row
has been deleted or no longer passes the qualifiers then this routine
will return false.
This case can come about if the current scan
or another scan on the same table in the same transaction
deleted the row or changed columns referenced by the qualifier after
the next() call which positioned the scan at this row.
Note that for comglomerates which don't support update, like btree's,
there is no need to recheck the qualifiers.
The results of a fetch() performed on a scan positioned on
a deleted row are undefined.
exception: StandardException - Standard exception policy. |
fetchNext | public boolean fetchNext(DataValueDescriptor[] row) throws StandardException(Code) | | Fetch the row at the next position of the Scan.
If there is a valid next position in the scan then
the value in the template storable row is replaced
with the value of the row at the current scan
position. The columns of the template row must
be of the same type as the actual columns in the
underlying conglomerate.
The resulting contents of templateRow after a fetchNext()
which returns false is undefined.
The result of calling fetchNext(row) is exactly logically
equivalent to making a next() call followed by a fetch(row)
call. This interface allows implementations to optimize
the 2 calls if possible.
Parameters: row - The template row into which the valueof the next position in the scan is to be stored. True if there is a next position in the scan,false if there isn't. exception: StandardException - Standard exception policy. |
fetchNextGroup | public int fetchNextGroup(DataValueDescriptor[][] row_array, RowLocation[] rowloc_array) throws StandardException(Code) | | Fetch the next N rows from the table.
The client allocates an array of N rows and passes it into the
fetchNextSet() call. This routine does the equivalent of N
fetchNext() calls, filling in each of the rows in the array.
Locking is performed exactly as if the N fetchNext() calls had
been made.
It is up to Access how many rows to return. fetchNextSet() will
return how many rows were filled in. If fetchNextSet() returns 0
then the scan is complete, (ie. the scan is in the same state as if
fetchNext() had returned false). If the scan is not complete then
fetchNext() will return (1 <= row_count <= N).
The current position of the scan is undefined if fetchNextSet()
is used (ie. mixing fetch()/fetchNext() and fetchNextSet() calls
in a single scan does not work). This is because a fetchNextSet()
request for 5 rows from a heap where the first 2 rows qualify, but
no other rows qualify will result in the scan being positioned at
the end of the table, while if 5 rows did qualify the scan will be
positioned on the 5th row.
Qualifiers, start and stop positioning of the openscan are applied
just as in a normal scan.
The columns of the row will be the standard columns returned as
part of a scan, as described by the validColumns - see openScan for
description.
Expected usage:
// allocate an array of 5 empty row templates
DataValueDescriptor[][] row_array = allocate_row_array(5);
int row_cnt = 0;
scan = openScan();
while ((row_cnt = scan.fetchNextSet(row_array) != 0)
{
// I got "row_cnt" rows from the scan. These rows will be
// found in row_array[0] through row_array[row_cnt - 1]
}
RESOLVE - This interface is being provided so that we can prototype
the performance results it can achieve. If it looks like
this interface is useful, it is very likely we will look
into a better way to tie together the now 4 different
fetch interfaces: fetch, fetchNext(), fetchNextGroup(),
and fetchSet().
The number of qualifying rows found and copied into the provided array of rows. If 0 then the scan is complete, otherwise the return value will be: 1 <= row_count <= row_array.length Parameters: row_array - The array of rows to copy rows into. row_array[].length must >= 1. This routineassumes that all entries in the array contain complete template rows. exception: StandardException - Standard exception policy. |
fetchSet | public void fetchSet(long max_rowcnt, int[] key_column_numbers, BackingStoreHashtable hash_table) throws StandardException(Code) | | Insert all rows that qualify for the current scan into the input
Hash table.
This routine scans executes the entire scan as described in the
openScan call. For every qualifying unique row value an entry is
placed into the HashTable. For unique row values the entry in the
BackingStoreHashtable has a key value of the object stored in
row[key_column_number], and the value of the data is row. For row
values with duplicates, the key value is also row[key_column_number],
but the value of the data is a Vector of
rows. The caller will have to call "instanceof" on the data value
object if duplicates are expected, to determine if the data value
of the Hashtable entry is a row or is a Vector of rows.
Note, that for this routine to work efficiently the caller must
ensure that the object in row[key_column_number] implements
the hashCode and equals method as appropriate for it's datatype.
It is expected that this call will be the first and only call made in
an openscan. Qualifiers and stop position of the openscan are applied
just as in a normal scan. This call is logically equivalent to the
caller performing the following:
import java.util.Hashtable;
hash_table = new Hashtable();
while (next())
{
row = create_new_row();
fetch(row);
if ((duplicate_value =
hash_table.put(row[key_column_number], row)) != null)
{
Vector row_vec;
// inserted a duplicate
if ((duplicate_value instanceof vector))
{
row_vec = (Vector) duplicate_value;
}
else
{
// allocate vector to hold duplicates
row_vec = new Vector(2);
// insert original row into vector
row_vec.addElement(duplicate_value);
// put the vector as the data rather than the row
hash_table.put(row[key_column_number], row_vec);
}
// insert new row into vector
row_vec.addElement(row);
}
}
The columns of the row will be the standard columns returned as
part of a scan, as described by the validColumns - see openScan for
description.
RESOLVE - is this ok? or should I hard code somehow the row to
be the first column and the row location?
Currently it is only possible to hash on the first column in the
conglomerate, in the future we may change the interface to allow
hashing either on a different column or maybe on a combination of
columns.
No overflow to external storage is provided, so calling this routine
on a 1 gigabyte conglomerate will incur at least 1 gigabyte of memory
(probably failing with a java out of memory condition). If this
routine gets an out of memory condition, or if "max_rowcnt" is
exceeded then then the routine will give up, empty the Hashtable,
and return "false."
On exit from this routine, whether the fetchSet() succeeded or not
the scan is complete, it is positioned just the same as if the scan
had been drained by calling "next()" until it returns false (ie.
fetchNext() and next() calls will return false).
reopenScan() can be called to restart the scan.
RESOLVE - until we get row counts what should we do for sizing the
the size, capasity, and load factor of the hash table.
For now it is up to the caller to create the Hashtable,
Access does not reset any parameters.
RESOLVE - I am not sure if access should be in charge of allocating
the new row objects. I know that I can do this in the
case of btree's, but I don't think I can do this in heaps.
Maybe this is solved by work to be done on the sort
interface.
Parameters: max_rowcnt - The maximum number of rows to insert into the Hash table. Pass in -1 if there is no maximum. Parameters: key_column_numbers - The column numbers of the columns in thescan result row to be the key to the Hashtable."0" is the first column in the scan resultrow (which may be different than the firstcolumn in the row in the table of the scan). Parameters: hash_table - The java HashTable to load into. exception: StandardException - Standard exception policy. |
getCurrentRecordHandleForDebugging | public RecordHandle getCurrentRecordHandleForDebugging()(Code) | | |
getScanInfo | public ScanInfo getScanInfo() throws StandardException(Code) | | Return ScanInfo object which describes performance of scan.
Return ScanInfo object which contains information about the current
scan.
See Also: ScanInfo The ScanInfo object which contains info about current scan. exception: StandardException - Standard exception policy. |
init | public void init(TransactionManager xact_manager, Transaction rawtran, boolean hold, int open_mode, int lock_level, BTreeLockingPolicy btree_locking_policy, FormatableBitSet scanColumnList, DataValueDescriptor[] startKeyValue, int startSearchOperator, Qualifier qualifier, DataValueDescriptor[] stopKeyValue, int stopSearchOperator, BTree conglomerate, LogicalUndo undo, StaticCompiledOpenConglomInfo static_info, DynamicCompiledOpenConglomInfo dynamic_info) throws StandardException(Code) | | Initialize the scan for use.
Any changes to this method may have to be reflected in close as well.
The btree init opens the container (super.init), and stores away the
state of the qualifiers. The actual searching for the first position
is delayed until the first next() call.
exception: StandardException - Standard exception policy. |
isCurrentPositionDeleted | public boolean isCurrentPositionDeleted() throws StandardException(Code) | | Returns true if the current position of the scan is at a
deleted row. This case can come about if the current scan
or another scan on the same table in the same transaction
deleted the row after the next() call which positioned the
scan at this row.
The results of a fetch() performed on a scan positioned on
a deleted row are undefined.
exception: StandardException - Standard exception policy. |
isKeyed | public boolean isKeyed()(Code) | | Return whether this is a keyed conglomerate.
whether this is a keyed conglomerate. |
positionAtDoneScan | protected void positionAtDoneScan(BTreeRowPosition pos) throws StandardException(Code) | | Do work necessary to close a scan.
This routine can only be called "inline" from other btree routines,
as it counts on the state of the pos to be correct.
Closing a scan from close() must handle long jumps from exceptions
where the state of pos may not be correct. The easiest case is
a lock timeout which has caused us not to have a latch on a page,
but pos still thinks there is a latch. This is the easiest but
other exceptions can also caused the same state at close() time.
|
positionAtNextPage | protected void positionAtNextPage(BTreeRowPosition pos) throws StandardException(Code) | | Position scan to 0 slot on next page.
Position to next page, keeping latch on previous page until we have
latch on next page. This routine releases the latch on current_page
once it has successfully gotten both the latch on the next page and
the scan lock on the next page.
Parameters: pos - current row position of the scan. exception: StandardException - Standard exception policy. |
positionAtStartForBackwardScan | protected void positionAtStartForBackwardScan(BTreeRowPosition pos) throws StandardException(Code) | | Position scan at "start" position for a backward scan.
Positions the scan to the slot just after the first record to be
returned from the backward scan. Returns the start page latched, and
sets "current_slot" to the slot number just right of the first slot
to return.
exception: StandardException - Standard exception policy. |
positionAtStartForForwardScan | protected void positionAtStartForForwardScan(BTreeRowPosition pos) throws StandardException(Code) | | Position scan at "start" position for a forward scan.
Positions the scan to the slot just before the first record to be
returned from the scan. Returns the start page latched, and
sets "current_slot" to the slot number.
exception: StandardException - Standard exception policy. |
positionAtStartPosition | abstract void positionAtStartPosition(BTreeRowPosition pos) throws StandardException(Code) | | Position scan at "start" position.
Positions the scan to the slot just before the first record to be returned
from the scan. Returns the start page latched, and sets "current_slot" to
the slot number.
exception: StandardException - Standard exception policy. |
process_qualifier | protected boolean process_qualifier(DataValueDescriptor[] row) throws StandardException(Code) | | process_qualifier - Determine if a row meets all qualifier conditions.
Check all qualifiers in the qualifier array against row. Return true
if all compares specified by the qualifier array return true, else
return false.
It is up to caller to make sure qualifier list is non-null.
Parameters: row - The row with the same partial column list as therow returned by the current scan. exception: StandardException - Standard exception policy. |
reopenScan | final public void reopenScan(DataValueDescriptor[] startKeyValue, int startSearchOperator, Qualifier qualifier, DataValueDescriptor[] stopKeyValue, int stopSearchOperator) throws StandardException(Code) | | Reposition the current scan. This call is semantically the same as if
the current scan had been closed and a openScan() had been called instead.
The scan is reopened with against the same conglomerate, and the scan
is reopened with the same "hold" and "forUpdate" parameters passed in
the original openScan. The previous template row continues to be used.
Parameters: startKeyValue - An indexable row which holds a(partial) key value which, in combination with thestartSearchOperator, defines the starting position ofthe scan. If null, the starting position of the scanis the first row of the conglomerate. Parameters: startSearchOperator - an operator which defineshow the startKeyValue is to be searched for. IfstartSearchOperation is ScanController.GE, the scan starts onthe first row which is greater than or equal to thestartKeyValue. If startSearchOperation is ScanController.GT,the scan starts on the first row whose key is greater thanstartKeyValue. The startSearchOperation parameter isignored if the startKeyValue parameter is null. Parameters: qualifier - An array of qualifiers which, appliedto each key, restrict the rows returned by the scan. Rowsfor which any one of the qualifiers returns false are notreturned by the scan. If null, all rows are returned. Parameters: stopKeyValue - An indexable row which holds a(partial) key value which, in combination with thestopSearchOperator, defines the ending position ofthe scan. If null, the ending position of the scanis the last row of the conglomerate. Parameters: stopSearchOperator - an operator which defineshow the stopKeyValue is used to determine the scan stoppingposition. If stopSearchOperation is ScanController.GE, the scanstops just before the first row which is greater than orequal to the stopKeyValue. If stopSearchOperation isScanController.GT, the scan stops just before the first row whosekey is greater than startKeyValue. The stopSearchOperationparameter is ignored if the stopKeyValue parameter is null. exception: StandardException - Standard exception policy. |
reopenScanByRowLocation | public void reopenScanByRowLocation(RowLocation startRowLocation, Qualifier qualifier) throws StandardException(Code) | | Reposition the current scan. This call is semantically the same as if
the current scan had been closed and a openScan() had been called instead.
The scan is reopened against the same conglomerate, and the scan
is reopened with the same "scan column list", "hold" and "forUpdate"
parameters passed in the original openScan.
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.
Parameters: startRowLocation - An existing RowLocation within the conglomerate,at which to position the start of the scan. The scan will begin at thislocation and continue forward until the end of the conglomerate. Positioning at a non-existent RowLocation (ie. an invalid one or one thathad been deleted), will result in an exception being thrown when the first next operation is attempted. Parameters: qualifier - An array of qualifiers which, appliedto each key, restrict the rows returned by the scan. Rowsfor which any one of the qualifiers returns false are notreturned by the scan. If null, all rows are returned. exception: StandardException - Standard exception policy. |
reposition | protected boolean reposition(BTreeRowPosition pos, boolean missing_row_for_key_ok) throws StandardException(Code) | | Reposition the scan leaving and reentering the access layer.
When a scan leaves access it saves the RecordHandle of the record
on the page. There are 2 cases to consider when trying to reposition
the scan when re-entering access:
o ROW has not moved off the page.
If the row has not moved then the RecordHandle we have saved
away is valid, and we just call RawStore to reposition on that
RecordHandle (RawStore takes care of the row moving within
the page).
o ROW has moved off the page.
This can only happen in the case of a btree split. In that
case the splitter will have caused all scans positioned on
this page within the same transaction to save a copy of the
row that the scan was positioned on. Then to reposition the
scan it is necessary to research the tree from the top using
the copy of the row.
If the scan has saved it's position by key (and thus has given up the
scan lock on the page), there are a few cases where it is possible that
the key no longer exists in the table. In the case of a scan held
open across commit it is easy to imagine that the row the scan was
positioned on could be deleted and subsequently purged from the table
all before the scan resumes. Also in the case of read uncommitted
the scan holds no lock on the current row, so it could be purged -
in the following scenario for instance: read uncommitted transaction 1
opens scan and positions on row (1,2), transaction 2 deletes (1,2) and
commits, transaction 1 inserts (1,3) which goes to same page as (1,2)
and is going to cause a split, transaction 1 saves scan position as
key, gives up scan lock and then purges row (1, 2), when transaction
1 resumes scan (1, 2) no longer exists. missing_row_for_key_ok
parameter is added as a sanity check to make sure it ok that
repositioning does not go to same row that we were repositioned on.
Parameters: pos - position to set the scan to. Parameters: missing_row_for_key_ok - if true and exact key is not found thenscan is just set to key just left ofthe key (thus a next will move to thekey just after "pos") returns true if scan has been repositioned successfully, elsereturns false if the position key could not be found andmissing_row_for_key_ok was false indicating that scan couldonly be positioned on the exact key match. exception: StandardException - Standard exception policy. |
savePosition | public void savePosition(Conglomerate conglom, Page page) throws StandardException(Code) | | Do work necessary to maintain the current position in the scan.
The latched page in the conglomerate "congomid" is changing, do
whatever is necessary to maintain the current position of the scan.
For some conglomerates this may be a no-op.
Parameters: conglom - Conglomerate object of the conglomerate being changed. Parameters: page - Page in the conglomerate being changed. exception: StandardException - Standard exception policy. |
Methods inherited from org.apache.derby.impl.store.access.btree.OpenBTree | public void checkConsistency() throws StandardException(Code)(Java Doc) public void close() throws StandardException(Code)(Java Doc) public void debugConglomerate() throws StandardException(Code)(Java Doc) public boolean[] getColumnSortOrderInfo() throws StandardException(Code)(Java Doc) final public BTree getConglomerate()(Code)(Java Doc) final public ContainerHandle getContainer()(Code)(Java Doc) public ContainerHandle getContainerHandle()(Code)(Java Doc) public long getEstimatedRowCount() throws StandardException(Code)(Java Doc) public int getHeight() throws StandardException(Code)(Java Doc) final public boolean getHold()(Code)(Java Doc) final public int getLockLevel()(Code)(Java Doc) final public BTreeLockingPolicy getLockingPolicy()(Code)(Java Doc) final public int getOpenMode()(Code)(Java Doc) final public Transaction getRawTran()(Code)(Java Doc) final public OpenConglomerateScratchSpace getRuntimeMem()(Code)(Java Doc) public SpaceInfo getSpaceInfo() throws StandardException(Code)(Java Doc) final public TransactionManager getXactMgr()(Code)(Java Doc) public void init(TransactionManager open_user_scans, TransactionManager xact_manager, ContainerHandle input_container, Transaction rawtran, boolean hold, int open_mode, int lock_level, BTreeLockingPolicy btree_locking_policy, BTree conglomerate, LogicalUndo undo, DynamicCompiledOpenConglomInfo dynamic_info) throws StandardException(Code)(Java Doc) final public boolean isClosed()(Code)(Java Doc) void isIndexableRowConsistent(DataValueDescriptor[] row) throws StandardException(Code)(Java Doc) public boolean isTableLocked()(Code)(Java Doc) public RecordHandle makeRecordHandle(long page_number, int rec_id) throws StandardException(Code)(Java Doc) public ContainerHandle reopen() throws StandardException(Code)(Java Doc) public void setEstimatedRowCount(long count) throws StandardException(Code)(Java Doc) final public void setLockingPolicy(BTreeLockingPolicy policy)(Code)(Java Doc) public static boolean test_errors(OpenBTree open_btree, String debug_string, boolean release_scan_lock, BTreeLockingPolicy btree_locking_policy, LeafControlRow leaf, boolean input_latch_released) throws StandardException(Code)(Java Doc)
|
|
|