wuchengzhi created HBASE-11728: ---------------------------------- Summary: Some data miss when scan using PREFIX_TREE DATA-BLOCK-ENCODING Key: HBASE-11728 URL: https://issues.apache.org/jira/browse/HBASE-11728 Project: HBase Issue Type: Bug Affects Versions: 0.98.4, 0.96.1.1 Environment: ubuntu12 hadoop-2.2.0 Hbase-0.96.1.1 SUN-JDK(1.7.0_06-b24) Reporter: wuchengzhi
In Scan case, i prepare some data as beflow: Table Desc (Using the prefix-tree encoding) : 'prefix_tree_test', {NAME => 'cf_1', DATA_BLOCK_ENCODING => 'PREFIX_TREE', TTL => '15552000'} and i put 5 rows as: (RowKey , Qualifier, Value) 'a-b-0-0', 'qf_1', 'c1-value' 'a-b-A-1', 'qf_1', 'c1-value' 'a-b-A-1-1402329600-1402396277', 'qf_2', 'c2-value' 'a-b-A-1-1402397227-1402415999', 'qf_2', 'c2-value-2' 'a-b-B-2-1402397300-1402416535', 'qf_2', 'c2-value-3' so i try to scan the rowKey between 'a-b-A-1' and 'a-b-A-1:' , i and got the corret result: Test 1: Scan scan = new Scan(); scan.setStartRow("a-b-A-1".getBytes()); scan.setStopRow("a-b-A-1:".getBytes()); ------------------------------------------------------ 'a-b-A-1', 'qf_1', 'c1-value' 'a-b-A-1-1402329600-1402396277', 'qf_2', 'c2-value' 'a-b-A-1-1402397227-1402415999', 'qf_2', 'c2-value-2' and then i try next , scan to addColumn Test2: Scan scan = new Scan(); scan.addColumn(Bytes.toBytes("cf_1") , Bytes.toBytes("qf_2")); scan.setStartRow("a-b-A-1".getBytes()); scan.setStopRow("a-b-A-1:".getBytes()); ---------------------------------------------- except: 'a-b-A-1-1402329600-1402396277', 'qf_2', 'c2-value' 'a-b-A-1-1402397227-1402415999', 'qf_2', 'c2-value-2' but actually i got nonthing. Then i update the addColumn for scan.addColumn(Bytes.toBytes("cf_1") , Bytes.toBytes("qf_1")); and i got the expected result 'a-b-A-1', 'qf_1', 'c1-value' as well. then i do more testing... i update the case to modify the startRow greater than the 'a-b-A-1' Test3: Scan scan = new Scan(); scan.setStartRow("a-b-A-1-".getBytes()); scan.setStopRow("a-b-A-1:".getBytes()); ------------------------------------------------------ except: 'a-b-A-1-1402329600-1402396277', 'qf_2', 'c2-value' 'a-b-A-1-1402397227-1402415999', 'qf_2', 'c2-value-2' but actually i got nothing again. i modify the start row greater than 'a-b-A-1-1402329600-1402396277' Scan scan = new Scan(); scan.setStartRow("a-b-A-1-140239".getBytes()); scan.setStopRow("a-b-A-1:".getBytes()); and i got the expect row as well: 'a-b-A-1-1402397227-1402415999', 'qf_2', 'c2-value-2' So, i think it may be a bug in the prefix-tree encoding.It happens after the data flush to the storefile, and it's ok when the data in mem-store. -- This message was sent by Atlassian JIRA (v6.2#6252)