Bjorn Olsen created HBASE-16356:
-----------------------------------

             Summary: REST API prefixFilter and custom filters are mutually 
exclusive
                 Key: HBASE-16356
                 URL: https://issues.apache.org/jira/browse/HBASE-16356
             Project: HBase
          Issue Type: Bug
          Components: REST
    Affects Versions: 1.1.2
         Environment: Not environment-specific, but visible in HDP 2.4.2
            Reporter: Bjorn Olsen
            Priority: Minor


The HBase REST API makes use of a TableResource object to create a Scan, which 
then applies filters specified by the user. 

A user can specify a row PrefixFilter or a list of custom filters on the API.

Prefix filter example: 
<API>/123*?startrow=0&endrow=9

Custom filters example: 
<API>/*?startrow=0&endrow=9&filter=RowFilter(=,'substring:456)

This works okay. 

However, specifying both a prefix filter and a list of custom filters causes 
the API to ignore the prefix filter.
Eg 
<API>/123*?startrow=0&endrow=9&filter=RowFilter(=,'substring:456)


Logic in the TableResource.getScanResource function is causing this behavior as 
follows:
if (filterList != null) {
  tableScan.setFilter(filterList);
} else if (filter != null) {
  tableScan.setFilter(filter);
}
(see 
https://hbase.apache.org/devapidocs/src-html/org/apache/hadoop/hbase/rest/TableResource.html#line.196
 )

This should probably be changed to use a single filterList for both parameters. 
The prefix filter can be "Popped" onto the filter list and then these 
parameters will work even when both are specified.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to