[ 
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

Reply via email to