Fennel: BTreeAccessBase Class Reference (original) (raw)
BTreeAccessBase is a base for classes which access BTree contents. More...
#include <[BTreeAccessBase.h](BTreeAccessBase%5F8h-source.html)>
Inheritance diagram for BTreeAccessBase:

| Public Member Functions | |
|---|---|
| SharedSegment | getSegment () const |
| **Returns:**the segment storing the BTree being accessed | |
| SharedCacheAccessor | getCacheAccessor () const |
| **Returns:**the CacheAccessor used to access the BTree's pages | |
| PageId | getRootPageId () const |
| **Returns:**the BTree's root PageId | |
| void | setRootPageId (PageId rootPageId) |
| Updates the BTree's root PageId. | |
| SegmentId | getSegmentId () const |
| **Returns:**SegmentId of segment storing the BTree | |
| PageOwnerId | getPageOwnerId () const |
| **Returns:**PageOwnerId used to mark pages of the BTree | |
| TupleDescriptor const & | getTupleDescriptor () const |
| Returns:TupleDescriptor for tuples stored by this BTree | |
| TupleDescriptor const & | getKeyDescriptor () const |
| Returns:TupleDescriptor for keys indexed by this BTree | |
| TupleProjection const & | getKeyProjection () const |
| Returns:TupleProjection from getTupleDescriptor() to getKeyDescriptor() | |
| void | validateTupleSize (TupleAccessor const &tupleAccessor) |
| Validates that a particular tuple can fit in this BTree, throwing a TupleOverflowExcn if not. | |
| Protected Member Functions | |
| BTreeNodeAccessor & | getLeafNodeAccessor (BTreeNode const &node) |
| Gets the node accessor for a leaf node, asserting that the node really is a leaf. | |
| BTreeNodeAccessor & | getNonLeafNodeAccessor (BTreeNode const &node) |
| Gets the node accessor for a non-leaf node, asserting that the node really is a non-leaf. | |
| BTreeNodeAccessor & | getNodeAccessor (BTreeNode const &node) |
| Gets the node accessor for any node, using the node height to determine whether it's a leaf or not. | |
| PageId | getChildForCurrent () |
| Gets the child PageId corresponding to the current key in a non-leaf node. | |
| PageId | getChild (BTreeNode const &node, uint iChild) |
| Accesses a non-leaf tuple and gets its child PageId. | |
| PageId | getRightSibling (PageId pageId) |
| Gets the right sibling of a node by consulting the containing segment's successor information. | |
| void | setRightSibling (BTreeNode &leftNode, PageId leftPageId, PageId rightPageId) |
| Sets the right sibling of a node. | |
| PageId | getFirstChild (PageId pageId) |
| Gets the first child of a non-leaf node. | |
| BTreeAccessBase (BTreeDescriptor const &descriptor) | |
| virtual | ~BTreeAccessBase () |
| Protected Attributes | |
| BTreeDescriptor | treeDescriptor |
| Descriptor for tree being accessed. | |
| TupleDescriptor | keyDescriptor |
| Descriptor for pure keys (common across leaf and non-leaf tuples). | |
| AttributeAccessor const * | pChildAccessor |
| Accessor for the attribute of non-leaf tuples which stores the child PageId. | |
| TupleProjectionAccessor | leafKeyAccessor |
| Accessor for keys of tuples stored in leaves. | |
| boost::scoped_ptr< BTreeNodeAccessor > | pNonLeafNodeAccessor |
| Accessor for non-leaf nodes. | |
| boost::scoped_ptr< BTreeNodeAccessor > | pLeafNodeAccessor |
| Accessor for leaf nodes. | |
| uint | cbTupleMax |
| Maximum size for a leaf-level tuple. |
Detailed Description
BTreeAccessBase is a base for classes which access BTree contents.
It declares some of the necessary tuple accessors, helper methods, etc.
Definition at line 44 of file BTreeAccessBase.h.
Constructor & Destructor Documentation
| BTreeAccessBase::BTreeAccessBase | ( | BTreeDescriptor const & | descriptor | ) | [explicit, protected] |
|---|
Definition at line 35 of file BTreeAccessBase.cpp.
References TupleProjectionAccessor::bind(), cbTupleMax, TupleAccessor::compute(), getKeyProjection(), getSegment(), TupleAccessor::isFixedWidth(), keyDescriptor, BTreeDescriptor::keyProjection, leafKeyAccessor, StandardTypeDescriptorFactory::newDataType(), pChildAccessor, pLeafNodeAccessor, pNonLeafNodeAccessor, TupleDescriptor::projectFrom(), STANDARD_TYPE_UINT_64, treeDescriptor, and BTreeDescriptor::tupleDescriptor.
| BTreeAccessBase::~BTreeAccessBase | ( | | ) | [protected, virtual] | | ---------------------------------- | - | | - | ---------------------- |
Member Function Documentation
Gets the node accessor for any node, using the node height to determine whether it's a leaf or not.
If you already know this from the context, call getLeafNodeAccessor or getNonLeafNodeAccessor instead.
Parameters:
Returns:
node accessor
Definition at line 46 of file BTreeAccessBaseImpl.h.
References BTreeNode::height, pLeafNodeAccessor, and pNonLeafNodeAccessor.
Referenced by BTreeReader::accessTupleInline(), BTreeWriter::attemptInsertWithoutSplit(), BTreeReader::binarySearch(), BTreeWriter::compactNode(), BTreeReader::compareFirstKey(), BTreeWriter::grow(), BTreeWriter::lockParentPage(), BTreeWriter::splitCurrentNode(), BTreeVerifier::verifyChildren(), and BTreeVerifier::verifyNode().
| PageId BTreeAccessBase::getChildForCurrent | ( | | ) | [inline, protected] | | ------------------------------------------ | - | | - | --------------------- |
| PageId BTreeAccessBase::getChild | ( | BTreeNode const & | node, |
|---|---|---|---|
| uint | iChild | ||
| ) | [inline, protected] |
| PageId BTreeAccessBase::getRightSibling | ( | PageId | pageId | ) | [inline, protected] |
|---|
Gets the right sibling of a node by consulting the containing segment's successor information.
Should only be used when the node is not already locked (e.g. during prefetch). When the node is already locked, its rightSibling field should be accessed instead.
Parameters:
| pageId | PageId of node whose sibling is to be found |
|---|
Returns:
PageId of right sibling
Definition at line 70 of file BTreeAccessBaseImpl.h.
References getSegment().
Referenced by BTreeBuilder::truncateChildren(), and BTreeVerifier::verifyNode().
00071 { 00072 return getSegment()->getPageSuccessor(pageId); 00073 }
| void BTreeAccessBase::setRightSibling | ( | BTreeNode & | leftNode, |
|---|---|---|---|
| PageId | leftPageId, | ||
| PageId | rightPageId | ||
| ) | [inline, protected] |
| PageId BTreeAccessBase::getFirstChild | ( | PageId | pageId | ) | [protected] |
|---|
Returns:
the segment storing the BTree being accessed
Definition at line 234 of file BTreeAccessBase.h.
References SegmentAccessor::pSegment, BTreeDescriptor::segmentAccessor, and treeDescriptor.
Referenced by BTreeBuildLevel::allocatePage(), BTreeAccessBase(), BTreeBuilder::buildBalanced(), BTreeBuilder::buildTwoPass(), BTreeBuilder::buildUnbalanced(), BTreeWriter::compactNode(), BTreeBuilder::createEmptyRoot(), getRightSibling(), BTreeWriter::grow(), setRightSibling(), BTreeWriter::splitCurrentNode(), and BTreeBuilder::truncate().
| PageId BTreeAccessBase::getRootPageId | ( | | ) | const [inline] | | ------------------------------------- | - | | - | ---------------- |
Returns:
the BTree's root PageId
Definition at line 244 of file BTreeAccessBase.h.
References BTreeDescriptor::rootPageId, and treeDescriptor.
Referenced by BTreeVerifier::BTreeVerifier(), BTreeBuilder::buildBalanced(), BTreeInsertExecStream::buildTree(), LbmSplicerExecStreamTest::createBTree(), BTreeBuilder::createEmptyRoot(), BTreeWriter::describeParticipant(), LcsClusterReplaceExecStream::getTupleForLoad(), LbmSplicerExecStream::getValidatedTuple(), BTreeNonLeafReader::isRootOnly(), LcsClusterReplaceExecStreamTest::loadCluster(), LcsMultiClusterAppendTest::loadClusters(), LcsRowScanExecStreamTest::loadOneCluster(), LbmSearchTest::loadTableAndIndex(), BTreeWriter::lockParentPage(), BTreeWriter::optimizeRootLockMode(), BTreeWriter::positionSearchKey(), BTreeReader::searchExtremeInternal(), BTreeReader::searchForKey(), BTreeNonLeafReader::searchForKey(), BTreeBuilder::swapRoot(), ExecStreamTestSuite::testBTreeInsertExecStream(), BTreeTest::testBulkLoad(), BTreeTest::testInserts(), LbmLoadBitmapTest::testLoad(), LcsClusterAppendExecStreamTest::testLoadMultiCol(), LcsClusterAppendExecStreamTest::testLoadSingleCol(), BTreeTest::testMultiKeySearches(), BTreeReadersTest::testReaders(), BTreeReadersTest::testScan(), LcsRowScanExecStreamTest::testScanOnEmptyCluster(), BTreeReadersTest::testSearch(), BTreeBuilder::truncate(), BTreeVerifier::verify(), and CmdInterpreter::visit().
| void BTreeAccessBase::setRootPageId | ( | PageId | rootPageId | ) |
|---|
| SegmentId BTreeAccessBase::getSegmentId | ( | | ) | const [inline] | | --------------------------------------- | - | | - | ---------------- |
| PageOwnerId BTreeAccessBase::getPageOwnerId | ( | | ) | const [inline] | | ------------------------------------------- | - | | - | ---------------- |
| TupleDescriptor const & BTreeAccessBase::getTupleDescriptor | ( | | ) | const [inline] | | ---------------------------------------------------------------------------------------- | - | | - | ---------------- |
| TupleDescriptor const & BTreeAccessBase::getKeyDescriptor | ( | | ) | const [inline] | | -------------------------------------------------------------------------------------- | - | | - | ---------------- |
| TupleProjection const & BTreeAccessBase::getKeyProjection | ( | | ) | const [inline] | | -------------------------------------------------------------------------------------- | - | | - | ---------------- |
| void BTreeAccessBase::validateTupleSize | ( | TupleAccessor const & | tupleAccessor | ) |
|---|
Member Data Documentation
Descriptor for tree being accessed.
Definition at line 51 of file BTreeAccessBase.h.
Referenced by BTreeBuildLevel::allocateAndLinkNewNode(), BTreeAccessBase(), BTreeBuildLevel::BTreeBuildLevel(), BTreeReader::BTreeReader(), BTreeBuilder::buildBalanced(), BTreeBuilder::createEmptyRoot(), getCacheAccessor(), getFirstChild(), getKeyProjection(), getPageOwnerId(), getRootPageId(), getSegment(), getSegmentId(), getTupleDescriptor(), BTreeWriter::grow(), BTreeWriter::lockParentPage(), setRootPageId(), BTreeWriter::splitCurrentNode(), BTreeBuilder::swapRoot(), BTreeBuilder::truncate(), BTreeBuilder::truncateChildren(), BTreeBuilder::truncateExternal(), and BTreeVerifier::verifyNode().
Descriptor for pure keys (common across leaf and non-leaf tuples).
Definition at line 56 of file BTreeAccessBase.h.
Referenced by BTreeReader::binarySearch(), BTreeAccessBase(), BTreeReader::BTreeReader(), BTreeVerifier::BTreeVerifier(), BTreeWriter::checkMonotonicity(), BTreeReader::compareFirstKey(), getKeyDescriptor(), BTreeWriter::insertTupleFromBuffer(), BTreeWriter::lockParentPage(), BTreeReader::searchForKeyTemplate(), and BTreeVerifier::verifyNode().
Accessor for non-leaf nodes.
Definition at line 72 of file BTreeAccessBase.h.
Referenced by BTreeAccessBase(), BTreeWriter::BTreeWriter(), BTreeBuilder::build(), BTreeBuilder::buildBalanced(), getChildForCurrent(), getNodeAccessor(), BTreeNonLeafReader::getNonLeafNodeAccessor(), getNonLeafNodeAccessor(), BTreeNonLeafReader::getTupleAccessorForRead(), BTreeBuilder::growTree(), VariableBuildLevel::indexLastKey(), BTreeWriter::splitCurrentNode(), and BTreeBuildLevel::unmarshalLastKey().
Accessor for leaf nodes.
Definition at line 77 of file BTreeAccessBase.h.
Referenced by BTreeAccessBase(), BTreeWriter::BTreeWriter(), BTreeBuilder::build(), BTreeBuilder::buildBalanced(), BTreeBuilder::buildTwoPass(), BTreeBuilder::createEmptyRoot(), BTreeWriter::deleteLogged(), BTreeReader::endSearch(), getLeafNodeAccessor(), getNodeAccessor(), BTreeReader::getTupleAccessorForRead(), BTreeBuilder::growTree(), BTreeWriter::insertTupleData(), BTreeWriter::insertTupleFromBuffer(), and BTreeBuilder::truncate().
The documentation for this class was generated from the following files:
- /home/pub/open/dev/fennel/btree/BTreeAccessBase.h
- /home/pub/open/dev/fennel/btree/BTreeAccessBase.cpp
- /home/pub/open/dev/fennel/btree/BTreeAccessBaseImpl.h
