You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Zhou wenjian (JIRA)" <ji...@apache.org> on 2012/12/12 08:31:21 UTC

[jira] [Created] (HBASE-7337) SingleColumnValueFilter seems to get unavailble data

Zhou wenjian created HBASE-7337:
-----------------------------------

             Summary: SingleColumnValueFilter seems to get unavailble data
                 Key: HBASE-7337
                 URL: https://issues.apache.org/jira/browse/HBASE-7337
             Project: HBase
          Issue Type: Bug
          Components: Filters
    Affects Versions: 0.94.3, 0.96.0
         Environment: 0.94
            Reporter: Zhou wenjian
            Assignee: Zhou wenjian
             Fix For: 0.96.0, 0.94.4


put multi versions of a row.
r1 cf:q  version:1 value:1
r1 cf:q  version:2 value:3
r1 cf:q  version:3 value:2
the filter in scan is set as below:
SingleColumnValueFilter valueF = new SingleColumnValueFilter(
        family,qualifier,CompareOp.EQUAL,new BinaryComparator(Bytes
.toBytes("2")));

then i found all of the three versions will be emmitted, then i set latestVersionOnly to false, the result does no change.


  public ReturnCode filterKeyValue(KeyValue keyValue) {
    // System.out.println("REMOVE KEY=" + keyValue.toString() + ", value=" + Bytes.toString(keyValue.getValue()));
    if (this.matchedColumn) {
      // We already found and matched the single column, all keys now pass
      return ReturnCode.INCLUDE;
    } else if (this.latestVersionOnly && this.foundColumn) {
      // We found but did not match the single column, skip to next row
      return ReturnCode.NEXT_ROW;
    }
    if (!keyValue.matchingColumn(this.columnFamily, this.columnQualifier)) {
      return ReturnCode.INCLUDE;
    }
    foundColumn = true;
    if (filterColumnValue(keyValue.getBuffer(),
        keyValue.getValueOffset(), keyValue.getValueLength())) {
      return this.latestVersionOnly? ReturnCode.NEXT_ROW: ReturnCode.INCLUDE;
    }
    this.matchedColumn = true;
    return ReturnCode.INCLUDE;
  }

>From the code above, it seeems that version 3 will be first emmited, and set matchedColumn to false, which leads the following version 2 and 1 emmited too.



--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira