OrderedTupleIdSequence* TupleStorageSubBlock::getExistenceList() const { const tuple_id max_tid = getMaxTupleID(); OrderedTupleIdSequence *existence_list = new OrderedTupleIdSequence(); existence_list->reserve(numTuples()); if (isPacked()) { for (tuple_id tid = 0; tid <= max_tid; ++tid) { existence_list->emplace_back(tid); } } else { for (tuple_id tid = 0; tid <= max_tid; ++tid) { if (hasTupleWithID(tid)) { existence_list->emplace_back(tid); } } } return existence_list; }
Client(boost::asio::io_service& service , boost::asio::io_service::strand& ioStrand , unsigned sf , unsigned numClients , unsigned clientId , bool analytical , unsigned numOps , unsigned oltpWaitTime , double insertProb , double deleteProb , double updateProb , bool onlyQ1) : mSocket(service) , mIOStrand(ioStrand) , mClient(mSocket) , mSf(sf) , mNumTuples(numTuples(sf)) , mStartTime(Clock::now()) , mRnd(randomSeed()) , mDist(0, analytical ? 2 : 3) , mAnalytical(analytical) , mNumClients(numClients) , mClientId(clientId) , mOLTPWaitTime(oltpWaitTime) , mOnlyQ1(onlyQ1) { mBatchOp.numOps = numOps; mBatchOp.insertProb = insertProb; mBatchOp.deleteProb = deleteProb; mBatchOp.updateProb = updateProb; mBatchOp.clientId = mClientId; mBatchOp.numClients = mNumClients; mBatchOp.baseInsertKey = calcBaseInsertKey(sf, numClients, clientId); mBatchOp.baseDeleteKey = clientId; assert(mAnalytical || (mBatchOp.baseInsertKey > mBatchOp.baseDeleteKey && mBatchOp.baseInsertKey >= numTuples(mSf) - mNumClients)); }