Java Code Examples for org.apache.hadoop.hbase.client.Scan.isReversed()

The following are Jave code examples for showing how to use isReversed() of the org.apache.hadoop.hbase.client.Scan class. You can vote up the examples you like. Your votes will be used in our system to get more good examples.
Example 1
Project: ditb   File: StoreFile.java   Source Code and License Vote up 6 votes
/**
 * Checks whether the given scan rowkey range overlaps with the current storefile's
 *
 * @param scan the scan specification. Used to determine the rowkey range.
 * @return true if there is overlap, false otherwise
 */
public boolean passesKeyRangeFilter(Scan scan) {
  if (this.getFirstKey() == null || this.getLastKey() == null) {
    // the file is empty
    return false;
  }
  if (Bytes.equals(scan.getStartRow(), HConstants.EMPTY_START_ROW) && Bytes
      .equals(scan.getStopRow(), HConstants.EMPTY_END_ROW)) {
    return true;
  }
  KeyValue smallestScanKeyValue = scan.isReversed() ?
      KeyValueUtil.createFirstOnRow(scan.getStopRow()) :
      KeyValueUtil.createFirstOnRow(scan.getStartRow());
  KeyValue largestScanKeyValue = scan.isReversed() ?
      KeyValueUtil.createLastOnRow(scan.getStartRow()) :
      KeyValueUtil.createLastOnRow(scan.getStopRow());
  boolean nonOverLapping =
      (getComparator().compareFlatKey(this.getFirstKey(), largestScanKeyValue.getKey()) > 0
          && !Bytes.equals(scan.isReversed() ? scan.getStartRow() : scan.getStopRow(),
          HConstants.EMPTY_END_ROW))
          || getComparator().compareFlatKey(this.getLastKey(), smallestScanKeyValue.getKey())
          < 0;
  return !nonOverLapping;
}
 
Example 2
Project: ditb   File: HStore.java   Source Code and License Vote up 6 votes
@Override
public KeyValueScanner getScanner(Scan scan, final NavigableSet<byte[]> targetCols, long readPt)
    throws IOException {
  lock.readLock().lock();
  try {
    KeyValueScanner scanner = null;
    if (this.getCoprocessorHost() != null) {
      scanner = this.getCoprocessorHost().preStoreScannerOpen(this, scan, targetCols);
    }
    if (scanner == null) {
      scanner = scan.isReversed() ?
          new ReversedStoreScanner(this, getScanInfo(), scan, targetCols, readPt) :
          new StoreScanner(this, getScanInfo(), scan, targetCols, readPt);
    }
    return scanner;
  } finally {
    lock.readLock().unlock();
  }
}
 
Example 3
Project: ditb   File: HRegion.java   Source Code and License Vote up 5 votes
protected RegionScanner instantiateRegionScanner(Scan scan,
    List<KeyValueScanner> additionalScanners) throws IOException {
  if (scan.isReversed()) {
    if (scan.getFilter() != null) {
      scan.getFilter().setReversed(true);
    }
    return new ReversedRegionScannerImpl(scan, additionalScanners, this);
  }
  // LCMARK: for a user table, this method is called
  return new RegionScannerImpl(scan, additionalScanners, this);
}
 
Example 4
Project: ditb   File: NoOpScanPolicyObserver.java   Source Code and License Vote up 5 votes
@Override
public KeyValueScanner preStoreScannerOpen(final ObserverContext<RegionCoprocessorEnvironment> c,
    Store store, final Scan scan, final NavigableSet<byte[]> targetCols, KeyValueScanner s)
    throws IOException {
  Region r = c.getEnvironment().getRegion();
  return scan.isReversed() ? new ReversedStoreScanner(store,
      store.getScanInfo(), scan, targetCols, r.getReadpoint(scan
          .getIsolationLevel())) : new StoreScanner(store,
      store.getScanInfo(), scan, targetCols, r.getReadpoint(scan
          .getIsolationLevel()));
}
 
