You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Lars Hofhansl (JIRA)" <ji...@apache.org> on 2014/01/07 19:21:56 UTC

[jira] [Resolved] (HBASE-10290) The results are not expected by using QualifierFilter combined with SingleColumnValueFilter

     [ https://issues.apache.org/jira/browse/HBASE-10290?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Lars Hofhansl resolved HBASE-10290.
-----------------------------------

    Resolution: Invalid

You'll get better answers by asking on the HBase mailing lists. Please try that first. We're usually very helpful on the lists.

For this issue, you're filtering out all KV but the ones with qualifier port-80 so it looks to me like to output is expected.

> The results are not expected by using QualifierFilter combined with SingleColumnValueFilter
> -------------------------------------------------------------------------------------------
>
>                 Key: HBASE-10290
>                 URL: https://issues.apache.org/jira/browse/HBASE-10290
>             Project: HBase
>          Issue Type: Bug
>          Components: Filters
>    Affects Versions: 0.99.0
>            Reporter: takeshi.miao
>         Attachments: TestFilters.java
>
>
> I suffering an issue is, I only get one _KeyValue_ object (five expected) from one row if I use _FilterList_ with _Operator.MUST_PASS_ALL_ to add both _QualifierFiter_ and _Operator.MUST_PASS_ALL_, the details as follows
> h4.Test for Operator.MUST_PASS_ALL
> 1. I generate 10 rows of test data, two column familys and five column qualifiers for each row.
> {code:title=Test Data}
> r=keyvalues={row001/cf1:dummy/1389104461530/Put/vlen=5/mvcc=0, row001/cf1:ip/1389104461530/Put/vlen=10/mvcc=0, row001/cf1:port-10/1389104461530/Put/vlen=5/mvcc=0, row001/cf2:dummy1/1389104461530/Put/vlen=6/mvcc=0, row001/cf2:dummy2/1389104461530/Put/vlen=6/mvcc=0}
> r=keyvalues={row002/cf1:dummy/1389104461530/Put/vlen=5/mvcc=0, row002/cf1:ip/1389104461530/Put/vlen=10/mvcc=0, row002/cf1:port-20/1389104461530/Put/vlen=5/mvcc=0, row002/cf2:dummy1/1389104461530/Put/vlen=6/mvcc=0, row002/cf2:dummy2/1389104461530/Put/vlen=6/mvcc=0}
> r=keyvalues={row003/cf1:dummy/1389104461530/Put/vlen=5/mvcc=0, row003/cf1:ip/1389104461530/Put/vlen=10/mvcc=0, row003/cf1:port-30/1389104461530/Put/vlen=5/mvcc=0, row003/cf2:dummy1/1389104461530/Put/vlen=6/mvcc=0, row003/cf2:dummy2/1389104461530/Put/vlen=6/mvcc=0}
> r=keyvalues={row004/cf1:dummy/1389104461530/Put/vlen=5/mvcc=0, row004/cf1:ip/1389104461530/Put/vlen=10/mvcc=0, row004/cf1:port-40/1389104461530/Put/vlen=5/mvcc=0, row004/cf2:dummy1/1389104461530/Put/vlen=6/mvcc=0, row004/cf2:dummy2/1389104461530/Put/vlen=6/mvcc=0}
> r=keyvalues={row005/cf1:dummy/1389104461530/Put/vlen=5/mvcc=0, row005/cf1:ip/1389104461530/Put/vlen=10/mvcc=0, row005/cf1:port-50/1389104461530/Put/vlen=5/mvcc=0, row005/cf2:dummy1/1389104461530/Put/vlen=6/mvcc=0, row005/cf2:dummy2/1389104461530/Put/vlen=6/mvcc=0}
> r=keyvalues={row006/cf1:dummy/1389104461530/Put/vlen=5/mvcc=0, row006/cf1:ip/1389104461530/Put/vlen=10/mvcc=0, row006/cf1:port-60/1389104461530/Put/vlen=5/mvcc=0, row006/cf2:dummy1/1389104461530/Put/vlen=6/mvcc=0, row006/cf2:dummy2/1389104461530/Put/vlen=6/mvcc=0}
> r=keyvalues={row007/cf1:dummy/1389104461530/Put/vlen=5/mvcc=0, row007/cf1:ip/1389104461530/Put/vlen=10/mvcc=0, row007/cf1:port-70/1389104461530/Put/vlen=5/mvcc=0, row007/cf2:dummy1/1389104461530/Put/vlen=6/mvcc=0, row007/cf2:dummy2/1389104461530/Put/vlen=6/mvcc=0}
> r=keyvalues={row008/cf1:dummy/1389104461530/Put/vlen=5/mvcc=0, row008/cf1:ip/1389104461530/Put/vlen=10/mvcc=0, row008/cf1:port-80/1389104461530/Put/vlen=5/mvcc=0, row008/cf2:dummy1/1389104461530/Put/vlen=6/mvcc=0, row008/cf2:dummy2/1389104461530/Put/vlen=6/mvcc=0}
> r=keyvalues={row009/cf1:dummy/1389104461530/Put/vlen=5/mvcc=0, row009/cf1:ip/1389104461530/Put/vlen=10/mvcc=0, row009/cf1:port-80/1389104461530/Put/vlen=5/mvcc=0, row009/cf2:dummy1/1389104461530/Put/vlen=6/mvcc=0, row009/cf2:dummy2/1389104461530/Put/vlen=6/mvcc=0}
> r=keyvalues={row010/cf1:dummy/1389104461530/Put/vlen=5/mvcc=0, row010/cf1:ip/1389104461530/Put/vlen=11/mvcc=0, row010/cf1:port-80/1389104461530/Put/vlen=5/mvcc=0, row010/cf2:dummy1/1389104461530/Put/vlen=6/mvcc=0, row010/cf2:dummy2/1389104461530/Put/vlen=6/mvcc=0}
> {code}
> 2. Then I use following code to try to filter out only one row I want
> {code:title=FilterList codes}
> //...
> fl = new FilterList(Operator.MUST_PASS_ALL);
> filter =
>     new SingleColumnValueFilter(CF_1_NAME_B, Bytes.toBytes("ip"), CompareOp.EQUAL,
>         Bytes.toBytes("127.0.0.80"));
> fl.addFilter(filter);
> filter = new QualifierFilter(CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes("port-80")));
> fl.addFilter(filter);
> scan.setFilter(fl);
> rs = table.getScanner(scan);
> for (Result r : rs) {
>   //...
> }
> {code}
> 3. I get the right and only one row returned, but not get whole data (_KeyValue_s) of this row.
> {code:title=Results not expected}
> r=keyvalues={row008/cf1:port-80/1389104629712/Put/vlen=5/mvcc=0}
> {code}
> Actually, I expect following data would return, whole record data, two column families and five column qualifiers.
> {code:tittle=Results I expected}
> r=keyvalues={row008/cf1:dummy/1389104461530/Put/vlen=5/mvcc=0, row008/cf1:ip/1389104461530/Put/vlen=10/mvcc=0, row008/cf1:port-80/1389104461530/Put/vlen=5/mvcc=0, row008/cf2:dummy1/1389104461530/Put/vlen=6/mvcc=0, row008/cf2:dummy2/1389104461530/Put/vlen=6/mvcc=0}
> {code}
> h4.Test for Operator.MUST_PASS_ONE
> then I test the same code except to change the _Operator.MUST_PASS_ALL_ to _Operator.MUST_PASS_ONE_, and things getting more worse...
> {code:title=Result not expected}
> r=keyvalues={row001/cf1:dummy/1389113376745/Put/vlen=5/mvcc=0}
> r=keyvalues={row002/cf1:dummy/1389113376745/Put/vlen=5/mvcc=0}
> r=keyvalues={row003/cf1:dummy/1389113376745/Put/vlen=5/mvcc=0}
> r=keyvalues={row004/cf1:dummy/1389113376745/Put/vlen=5/mvcc=0}
> r=keyvalues={row005/cf1:dummy/1389113376745/Put/vlen=5/mvcc=0}
> r=keyvalues={row006/cf1:dummy/1389113376745/Put/vlen=5/mvcc=0}
> r=keyvalues={row007/cf1:dummy/1389113376745/Put/vlen=5/mvcc=0, row007/cf1:ip/1389113376745/Put/vlen=10/mvcc=0, row007/cf1:port-70/1389113376745/Put/vlen=5/mvcc=0, row007/cf2:dummy1/1389113376745/Put/vlen=6/mvcc=0, row007/cf2:dummy2/1389113376745/Put/vlen=6/mvcc=0}
> r=keyvalues={row008/cf1:dummy/1389113376745/Put/vlen=5/mvcc=0, row008/cf1:ip/1389113376745/Put/vlen=10/mvcc=0, row008/cf1:port-80/1389113376745/Put/vlen=5/mvcc=0, row008/cf2:dummy1/1389113376745/Put/vlen=6/mvcc=0, row008/cf2:dummy2/1389113376745/Put/vlen=6/mvcc=0}
> r=keyvalues={row009/cf1:dummy/1389113376745/Put/vlen=5/mvcc=0, row009/cf1:port-80/1389113376745/Put/vlen=5/mvcc=0}
> r=keyvalues={row010/cf1:dummy/1389113376745/Put/vlen=5/mvcc=0, row010/cf1:port-80/1389113376745/Put/vlen=5/mvcc=0}
> {code}
> But I only expected following two row got returned
> {code:title=Results I expected}
> r=keyvalues={row007/cf1:dummy/1389113376745/Put/vlen=5/mvcc=0, row007/cf1:ip/1389113376745/Put/vlen=10/mvcc=0, row007/cf1:port-70/1389113376745/Put/vlen=5/mvcc=0, row007/cf2:dummy1/1389113376745/Put/vlen=6/mvcc=0, row007/cf2:dummy2/1389113376745/Put/vlen=6/mvcc=0}
> r=keyvalues={row008/cf1:dummy/1389113376745/Put/vlen=5/mvcc=0, row008/cf1:ip/1389113376745/Put/vlen=10/mvcc=0, row008/cf1:port-80/1389113376745/Put/vlen=5/mvcc=0, row008/cf2:dummy1/1389113376745/Put/vlen=6/mvcc=0, row008/cf2:dummy2/1389113376745/Put/vlen=6/mvcc=0}
> {code}
> Test code attached to demo this issue.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)