#include <LbmRidReader.h>
Inheritance diagram for LbmIterableRidReader:
Public Member Functions | |
bool | hasNext () |
Determines whether there are more rids to be read. | |
LcsRid | peek () |
Peeks at the current rid value without consuming it. | |
void | advance () |
Advances past the current rid value. | |
LcsRid | getNext () |
Gets the current rid value and advances to the next one. | |
Protected Member Functions | |
void | initCommon () |
Common initialization method, called by all other init methods. | |
bool | searchForNextRid () |
Searches for the next rid and buffers it. | |
void | resetState () |
Resets state variables so next call to rid reader will read a new tuple from the input stream. | |
ExecStreamResult | advanceToRid (LcsRid rid) |
Advances input to the next rowid >= rid where rowid corresponds to a set bit in a bitmap segment. | |
ExecStreamResult | readRidAndAdvance (LcsRid &rid) |
Retrieves rid and sets up caller to advance forward to the next set bit in the input for the next call. | |
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. | |
uint | getZeroLengthByteCount (uint8_t segDescByte) |
Get the number of bytes to store the length of zero bytes. | |
LcsRid | getStartRID () |
| |
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. | |
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. | |
Protected Attributes | |
bool | buffered |
True if a rid has been read, but not consumed. | |
LcsRid | bufferedRid |
If a rid has been buffered, this field contains its value. | |
LbmSegmentReader | segmentReader |
Segment reader. | |
bool | firstReadDone |
True if initial read has been completed. | |
uint | curByte |
Unread bits from current byte. | |
LcsRid | curRid |
Position in current bit segment. | |
bool | moveNext |
True if need to move to the next bit. | |
LcsRid | nextRid |
Next rid value that should be 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. | |
static const uint | LbmOneByteSize = 8 |
One byte in the bitmap encodes 8 RIDs. | |
static const uint | LbmOneByteSizeBitShift = 3 |
static const LcsRidPrimitive | LbmOneByteSizeBitMask |
Note that this class does not support the buffer underflow state, EXECRC_BUF_UNDERFLOW. An assertion error will be thrown if the segment reader is initialized with a tuple reader that returns this state.
Definition at line 143 of file LbmRidReader.h.
void LbmIterableRidReader::initCommon | ( | ) | [protected] |
Common initialization method, called by all other init methods.
Reimplemented from LbmRidReaderBase.
Definition at line 187 of file LbmRidReader.cpp.
References buffered, and LbmRidReaderBase::initCommon().
Referenced by LbmTupleRidReader::init().
00188 { 00189 LbmRidReaderBase::initCommon(); 00190 buffered = false; 00191 }
bool LbmIterableRidReader::searchForNextRid | ( | ) | [inline, protected] |
Searches for the next rid and buffers it.
Reimplemented from LbmRidReaderBase.
Definition at line 316 of file LbmRidReader.h.
References buffered, bufferedRid, EXECRC_EOS, EXECRC_YIELD, and LbmRidReaderBase::readRidAndAdvance().
Referenced by hasNext().
00317 { 00318 ExecStreamResult rc = readRidAndAdvance(bufferedRid); 00319 switch (rc) { 00320 case EXECRC_YIELD: 00321 buffered = true; 00322 break; 00323 case EXECRC_EOS: 00324 buffered = false; 00325 break; 00326 default: 00327 permAssert(false); 00328 } 00329 return buffered; 00330 }
bool LbmIterableRidReader::hasNext | ( | ) | [inline] |
Determines whether there are more rids to be read.
Definition at line 332 of file LbmRidReader.h.
References buffered, and searchForNextRid().
Referenced by advance(), LbmSplicerExecStream::getValidatedTuple(), peek(), LbmDeletionIndexReader::searchForRid(), and LbmReaderTest::testSingleTupleReader().
00333 { 00334 if (buffered) { 00335 return true; 00336 } 00337 return searchForNextRid(); 00338 }
LcsRid LbmIterableRidReader::peek | ( | ) | [inline] |
Peeks at the current rid value without consuming it.
An assertion error is thrown if there are no more rids to be read.
Definition at line 340 of file LbmRidReader.h.
References bufferedRid, and hasNext().
Referenced by getNext(), LbmSplicerExecStream::getValidatedTuple(), and LbmReaderTest::testSingleTupleReader().
00341 { 00342 bool valid = hasNext(); 00343 assert(valid); 00344 return bufferedRid; 00345 }
void LbmIterableRidReader::advance | ( | ) | [inline] |
Advances past the current rid value.
As assertion error is thrown if there are no more rids to be read.
Definition at line 347 of file LbmRidReader.h.
References buffered, and hasNext().
Referenced by getNext(), LbmSplicerExecStream::getValidatedTuple(), and LbmReaderTest::testSingleTupleReader().
LcsRid LbmIterableRidReader::getNext | ( | ) | [inline] |
Gets the current rid value and advances to the next one.
An assertion error is thrown if there are not more rids to be read.
Definition at line 354 of file LbmRidReader.h.
References advance(), and peek().
Referenced by LbmSplicerExecStream::getValidatedTuple(), LbmDeletionIndexReader::initRidReader(), LbmDeletionIndexReader::searchForRid(), and LbmReaderTest::testSingleTupleReader().
void LbmRidReaderBase::resetState | ( | ) | [protected, inherited] |
Resets state variables so next call to rid reader will read a new tuple from the input stream.
Definition at line 61 of file LbmRidReader.cpp.
References LbmRidReaderBase::curByte, LbmRidReaderBase::curRid, and LbmRidReaderBase::moveNext.
Referenced by LbmRidReaderBase::initCommon(), and LbmRidReaderBase::searchForNextRid().
00062 { 00063 // set state information so that next call to readRidAndAdvance 00064 // will read "nextRid" 00065 moveNext = false; 00066 curByte = 0; 00067 curRid = LcsRid(7); 00068 }
ExecStreamResult LbmRidReaderBase::advanceToRid | ( | LcsRid | rid | ) | [inherited] |
Advances input to the next rowid >= rid where rowid corresponds to a set bit in a bitmap segment.
rid | desired rid |
Definition at line 124 of file LbmRidReader.cpp.
References LbmRidReaderBase::curByte, LbmRidReaderBase::curRid, EXECRC_YIELD, LbmRidReaderBase::firstReadDone, LbmSegment::LbmOneByteSize, LbmRidReaderBase::moveNext, LbmRidReaderBase::nextRid, opaqueToInt(), LbmSegment::roundToByteBoundary(), and LbmRidReaderBase::searchForNextRid().
00125 { 00126 assert(firstReadDone); 00127 00128 // if we are marked for an advance, then treat this rid 00129 // as at least curRid + 1 00130 if (moveNext) { 00131 if (rid < curRid + 1) { 00132 rid = curRid + 1; 00133 } 00134 moveNext = false; 00135 } 00136 00137 // do we need a new byte? 00138 if (rid >= roundToByteBoundary(curRid) + LbmOneByteSize) { 00139 // mark current byte as invalid, so that call to search 00140 // will read in a new byte with the desired rid 00141 curByte = 0; 00142 nextRid = rid; 00143 00144 // read in the new byte 00145 ExecStreamResult rc = searchForNextRid(); 00146 if (rc != EXECRC_YIELD) { 00147 return rc; 00148 } 00149 } 00150 00151 // first, move forward to current byte in desired rid 00152 if (rid > curRid) { 00153 curByte >>= opaqueToInt(rid - curRid); 00154 curRid = rid; 00155 } 00156 00157 // then, advance to first bit that is set 00158 return searchForNextRid(); 00159 }
ExecStreamResult LbmRidReaderBase::readRidAndAdvance | ( | LcsRid & | rid | ) | [inherited] |
Retrieves rid and sets up caller to advance forward to the next set bit in the input for the next call.
rid | rid value to be retrieved |
Definition at line 161 of file LbmRidReader.cpp.
References LbmRidReaderBase::curRid, EXECRC_YIELD, LbmRidReaderBase::moveNext, and LbmRidReaderBase::searchForNextRid().
Referenced by LcsRowScanExecStream::fillRidRunBuffer(), and searchForNextRid().
00162 { 00163 // advance to position we are supposed to be at, and then keep 00164 // advancing until we hit a set bit 00165 ExecStreamResult rc = searchForNextRid(); 00166 if (rc != EXECRC_YIELD) { 00167 return rc; 00168 } 00169 00170 // set return value 00171 rid = curRid; 00172 00173 // remember to advance the next time this method is called 00174 moveNext = true; 00175 00176 return EXECRC_YIELD; 00177 }
Get value stored in a byte array.
The least significant bytes in the value is stored at the first location in the array.
array | a byte array | |
arraySize | size of the array(number of bytes) |
Definition at line 27 of file LbmSegment.cpp.
References LbmSegment::LbmOneByteSize.
Referenced by LbmEntry::adjustEntry(), LbmEntry::getCompressedRowCount(), and LbmSegment::readSegDescAndAdvance().
00028 { 00029 uint value = 0; 00030 while (arraySize > 0) { 00031 value = value * (uint)(1 << LbmOneByteSize) + array[arraySize - 1]; 00032 arraySize --; 00033 } 00034 return value; 00035 }
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.
value | ||
array | a byte array | |
arraySize | size of the array(number of bytes) |
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 * If value is non-zero, it means that the value cannot be encoded 00051 * within an array of arraySize. Return 0 in that case. 00052 */ 00053 if (value > 0) { 00054 size = 0; 00055 } 00056 00057 return size; 00058 }
Computes the number of bytes required to store a specified number of zero bytes.
nZeroBytes | the number of zero bytes to be stored |
Definition at line 60 of file LbmSegment.cpp.
References LbmSegment::LbmOneByteSize, and LbmSegment::LbmZeroLengthCompact.
Referenced by LbmEntry::addNewAdjacentSegment(), LbmEntry::addNewMiddleSegment(), and LbmSegment::computeSegDescLength().
00061 { 00062 if (nZeroBytes <= LbmZeroLengthCompact) { 00063 return 0; 00064 } 00065 00066 uint size = 0; 00067 while (nZeroBytes > 0) { 00068 nZeroBytes = nZeroBytes >> LbmOneByteSize; 00069 size++; 00070 } 00071 00072 return size; 00073 }
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.
pSegDesc | pointer to segment descriptor | |
bmSegLen | returns length of bitmap segment | |
zeroBytes | returns number of trailing zeros in this 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().
00077 { 00078 // should only be called in the case where the bit segment has 00079 // a descriptor 00080 assert(pSegDesc != NULL); 00081 bmSegLen = (*pSegDesc >> LbmHalfByteSize) + 1; 00082 uint zeroLen = (*pSegDesc & LbmZeroLengthMask); 00083 00084 // advance past the initial length byte 00085 pSegDesc++; 00086 00087 if (zeroLen <= LbmZeroLengthCompact) { 00088 zeroBytes = zeroLen; 00089 } else { 00090 zeroBytes = 00091 byteArray2Value(pSegDesc, zeroLen - LbmZeroLengthCompact); 00092 pSegDesc += zeroLen - LbmZeroLengthCompact; 00093 } 00094 }
Computes the length of the remaining segments in the current bitmap segment, starting at the one specified by the input segment descriptor.
segDesc | segment descriptor of the first segment that we want to start computing the length from |
Definition at line 110 of file LbmSegment.cpp.
References LbmSegment::pSegDescEnd, and LbmSegment::readSegDescAndAdvance().
Referenced by LbmEntry::addNewAdjacentSegment(), and LbmEntry::addNewMiddleSegment().
00111 { 00112 uint segLength = 0; 00113 00114 while (segDesc < pSegDescEnd) { 00115 uint segBytes; 00116 uint zeroBytes; 00117 readSegDescAndAdvance(segDesc, segBytes, zeroBytes); 00118 segLength += segBytes; 00119 } 00120 00121 return segLength; 00122 }
Computes the length of the remaining segment descriptors in the current bitmap segment, starting at the one specified by the input segment descriptor.
segDesc | segment descriptor of the first segment that we want to start computing the length from |
Definition at line 96 of file LbmSegment.cpp.
References LbmSegment::computeSpaceForZeroBytes(), LbmSegment::pSegDescEnd, and LbmSegment::readSegDescAndAdvance().
Referenced by LbmEntry::addNewAdjacentSegment(), and LbmEntry::addNewMiddleSegment().
00097 { 00098 uint segDescLength = 0; 00099 00100 while (segDesc < pSegDescEnd) { 00101 uint segBytes; 00102 uint zeroBytes; 00103 readSegDescAndAdvance(segDesc, segBytes, zeroBytes); 00104 segDescLength += computeSpaceForZeroBytes(zeroBytes) + 1; 00105 } 00106 00107 return segDescLength; 00108 }
uint LbmSegment::countSegments | ( | ) | [protected, inherited] |
Returns the number of segments in an entry.
Definition at line 124 of file LbmSegment.cpp.
References count(), LbmSegment::pSegDescEnd, LbmSegment::pSegDescStart, and LbmSegment::readSegDescAndAdvance().
Referenced by LbmEntry::splitEntry().
00125 { 00126 uint count = 0; 00127 00128 PBuffer segDesc = pSegDescStart; 00129 while (segDesc < pSegDescEnd) { 00130 uint segBytes; 00131 uint zeroBytes; 00132 readSegDescAndAdvance(segDesc, segBytes, zeroBytes); 00133 count++; 00134 } 00135 00136 return count; 00137 }
LcsRid LbmSegment::roundToByteBoundary | ( | LcsRid | rid | ) | [inline, static, inherited] |
Rounds a rid value down to the nearest byte boundary.
rid | value to be rounded |
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().
00242 { 00243 return LcsRid(opaqueToInt(rid) & LbmOneByteSizeBitMask); 00244 }
Sets the length descriptor for a new segment with zero trailing zeros.
segDescByte | byte that will be set with the segment length | |
segLen | length of the segment |
Definition at line 246 of file LbmSegment.h.
References LbmSegment::LbmHalfByteSize, and LbmSegment::LbmMaxSegSize.
Referenced by LbmEntry::addNewMiddleSegment(), LbmEntry::addSegDesc(), LbmSegmentWriter::addSegment(), LbmEntry::closeCurrentSegment(), LbmEntry::openLastSegment(), LbmEntry::openNewSegment(), and LbmEntry::setRIDAdjacentSegByte().
00247 { 00248 if (segLen > LbmMaxSegSize) { 00249 return false; 00250 } 00251 segDescByte = (uint8_t) ((segLen - 1) << LbmHalfByteSize); 00252 return true; 00253 }
Set segment length in an existing descriptor with the new segment length.
Also, leaves the current zero trailing bytes count untouched
segDescByte | segment descriptor byte to be modified | |
segLen | new segment length |
Definition at line 255 of file LbmSegment.h.
References LbmSegment::LbmHalfByteSize, LbmSegment::LbmMaxSegSize, and LbmSegment::LbmSegLengthMask.
Referenced by LbmEntry::addNewAdjacentSegment().
00256 { 00257 if (segLen > LbmMaxSegSize) { 00258 return false; 00259 } 00260 segDescByte &= ~LbmSegLengthMask; 00261 segDescByte |= (uint8_t) ((segLen - 1) << LbmHalfByteSize); 00262 return true; 00263 }
Get the segment length encoded in SegmentDescriptor.
segDescByte | the seg desc byte with segment length encoded. |
Definition at line 265 of file LbmSegment.h.
References LbmSegment::LbmHalfByteSize, and LbmSegment::LbmSegLengthMask.
Referenced by LbmEntry::addNewAdjacentSegment(), LbmEntry::getCompressedRowCount(), and LbmEntry::openLastSegment().
00266 { 00267 return (((segDescByte & LbmSegLengthMask) >> LbmHalfByteSize) + 1); 00268 }
Get the number of bytes to store the length of zero bytes.
segDescByte | the seg desc byte with length of zero bytes encoded. |
Definition at line 270 of file LbmSegment.h.
References LbmSegment::LbmZeroLengthCompact, and LbmSegment::LbmZeroLengthMask.
Referenced by LbmEntry::openLastSegment(), and LbmEntry::splitEntry().
00271 { 00272 uint lengthBytes = segDescByte & LbmZeroLengthMask; 00273 if (lengthBytes > LbmZeroLengthCompact) { 00274 return (lengthBytes - LbmZeroLengthCompact); 00275 } else { 00276 return 0; 00277 } 00278 }
LcsRid LbmSegment::getStartRID | ( | ) | [inline, inherited] |
Definition at line 280 of file LbmSegment.h.
References LbmSegment::startRID.
00281 { 00282 return startRID; 00283 }
bool LbmIterableRidReader::buffered [protected] |
True if a rid has been read, but not consumed.
Definition at line 150 of file LbmRidReader.h.
Referenced by advance(), hasNext(), initCommon(), and searchForNextRid().
LcsRid LbmIterableRidReader::bufferedRid [protected] |
If a rid has been buffered, this field contains its value.
Definition at line 155 of file LbmRidReader.h.
Referenced by peek(), and searchForNextRid().
LbmSegmentReader LbmRidReaderBase::segmentReader [protected, inherited] |
Segment reader.
Definition at line 49 of file LbmRidReader.h.
Referenced by LbmTupleRidReader::init(), LbmRidReader::init(), and LbmRidReaderBase::searchForNextRid().
bool LbmRidReaderBase::firstReadDone [protected, inherited] |
True if initial read has been completed.
Definition at line 54 of file LbmRidReader.h.
Referenced by LbmRidReaderBase::advanceToRid(), LbmRidReaderBase::initCommon(), and LbmRidReaderBase::searchForNextRid().
uint LbmRidReaderBase::curByte [protected, inherited] |
Unread bits from current byte.
Definition at line 59 of file LbmRidReader.h.
Referenced by LbmRidReaderBase::advanceToRid(), LbmRidReaderBase::resetState(), and LbmRidReaderBase::searchForNextRid().
LcsRid LbmRidReaderBase::curRid [protected, inherited] |
Position in current bit segment.
Definition at line 64 of file LbmRidReader.h.
Referenced by LbmRidReaderBase::advanceToRid(), LbmRidReaderBase::readRidAndAdvance(), LbmRidReaderBase::resetState(), and LbmRidReaderBase::searchForNextRid().
bool LbmRidReaderBase::moveNext [protected, inherited] |
True if need to move to the next bit.
Definition at line 69 of file LbmRidReader.h.
Referenced by LbmRidReaderBase::advanceToRid(), LbmRidReaderBase::readRidAndAdvance(), LbmRidReaderBase::resetState(), and LbmRidReaderBase::searchForNextRid().
LcsRid LbmRidReaderBase::nextRid [protected, inherited] |
Next rid value that should be read.
Definition at line 74 of file LbmRidReader.h.
Referenced by LbmRidReaderBase::advanceToRid(), LbmRidReaderBase::initCommon(), and LbmRidReaderBase::searchForNextRid().
LcsRid LbmSegment::startRID [protected, inherited] |
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(), LbmSegmentReaderBase::readBitmapSegTuple(), LbmEntry::setEntryTuple(), LbmEntry::singleton2Bitmap(), LbmEntry::spliceSingleton(), and LbmEntry::splitEntry().
PBuffer LbmSegment::pSegDescStart [protected, inherited] |
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(), LbmSeqSegmentReader::readSegmentAndAdvance(), LbmEntry::setEntryTuple(), LbmEntry::singleton2Bitmap(), LbmEntry::spliceSingleton(), LbmEntry::splitEntry(), and LbmEntry::toString().
PBuffer LbmSegment::pSegDescEnd [protected, inherited] |
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(), LbmSeqSegmentReader::readSegmentAndAdvance(), LbmEntry::setEntryTuple(), LbmEntry::spliceSingleton(), LbmEntry::splitEntry(), and LbmEntry::toString().
PBuffer LbmSegment::pSegStart [protected, inherited] |
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(), LbmSeqSegmentReader::readSegmentAndAdvance(), LbmEntry::setEntryTuple(), LbmEntry::setRIDAdjacentSegByte(), LbmEntry::spliceSingleton(), LbmEntry::splitEntry(), and LbmEntry::toString().
PBuffer LbmSegment::pSegEnd [protected, inherited] |
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().
const uint LbmSegment::LbmHalfByteSize = 4 [static, protected, inherited] |
Use half of a byte to encode the segment length, or the zero bytes length.
Definition at line 60 of file LbmSegment.h.
Referenced by LbmEntry::adjustEntry(), LbmSegment::adjustSegLength(), LbmSegment::getSegLength(), LbmSegment::readSegDescAndAdvance(), and LbmSegment::setSegLength().
const uint8_t LbmSegment::LbmSegLengthMask = 0xf0 [static, protected, inherited] |
The upper 4 bits of Segment Descriptor byte is used to store the length of the corresponding segment.
Definition at line 66 of file LbmSegment.h.
Referenced by LbmSegment::adjustSegLength(), and LbmSegment::getSegLength().
const uint8_t LbmSegment::LbmZeroLengthMask = 0x0f [static, protected, inherited] |
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).
Definition at line 73 of file LbmSegment.h.
Referenced by LbmEntry::addNewAdjacentSegment(), LbmEntry::adjustEntry(), LbmEntry::getCompressedRowCount(), LbmSegment::getZeroLengthByteCount(), LbmSegment::readSegDescAndAdvance(), LbmEntry::setZeroLength(), and LbmEntry::splitEntry().
const uint LbmSegment::LbmZeroLengthCompact = 12 [static, protected, inherited] |
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.
Otherwise, the segment descriptor gives the length of additional bytes(maximumn is 3 bytes) in which the length is stored.
Definition at line 81 of file LbmSegment.h.
Referenced by LbmEntry::adjustEntry(), LbmSegment::computeSpaceForZeroBytes(), LbmEntry::getCompressedRowCount(), LbmSegment::getZeroLengthByteCount(), LbmSegment::readSegDescAndAdvance(), and LbmEntry::setZeroLength().
const uint LbmSegment::LbmZeroLengthExtended [static, protected, inherited] |
Initial value:
Additional bytes(maximumn is 3 bytes) in which the length is stored.It is stored with an offset of LbmZeroLengthCompact. LbmZeroLengthExtended = (uint)LbmZeroLengthMask - LbmZeroLengthCompact.
Definition at line 88 of file LbmSegment.h.
Referenced by LbmEntry::getScratchBufferSize(), LbmEntry::init(), and LbmEntry::setZeroLength().
const uint LbmSegment::LbmMaxSegSize = 16 [static, protected, inherited] |
Maximum size(in bytes) for a bitmap segment.
This size is limited by the number of bits(=4 bits) in SegDesc to describe the segment length.
Definition at line 95 of file LbmSegment.h.
Referenced by LbmEntry::addSegDesc(), LbmSegment::adjustSegLength(), LbmEntry::closeCurrentSegment(), LbmEntry::getMaxBitmapSize(), LbmEntry::getMergeSpaceRequired(), LbmEntry::setRIDAdjacentSegByte(), and LbmSegment::setSegLength().
const uint LbmSegment::LbmOneByteSize = 8 [static, inherited] |
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().
const uint LbmSegment::LbmOneByteSizeBitShift = 3 [static, inherited] |
Definition at line 236 of file LbmSegment.h.
Referenced by byteNumberToRid(), and ridToByteNumber().
const LcsRidPrimitive LbmSegment::LbmOneByteSizeBitMask [static, inherited] |
Initial value:
0xfffffffffffffff8ULL
Definition at line 237 of file LbmSegment.h.
Referenced by LbmSegment::roundToByteBoundary().