hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matus Zamborsky (JIRA)" <j...@apache.org>
Subject [jira] Updated: (HBASE-1790) filters are not working correctly
Date Sat, 29 Aug 2009 16:59:32 GMT

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

Matus Zamborsky updated HBASE-1790:

    Attachment: 1790-3.patch

Jonathan I see what you tried to do, but if we need to make the Prefix filter stateful(or
any other filter) than the HRegion.nextInternal method is basicaly depending on filter to
be able to tell, if there will be no more accepted rows, before filtering them. This is possible
for alfanumeric filters like prefix filter, but I think, it will break down with ValueFilter
and a situation on last passed row, because ValueFilter cant tell if there would be any acceptable
rows, before aplying filter. So I rewrite the nextInternal and next method. Also I rewrite
the test file TestFilter. There are 4 test methods now: without filter, prefixfilter(dont
need to apply jonathans patch), pagefilter and valuefilter. And I also add new filter StartPageFilter,
which is the same as PageFilter, but you can specify how many rows should be skipped before
the paging.

I am developing on windows, so I dont have the best conditions for running tests. Although
this nextInternal implementation passed TestFilter tests, I am not sure, if it will passed
all the others tests. If anybody can try this it would be great.

As I was searching for all usages of InternalScanner.next function, which basicaly take the
result of nextInternal in case of HRegion and thus should return false if this is the last
row, I came accross HMerge:

while(rootScanner.next(results)) {
          for(KeyValue kv: results) {
            HRegionInfo info = Writables.getHRegionInfoOrNull(kv.getValue());
            if (info != null) {

It looks like, it expects rootScanner.next(results) to be true for every row and not for every
row except the last. So Stack, should we correct this?

> filters are not working correctly
> ---------------------------------
>                 Key: HBASE-1790
>                 URL: https://issues.apache.org/jira/browse/HBASE-1790
>             Project: Hadoop HBase
>          Issue Type: Bug
>          Components: filters
>    Affects Versions: 0.20.0, 0.21.0
>            Reporter: Matus Zamborsky
>             Fix For: 0.20.0
>         Attachments: 1790-3.patch, HBASE-1790-v2.patch, hbase-1790.patch, testfilter.patch
> Filters used in Scanning the table are not working correctly. For example a table with
three rows:
> 1. rowkey = adminbackslash-nb0, desc:temp = "temp"
> 2. rowkey = adminbackslash-nb1, desc:temp = "temp"
> 3. rowkey = adminkleptoman, desc:temp = "temp"
> If I scan all rows in the table without filter I get all the rows as expected. But applying
a simple prefixfilter with parameter "adminbackslash" will return only first row. I searched
it down to HRegion::nextInternal method, which will not output one passed row before denied
row(by filter). 

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message