You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "ramkrishna.s.vasudevan (JIRA)" <ji...@apache.org> on 2012/12/12 09:33:22 UTC
[jira] [Commented] (HBASE-7337) SingleColumnValueFilter seems to
get unavailble data
[ https://issues.apache.org/jira/browse/HBASE-7337?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13529746#comment-13529746 ]
ramkrishna.s.vasudevan commented on HBASE-7337:
-----------------------------------------------
Did you check with your values? Like the inserted values are also String and the one that you are querying is also String?
Just to verify...
> 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