[ https://issues.apache.org/jira/browse/HBASE-15676?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15259722#comment-15259722 ]
Heng Chen commented on HBASE-15676: ----------------------------------- {code} + // This shift is idempotent - always end up with 0 and -1 as mask values. + for (int j = 0; j < fuzzyData.getSecond().length; j++) { + fuzzyData.getSecond()[j] >>>= 2; + } {code} What's the code used for? {code} /** * We need to preprocess mask array, as since we treat 0's as unfixed positions and -1 (0xff) as * fixed positions * @param mask * @return mask array */ private byte[] preprocessMask(byte[] mask) { {code} Comments should be modified? > FuzzyRowFilter fails and matches all the rows in the table if the mask > consists of all 0s > ----------------------------------------------------------------------------------------- > > Key: HBASE-15676 > URL: https://issues.apache.org/jira/browse/HBASE-15676 > Project: HBase > Issue Type: Bug > Components: Filters > Affects Versions: 2.0.0, 0.98.13, 1.0.2, 1.2.0, 1.1.1 > Reporter: Rohit Sinha > Attachments: hbase-15676-v1.patch, hbase-15676-v2.patch > > > While using FuzzyRowFilter we noticed that if the mask array consists of all > 0s (fixed) the FuzzyRowFilter matches all the rows in the table. We noticed > this on HBase 1.1, 1.2 and higher. > After some digging we suspect that this is because of isPreprocessedMask() > check which is used in preprocessMask() which was added here: > https://issues.apache.org/jira/browse/HBASE-13761 > If the mask consists of all 0s then the isPreprocessedMask() returns true and > the preprocessing which responsible for changing 0s to -1 doesn't happen and > hence all rows are matched in scan. > This scenario can be tested in TestFuzzyRowFilterEndToEnd#testHBASE14782() If > we change the > byte[] fuzzyKey = Bytes.toBytesBinary("\\x00\\x00\\x044"); > byte[] mask = new byte[] {1,0,0,0}; > to > byte[] fuzzyKey = Bytes.toBytesBinary("\\x9B\\x00\\x044e"); > byte[] mask = new byte[] {0,0,0,0,0}; > We expect one match but this will match all the rows in the table. -- This message was sent by Atlassian JIRA (v6.3.4#6332)