[ https://issues.apache.org/jira/browse/DRILL-4020?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Pritesh Maker updated DRILL-4020: --------------------------------- Reviewer: Parth Chandra > The not-equal operator returns incorrect results when used on the HBase row > key > ------------------------------------------------------------------------------- > > Key: DRILL-4020 > URL: https://issues.apache.org/jira/browse/DRILL-4020 > Project: Apache Drill > Issue Type: Bug > Components: Storage - HBase > Affects Versions: 1.2.0, 1.3.0, 1.4.0, 1.5.0 > Environment: Drill Sandbox > Reporter: Akihiko Kusanagi > Assignee: Akihiko Kusanagi > Priority: Critical > Labels: ready-to-commit > Fix For: 1.14.0 > > > Create a test HBase table: > {noformat} > hbase> create 'table', 'f' > hbase> put 'table', 'row1', 'f:c', 'value1' > hbase> put 'table', 'row2', 'f:c', 'value2' > hbase> put 'table', 'row3', 'f:c', 'value3' > {noformat} > The table looks like this: > {noformat} > 0: jdbc:drill:zk=maprdemo:5181> SELECT CONVERT_FROM(row_key, 'UTF8') FROM > hbase.`table`; > +---------+ > | EXPR$0 | > +---------+ > | row1 | > | row2 | > | row3 | > +---------+ > 1 row selected (4.596 seconds) > {noformat} > However, this query returns incorrect results when a not-equal operator is > used on the row key: > {noformat} > 0: jdbc:drill:zk=maprdemo:5181> SELECT CONVERT_FROM(row_key, 'UTF8') FROM > hbase.`table` WHERE row_key <> 'row1'; > +---------+ > | EXPR$0 | > +---------+ > | row1 | > | row2 | > | row3 | > +---------+ > 1 row selected (0.573 seconds) > {noformat} > In the query plan, there is no RowFilter: > {noformat} > 00-00 Screen > 00-01 Project(EXPR$0=[CONVERT_FROMUTF8($0)]) > 00-02 Scan(groupscan=[HBaseGroupScan [HBaseScanSpec=HBaseScanSpec > [tableName=table, startRow=, stopRow=, filter=null], columns=[`row_key`]]]) > {noformat} > When the query has multiple not-equal operators, it works fine: > {noformat} > 0: jdbc:drill:zk=maprdemo:5181> SELECT CONVERT_FROM(row_key, 'UTF8') FROM > hbase.`table` WHERE row_key <> 'row1' AND row_key <> 'row2'; > +---------+ > | EXPR$0 | > +---------+ > | row3 | > +---------+ > 1 row selected (0.255 seconds) > {noformat} > In the query plan, a FilterList has two RowFilters with NOT_EQUAL operators: > {noformat} > 00-00 Screen > 00-01 Project(EXPR$0=[CONVERT_FROMUTF8($0)]) > 00-02 Scan(groupscan=[HBaseGroupScan [HBaseScanSpec=HBaseScanSpec > [tableName=table, startRow=, stopRow=, filter=FilterList AND (2/2): > [RowFilter (NOT_EQUAL, row1), RowFilter (NOT_EQUAL, row2)]], > columns=[`row_key`]]]) > {noformat} -- This message was sent by Atlassian JIRA (v7.6.3#76005)