Fennel: LbmSeqSegmentReader Class Reference (original) (raw)
LbmSeqSegmentReader provides the interace necessary to read byte segments sequentially. More...
#include <[LbmSeqSegmentReader.h](LbmSeqSegmentReader%5F8h-source.html)>
Inheritance diagram for LbmSeqSegmentReader:

| Public Member Functions | |
|---|---|
| void | init (SharedExecStreamBufAccessor &pInAccessorInit, TupleData &bitmapSegTupleInit) |
| Initializes reader to start reading byte segments from a specified input stream. | |
| ExecStreamResult | readSegmentAndAdvance (LbmByteNumber &byteNum, PBuffer &byteSeg, uint &len) |
| Reads the current byte segment, based on current position and advances forward to the next segment. | |
| LcsRid | getSrid () |
| Returns the start rid of the current tuple. | |
| 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 (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. |
Detailed Description
LbmSeqSegmentReader provides the interace necessary to read byte segments sequentially.
Only segments that contain set bit values are returned to the caller.
Version:
Id
//open/dev/fennel/lucidera/bitmap/LbmSeqSegmentReader.h#7
Definition at line 39 of file LbmSeqSegmentReader.h.
Member Function Documentation
Reads the current byte segment, based on current position and advances forward to the next segment.
Parameters:
| byteNum | returns byte number corresponding to the start of the current byte segment |
|---|---|
| byteSeg | returns current byte segment; note that the segment read is stored backwards, so the caller needs to read from right to left starting at byteSeg |
| len | returns length of current byte segment |
Definition at line 35 of file LbmSeqSegmentReader.cpp.
References LbmSegmentReaderBase::advanceSegment(), LbmSegmentReaderBase::byteSegLen, LbmSegmentReaderBase::byteSegOffset, EXECRC_YIELD, LbmSegment::pSegDescEnd, LbmSegment::pSegDescStart, LbmSegment::pSegStart, and LbmSegmentReaderBase::readBitmapSegTuple().
Referenced by LbmMinusExecStream::readMinuendInput(), LbmUnionExecStream::readSegment(), LbmNormalizerExecStream::readSegment(), and LbmChopperExecStream::readSegment().
| LcsRid LbmSeqSegmentReader::getSrid | ( | | ) | | ----------------------------------- | - | | - |
| void LbmSegmentReaderBase::init | ( | SharedExecStreamBufAccessor & | pInAccessorInit, |
|---|---|---|---|
| TupleData & | bitmapSegTupleInit, | ||
| bool | setBitmapInit, | ||
| boost::dynamic_bitset<> * | pBitmapInit | ||
| ) | [protected, inherited] |
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 LbmSegmentReaderBase::init().
00054 { 00055 init(pTupleReaderInit, bitmapSegTuple, false, NULL); 00056 }
| void LbmSegmentReaderBase::init | ( | SharedLbmTupleReader & | pTupleReaderInit, |
|---|---|---|---|
| TupleData & | bitmapSegTupleInit, | ||
| bool | setBitmapInit, | ||
| boost::dynamic_bitset<> * | pBitmapInit | ||
| ) | [protected, inherited] |
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 LbmSegmentReaderBase::byteSegLen, LbmSegmentReaderBase::byteSegOffset, LbmSegmentReaderBase::iSegmentDesc, LbmSegmentReaderBase::iSegments, LbmSegmentReaderBase::iSrid, LbmSegmentReaderBase::maxRidSet, LbmSegmentReaderBase::pBitmap, LbmSegmentReaderBase::pBitmapSegTuple, LbmSegment::pSegDescEnd, LbmSegment::pSegDescStart, LbmSegment::pSegStart, LbmSegmentReaderBase::pTupleReader, LbmSegmentReaderBase::setBitmap, LbmSegmentReaderBase::tupleChange, and LbmSegmentReaderBase::zeroBytes.
| ExecStreamResult LbmSegmentReaderBase::readBitmapSegTuple | ( | | ) | [protected, inherited] | | ---------------------------------------------------------------------------------------------------------------------- | - | | - | ------------------------ |
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 LbmSegmentReaderBase::byteSegLen, LbmSegmentReaderBase::byteSegOffset, EXECRC_YIELD, LbmSegmentReaderBase::iSegmentDesc, LbmSegmentReaderBase::iSegments, LbmSegmentReaderBase::iSrid, LbmSegment::LbmOneByteSize, LbmSegmentReaderBase::maxRidSet, opaqueToInt(), LbmSegmentReaderBase::pBitmap, LbmSegmentReaderBase::pBitmapSegTuple, LbmSegment::pSegDescEnd, LbmSegment::pSegDescStart, LbmSegment::pSegStart, LbmSegmentReaderBase::pTupleReader, ridToByteNumber(), LbmSegmentReaderBase::setBitmap, LbmSegmentReaderBase::setBitsRead(), LbmSegmentReaderBase::singleton, LbmSegment::startRID, LbmSegmentReaderBase::tupleChange, and LbmSegmentReaderBase::zeroBytes.
Referenced by LbmSegmentReader::readSegment(), and readSegmentAndAdvance().
| void LbmSegmentReaderBase::advanceSegment | ( | | ) | [protected, inherited] | | ----------------------------------------- | - | | - | ------------------------ |
| bool LbmSegmentReaderBase::getTupleChange | ( | | ) | [inherited] | | ----------------------------------------- | - | | - | ------------- |
| void LbmSegmentReaderBase::resetChangeListener | ( | | ) | [inherited] | | ---------------------------------------------- | - | | - | ------------- |
| LcsRid LbmSegmentReaderBase::getMaxRidSet | ( | | ) | [inherited] | | ----------------------------------------- | - | | - | ------------- |
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 LbmSegmentReaderBase::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 LbmSegmentReaderBase::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(), getSrid(), LbmSegment::getStartRID(), LbmEntry::growEntry(), LbmEntry::inRange(), LbmEntry::mergeEntry(), LbmEntry::mergeIntoSplitEntry(), LbmEntry::openLastSegment(), LbmEntry::produceEntryTuple(), LbmSegmentReaderBase::readBitmapSegTuple(), LbmEntry::setEntryTuple(), LbmEntry::singleton2Bitmap(), LbmEntry::spliceSingleton(), and LbmEntry::splitEntry().
Increment forward from pSegDescStart.
Definition at line 47 of file LbmSegment.h.
Referenced by LbmSegmentReaderBase::advanceSegment(), LbmSegmentReader::advanceToByte(), LbmEntry::containsRid(), LbmSegment::countSegments(), LbmEntry::getRowCount(), LbmSegmentReaderBase::init(), LbmEntry::isSingleBitmap(), LbmEntry::LbmEntry(), LbmEntry::mergeIntoSplitEntry(), LbmEntry::produceEntryTuple(), LbmSegmentReaderBase::readBitmapSegTuple(), LbmSegmentReader::readSegment(), 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(), LbmSegmentReaderBase::init(), LbmEntry::mergeEntry(), LbmEntry::mergeIntoSplitEntry(), LbmEntry::openLastSegment(), LbmEntry::openNewSegment(), LbmEntry::produceEntryTuple(), LbmSegmentReaderBase::readBitmapSegTuple(), 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(), LbmSegmentReaderBase::advanceSegment(), LbmSegmentReader::advanceToByte(), LbmEntry::containsRid(), LbmSegmentReaderBase::init(), LbmEntry::isSingleton(), LbmEntry::LbmEntry(), LbmEntry::mergeEntry(), LbmEntry::mergeIntoSplitEntry(), LbmEntry::openNewSegment(), LbmEntry::produceEntryTuple(), LbmSegmentReaderBase::readBitmapSegTuple(), LbmSegmentReader::readCurrentByteSegment(), 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(), LbmSegmentReaderBase::readBitmapSegTuple(), LbmSplicerExecStream::ridOverlaps(), LbmRidReaderBase::searchForNextRid(), LbmEntry::segmentContainsRid(), LbmSegmentReaderBase::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/LbmSeqSegmentReader.h
- /home/pub/open/dev/fennel/lucidera/bitmap/LbmSeqSegmentReader.cpp
