You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Fabien Le Gallo (JIRA)" <ji...@apache.org> on 2014/03/27 12:14:15 UTC
[jira] [Created] (HBASE-10850) Unexpected behavior when using
filter SingleColumnValueFilter
Fabien Le Gallo created HBASE-10850:
---------------------------------------
Summary: Unexpected behavior when using filter SingleColumnValueFilter
Key: HBASE-10850
URL: https://issues.apache.org/jira/browse/HBASE-10850
Project: HBase
Issue Type: Bug
Components: Filters
Affects Versions: 0.96.1.1
Reporter: Fabien Le Gallo
When using the filter SingleColumnValueFilter, and depending of the columns specified in the scan (filtering column always specified), the results can be different.
Here is an example.
Suppose the following table:
||key||a:foo||a:bar||b:foo||b:bar||
|1|false|_flag_|_flag_|_flag_|
|2|true|_flag_|_flag_|_flag_|
|3| |_flag_|_flag_|_flag_|
With this filter:
{code}
SingleColumnValueFilter filter = new SingleColumnValueFilter(Bytes.toBytes("a"), Bytes.toBytes("foo"), CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes("false")));
filter.setFilterIfMissing(true);
{code}
Depending of how I specify the list of columns to add in the scan, the result is different. Yet, all examples below should always return only the first row (key '1'):
OK:
{code}
scan.addFamily(Bytes.toBytes("a"));
{code}
KO (2 results returned, row '3' without 'a:foo' qualifier is returned):
{code}
scan.addFamily(Bytes.toBytes("a"));
scan.addFamily(Bytes.toBytes("b"));
{code}
KO (2 results returned, row '3' without 'a:foo' qualifier is returned):
{code}
scan.addColumn(Bytes.toBytes("a"), Bytes.toBytes("foo"));
scan.addColumn(Bytes.toBytes("a"), Bytes.toBytes("bar"));
scan.addColumn(Bytes.toBytes("b"), Bytes.toBytes("foo"));
{code}
OK:
{code}
scan.addColumn(Bytes.toBytes("a"), Bytes.toBytes("foo"));
scan.addColumn(Bytes.toBytes("b"), Bytes.toBytes("bar"));
{code}
OK:
{code}
scan.addColumn(Bytes.toBytes("a"), Bytes.toBytes("foo"));
scan.addColumn(Bytes.toBytes("a"), Bytes.toBytes("bar"));
{code}
This is a regression as it was working properly on HBase 0.92.
You will find in attachement the unit tests reproducing the issue.
--
This message was sent by Atlassian JIRA
(v6.2#6252)