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;
}
Ejemplo n.º 2
0
 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));
 }