@Override
  public MatchCode match(ExtendedCell cell) throws IOException {
    MatchCode returnCode = preCheck(cell);
    if (returnCode != null) {
      return returnCode;
    }
    long mvccVersion = cell.getSequenceId();
    byte typeByte = cell.getTypeByte();
    if (PrivateCellUtil.isDelete(typeByte)) {
      if (mvccVersion > maxReadPointToTrackVersions) {
        return MatchCode.INCLUDE;
      }
      trackDelete(cell);
      if (dropDeletesInOutput == DropDeletesInOutput.IN) {
        // here we are running like major compaction
        trackDelete(cell);
        returnCode = tryDropDelete(cell);
        if (returnCode != null) {
          return returnCode;
        }
      } else {
        return MatchCode.INCLUDE;
      }
    } else {
      returnCode = checkDeleted(deletes, cell);
      if (returnCode != null) {
        return returnCode;
      }
    }
    // Skip checking column since we do not remove column during compaction.
    return columns.checkVersions(cell, cell.getTimestamp(), typeByte,
      mvccVersion > maxReadPointToTrackVersions);
  }
Query matcher for stripe compaction if range drop deletes is used.
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/querymatcher/StripeCompactionScanQueryMatcher.java