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:

List of all members.

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:


Generated on Mon Jun 22 04:00:25 2009 for Fennel by doxygen 1.5.1