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

Bjorn Olsen updated HBASE-16356:
--------------------------------
    Description: 
A user can optionally specify a row PrefixFilter, or a list of custom filters, 
to the REST API scanner.

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

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

This works when specified separately, like above. 

However, specifying both a prefix filter and a list of custom filters causes 
the API to ignore the prefix filter.

Example using both parameters:
<API>/123*?startrow=0&endrow=9&filter=RowFilter(=,'substring:456)

It appears that code in the TableResource.getScanResource function is causing 
this issue as follows:
(see 
https://hbase.apache.org/devapidocs/src-html/org/apache/hadoop/hbase/rest/TableResource.html#line.196
 )

if (filterList != null) {
  tableScan.setFilter(filterList); //comes from custom filters parameter

} else if (filter != null) {
  tableScan.setFilter(filter);
  //comes from row prefix parameter
}


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.

  was:
A user can optionally specify a row PrefixFilter, or a list of custom filters, 
to the REST API scanner.

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

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

This works when specified separately, like above. 

However, specifying both a prefix filter and a list of custom filters causes 
the API to ignore the prefix filter.

Example using both parameters:
<API>/123*?startrow=0&endrow=9&filter=RowFilter(=,'substring:456)

It appears that code in the TableResource.getScanResource function is causing 
this issue as follows:
if (filterList != null) {
  tableScan.setFilter(filterList); //comes from custom filters parameter

} else if (filter != null) {
  tableScan.setFilter(filter);
  //comes from row prefix parameter
}

(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.


> REST API scanner: 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
>
> A user can optionally specify a row PrefixFilter, or a list of custom 
> filters, to the REST API scanner.
> Prefix filter example: 
> <API>/123*?startrow=0&endrow=9
> Custom filters example: 
> <API>/*?startrow=0&endrow=9&filter=RowFilter(=,'substring:456)
> This works when specified separately, like above. 
> However, specifying both a prefix filter and a list of custom filters causes 
> the API to ignore the prefix filter.
> Example using both parameters:
> <API>/123*?startrow=0&endrow=9&filter=RowFilter(=,'substring:456)
> It appears that code in the TableResource.getScanResource function is causing 
> this issue as follows:
> (see 
> https://hbase.apache.org/devapidocs/src-html/org/apache/hadoop/hbase/rest/TableResource.html#line.196
>  )
> if (filterList != null) {
>   tableScan.setFilter(filterList); //comes from custom filters parameter
> } else if (filter != null) {
>   tableScan.setFilter(filter);
>   //comes from row prefix parameter
> }
> 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