public class OpenBTree
extends java.lang.Object
Concurrency Notes
An instance of an open b-tree is owned by a single context. The b-tree code assumes that the context ensures that only one thread at a time is using the open b-tree. The open b-tree itself does not enforce or check this.
Modifier and Type | Field and Description |
---|---|
protected LogicalUndo |
btree_undo |
protected ContainerHandle |
container
The (open) container which contains the b-tree.
|
protected long |
err_containerid
The conglomerate containerid for error reporting.
|
private BTreeLockingPolicy |
init_btree_locking_policy
The Locking Policy to use for for access to this btree.
|
private BTree |
init_conglomerate
The following group of fields are all basic input parameters which are
provided by the calling code when doing any sort of operation requiring
an open conglomerate (openScan(), open(), openCostController(), ...).
|
private boolean |
init_hold |
protected int |
init_lock_level
Table or page locking?
|
protected TransactionManager |
init_open_user_scans
The user transaction that opened this B-tree.
|
private int |
init_openmode
The ContainerHandle mode the container is opened with.
|
private Transaction |
init_rawtran |
private TransactionManager |
init_xact_manager
The TransactionManager that open'd this btree.
|
protected OpenConglomerateScratchSpace |
runtime_mem
scratch space used for stuff like templates, export rows, ...
|
Constructor and Description |
---|
OpenBTree() |
Modifier and Type | Method and Description |
---|---|
void |
checkConsistency()
Check consistency of a btree.
|
void |
close()
Close the open conglomerate.
|
void |
debugConglomerate()
Dump information about tree into the log.
|
boolean[] |
getColumnSortOrderInfo() |
BTree |
getConglomerate() |
ContainerHandle |
getContainer() |
ContainerHandle |
getContainerHandle()
Return the container handle.
|
long |
getEstimatedRowCount()
Get the total estimated number of rows in the container.
|
int |
getHeight()
get height of the tree.
|
boolean |
getHold() |
BTreeLockingPolicy |
getLockingPolicy() |
int |
getLockLevel() |
int |
getOpenMode() |
Transaction |
getRawTran() |
OpenConglomerateScratchSpace |
getRuntimeMem() |
SpaceInfo |
getSpaceInfo() |
TransactionManager |
getXactMgr()
Public Accessors of This class:
|
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)
Initialize the open conglomerate.
|
boolean |
isClosed() |
(package private) void |
isIndexableRowConsistent(DataValueDescriptor[] row)
Check if all the
columns are Indexable and Storable.
|
boolean |
isTableLocked()
is the open btree table locked?
|
ContainerHandle |
reopen()
Open the container after it has been closed previously.
|
void |
setEstimatedRowCount(long count)
Set the total estimated number of rows in the container.
|
void |
setLockingPolicy(BTreeLockingPolicy policy) |
static boolean |
test_errors(OpenBTree open_btree,
java.lang.String debug_string,
BTreeRowPosition pos,
BTreeLockingPolicy btree_locking_policy,
LeafControlRow leaf,
boolean input_latch_released)
Testing infrastructure to cause unusual paths through the code.
|
private BTree init_conglomerate
private TransactionManager init_xact_manager
private Transaction init_rawtran
private int init_openmode
protected int init_lock_level
private boolean init_hold
private BTreeLockingPolicy init_btree_locking_policy
protected ContainerHandle container
protected long err_containerid
protected TransactionManager init_open_user_scans
protected LogicalUndo btree_undo
protected OpenConglomerateScratchSpace runtime_mem
public final TransactionManager getXactMgr()
public final Transaction getRawTran()
public final int getLockLevel()
public final ContainerHandle getContainer()
public final int getOpenMode()
public final BTree getConglomerate()
public final boolean getHold()
public final BTreeLockingPolicy getLockingPolicy()
public final void setLockingPolicy(BTreeLockingPolicy policy)
public final boolean isClosed()
public final OpenConglomerateScratchSpace getRuntimeMem()
public long getEstimatedRowCount() throws StandardException
The number is a rough estimate and may be grossly off. In general the server will cache the row count and then occasionally write the count unlogged to a backing store. If the system happens to shutdown before the store gets a chance to update the row count it may wander from reality.
This call is currently only supported on Heap conglomerates, it will throw an exception if called on btree conglomerates.
StandardException
- Standard exception policy.public void setEstimatedRowCount(long count) throws StandardException
Often, after a scan, the client of RawStore has a much better estimate of the number of rows in the container than what store has. For instance if we implement some sort of update statistics command, or just after a create index a complete scan will have been done of the table. In this case this interface allows the client to set the estimated row count for the container, and store will use that number for all future references.
This call is currently only supported on Heap conglomerates, it will throw an exception if called on btree conglomerates.
count
- the estimated number of rows in the container.StandardException
- Standard exception policy.public void checkConsistency() throws StandardException
Read in root and check consistency of entire tree. Currently raises sanity check errors.
RESOLVE (mikem) if this is to be supported in non-sanity servers what should it do?
StandardException
- Standard exception policy.public boolean isTableLocked()
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
If container is null, open the container, otherwise use the container passed in. The container is always opened with no locking, it is up to the caller to make the appropriate container locking call.
open_user_scans
- The user transaction which opened this btree.xact_manager
- The current transaction, usually the same as
"open_user_scans", but in the case of split it
is the internal xact nested below the user xact.input_container
- The open container holding the index, if it is
already open, else null which will mean this
routine will open it.rawtran
- The current raw store transaction.open_mode
- The opening mode for the ContainerHandle.conglomerate
- Readonly description of the conglomerate.undo
- Logical undo object to associate with all updates
done on this open btree.StandardException
- Standard exception policy.public ContainerHandle reopen() throws StandardException
Open the container, obtaining necessary locks. Most work is actually done by RawStore.openContainer(). Will only reopen() if the container is not already open.
StandardException
- Standard exception policy.public void close() throws StandardException
StandardException
void isIndexableRowConsistent(DataValueDescriptor[] row) throws StandardException
StandardException
- Standard Exception Policy.public ContainerHandle getContainerHandle()
public int getHeight() throws StandardException
Read in root and return the height (number of levels) of the tree. The level of a tree is 0 in the leaf and increases by 1 for each level of the tree as you go up the tree.
StandardException
- Standard exception policy.public void debugConglomerate() throws StandardException
Traverse the tree dumping info about tree into the log.
StandardException
- Standard exception policy.public static boolean test_errors(OpenBTree open_btree, java.lang.String debug_string, BTreeRowPosition pos, BTreeLockingPolicy btree_locking_policy, LeafControlRow leaf, boolean input_latch_released) throws StandardException
Through the use of debug flags allow test code to cause otherwise hard to cause paths through the code.
pos
- the current scan position if the condition simulated by
this call would have resulted in the position being savedStandardException
- Standard exception policy.public SpaceInfo getSpaceInfo() throws StandardException
StandardException
public boolean[] getColumnSortOrderInfo() throws StandardException
StandardException
Apache Derby V10.13 Internals - Copyright © 2004,2016 The Apache Software Foundation. All Rights Reserved.