[ https://issues.apache.org/jira/browse/HBASE-9331?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13749161#comment-13749161 ]
Ted Yu commented on HBASE-9331: ------------------------------- @Tony: Can you put the above scenario in a unit test ? Thanks > FuzzyRow filter getNextForFuzzyRule not working properly for special case > ------------------------------------------------------------------------- > > Key: HBASE-9331 > URL: https://issues.apache.org/jira/browse/HBASE-9331 > Project: HBase > Issue Type: Bug > Components: Filters > Affects Versions: 0.94.11 > Environment: Issue is not dependent upon environment. > Reporter: Tony Dean > > The case that getNextForFuzzyRule() fails is when the result (fuzzy key) is > extended in length (zero padded) to match the current row for comparisons. > If the hint is returned with zero padded bytes, the next seek may skip over a > valid match. See the example below. > /** > * The code below circumvents the following situation. > * > * fuzzy.key = visitor,session,Logon > * fuzzy.mask = 000000001111111000000 > * > * example hbase row data: > * visitor,session,AddToCart > * " " FacebookLike > * " " Logon > * " " MobileSpecial > * ... > * > * > * For row "visitor,sessionAddToCart", the current code would > * return a hint of "visitor,session,Logon\0\0\0\0" (zero padded). > * The next seek would skip "visitor,session,Logon" and jump > * to "visitor,session,MobileSpecial". > */ > > // trim trailing zeros that were not part of the original fuzzy key > int i = result.length; > for (; i > fuzzyKeyBytes.length; i--) > { > if (result[i-1] != 0x00) > break; > } > if (i != result.length) > { > result = Arrays.copyOf(result, i); > } > The code above added to the end of getNextFuzzyRule() will circumvent the > issue. I tested my scenario and it produces the correct results. There may > be a better solution. > Thanks. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira