Shows reversed scanner also returns full rows even though max_bytes may be set.
()
| 2097 | |
| 2098 | /** Shows reversed scanner also returns full rows even though max_bytes may be set. */ |
| 2099 | @Test |
| 2100 | public void reverseScanMoreThanMaxBytes() throws Exception { |
| 2101 | client.setFlushInterval(FAST_FLUSH); |
| 2102 | String long_val = "long_str"; // 8 bytes + 1 digit gets added on input |
| 2103 | final PutRequest put1 = new PutRequest(table, "rsmb1", family, "q0", long_val+"0"); |
| 2104 | client.put(put1).join(); |
| 2105 | final PutRequest put2 = new PutRequest(table, "rsmb1", family, "q1", long_val+"1"); |
| 2106 | client.put(put2).join(); |
| 2107 | final PutRequest put3 = new PutRequest(table, "rsmb1", family, "q2", long_val+"2"); |
| 2108 | client.put(put3).join(); |
| 2109 | final PutRequest put4 = new PutRequest(table, "rsmb2", family, "q3", long_val+"3"); |
| 2110 | client.put(put4).join(); |
| 2111 | final PutRequest put5 = new PutRequest(table, "rsmb2", family, "q4", long_val+"4"); |
| 2112 | client.put(put5).join(); |
| 2113 | |
| 2114 | Scanner scanner = client.newScanner(table); |
| 2115 | scanner.setReversed(true); |
| 2116 | scanner.setMaxNumBytes(250); // 250 bytes limit |
| 2117 | scanner.setStartKey("rsmb2"); |
| 2118 | scanner.setStopKey("rsmb0"); |
| 2119 | |
| 2120 | // KeyValue size: key is 5 bytes + family: 1 + qualifier: 2 + value:9 + timestamp: 8 = 25 bytes |
| 2121 | // JVM adds around 40 bytes for each object so total is around 65 bytes |
| 2122 | ArrayList<ArrayList<KeyValue>> rows = scanner.nextRows().join(); |
| 2123 | scanner.close().join(); |
| 2124 | assertSizeIs(2, rows); |
| 2125 | // Even though 5 KVs is more than 250 bytes, we verify that HBase does not |
| 2126 | // truncate rows in the middle |
| 2127 | assertEq(long_val+"3", rows.get(0).get(0).value()); |
| 2128 | assertEq(long_val+"4", rows.get(0).get(1).value()); |
| 2129 | assertEq(long_val+"0", rows.get(1).get(0).value()); |
| 2130 | assertEq(long_val+"1", rows.get(1).get(1).value()); |
| 2131 | assertEq(long_val+"2", rows.get(1).get(2).value()); |
| 2132 | |
| 2133 | } |
| 2134 | |
| 2135 | /** |
| 2136 | * Set a max number of key values to be returned and verify that a reversed scanner |
nothing calls this directly
no test coverage detected