Fennel: LbmSegmentReaderBase Class Reference (original) (raw)
LbmSegmentReaderBase provides the base class for reading from bitmap segments. More...
#include <[LbmSegmentReaderBase.h](LbmSegmentReaderBase%5F8h-source.html)>
Inheritance diagram for LbmSegmentReaderBase:

| Public Member Functions | |
|---|---|
| bool | getTupleChange () |
| Reports whether a new tuple was read. | |
| void | resetChangeListener () |
| Resets the tuple change attribute to false. | |
| LcsRid | getMaxRidSet () |
| Retrieves the maximum rid that has been read by this reader since it was initialized, provided the reader has been set to keep track of rids read. | |
| uint | getZeroLengthByteCount (uint8_t segDescByte) |
| Get the number of bytes to store the length of zero bytes. | |
| LcsRid | getStartRID () |
| **Returns:**startRID of this bitmap segment | |
| Static Public Member Functions | |
| static LcsRid | roundToByteBoundary (LcsRid rid) |
| Rounds a rid value down to the nearest byte boundary. | |
| static bool | setSegLength (uint8_t &segDescByte, uint segLen) |
| Sets the length descriptor for a new segment with zero trailing zeros. | |
| static bool | adjustSegLength (uint8_t &segDescByte, uint segLen) |
| Set segment length in an existing descriptor with the new segment length. | |
| static uint | getSegLength (uint8_t segDescByte) |
| Get the segment length encoded in SegmentDescriptor. | |
| Static Public Attributes | |
| static const uint | LbmOneByteSize = 8 |
| One byte in the bitmap encodes 8 RIDs. | |
| static const uint | LbmOneByteSizeBitShift = 3 |
| static const LcsRidPrimitive | LbmOneByteSizeBitMask |
| Protected Member Functions | |
| void | init (SharedExecStreamBufAccessor &pInAccessorInit, TupleData &bitmapSegTupleInit, bool setBitmapInit, boost::dynamic_bitset<> *pBitmapInit) |
| Initializes reader to start reading bit segments from a specified input stream, optionally keeping track of the bits read. | |
| void | init (SharedExecStreamBufAccessor &pInAccessorInit, TupleData &bitmapSegTupleInit) |
| Initializes reader to start reading bit segments from a specified input stream. | |
| void | init (SharedLbmTupleReader &pTupleReaderInit, TupleData &bitmapSegTupleInit) |
| Initializes reader to start reading bit segments from a specified tuple reader. | |
| void | init (SharedLbmTupleReader &pTupleReaderInit, TupleData &bitmapSegTupleInit, bool setBitmapInit, boost::dynamic_bitset<> *pBitmapInit) |
| Initializes reader to start reading bit segments from a specified tuple reader, optionally keeping track of the bits read. | |
| ExecStreamResult | readBitmapSegTuple () |
| Reads a bitmap segment tuple from the input stream and extracts the starting rid, the descriptor, and bitmap fields. | |
| void | advanceSegment () |
| Advances byte segment offset and segment descriptor pointers to the next segment in a bitmap segment. | |
| uint | computeSpaceForZeroBytes (uint nZeroBytes) |
| Computes the number of bytes required to store a specified number of zero bytes. | |
| uint | computeSegLength (PBuffer segDesc) |
| Computes the length of the remaining segments in the current bitmap segment, starting at the one specified by the input segment descriptor. | |
| uint | computeSegDescLength (PBuffer segDesc) |
| Computes the length of the remaining segment descriptors in the current bitmap segment, starting at the one specified by the input segment descriptor. | |
| uint | countSegments () |
| Returns the number of segments in an entry. | |
| Static Protected Member Functions | |
| static uint | byteArray2Value (PBuffer array, uint arraySize) |
| Get value stored in a byte array. | |
| static uint | value2ByteArray (uint value, PBuffer array, uint arraySize) |
| Store value in a byte array. | |
| static void | readSegDescAndAdvance (PBuffer &pSegDesc, uint &bmSegLen, uint &zeroBytes) |
| Decodes the lengths stored in the descriptor for a segment, based on where the segment descriptor is currently pointing, and advances the segment descriptor to the next descriptor. | |
| Protected Attributes | |
| SharedLbmTupleReader | pTupleReader |
| Input tuple reader. | |
| uint | byteSegLen |
| Length of the current byte segment. | |
| LbmByteNumber | byteSegOffset |
| Byte offset representing current position in segment. | |
| TupleData * | pBitmapSegTuple |
| Pointer to tuple data containing input bitmap segment. | |
| uint | iSrid |
| Index of the bitmap columns. | |
| uint | iSegmentDesc |
| uint | iSegments |
| uint | zeroBytes |
| Number of trailing zero bytes in the current segment. | |
| uint8_t | singleton |
| Used to construct singleton bitmap. | |
| bool | tupleChange |
| Detects when a new tuple is read. | |
| LcsRid | startRID |
| Starting rid in the bitmap segment (if singleton, startRID == RID column in entryTuple). | |
| PBuffer | pSegDescStart |
| Increment forward from pSegDescStart. | |
| PBuffer | pSegDescEnd |
| PBuffer | pSegStart |
| Decrement backward from pSegStart. | |
| PBuffer | pSegEnd |
| Static Protected Attributes | |
| static const uint | LbmHalfByteSize = 4 |
| Use half of a byte to encode the segment length, or the zero bytes length. | |
| static const uint8_t | LbmSegLengthMask = 0xf0 |
| The upper 4 bits of Segment Descriptor byte is used to store the length of the corresponding segment. | |
| static const uint8_t | LbmZeroLengthMask = 0x0f |
| The lower 4 bits of Segment Descriptor byte is used to store the length of the "gap" following the corresponding segment(till the next segment or the next LbmEntry). | |
| static const uint | LbmZeroLengthCompact = 12 |
| If the length of zero bytes(a byte composed of 8 bits of 0s) is less than 12, the length can be stored within the segment descriptor. | |
| static const uint | LbmZeroLengthExtended |
| Additional bytes(maximumn is 3 bytes) in which the length is stored. | |
| static const uint | LbmMaxSegSize = 16 |
| Maximum size(in bytes) for a bitmap segment. | |
| Private Member Functions | |
| void | setBitsRead (LcsRid startRid, PBuffer segStart, uint segLen) |
| Sets bits in a bitmap for all bits read from the segment, provided the reader has been set to keep track of bits. | |
| Private Attributes | |
| bool | setBitmap |
| If true, keep track of bits read. | |
| boost::dynamic_bitset * | pBitmap |
| Pointer to a bitmap that keeps track of the bits read. | |
| LcsRid | maxRidSet |
| If the reader is set to keep track of bits read, then this field is the maximum rid read since it was initialized. |
Detailed Description
LbmSegmentReaderBase provides the base class for reading from bitmap segments.
Version:
Id
//open/dev/fennel/lucidera/bitmap/LbmSegmentReaderBase.h#11
Definition at line 40 of file LbmSegmentReaderBase.h.
Member Function Documentation
| void LbmSegmentReaderBase::init | ( | SharedExecStreamBufAccessor & | pInAccessorInit, |
|---|---|---|---|
| TupleData & | bitmapSegTupleInit, | ||
| bool | setBitmapInit, | ||
| boost::dynamic_bitset<> * | pBitmapInit | ||
| ) | [protected] |
Initializes reader to start reading bit segments from a specified tuple reader.
Parameters:
| pTupleReaderInit | input tuple reader |
|---|---|
| bitmapSegTupleInit | tuple data for reading segments |
Reimplemented in LbmSegmentReader.
Definition at line 51 of file LbmSegmentReaderBase.cpp.
References init().
00054 { 00055 init(pTupleReaderInit, bitmapSegTuple, false, NULL); 00056 }
| void LbmSegmentReaderBase::init | ( | SharedLbmTupleReader & | pTupleReaderInit, |
|---|---|---|---|
| TupleData & | bitmapSegTupleInit, | ||
| bool | setBitmapInit, | ||
| boost::dynamic_bitset<> * | pBitmapInit | ||
| ) | [protected] |
Initializes reader to start reading bit segments from a specified tuple reader, optionally keeping track of the bits read.
Parameters:
| pTupleReaderInit | input tuple reader |
|---|---|
| bitmapSegTupleInit | tuple data for reading segments |
| setBitmapInit | if true, keep track of bits read |
| pBitmapInit | pointer to the bitmap to be set if the setBitmapInit parameter is true |
Reimplemented in LbmSegmentReader.
Definition at line 58 of file LbmSegmentReaderBase.cpp.
References byteSegLen, byteSegOffset, iSegmentDesc, iSegments, iSrid, maxRidSet, pBitmap, pBitmapSegTuple, LbmSegment::pSegDescEnd, LbmSegment::pSegDescStart, LbmSegment::pSegStart, pTupleReader, setBitmap, tupleChange, and zeroBytes.
Reads a bitmap segment tuple from the input stream and extracts the starting rid, the descriptor, and bitmap fields.
Returns:
EXECRC_YIELD if read was successful
Definition at line 81 of file LbmSegmentReaderBase.cpp.
References byteSegLen, byteSegOffset, EXECRC_YIELD, iSegmentDesc, iSegments, iSrid, LbmSegment::LbmOneByteSize, maxRidSet, opaqueToInt(), pBitmap, pBitmapSegTuple, LbmSegment::pSegDescEnd, LbmSegment::pSegDescStart, LbmSegment::pSegStart, pTupleReader, ridToByteNumber(), setBitmap, setBitsRead(), singleton, LbmSegment::startRID, tupleChange, and zeroBytes.
Referenced by LbmSegmentReader::readSegment(), and LbmSeqSegmentReader::readSegmentAndAdvance().
| void LbmSegmentReaderBase::advanceSegment | ( | | ) | [protected] | | ----------------------------------------- | - | | - | ------------- |
| void LbmSegmentReaderBase::setBitsRead | ( | LcsRid | startRid, |
|---|---|---|---|
| PBuffer | segStart, | ||
| uint | segLen | ||
| ) | [private] |
| bool LbmSegmentReaderBase::getTupleChange | ( | | ) | | ----------------------------------------- | - | | - |
| void LbmSegmentReaderBase::resetChangeListener | ( | | ) | | ---------------------------------------------- | - | | - |
| LcsRid LbmSegmentReaderBase::getMaxRidSet | ( | | ) | | ----------------------------------------- | - | | - |
Retrieves the maximum rid that has been read by this reader since it was initialized, provided the reader has been set to keep track of rids read.
Returns:
max rid read; 0 if the reader is not keeping track of rids read
Definition at line 187 of file LbmSegmentReaderBase.cpp.
References maxRidSet.
| uint LbmSegment::byteArray2Value | ( | PBuffer | array, |
|---|---|---|---|
| uint | arraySize | ||
| ) | [static, protected, inherited] |
| uint LbmSegment::value2ByteArray | ( | uint | value, |
|---|---|---|---|
| PBuffer | array, | ||
| uint | arraySize | ||
| ) | [static, protected, inherited] |
Store value in a byte array.
The least significant bytes in the value is stored at the first location in the array.
Parameters:
| value | |
|---|---|
| array | a byte array |
| arraySize | size of the array(number of bytes) |
Returns:
number of bytes used to store the value; 0 if the value requires more than arraySize bytes to store.
Definition at line 38 of file LbmSegment.cpp.
References LbmSegment::LbmOneByteSize.
Referenced by LbmEntry::setZeroLength().
00039 {
00040 assert(value != 0);
00041
00042 uint size = 0;
00043
00044 while (value > 0 && size < arraySize) {
00045 array[size] = (uint8_t)(value & 0xff);
00046 value = value >> LbmOneByteSize;
00047 size ++;
00048 }
00049
00050
00051
00052
00053 if (value > 0) {
00054 size = 0;
00055 }
00056
00057 return size;
00058 }
| uint LbmSegment::computeSpaceForZeroBytes | ( | uint | nZeroBytes | ) | [protected, inherited] |
|---|
| void LbmSegment::readSegDescAndAdvance | ( | PBuffer & | pSegDesc, |
|---|---|---|---|
| uint & | bmSegLen, | ||
| uint & | zeroBytes | ||
| ) | [static, protected, inherited] |
Decodes the lengths stored in the descriptor for a segment, based on where the segment descriptor is currently pointing, and advances the segment descriptor to the next descriptor.
Parameters:
| pSegDesc | pointer to segment descriptor |
|---|---|
| bmSegLen | returns length of bitmap segment |
| zeroBytes | returns number of trailing zeros in this segment |
segment
Definition at line 75 of file LbmSegment.cpp.
References LbmSegment::byteArray2Value(), LbmSegment::LbmHalfByteSize, LbmSegment::LbmZeroLengthCompact, and LbmSegment::LbmZeroLengthMask.
Referenced by advanceSegment(), LbmSegment::computeSegDescLength(), LbmSegment::computeSegLength(), LbmEntry::containsRid(), LbmSegment::countSegments(), LbmEntry::dumpSeg(), LbmEntry::dumpSegRID(), LbmEntry::generateSegRIDs(), LbmEntry::spliceSingleton(), and LbmEntry::splitEntry().
| uint LbmSegment::computeSegLength | ( | PBuffer | segDesc | ) | [protected, inherited] |
|---|
| uint LbmSegment::computeSegDescLength | ( | PBuffer | segDesc | ) | [protected, inherited] |
|---|
| uint LbmSegment::countSegments | ( | | ) | [protected, inherited] | | ------------------------------------------------------------------------------------------- | - | | - | ------------------------ |
| LcsRid LbmSegment::roundToByteBoundary | ( | LcsRid | rid | ) | [inline, static, inherited] |
|---|
Rounds a rid value down to the nearest byte boundary.
Parameters:
Returns:
rounded rid value
Definition at line 241 of file LbmSegment.h.
References LbmSegment::LbmOneByteSizeBitMask, and opaqueToInt().
Referenced by LbmRidReaderBase::advanceToRid(), LbmEntry::closeCurrentSegment(), LbmEntryTest::compareExpected(), LbmSplicerExecStream::findBetterEntry(), LbmSplicerExecStream::findBTreeEntry(), LbmEntry::mergeEntry(), LbmEntry::openNewSegment(), LbmSplicerExecStream::ridOverlaps(), LbmRidReaderBase::searchForNextRid(), LbmEntry::setRIDAdjacentSegByte(), LbmEntry::singleton2Bitmap(), LbmEntryTest::testldb35(), and LbmEntryTest::testZeroBytes().
| bool LbmSegment::setSegLength | ( | uint8_t & | segDescByte, |
|---|---|---|---|
| uint | segLen | ||
| ) | [inline, static, inherited] |
| bool LbmSegment::adjustSegLength | ( | uint8_t & | segDescByte, |
|---|---|---|---|
| uint | segLen | ||
| ) | [inline, static, inherited] |
| uint LbmSegment::getSegLength | ( | uint8_t | segDescByte | ) | [inline, static, inherited] |
|---|
| uint LbmSegment::getZeroLengthByteCount | ( | uint8_t | segDescByte | ) | [inline, inherited] |
|---|
| LcsRid LbmSegment::getStartRID | ( | | ) | [inline, inherited] | | ------------------------------ | - | | - | --------------------- |
Member Data Documentation
Starting rid in the bitmap segment (if singleton, startRID == RID column in entryTuple).
Definition at line 42 of file LbmSegment.h.
Referenced by LbmEntry::adjustEntry(), LbmEntry::containsRid(), LbmSeqSegmentReader::getSrid(), LbmSegment::getStartRID(), LbmEntry::growEntry(), LbmEntry::inRange(), LbmEntry::mergeEntry(), LbmEntry::mergeIntoSplitEntry(), LbmEntry::openLastSegment(), LbmEntry::produceEntryTuple(), readBitmapSegTuple(), LbmEntry::setEntryTuple(), LbmEntry::singleton2Bitmap(), LbmEntry::spliceSingleton(), and LbmEntry::splitEntry().
Increment forward from pSegDescStart.
Definition at line 47 of file LbmSegment.h.
Referenced by advanceSegment(), LbmSegmentReader::advanceToByte(), LbmEntry::containsRid(), LbmSegment::countSegments(), LbmEntry::getRowCount(), init(), LbmEntry::isSingleBitmap(), LbmEntry::LbmEntry(), LbmEntry::mergeIntoSplitEntry(), LbmEntry::produceEntryTuple(), readBitmapSegTuple(), LbmSegmentReader::readSegment(), LbmSeqSegmentReader::readSegmentAndAdvance(), LbmEntry::setEntryTuple(), LbmEntry::singleton2Bitmap(), LbmEntry::spliceSingleton(), LbmEntry::splitEntry(), and LbmEntry::toString().
Definition at line 48 of file LbmSegment.h.
Referenced by LbmEntry::addNewAdjacentSegment(), LbmEntry::addNewMiddleSegment(), LbmEntry::addSegDesc(), LbmSegmentReader::advanceToByte(), LbmEntry::closeCurrentSegment(), LbmSegment::computeSegDescLength(), LbmSegment::computeSegLength(), LbmEntry::containsRid(), LbmEntry::copyToMergeBuffer(), LbmSegment::countSegments(), LbmEntry::getRowCount(), init(), LbmEntry::mergeEntry(), LbmEntry::mergeIntoSplitEntry(), LbmEntry::openLastSegment(), LbmEntry::openNewSegment(), LbmEntry::produceEntryTuple(), readBitmapSegTuple(), LbmSeqSegmentReader::readSegmentAndAdvance(), LbmEntry::setEntryTuple(), LbmEntry::spliceSingleton(), LbmEntry::splitEntry(), and LbmEntry::toString().
Decrement backward from pSegStart.
Definition at line 53 of file LbmSegment.h.
Referenced by LbmEntry::adjustEntry(), advanceSegment(), LbmSegmentReader::advanceToByte(), LbmEntry::containsRid(), init(), LbmEntry::isSingleton(), LbmEntry::LbmEntry(), LbmEntry::mergeEntry(), LbmEntry::mergeIntoSplitEntry(), LbmEntry::openNewSegment(), LbmEntry::produceEntryTuple(), readBitmapSegTuple(), LbmSegmentReader::readCurrentByteSegment(), LbmSeqSegmentReader::readSegmentAndAdvance(), LbmEntry::setEntryTuple(), LbmEntry::setRIDAdjacentSegByte(), LbmEntry::spliceSingleton(), LbmEntry::splitEntry(), and LbmEntry::toString().
Definition at line 54 of file LbmSegment.h.
Referenced by LbmEntry::addNewRid(), LbmEntry::adjustEntry(), LbmEntry::containsRid(), LbmEntry::copyToMergeBuffer(), LbmEntry::isSingleton(), LbmEntry::mergeEntry(), LbmEntry::mergeIntoSplitEntry(), LbmEntry::openLastSegment(), LbmEntry::openNewSegment(), LbmEntry::produceEntryTuple(), LbmEntry::setEntryTuple(), LbmEntry::setRIDAdjacentSegByte(), LbmEntry::splitEntry(), and LbmEntry::toString().
One byte in the bitmap encodes 8 RIDs.
Definition at line 235 of file LbmSegment.h.
Referenced by LbmEntry::addNewAdjacentSegment(), LbmEntry::addNewMiddleSegment(), LbmEntry::addNewRid(), LbmEntry::addNewSegment(), LbmSegmentWriter::addSegment(), LbmEntry::adjustEntry(), LbmRidReaderBase::advanceToRid(), LbmSegment::byteArray2Value(), LbmMinusExecStream::canSkipMinus(), LbmEntry::closeCurrentSegment(), LbmUnionExecStream::computeRidLimit(), LbmSegment::computeSpaceForZeroBytes(), LbmEntry::containsRid(), LbmEntry::dumpSegRID(), LbmMinusExecStream::execute(), LbmSplicerExecStream::findBetterEntry(), LbmEntryTest::generateBitmaps(), LbmEntryTest::generateCompressedBitmaps(), LbmEntry::generateSegRIDs(), LbmEntryTest::generateSingleBitmaps(), LbmEntry::getCompressedRowCount(), LbmEntry::getRowCount(), LbmIntersectExecStream::intersectSegments(), LbmMinusExecStream::minusSegments(), LbmEntry::openLastSegment(), readBitmapSegTuple(), LbmSplicerExecStream::ridOverlaps(), LbmRidReaderBase::searchForNextRid(), LbmEntry::segmentContainsRid(), setBitsRead(), LbmEntry::setEntryTuple(), LbmEntry::setRID(), LbmEntry::setRIDAdjacentSegByte(), LbmEntry::setRIDSegByte(), LbmEntry::spliceSingleton(), LbmEntry::splitEntry(), LbmEntryTest::testldb35(), LbmEntryTest::testler5920(), LbmEntryTest::testZeroBytes(), and LbmSegment::value2ByteArray().
The documentation for this class was generated from the following files:
- /home/pub/open/dev/fennel/lucidera/bitmap/LbmSegmentReaderBase.h
- /home/pub/open/dev/fennel/lucidera/bitmap/LbmSegmentReaderBase.cpp
