protected void doTransactionRead()

in core/src/main/java/site/ycsb/workloads/TimeSeriesWorkload.java [736:784]


  protected void doTransactionRead(final DB db, Object threadstate) {
    final ThreadState state = (ThreadState) threadstate;
    final String keyname = keys[keychooser.nextValue().intValue()];
    final Random random = ThreadLocalRandom.current();
    int offsets = state.queryOffsetGenerator.nextValue().intValue();
    //int offsets = random.nextInt(maxOffsets - 1);
    final long startTimestamp;
    if (offsets > 0) {
      startTimestamp = state.startTimestamp + state.timestampGenerator.getOffset(offsets);
    } else {
      startTimestamp = state.startTimestamp;
    }
    
    // rando tags
    Set<String> fields = new HashSet<String>();
    for (int i = 0; i < tagPairs; ++i) {
      if (groupBy && groupBys[i]) {
        fields.add(tagKeys[i]);
      } else {
        fields.add(tagKeys[i] + tagPairDelimiter + 
            tagValues[random.nextInt(tagCardinality[i])]);
      }
    }
    
    if (queryTimeSpan > 0) {
      final long endTimestamp;
      if (queryRandomTimeSpan) {
        endTimestamp = startTimestamp + (timestampInterval * random.nextInt(queryTimeSpan / timestampInterval));
      } else {
        endTimestamp = startTimestamp + queryTimeSpan;
      }
      fields.add(timestampKey + tagPairDelimiter + startTimestamp + queryTimeSpanDelimiter + endTimestamp);
    } else {
      fields.add(timestampKey + tagPairDelimiter + startTimestamp);  
    }
    if (groupBy) {
      fields.add(groupByKey + tagPairDelimiter + groupByFunction);
    }
    if (downsample) {
      fields.add(downsampleKey + tagPairDelimiter + downsampleFunction + downsampleInterval);
    }
    
    final Map<String, ByteIterator> cells = new HashMap<String, ByteIterator>();
    final Status status = db.read(table, keyname, fields, cells);
    
    if (dataintegrity && status == Status.OK) {
      verifyRow(keyname, cells);
    }
  }