hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Anoop Sam John (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-7337) SingleColumnValueFilter seems to get unavailble data
Date Fri, 14 Dec 2012 06:16:12 GMT

    [ https://issues.apache.org/jira/browse/HBASE-7337?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13532082#comment-13532082
] 

Anoop Sam John commented on HBASE-7337:
---------------------------------------

In Scan you can set how many version you need or you need all the versions or only latest
version.....
This is irrespective of whether SCVF or any other filters are set on the Scan.

In fact the filter will get to know all the versions. (in filterKeyValue)


                
> 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 true, 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

Mime
View raw message