int Appender::resetMask() { emptyMask(); addMask(COMLOG_FATAL); addMask(COMLOG_WARNING); addMask(COMLOG_NOTICE); addMask(COMLOG_TRACE); addMask(COMLOG_DEBUG); return 0; }
ConstRLEChunk const& ScanRLEArrayIterator::getRQChunk() { Address addr(_desc->getId(), _attId, getPosition()); ifstream in; chunkId chunkDesc; chunkFileInfo payloadFileInfo; chunkDesc.first = _attId; chunkDesc.second = _chunkNo; payloadFileInfo = _chunkFileData[chunkDesc]; size_t payloadOffset = payloadFileInfo.first; size_t payloadSize = payloadFileInfo.second; vector<char> data (payloadSize, 0); _chunkFile.seekg(payloadOffset, ios_base::beg); _chunkFile.read(&data[0], payloadSize); TypeId type = _desc->getAttributes()[_attId].getType(); uint16_t compressionMethod = _desc->getAttributes()[_attId].getDefaultCompressionMethod(); _chunk.initialize(_desc, addr, compressionMethod); if (_desc->getEmptyBitmapAttribute() && _attId == _desc->getEmptyBitmapAttribute()->getId()) { //bitmask chunk ConstRLEEmptyBitmap emptyMask(&data[0]); //inefficient double copy shared_ptr<RLEEmptyBitmap> em(new RLEEmptyBitmap(emptyMask)); _chunk.setMask(em); } else { //data chunk //another inefficient double copy ConstRLEPayload payload(&data[0]); _chunk.setPayload(payload); //now we still need to find bitmask and attach it to chunk if (_desc->getEmptyBitmapAttribute()) { ifstream bmin; ostringstream bmPath; chunkId bmId; chunkFileInfo bmFile; bmId.first = _desc->getEmptyBitmapAttribute()->getId(); bmId.second = _chunkNo; bmFile = _chunkFileData[bmId]; size_t bitmaskSize = bmFile.second; size_t fileOffset = bmFile.first; vector<char> bmData(bitmaskSize,0); _chunkFile.seekg(fileOffset, ios_base::beg); _chunkFile.read(&bmData[0], bitmaskSize); //another inefficient double copy ConstRLEEmptyBitmap emptyMask(&bmData[0]); shared_ptr<RLEEmptyBitmap> em(new RLEEmptyBitmap(emptyMask)); _chunk.setMask(em); } else //no bitmask? create one that looks like "111111111111111" { size_t nBits = _chunk.getNumberOfElements(true); shared_ptr<RLEEmptyBitmap> em(new RLEEmptyBitmap(nBits)); _chunk.setMask(em); } } return _chunk; }