Example 5
Project: ditb   File: TestScannerHeartbeatMessages.java   Source Code and License Vote up 5 votes
@Override
protected RegionScanner instantiateRegionScanner(Scan scan,
    List<KeyValueScanner> additionalScanners) throws IOException {
  if (scan.isReversed()) {
    if (scan.getFilter() != null) {
      scan.getFilter().setReversed(true);
    }
    return new HeartbeatReversedRegionScanner(scan, additionalScanners, this);
  }
  return new HeartbeatRegionScanner(scan, additionalScanners, this);
}
 
Example 6
Project: ditb   File: ScanQueryMatcher.java   Source Code and License Vote up 4 votes
/**
 * Construct a QueryMatcher for a scan
 * @param scan
 * @param scanInfo The store's immutable scan info
 * @param columns
 * @param scanType Type of the scan
 * @param earliestPutTs Earliest put seen in any of the store files.
 * @param oldestUnexpiredTS the oldest timestamp we are interested in,
 *  based on TTL
 * @param regionCoprocessorHost 
 * @throws IOException 
 */
public ScanQueryMatcher(Scan scan, ScanInfo scanInfo, NavigableSet<byte[]> columns,
    ScanType scanType, long readPointToUse, long earliestPutTs, long oldestUnexpiredTS,
    long now, RegionCoprocessorHost regionCoprocessorHost) throws IOException {
  TimeRange timeRange = scan.getColumnFamilyTimeRange().get(scanInfo.getFamily());
  if (timeRange == null) {
    this.tr = scan.getTimeRange();
  } else {
    this.tr = timeRange;
  }
  this.rowComparator = scanInfo.getComparator();
  this.regionCoprocessorHost = regionCoprocessorHost;
  this.deletes =  instantiateDeleteTracker();
  this.stopRow = scan.getStopRow();
  this.startKey = KeyValueUtil.createFirstDeleteFamilyOnRow(scan.getStartRow(),
      scanInfo.getFamily());
  this.filter = scan.getFilter();
  this.earliestPutTs = earliestPutTs;
  this.oldestUnexpiredTS = oldestUnexpiredTS;
  this.now = now;

  this.maxReadPointToTrackVersions = readPointToUse;
  this.timeToPurgeDeletes = scanInfo.getTimeToPurgeDeletes();
  this.ttl = oldestUnexpiredTS;

  /* how to deal with deletes */
  this.isUserScan = scanType == ScanType.USER_SCAN;
  // keep deleted cells: if compaction or raw scan
  this.keepDeletedCells = scan.isRaw() ? KeepDeletedCells.TRUE :
    isUserScan ? KeepDeletedCells.FALSE : scanInfo.getKeepDeletedCells();
  // retain deletes: if minor compaction or raw scanisDone
  this.retainDeletesInOutput = scanType == ScanType.COMPACT_RETAIN_DELETES || scan.isRaw();
  // seePastDeleteMarker: user initiated scans
  this.seePastDeleteMarkers =
      scanInfo.getKeepDeletedCells() != KeepDeletedCells.FALSE && isUserScan;

  int maxVersions =
      scan.isRaw() ? scan.getMaxVersions() : Math.min(scan.getMaxVersions(),
        scanInfo.getMaxVersions());

  // Single branch to deal with two types of reads (columns vs all in family)
  if (columns == null || columns.size() == 0) {
    // there is always a null column in the wildcard column query.
    hasNullColumn = true;

    // use a specialized scan for wildcard column tracker.
    this.columns = new ScanWildcardColumnTracker(
        scanInfo.getMinVersions(), maxVersions, oldestUnexpiredTS);
  } else {
    // whether there is null column in the explicit column query
    hasNullColumn = (columns.first().length == 0);

    // We can share the ExplicitColumnTracker, diff is we reset
    // between rows, not between storefiles.
    this.columns = new ExplicitColumnTracker(columns, scanInfo.getMinVersions(), maxVersions,
        oldestUnexpiredTS);
  }
  this.isReversed = scan.isReversed();
}