http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c91fafb4/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html
----------------------------------------------------------------------
diff --git
a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html
b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html
index 510e2ce..e89aec5 100644
---
a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html
+++
b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html
@@ -6425,290 +6425,297 @@
<span class="sourceLineNo">6417</span> int number =
((ConnectionImplementation)admin.getConnection())<a name="line.6417"></a>
<span class="sourceLineNo">6418</span>
.getNumberOfCachedRegionLocations(htd.getTableName());<a name="line.6418"></a>
<span class="sourceLineNo">6419</span> assertEquals(results.size(),
number);<a name="line.6419"></a>
-<span class="sourceLineNo">6420</span> }<a name="line.6420"></a>
-<span class="sourceLineNo">6421</span><a name="line.6421"></a>
-<span class="sourceLineNo">6422</span> @Test<a name="line.6422"></a>
-<span class="sourceLineNo">6423</span> public void testCellSizeLimit() throws
IOException {<a name="line.6423"></a>
-<span class="sourceLineNo">6424</span> final TableName tableName =
TableName.valueOf("testCellSizeLimit");<a name="line.6424"></a>
-<span class="sourceLineNo">6425</span> HTableDescriptor htd = new
HTableDescriptor(tableName);<a name="line.6425"></a>
-<span class="sourceLineNo">6426</span>
htd.setConfiguration(HRegion.HBASE_MAX_CELL_SIZE_KEY, Integer.toString(10 *
1024)); // 10K<a name="line.6426"></a>
-<span class="sourceLineNo">6427</span> HColumnDescriptor fam = new
HColumnDescriptor(FAMILY);<a name="line.6427"></a>
-<span class="sourceLineNo">6428</span> htd.addFamily(fam);<a
name="line.6428"></a>
-<span class="sourceLineNo">6429</span> Admin admin =
TEST_UTIL.getAdmin();<a name="line.6429"></a>
-<span class="sourceLineNo">6430</span> admin.createTable(htd);<a
name="line.6430"></a>
-<span class="sourceLineNo">6431</span> // Will succeed<a
name="line.6431"></a>
-<span class="sourceLineNo">6432</span> try (Table t =
TEST_UTIL.getConnection().getTable(tableName)) {<a name="line.6432"></a>
-<span class="sourceLineNo">6433</span> t.put(new
Put(ROW).addColumn(FAMILY, QUALIFIER, Bytes.toBytes(0L)));<a
name="line.6433"></a>
-<span class="sourceLineNo">6434</span> t.increment(new
Increment(ROW).addColumn(FAMILY, QUALIFIER, 1L));<a name="line.6434"></a>
-<span class="sourceLineNo">6435</span> }<a name="line.6435"></a>
-<span class="sourceLineNo">6436</span> // Will succeed<a
name="line.6436"></a>
-<span class="sourceLineNo">6437</span> try (Table t =
TEST_UTIL.getConnection().getTable(tableName)) {<a name="line.6437"></a>
-<span class="sourceLineNo">6438</span> t.put(new
Put(ROW).addColumn(FAMILY, QUALIFIER, new byte[9*1024]));<a
name="line.6438"></a>
-<span class="sourceLineNo">6439</span> }<a name="line.6439"></a>
-<span class="sourceLineNo">6440</span> // Will fail<a name="line.6440"></a>
-<span class="sourceLineNo">6441</span> try (Table t =
TEST_UTIL.getConnection().getTable(tableName)) {<a name="line.6441"></a>
-<span class="sourceLineNo">6442</span> try {<a name="line.6442"></a>
-<span class="sourceLineNo">6443</span> t.put(new
Put(ROW).addColumn(FAMILY, QUALIFIER, new byte[10 * 1024]));<a
name="line.6443"></a>
-<span class="sourceLineNo">6444</span> fail("Oversize cell failed to
trigger exception");<a name="line.6444"></a>
-<span class="sourceLineNo">6445</span> } catch (IOException e) {<a
name="line.6445"></a>
-<span class="sourceLineNo">6446</span> // expected<a
name="line.6446"></a>
-<span class="sourceLineNo">6447</span> }<a name="line.6447"></a>
-<span class="sourceLineNo">6448</span> try {<a name="line.6448"></a>
-<span class="sourceLineNo">6449</span> t.append(new
Append(ROW).addColumn(FAMILY, QUALIFIER, new byte[10 * 1024]));<a
name="line.6449"></a>
-<span class="sourceLineNo">6450</span> fail("Oversize cell failed to
trigger exception");<a name="line.6450"></a>
-<span class="sourceLineNo">6451</span> } catch (IOException e) {<a
name="line.6451"></a>
-<span class="sourceLineNo">6452</span> // expected<a
name="line.6452"></a>
-<span class="sourceLineNo">6453</span> }<a name="line.6453"></a>
-<span class="sourceLineNo">6454</span> }<a name="line.6454"></a>
-<span class="sourceLineNo">6455</span> }<a name="line.6455"></a>
-<span class="sourceLineNo">6456</span><a name="line.6456"></a>
-<span class="sourceLineNo">6457</span> @Test<a name="line.6457"></a>
-<span class="sourceLineNo">6458</span> public void
testDeleteSpecifiedVersionOfSpecifiedColumn() throws Exception {<a
name="line.6458"></a>
-<span class="sourceLineNo">6459</span> Admin admin =
TEST_UTIL.getAdmin();<a name="line.6459"></a>
-<span class="sourceLineNo">6460</span> final TableName tableName =
TableName.valueOf(name.getMethodName());<a name="line.6460"></a>
-<span class="sourceLineNo">6461</span><a name="line.6461"></a>
-<span class="sourceLineNo">6462</span> byte[][] VALUES = makeN(VALUE, 5);<a
name="line.6462"></a>
-<span class="sourceLineNo">6463</span> long[] ts = { 1000, 2000, 3000,
4000, 5000 };<a name="line.6463"></a>
-<span class="sourceLineNo">6464</span><a name="line.6464"></a>
-<span class="sourceLineNo">6465</span> Table ht =
TEST_UTIL.createTable(tableName, FAMILY, 5);<a name="line.6465"></a>
-<span class="sourceLineNo">6466</span><a name="line.6466"></a>
-<span class="sourceLineNo">6467</span> Put put = new Put(ROW);<a
name="line.6467"></a>
-<span class="sourceLineNo">6468</span> // Put version 1000,2000,3000,4000
of column FAMILY:QUALIFIER<a name="line.6468"></a>
-<span class="sourceLineNo">6469</span> for (int t = 0; t < 4; t++) {<a
name="line.6469"></a>
-<span class="sourceLineNo">6470</span> put.addColumn(FAMILY, QUALIFIER,
ts[t], VALUES[t]);<a name="line.6470"></a>
-<span class="sourceLineNo">6471</span> }<a name="line.6471"></a>
-<span class="sourceLineNo">6472</span> ht.put(put);<a name="line.6472"></a>
+<span class="sourceLineNo">6420</span> ConnectionImplementation conn =
((ConnectionImplementation)admin.getConnection());<a name="line.6420"></a>
+<span class="sourceLineNo">6421</span> assertNotNull("Can't get cached
location for row aaa",<a name="line.6421"></a>
+<span class="sourceLineNo">6422</span>
conn.getCachedLocation(htd.getTableName(),Bytes.toBytes("aaa")));<a
name="line.6422"></a>
+<span class="sourceLineNo">6423</span> for(byte[]
startKey:HBaseTestingUtility.KEYS_FOR_HBA_CREATE_TABLE){<a name="line.6423"></a>
+<span class="sourceLineNo">6424</span> assertNotNull("Can't get cached
location for row "+<a name="line.6424"></a>
+<span class="sourceLineNo">6425</span>
Bytes.toString(startKey),(conn.getCachedLocation(htd.getTableName(),startKey)));<a
name="line.6425"></a>
+<span class="sourceLineNo">6426</span> }<a name="line.6426"></a>
+<span class="sourceLineNo">6427</span> }<a name="line.6427"></a>
+<span class="sourceLineNo">6428</span><a name="line.6428"></a>
+<span class="sourceLineNo">6429</span> @Test<a name="line.6429"></a>
+<span class="sourceLineNo">6430</span> public void testCellSizeLimit() throws
IOException {<a name="line.6430"></a>
+<span class="sourceLineNo">6431</span> final TableName tableName =
TableName.valueOf("testCellSizeLimit");<a name="line.6431"></a>
+<span class="sourceLineNo">6432</span> HTableDescriptor htd = new
HTableDescriptor(tableName);<a name="line.6432"></a>
+<span class="sourceLineNo">6433</span>
htd.setConfiguration(HRegion.HBASE_MAX_CELL_SIZE_KEY, Integer.toString(10 *
1024)); // 10K<a name="line.6433"></a>
+<span class="sourceLineNo">6434</span> HColumnDescriptor fam = new
HColumnDescriptor(FAMILY);<a name="line.6434"></a>
+<span class="sourceLineNo">6435</span> htd.addFamily(fam);<a
name="line.6435"></a>
+<span class="sourceLineNo">6436</span> Admin admin =
TEST_UTIL.getAdmin();<a name="line.6436"></a>
+<span class="sourceLineNo">6437</span> admin.createTable(htd);<a
name="line.6437"></a>
+<span class="sourceLineNo">6438</span> // Will succeed<a
name="line.6438"></a>
+<span class="sourceLineNo">6439</span> try (Table t =
TEST_UTIL.getConnection().getTable(tableName)) {<a name="line.6439"></a>
+<span class="sourceLineNo">6440</span> t.put(new
Put(ROW).addColumn(FAMILY, QUALIFIER, Bytes.toBytes(0L)));<a
name="line.6440"></a>
+<span class="sourceLineNo">6441</span> t.increment(new
Increment(ROW).addColumn(FAMILY, QUALIFIER, 1L));<a name="line.6441"></a>
+<span class="sourceLineNo">6442</span> }<a name="line.6442"></a>
+<span class="sourceLineNo">6443</span> // Will succeed<a
name="line.6443"></a>
+<span class="sourceLineNo">6444</span> try (Table t =
TEST_UTIL.getConnection().getTable(tableName)) {<a name="line.6444"></a>
+<span class="sourceLineNo">6445</span> t.put(new
Put(ROW).addColumn(FAMILY, QUALIFIER, new byte[9*1024]));<a
name="line.6445"></a>
+<span class="sourceLineNo">6446</span> }<a name="line.6446"></a>
+<span class="sourceLineNo">6447</span> // Will fail<a name="line.6447"></a>
+<span class="sourceLineNo">6448</span> try (Table t =
TEST_UTIL.getConnection().getTable(tableName)) {<a name="line.6448"></a>
+<span class="sourceLineNo">6449</span> try {<a name="line.6449"></a>
+<span class="sourceLineNo">6450</span> t.put(new
Put(ROW).addColumn(FAMILY, QUALIFIER, new byte[10 * 1024]));<a
name="line.6450"></a>
+<span class="sourceLineNo">6451</span> fail("Oversize cell failed to
trigger exception");<a name="line.6451"></a>
+<span class="sourceLineNo">6452</span> } catch (IOException e) {<a
name="line.6452"></a>
+<span class="sourceLineNo">6453</span> // expected<a
name="line.6453"></a>
+<span class="sourceLineNo">6454</span> }<a name="line.6454"></a>
+<span class="sourceLineNo">6455</span> try {<a name="line.6455"></a>
+<span class="sourceLineNo">6456</span> t.append(new
Append(ROW).addColumn(FAMILY, QUALIFIER, new byte[10 * 1024]));<a
name="line.6456"></a>
+<span class="sourceLineNo">6457</span> fail("Oversize cell failed to
trigger exception");<a name="line.6457"></a>
+<span class="sourceLineNo">6458</span> } catch (IOException e) {<a
name="line.6458"></a>
+<span class="sourceLineNo">6459</span> // expected<a
name="line.6459"></a>
+<span class="sourceLineNo">6460</span> }<a name="line.6460"></a>
+<span class="sourceLineNo">6461</span> }<a name="line.6461"></a>
+<span class="sourceLineNo">6462</span> }<a name="line.6462"></a>
+<span class="sourceLineNo">6463</span><a name="line.6463"></a>
+<span class="sourceLineNo">6464</span> @Test<a name="line.6464"></a>
+<span class="sourceLineNo">6465</span> public void
testDeleteSpecifiedVersionOfSpecifiedColumn() throws Exception {<a
name="line.6465"></a>
+<span class="sourceLineNo">6466</span> Admin admin =
TEST_UTIL.getAdmin();<a name="line.6466"></a>
+<span class="sourceLineNo">6467</span> final TableName tableName =
TableName.valueOf(name.getMethodName());<a name="line.6467"></a>
+<span class="sourceLineNo">6468</span><a name="line.6468"></a>
+<span class="sourceLineNo">6469</span> byte[][] VALUES = makeN(VALUE, 5);<a
name="line.6469"></a>
+<span class="sourceLineNo">6470</span> long[] ts = { 1000, 2000, 3000,
4000, 5000 };<a name="line.6470"></a>
+<span class="sourceLineNo">6471</span><a name="line.6471"></a>
+<span class="sourceLineNo">6472</span> Table ht =
TEST_UTIL.createTable(tableName, FAMILY, 5);<a name="line.6472"></a>
<span class="sourceLineNo">6473</span><a name="line.6473"></a>
-<span class="sourceLineNo">6474</span> Delete delete = new Delete(ROW);<a
name="line.6474"></a>
-<span class="sourceLineNo">6475</span> // Delete version 3000 of column
FAMILY:QUALIFIER<a name="line.6475"></a>
-<span class="sourceLineNo">6476</span> delete.addColumn(FAMILY, QUALIFIER,
ts[2]);<a name="line.6476"></a>
-<span class="sourceLineNo">6477</span> ht.delete(delete);<a
name="line.6477"></a>
-<span class="sourceLineNo">6478</span><a name="line.6478"></a>
-<span class="sourceLineNo">6479</span> Get get = new Get(ROW);<a
name="line.6479"></a>
-<span class="sourceLineNo">6480</span> get.addColumn(FAMILY, QUALIFIER);<a
name="line.6480"></a>
-<span class="sourceLineNo">6481</span>
get.setMaxVersions(Integer.MAX_VALUE);<a name="line.6481"></a>
-<span class="sourceLineNo">6482</span> Result result = ht.get(get);<a
name="line.6482"></a>
-<span class="sourceLineNo">6483</span> // verify version 1000,2000,4000
remains for column FAMILY:QUALIFIER<a name="line.6483"></a>
-<span class="sourceLineNo">6484</span> assertNResult(result, ROW, FAMILY,
QUALIFIER, new long[] { ts[0], ts[1], ts[3] }, new byte[][] {<a
name="line.6484"></a>
-<span class="sourceLineNo">6485</span> VALUES[0], VALUES[1], VALUES[3]
}, 0, 2);<a name="line.6485"></a>
-<span class="sourceLineNo">6486</span><a name="line.6486"></a>
-<span class="sourceLineNo">6487</span> delete = new Delete(ROW);<a
name="line.6487"></a>
-<span class="sourceLineNo">6488</span> // Delete a version 5000 of column
FAMILY:QUALIFIER which didn't exist<a name="line.6488"></a>
-<span class="sourceLineNo">6489</span> delete.addColumn(FAMILY, QUALIFIER,
ts[4]);<a name="line.6489"></a>
-<span class="sourceLineNo">6490</span> ht.delete(delete);<a
name="line.6490"></a>
-<span class="sourceLineNo">6491</span><a name="line.6491"></a>
-<span class="sourceLineNo">6492</span> get = new Get(ROW);<a
name="line.6492"></a>
-<span class="sourceLineNo">6493</span> get.addColumn(FAMILY, QUALIFIER);<a
name="line.6493"></a>
-<span class="sourceLineNo">6494</span>
get.setMaxVersions(Integer.MAX_VALUE);<a name="line.6494"></a>
-<span class="sourceLineNo">6495</span> result = ht.get(get);<a
name="line.6495"></a>
-<span class="sourceLineNo">6496</span> // verify version 1000,2000,4000
remains for column FAMILY:QUALIFIER<a name="line.6496"></a>
-<span class="sourceLineNo">6497</span> assertNResult(result, ROW, FAMILY,
QUALIFIER, new long[] { ts[0], ts[1], ts[3] }, new byte[][] {<a
name="line.6497"></a>
-<span class="sourceLineNo">6498</span> VALUES[0], VALUES[1], VALUES[3]
}, 0, 2);<a name="line.6498"></a>
-<span class="sourceLineNo">6499</span><a name="line.6499"></a>
-<span class="sourceLineNo">6500</span> ht.close();<a name="line.6500"></a>
-<span class="sourceLineNo">6501</span> admin.close();<a
name="line.6501"></a>
-<span class="sourceLineNo">6502</span> }<a name="line.6502"></a>
-<span class="sourceLineNo">6503</span><a name="line.6503"></a>
-<span class="sourceLineNo">6504</span> @Test<a name="line.6504"></a>
-<span class="sourceLineNo">6505</span> public void
testDeleteLatestVersionOfSpecifiedColumn() throws Exception {<a
name="line.6505"></a>
-<span class="sourceLineNo">6506</span> Admin admin =
TEST_UTIL.getAdmin();<a name="line.6506"></a>
-<span class="sourceLineNo">6507</span> final TableName tableName =
TableName.valueOf(name.getMethodName());<a name="line.6507"></a>
-<span class="sourceLineNo">6508</span><a name="line.6508"></a>
-<span class="sourceLineNo">6509</span> byte[][] VALUES = makeN(VALUE, 5);<a
name="line.6509"></a>
-<span class="sourceLineNo">6510</span> long[] ts = { 1000, 2000, 3000,
4000, 5000 };<a name="line.6510"></a>
-<span class="sourceLineNo">6511</span><a name="line.6511"></a>
-<span class="sourceLineNo">6512</span> Table ht =
TEST_UTIL.createTable(tableName, FAMILY, 5);<a name="line.6512"></a>
-<span class="sourceLineNo">6513</span><a name="line.6513"></a>
-<span class="sourceLineNo">6514</span> Put put = new Put(ROW);<a
name="line.6514"></a>
-<span class="sourceLineNo">6515</span> // Put version 1000,2000,3000,4000
of column FAMILY:QUALIFIER<a name="line.6515"></a>
-<span class="sourceLineNo">6516</span> for (int t = 0; t < 4; t++) {<a
name="line.6516"></a>
-<span class="sourceLineNo">6517</span> put.addColumn(FAMILY, QUALIFIER,
ts[t], VALUES[t]);<a name="line.6517"></a>
-<span class="sourceLineNo">6518</span> }<a name="line.6518"></a>
-<span class="sourceLineNo">6519</span> ht.put(put);<a name="line.6519"></a>
+<span class="sourceLineNo">6474</span> Put put = new Put(ROW);<a
name="line.6474"></a>
+<span class="sourceLineNo">6475</span> // Put version 1000,2000,3000,4000
of column FAMILY:QUALIFIER<a name="line.6475"></a>
+<span class="sourceLineNo">6476</span> for (int t = 0; t < 4; t++) {<a
name="line.6476"></a>
+<span class="sourceLineNo">6477</span> put.addColumn(FAMILY, QUALIFIER,
ts[t], VALUES[t]);<a name="line.6477"></a>
+<span class="sourceLineNo">6478</span> }<a name="line.6478"></a>
+<span class="sourceLineNo">6479</span> ht.put(put);<a name="line.6479"></a>
+<span class="sourceLineNo">6480</span><a name="line.6480"></a>
+<span class="sourceLineNo">6481</span> Delete delete = new Delete(ROW);<a
name="line.6481"></a>
+<span class="sourceLineNo">6482</span> // Delete version 3000 of column
FAMILY:QUALIFIER<a name="line.6482"></a>
+<span class="sourceLineNo">6483</span> delete.addColumn(FAMILY, QUALIFIER,
ts[2]);<a name="line.6483"></a>
+<span class="sourceLineNo">6484</span> ht.delete(delete);<a
name="line.6484"></a>
+<span class="sourceLineNo">6485</span><a name="line.6485"></a>
+<span class="sourceLineNo">6486</span> Get get = new Get(ROW);<a
name="line.6486"></a>
+<span class="sourceLineNo">6487</span> get.addColumn(FAMILY, QUALIFIER);<a
name="line.6487"></a>
+<span class="sourceLineNo">6488</span>
get.setMaxVersions(Integer.MAX_VALUE);<a name="line.6488"></a>
+<span class="sourceLineNo">6489</span> Result result = ht.get(get);<a
name="line.6489"></a>
+<span class="sourceLineNo">6490</span> // verify version 1000,2000,4000
remains for column FAMILY:QUALIFIER<a name="line.6490"></a>
+<span class="sourceLineNo">6491</span> assertNResult(result, ROW, FAMILY,
QUALIFIER, new long[] { ts[0], ts[1], ts[3] }, new byte[][] {<a
name="line.6491"></a>
+<span class="sourceLineNo">6492</span> VALUES[0], VALUES[1], VALUES[3]
}, 0, 2);<a name="line.6492"></a>
+<span class="sourceLineNo">6493</span><a name="line.6493"></a>
+<span class="sourceLineNo">6494</span> delete = new Delete(ROW);<a
name="line.6494"></a>
+<span class="sourceLineNo">6495</span> // Delete a version 5000 of column
FAMILY:QUALIFIER which didn't exist<a name="line.6495"></a>
+<span class="sourceLineNo">6496</span> delete.addColumn(FAMILY, QUALIFIER,
ts[4]);<a name="line.6496"></a>
+<span class="sourceLineNo">6497</span> ht.delete(delete);<a
name="line.6497"></a>
+<span class="sourceLineNo">6498</span><a name="line.6498"></a>
+<span class="sourceLineNo">6499</span> get = new Get(ROW);<a
name="line.6499"></a>
+<span class="sourceLineNo">6500</span> get.addColumn(FAMILY, QUALIFIER);<a
name="line.6500"></a>
+<span class="sourceLineNo">6501</span>
get.setMaxVersions(Integer.MAX_VALUE);<a name="line.6501"></a>
+<span class="sourceLineNo">6502</span> result = ht.get(get);<a
name="line.6502"></a>
+<span class="sourceLineNo">6503</span> // verify version 1000,2000,4000
remains for column FAMILY:QUALIFIER<a name="line.6503"></a>
+<span class="sourceLineNo">6504</span> assertNResult(result, ROW, FAMILY,
QUALIFIER, new long[] { ts[0], ts[1], ts[3] }, new byte[][] {<a
name="line.6504"></a>
+<span class="sourceLineNo">6505</span> VALUES[0], VALUES[1], VALUES[3]
}, 0, 2);<a name="line.6505"></a>
+<span class="sourceLineNo">6506</span><a name="line.6506"></a>
+<span class="sourceLineNo">6507</span> ht.close();<a name="line.6507"></a>
+<span class="sourceLineNo">6508</span> admin.close();<a
name="line.6508"></a>
+<span class="sourceLineNo">6509</span> }<a name="line.6509"></a>
+<span class="sourceLineNo">6510</span><a name="line.6510"></a>
+<span class="sourceLineNo">6511</span> @Test<a name="line.6511"></a>
+<span class="sourceLineNo">6512</span> public void
testDeleteLatestVersionOfSpecifiedColumn() throws Exception {<a
name="line.6512"></a>
+<span class="sourceLineNo">6513</span> Admin admin =
TEST_UTIL.getAdmin();<a name="line.6513"></a>
+<span class="sourceLineNo">6514</span> final TableName tableName =
TableName.valueOf(name.getMethodName());<a name="line.6514"></a>
+<span class="sourceLineNo">6515</span><a name="line.6515"></a>
+<span class="sourceLineNo">6516</span> byte[][] VALUES = makeN(VALUE, 5);<a
name="line.6516"></a>
+<span class="sourceLineNo">6517</span> long[] ts = { 1000, 2000, 3000,
4000, 5000 };<a name="line.6517"></a>
+<span class="sourceLineNo">6518</span><a name="line.6518"></a>
+<span class="sourceLineNo">6519</span> Table ht =
TEST_UTIL.createTable(tableName, FAMILY, 5);<a name="line.6519"></a>
<span class="sourceLineNo">6520</span><a name="line.6520"></a>
-<span class="sourceLineNo">6521</span> Delete delete = new Delete(ROW);<a
name="line.6521"></a>
-<span class="sourceLineNo">6522</span> // Delete latest version of column
FAMILY:QUALIFIER<a name="line.6522"></a>
-<span class="sourceLineNo">6523</span> delete.addColumn(FAMILY,
QUALIFIER);<a name="line.6523"></a>
-<span class="sourceLineNo">6524</span> ht.delete(delete);<a
name="line.6524"></a>
-<span class="sourceLineNo">6525</span><a name="line.6525"></a>
-<span class="sourceLineNo">6526</span> Get get = new Get(ROW);<a
name="line.6526"></a>
-<span class="sourceLineNo">6527</span> get.addColumn(FAMILY, QUALIFIER);<a
name="line.6527"></a>
-<span class="sourceLineNo">6528</span>
get.setMaxVersions(Integer.MAX_VALUE);<a name="line.6528"></a>
-<span class="sourceLineNo">6529</span> Result result = ht.get(get);<a
name="line.6529"></a>
-<span class="sourceLineNo">6530</span> // verify version 1000,2000,3000
remains for column FAMILY:QUALIFIER<a name="line.6530"></a>
-<span class="sourceLineNo">6531</span> assertNResult(result, ROW, FAMILY,
QUALIFIER, new long[] { ts[0], ts[1], ts[2] }, new byte[][] {<a
name="line.6531"></a>
-<span class="sourceLineNo">6532</span> VALUES[0], VALUES[1], VALUES[2]
}, 0, 2);<a name="line.6532"></a>
-<span class="sourceLineNo">6533</span><a name="line.6533"></a>
-<span class="sourceLineNo">6534</span> delete = new Delete(ROW);<a
name="line.6534"></a>
-<span class="sourceLineNo">6535</span> // Delete two latest version of
column FAMILY:QUALIFIER<a name="line.6535"></a>
-<span class="sourceLineNo">6536</span> delete.addColumn(FAMILY,
QUALIFIER);<a name="line.6536"></a>
-<span class="sourceLineNo">6537</span> delete.addColumn(FAMILY,
QUALIFIER);<a name="line.6537"></a>
-<span class="sourceLineNo">6538</span> ht.delete(delete);<a
name="line.6538"></a>
-<span class="sourceLineNo">6539</span><a name="line.6539"></a>
-<span class="sourceLineNo">6540</span> get = new Get(ROW);<a
name="line.6540"></a>
-<span class="sourceLineNo">6541</span> get.addColumn(FAMILY, QUALIFIER);<a
name="line.6541"></a>
-<span class="sourceLineNo">6542</span>
get.setMaxVersions(Integer.MAX_VALUE);<a name="line.6542"></a>
-<span class="sourceLineNo">6543</span> result = ht.get(get);<a
name="line.6543"></a>
-<span class="sourceLineNo">6544</span> // verify version 1000 remains for
column FAMILY:QUALIFIER<a name="line.6544"></a>
-<span class="sourceLineNo">6545</span> assertNResult(result, ROW, FAMILY,
QUALIFIER, new long[] { ts[0] }, new byte[][] { VALUES[0] },<a
name="line.6545"></a>
-<span class="sourceLineNo">6546</span> 0, 0);<a name="line.6546"></a>
-<span class="sourceLineNo">6547</span><a name="line.6547"></a>
-<span class="sourceLineNo">6548</span> put = new Put(ROW);<a
name="line.6548"></a>
-<span class="sourceLineNo">6549</span> // Put a version 5000 of column
FAMILY:QUALIFIER<a name="line.6549"></a>
-<span class="sourceLineNo">6550</span> put.addColumn(FAMILY, QUALIFIER,
ts[4], VALUES[4]);<a name="line.6550"></a>
-<span class="sourceLineNo">6551</span> ht.put(put);<a name="line.6551"></a>
-<span class="sourceLineNo">6552</span><a name="line.6552"></a>
-<span class="sourceLineNo">6553</span> get = new Get(ROW);<a
name="line.6553"></a>
-<span class="sourceLineNo">6554</span> get.addColumn(FAMILY, QUALIFIER);<a
name="line.6554"></a>
-<span class="sourceLineNo">6555</span>
get.setMaxVersions(Integer.MAX_VALUE);<a name="line.6555"></a>
-<span class="sourceLineNo">6556</span> result = ht.get(get);<a
name="line.6556"></a>
-<span class="sourceLineNo">6557</span> // verify version 1000,5000 remains
for column FAMILY:QUALIFIER<a name="line.6557"></a>
-<span class="sourceLineNo">6558</span> assertNResult(result, ROW, FAMILY,
QUALIFIER, new long[] { ts[0], ts[4] }, new byte[][] {<a name="line.6558"></a>
-<span class="sourceLineNo">6559</span> VALUES[0], VALUES[4] }, 0, 1);<a
name="line.6559"></a>
-<span class="sourceLineNo">6560</span><a name="line.6560"></a>
-<span class="sourceLineNo">6561</span> ht.close();<a name="line.6561"></a>
-<span class="sourceLineNo">6562</span> admin.close();<a
name="line.6562"></a>
-<span class="sourceLineNo">6563</span> }<a name="line.6563"></a>
-<span class="sourceLineNo">6564</span><a name="line.6564"></a>
-<span class="sourceLineNo">6565</span> /**<a name="line.6565"></a>
-<span class="sourceLineNo">6566</span> * Test for HBASE-17125<a
name="line.6566"></a>
-<span class="sourceLineNo">6567</span> */<a name="line.6567"></a>
-<span class="sourceLineNo">6568</span> @Test<a name="line.6568"></a>
-<span class="sourceLineNo">6569</span> public void testReadWithFilter()
throws Exception {<a name="line.6569"></a>
-<span class="sourceLineNo">6570</span> Admin admin =
TEST_UTIL.getAdmin();<a name="line.6570"></a>
-<span class="sourceLineNo">6571</span> final TableName tableName =
TableName.valueOf(name.getMethodName());<a name="line.6571"></a>
-<span class="sourceLineNo">6572</span> Table table =
TEST_UTIL.createTable(tableName, FAMILY, 3);<a name="line.6572"></a>
-<span class="sourceLineNo">6573</span><a name="line.6573"></a>
-<span class="sourceLineNo">6574</span> byte[] VALUEA =
Bytes.toBytes("value-a");<a name="line.6574"></a>
-<span class="sourceLineNo">6575</span> byte[] VALUEB =
Bytes.toBytes("value-b");<a name="line.6575"></a>
-<span class="sourceLineNo">6576</span> long[] ts = { 1000, 2000, 3000, 4000
};<a name="line.6576"></a>
-<span class="sourceLineNo">6577</span><a name="line.6577"></a>
-<span class="sourceLineNo">6578</span> Put put = new Put(ROW);<a
name="line.6578"></a>
-<span class="sourceLineNo">6579</span> // Put version 1000,2000,3000,4000
of column FAMILY:QUALIFIER<a name="line.6579"></a>
-<span class="sourceLineNo">6580</span> for (int t = 0; t <= 3; t++) {<a
name="line.6580"></a>
-<span class="sourceLineNo">6581</span> if (t <= 1) {<a
name="line.6581"></a>
-<span class="sourceLineNo">6582</span> put.addColumn(FAMILY, QUALIFIER,
ts[t], VALUEA);<a name="line.6582"></a>
-<span class="sourceLineNo">6583</span> } else {<a name="line.6583"></a>
-<span class="sourceLineNo">6584</span> put.addColumn(FAMILY, QUALIFIER,
ts[t], VALUEB);<a name="line.6584"></a>
-<span class="sourceLineNo">6585</span> }<a name="line.6585"></a>
-<span class="sourceLineNo">6586</span> }<a name="line.6586"></a>
-<span class="sourceLineNo">6587</span> table.put(put);<a
name="line.6587"></a>
-<span class="sourceLineNo">6588</span><a name="line.6588"></a>
-<span class="sourceLineNo">6589</span> Scan scan =<a name="line.6589"></a>
-<span class="sourceLineNo">6590</span> new Scan().setFilter(new
ValueFilter(CompareOperator.EQUAL, new SubstringComparator("value-a")))<a
name="line.6590"></a>
-<span class="sourceLineNo">6591</span> .setMaxVersions(3);<a
name="line.6591"></a>
-<span class="sourceLineNo">6592</span> ResultScanner scanner =
table.getScanner(scan);<a name="line.6592"></a>
-<span class="sourceLineNo">6593</span> Result result = scanner.next();<a
name="line.6593"></a>
-<span class="sourceLineNo">6594</span> // ts[0] has gone from user view.
Only read ts[2] which value is less or equal to 3<a name="line.6594"></a>
-<span class="sourceLineNo">6595</span> assertNResult(result, ROW, FAMILY,
QUALIFIER, new long[] { ts[1] }, new byte[][] { VALUEA }, 0,<a
name="line.6595"></a>
-<span class="sourceLineNo">6596</span> 0);<a name="line.6596"></a>
-<span class="sourceLineNo">6597</span><a name="line.6597"></a>
-<span class="sourceLineNo">6598</span> Get get =<a name="line.6598"></a>
-<span class="sourceLineNo">6599</span> new Get(ROW)<a
name="line.6599"></a>
-<span class="sourceLineNo">6600</span> .setFilter(new
ValueFilter(CompareOperator.EQUAL, new SubstringComparator("value-a")))<a
name="line.6600"></a>
-<span class="sourceLineNo">6601</span> .setMaxVersions(3);<a
name="line.6601"></a>
-<span class="sourceLineNo">6602</span> result = table.get(get);<a
name="line.6602"></a>
-<span class="sourceLineNo">6603</span> // ts[0] has gone from user view.
Only read ts[2] which value is less or equal to 3<a name="line.6603"></a>
-<span class="sourceLineNo">6604</span> assertNResult(result, ROW, FAMILY,
QUALIFIER, new long[] { ts[1] }, new byte[][] { VALUEA }, 0,<a
name="line.6604"></a>
-<span class="sourceLineNo">6605</span> 0);<a name="line.6605"></a>
-<span class="sourceLineNo">6606</span><a name="line.6606"></a>
-<span class="sourceLineNo">6607</span> // Test with max versions 1, it
should still read ts[1]<a name="line.6607"></a>
-<span class="sourceLineNo">6608</span> scan =<a name="line.6608"></a>
-<span class="sourceLineNo">6609</span> new Scan().setFilter(new
ValueFilter(CompareOperator.EQUAL, new SubstringComparator("value-a")))<a
name="line.6609"></a>
-<span class="sourceLineNo">6610</span> .setMaxVersions(1);<a
name="line.6610"></a>
-<span class="sourceLineNo">6611</span> scanner = table.getScanner(scan);<a
name="line.6611"></a>
-<span class="sourceLineNo">6612</span> result = scanner.next();<a
name="line.6612"></a>
-<span class="sourceLineNo">6613</span> // ts[0] has gone from user view.
Only read ts[2] which value is less or equal to 3<a name="line.6613"></a>
-<span class="sourceLineNo">6614</span> assertNResult(result, ROW, FAMILY,
QUALIFIER, new long[] { ts[1] }, new byte[][] { VALUEA }, 0,<a
name="line.6614"></a>
-<span class="sourceLineNo">6615</span> 0);<a name="line.6615"></a>
-<span class="sourceLineNo">6616</span><a name="line.6616"></a>
-<span class="sourceLineNo">6617</span> // Test with max versions 1, it
should still read ts[1]<a name="line.6617"></a>
-<span class="sourceLineNo">6618</span> get =<a name="line.6618"></a>
-<span class="sourceLineNo">6619</span> new Get(ROW)<a
name="line.6619"></a>
-<span class="sourceLineNo">6620</span> .setFilter(new
ValueFilter(CompareOperator.EQUAL, new SubstringComparator("value-a")))<a
name="line.6620"></a>
-<span class="sourceLineNo">6621</span> .setMaxVersions(1);<a
name="line.6621"></a>
-<span class="sourceLineNo">6622</span> result = table.get(get);<a
name="line.6622"></a>
-<span class="sourceLineNo">6623</span> // ts[0] has gone from user view.
Only read ts[2] which value is less or equal to 3<a name="line.6623"></a>
-<span class="sourceLineNo">6624</span> assertNResult(result, ROW, FAMILY,
QUALIFIER, new long[] { ts[1] }, new byte[][] { VALUEA }, 0,<a
name="line.6624"></a>
-<span class="sourceLineNo">6625</span> 0);<a name="line.6625"></a>
-<span class="sourceLineNo">6626</span><a name="line.6626"></a>
-<span class="sourceLineNo">6627</span> // Test with max versions 5, it
should still read ts[1]<a name="line.6627"></a>
-<span class="sourceLineNo">6628</span> scan =<a name="line.6628"></a>
-<span class="sourceLineNo">6629</span> new Scan().setFilter(new
ValueFilter(CompareOperator.EQUAL, new SubstringComparator("value-a")))<a
name="line.6629"></a>
-<span class="sourceLineNo">6630</span> .setMaxVersions(5);<a
name="line.6630"></a>
-<span class="sourceLineNo">6631</span> scanner = table.getScanner(scan);<a
name="line.6631"></a>
-<span class="sourceLineNo">6632</span> result = scanner.next();<a
name="line.6632"></a>
-<span class="sourceLineNo">6633</span> // ts[0] has gone from user view.
Only read ts[2] which value is less or equal to 3<a name="line.6633"></a>
-<span class="sourceLineNo">6634</span> assertNResult(result, ROW, FAMILY,
QUALIFIER, new long[] { ts[1] }, new byte[][] { VALUEA }, 0,<a
name="line.6634"></a>
-<span class="sourceLineNo">6635</span> 0);<a name="line.6635"></a>
-<span class="sourceLineNo">6636</span><a name="line.6636"></a>
-<span class="sourceLineNo">6637</span> // Test with max versions 5, it
should still read ts[1]<a name="line.6637"></a>
-<span class="sourceLineNo">6638</span> get =<a name="line.6638"></a>
-<span class="sourceLineNo">6639</span> new Get(ROW)<a
name="line.6639"></a>
-<span class="sourceLineNo">6640</span> .setFilter(new
ValueFilter(CompareOperator.EQUAL, new SubstringComparator("value-a")))<a
name="line.6640"></a>
-<span class="sourceLineNo">6641</span> .setMaxVersions(5);<a
name="line.6641"></a>
-<span class="sourceLineNo">6642</span> result = table.get(get);<a
name="line.6642"></a>
-<span class="sourceLineNo">6643</span> // ts[0] has gone from user view.
Only read ts[2] which value is less or equal to 3<a name="line.6643"></a>
-<span class="sourceLineNo">6644</span> assertNResult(result, ROW, FAMILY,
QUALIFIER, new long[] { ts[1] }, new byte[][] { VALUEA }, 0,<a
name="line.6644"></a>
-<span class="sourceLineNo">6645</span> 0);<a name="line.6645"></a>
-<span class="sourceLineNo">6646</span><a name="line.6646"></a>
-<span class="sourceLineNo">6647</span> table.close();<a
name="line.6647"></a>
-<span class="sourceLineNo">6648</span> admin.close();<a
name="line.6648"></a>
-<span class="sourceLineNo">6649</span> }<a name="line.6649"></a>
-<span class="sourceLineNo">6650</span><a name="line.6650"></a>
-<span class="sourceLineNo">6651</span> @Test<a name="line.6651"></a>
-<span class="sourceLineNo">6652</span> public void testCellUtilTypeMethods()
throws IOException {<a name="line.6652"></a>
-<span class="sourceLineNo">6653</span> final TableName tableName =
TableName.valueOf(name.getMethodName());<a name="line.6653"></a>
-<span class="sourceLineNo">6654</span> Table table =
TEST_UTIL.createTable(tableName, FAMILY);<a name="line.6654"></a>
-<span class="sourceLineNo">6655</span><a name="line.6655"></a>
-<span class="sourceLineNo">6656</span> final byte[] row =
Bytes.toBytes("p");<a name="line.6656"></a>
-<span class="sourceLineNo">6657</span> Put p = new Put(row);<a
name="line.6657"></a>
-<span class="sourceLineNo">6658</span> p.addColumn(FAMILY, QUALIFIER,
VALUE);<a name="line.6658"></a>
-<span class="sourceLineNo">6659</span> table.put(p);<a name="line.6659"></a>
-<span class="sourceLineNo">6660</span><a name="line.6660"></a>
-<span class="sourceLineNo">6661</span> try (ResultScanner scanner =
table.getScanner(new Scan())) {<a name="line.6661"></a>
-<span class="sourceLineNo">6662</span> Result result = scanner.next();<a
name="line.6662"></a>
-<span class="sourceLineNo">6663</span> assertNotNull(result);<a
name="line.6663"></a>
-<span class="sourceLineNo">6664</span> CellScanner cs =
result.cellScanner();<a name="line.6664"></a>
-<span class="sourceLineNo">6665</span> assertTrue(cs.advance());<a
name="line.6665"></a>
-<span class="sourceLineNo">6666</span> Cell c = cs.current();<a
name="line.6666"></a>
-<span class="sourceLineNo">6667</span> assertTrue(CellUtil.isPut(c));<a
name="line.6667"></a>
-<span class="sourceLineNo">6668</span>
assertFalse(CellUtil.isDelete(c));<a name="line.6668"></a>
-<span class="sourceLineNo">6669</span> assertFalse(cs.advance());<a
name="line.6669"></a>
-<span class="sourceLineNo">6670</span> assertNull(scanner.next());<a
name="line.6670"></a>
-<span class="sourceLineNo">6671</span> }<a name="line.6671"></a>
-<span class="sourceLineNo">6672</span><a name="line.6672"></a>
-<span class="sourceLineNo">6673</span> Delete d = new Delete(row);<a
name="line.6673"></a>
-<span class="sourceLineNo">6674</span> d.addColumn(FAMILY, QUALIFIER);<a
name="line.6674"></a>
-<span class="sourceLineNo">6675</span> table.delete(d);<a
name="line.6675"></a>
-<span class="sourceLineNo">6676</span><a name="line.6676"></a>
-<span class="sourceLineNo">6677</span> Scan scan = new Scan();<a
name="line.6677"></a>
-<span class="sourceLineNo">6678</span> scan.setRaw(true);<a
name="line.6678"></a>
-<span class="sourceLineNo">6679</span> try (ResultScanner scanner =
table.getScanner(scan)) {<a name="line.6679"></a>
-<span class="sourceLineNo">6680</span> Result result = scanner.next();<a
name="line.6680"></a>
-<span class="sourceLineNo">6681</span> assertNotNull(result);<a
name="line.6681"></a>
-<span class="sourceLineNo">6682</span> CellScanner cs =
result.cellScanner();<a name="line.6682"></a>
-<span class="sourceLineNo">6683</span> assertTrue(cs.advance());<a
name="line.6683"></a>
-<span class="sourceLineNo">6684</span><a name="line.6684"></a>
-<span class="sourceLineNo">6685</span> // First cell should be the delete
(masking the Put)<a name="line.6685"></a>
-<span class="sourceLineNo">6686</span> Cell c = cs.current();<a
name="line.6686"></a>
-<span class="sourceLineNo">6687</span> assertTrue("Cell should be a
Delete: " + c, CellUtil.isDelete(c));<a name="line.6687"></a>
-<span class="sourceLineNo">6688</span> assertFalse("Cell should not be a
Put: " + c, CellUtil.isPut(c));<a name="line.6688"></a>
-<span class="sourceLineNo">6689</span><a name="line.6689"></a>
-<span class="sourceLineNo">6690</span> // Second cell should be the
original Put<a name="line.6690"></a>
-<span class="sourceLineNo">6691</span> assertTrue(cs.advance());<a
name="line.6691"></a>
-<span class="sourceLineNo">6692</span> c = cs.current();<a
name="line.6692"></a>
-<span class="sourceLineNo">6693</span> assertFalse("Cell should not be a
Delete: " + c, CellUtil.isDelete(c));<a name="line.6693"></a>
-<span class="sourceLineNo">6694</span> assertTrue("Cell should be a Put:
" + c, CellUtil.isPut(c));<a name="line.6694"></a>
-<span class="sourceLineNo">6695</span><a name="line.6695"></a>
-<span class="sourceLineNo">6696</span> // No more cells in this row<a
name="line.6696"></a>
-<span class="sourceLineNo">6697</span> assertFalse(cs.advance());<a
name="line.6697"></a>
-<span class="sourceLineNo">6698</span><a name="line.6698"></a>
-<span class="sourceLineNo">6699</span> // No more results in this scan<a
name="line.6699"></a>
-<span class="sourceLineNo">6700</span> assertNull(scanner.next());<a
name="line.6700"></a>
-<span class="sourceLineNo">6701</span> }<a name="line.6701"></a>
-<span class="sourceLineNo">6702</span> }<a name="line.6702"></a>
-<span class="sourceLineNo">6703</span>}<a name="line.6703"></a>
+<span class="sourceLineNo">6521</span> Put put = new Put(ROW);<a
name="line.6521"></a>
+<span class="sourceLineNo">6522</span> // Put version 1000,2000,3000,4000
of column FAMILY:QUALIFIER<a name="line.6522"></a>
+<span class="sourceLineNo">6523</span> for (int t = 0; t < 4; t++) {<a
name="line.6523"></a>
+<span class="sourceLineNo">6524</span> put.addColumn(FAMILY, QUALIFIER,
ts[t], VALUES[t]);<a name="line.6524"></a>
+<span class="sourceLineNo">6525</span> }<a name="line.6525"></a>
+<span class="sourceLineNo">6526</span> ht.put(put);<a name="line.6526"></a>
+<span class="sourceLineNo">6527</span><a name="line.6527"></a>
+<span class="sourceLineNo">6528</span> Delete delete = new Delete(ROW);<a
name="line.6528"></a>
+<span class="sourceLineNo">6529</span> // Delete latest version of column
FAMILY:QUALIFIER<a name="line.6529"></a>
+<span class="sourceLineNo">6530</span> delete.addColumn(FAMILY,
QUALIFIER);<a name="line.6530"></a>
+<span class="sourceLineNo">6531</span> ht.delete(delete);<a
name="line.6531"></a>
+<span class="sourceLineNo">6532</span><a name="line.6532"></a>
+<span class="sourceLineNo">6533</span> Get get = new Get(ROW);<a
name="line.6533"></a>
+<span class="sourceLineNo">6534</span> get.addColumn(FAMILY, QUALIFIER);<a
name="line.6534"></a>
+<span class="sourceLineNo">6535</span>
get.setMaxVersions(Integer.MAX_VALUE);<a name="line.6535"></a>
+<span class="sourceLineNo">6536</span> Result result = ht.get(get);<a
name="line.6536"></a>
+<span class="sourceLineNo">6537</span> // verify version 1000,2000,3000
remains for column FAMILY:QUALIFIER<a name="line.6537"></a>
+<span class="sourceLineNo">6538</span> assertNResult(result, ROW, FAMILY,
QUALIFIER, new long[] { ts[0], ts[1], ts[2] }, new byte[][] {<a
name="line.6538"></a>
+<span class="sourceLineNo">6539</span> VALUES[0], VALUES[1], VALUES[2]
}, 0, 2);<a name="line.6539"></a>
+<span class="sourceLineNo">6540</span><a name="line.6540"></a>
+<span class="sourceLineNo">6541</span> delete = new Delete(ROW);<a
name="line.6541"></a>
+<span class="sourceLineNo">6542</span> // Delete two latest version of
column FAMILY:QUALIFIER<a name="line.6542"></a>
+<span class="sourceLineNo">6543</span> delete.addColumn(FAMILY,
QUALIFIER);<a name="line.6543"></a>
+<span class="sourceLineNo">6544</span> delete.addColumn(FAMILY,
QUALIFIER);<a name="line.6544"></a>
+<span class="sourceLineNo">6545</span> ht.delete(delete);<a
name="line.6545"></a>
+<span class="sourceLineNo">6546</span><a name="line.6546"></a>
+<span class="sourceLineNo">6547</span> get = new Get(ROW);<a
name="line.6547"></a>
+<span class="sourceLineNo">6548</span> get.addColumn(FAMILY, QUALIFIER);<a
name="line.6548"></a>
+<span class="sourceLineNo">6549</span>
get.setMaxVersions(Integer.MAX_VALUE);<a name="line.6549"></a>
+<span class="sourceLineNo">6550</span> result = ht.get(get);<a
name="line.6550"></a>
+<span class="sourceLineNo">6551</span> // verify version 1000 remains for
column FAMILY:QUALIFIER<a name="line.6551"></a>
+<span class="sourceLineNo">6552</span> assertNResult(result, ROW, FAMILY,
QUALIFIER, new long[] { ts[0] }, new byte[][] { VALUES[0] },<a
name="line.6552"></a>
+<span class="sourceLineNo">6553</span> 0, 0);<a name="line.6553"></a>
+<span class="sourceLineNo">6554</span><a name="line.6554"></a>
+<span class="sourceLineNo">6555</span> put = new Put(ROW);<a
name="line.6555"></a>
+<span class="sourceLineNo">6556</span> // Put a version 5000 of column
FAMILY:QUALIFIER<a name="line.6556"></a>
+<span class="sourceLineNo">6557</span> put.addColumn(FAMILY, QUALIFIER,
ts[4], VALUES[4]);<a name="line.6557"></a>
+<span class="sourceLineNo">6558</span> ht.put(put);<a name="line.6558"></a>
+<span class="sourceLineNo">6559</span><a name="line.6559"></a>
+<span class="sourceLineNo">6560</span> get = new Get(ROW);<a
name="line.6560"></a>
+<span class="sourceLineNo">6561</span> get.addColumn(FAMILY, QUALIFIER);<a
name="line.6561"></a>
+<span class="sourceLineNo">6562</span>
get.setMaxVersions(Integer.MAX_VALUE);<a name="line.6562"></a>
+<span class="sourceLineNo">6563</span> result = ht.get(get);<a
name="line.6563"></a>
+<span class="sourceLineNo">6564</span> // verify version 1000,5000 remains
for column FAMILY:QUALIFIER<a name="line.6564"></a>
+<span class="sourceLineNo">6565</span> assertNResult(result, ROW, FAMILY,
QUALIFIER, new long[] { ts[0], ts[4] }, new byte[][] {<a name="line.6565"></a>
+<span class="sourceLineNo">6566</span> VALUES[0], VALUES[4] }, 0, 1);<a
name="line.6566"></a>
+<span class="sourceLineNo">6567</span><a name="line.6567"></a>
+<span class="sourceLineNo">6568</span> ht.close();<a name="line.6568"></a>
+<span class="sourceLineNo">6569</span> admin.close();<a
name="line.6569"></a>
+<span class="sourceLineNo">6570</span> }<a name="line.6570"></a>
+<span class="sourceLineNo">6571</span><a name="line.6571"></a>
+<span class="sourceLineNo">6572</span> /**<a name="line.6572"></a>
+<span class="sourceLineNo">6573</span> * Test for HBASE-17125<a
name="line.6573"></a>
+<span class="sourceLineNo">6574</span> */<a name="line.6574"></a>
+<span class="sourceLineNo">6575</span> @Test<a name="line.6575"></a>
+<span class="sourceLineNo">6576</span> public void testReadWithFilter()
throws Exception {<a name="line.6576"></a>
+<span class="sourceLineNo">6577</span> Admin admin =
TEST_UTIL.getAdmin();<a name="line.6577"></a>
+<span class="sourceLineNo">6578</span> final TableName tableName =
TableName.valueOf(name.getMethodName());<a name="line.6578"></a>
+<span class="sourceLineNo">6579</span> Table table =
TEST_UTIL.createTable(tableName, FAMILY, 3);<a name="line.6579"></a>
+<span class="sourceLineNo">6580</span><a name="line.6580"></a>
+<span class="sourceLineNo">6581</span> byte[] VALUEA =
Bytes.toBytes("value-a");<a name="line.6581"></a>
+<span class="sourceLineNo">6582</span> byte[] VALUEB =
Bytes.toBytes("value-b");<a name="line.6582"></a>
+<span class="sourceLineNo">6583</span> long[] ts = { 1000, 2000, 3000, 4000
};<a name="line.6583"></a>
+<span class="sourceLineNo">6584</span><a name="line.6584"></a>
+<span class="sourceLineNo">6585</span> Put put = new Put(ROW);<a
name="line.6585"></a>
+<span class="sourceLineNo">6586</span> // Put version 1000,2000,3000,4000
of column FAMILY:QUALIFIER<a name="line.6586"></a>
+<span class="sourceLineNo">6587</span> for (int t = 0; t <= 3; t++) {<a
name="line.6587"></a>
+<span class="sourceLineNo">6588</span> if (t <= 1) {<a
name="line.6588"></a>
+<span class="sourceLineNo">6589</span> put.addColumn(FAMILY, QUALIFIER,
ts[t], VALUEA);<a name="line.6589"></a>
+<span class="sourceLineNo">6590</span> } else {<a name="line.6590"></a>
+<span class="sourceLineNo">6591</span> put.addColumn(FAMILY, QUALIFIER,
ts[t], VALUEB);<a name="line.6591"></a>
+<span class="sourceLineNo">6592</span> }<a name="line.6592"></a>
+<span class="sourceLineNo">6593</span> }<a name="line.6593"></a>
+<span class="sourceLineNo">6594</span> table.put(put);<a
name="line.6594"></a>
+<span class="sourceLineNo">6595</span><a name="line.6595"></a>
+<span class="sourceLineNo">6596</span> Scan scan =<a name="line.6596"></a>
+<span class="sourceLineNo">6597</span> new Scan().setFilter(new
ValueFilter(CompareOperator.EQUAL, new SubstringComparator("value-a")))<a
name="line.6597"></a>
+<span class="sourceLineNo">6598</span> .setMaxVersions(3);<a
name="line.6598"></a>
+<span class="sourceLineNo">6599</span> ResultScanner scanner =
table.getScanner(scan);<a name="line.6599"></a>
+<span class="sourceLineNo">6600</span> Result result = scanner.next();<a
name="line.6600"></a>
+<span class="sourceLineNo">6601</span> // ts[0] has gone from user view.
Only read ts[2] which value is less or equal to 3<a name="line.6601"></a>
+<span class="sourceLineNo">6602</span> assertNResult(result, ROW, FAMILY,
QUALIFIER, new long[] { ts[1] }, new byte[][] { VALUEA }, 0,<a
name="line.6602"></a>
+<span class="sourceLineNo">6603</span> 0);<a name="line.6603"></a>
+<span class="sourceLineNo">6604</span><a name="line.6604"></a>
+<span class="sourceLineNo">6605</span> Get get =<a name="line.6605"></a>
+<span class="sourceLineNo">6606</span> new Get(ROW)<a
name="line.6606"></a>
+<span class="sourceLineNo">6607</span> .setFilter(new
ValueFilter(CompareOperator.EQUAL, new SubstringComparator("value-a")))<a
name="line.6607"></a>
+<span class="sourceLineNo">6608</span> .setMaxVersions(3);<a
name="line.6608"></a>
+<span class="sourceLineNo">6609</span> result = table.get(get);<a
name="line.6609"></a>
+<span class="sourceLineNo">6610</span> // ts[0] has gone from user view.
Only read ts[2] which value is less or equal to 3<a name="line.6610"></a>
+<span class="sourceLineNo">6611</span> assertNResult(result, ROW, FAMILY,
QUALIFIER, new long[] { ts[1] }, new byte[][] { VALUEA }, 0,<a
name="line.6611"></a>
+<span class="sourceLineNo">6612</span> 0);<a name="line.6612"></a>
+<span class="sourceLineNo">6613</span><a name="line.6613"></a>
+<span class="sourceLineNo">6614</span> // Test with max versions 1, it
should still read ts[1]<a name="line.6614"></a>
+<span class="sourceLineNo">6615</span> scan =<a name="line.6615"></a>
+<span class="sourceLineNo">6616</span> new Scan().setFilter(new
ValueFilter(CompareOperator.EQUAL, new SubstringComparator("value-a")))<a
name="line.6616"></a>
+<span class="sourceLineNo">6617</span> .setMaxVersions(1);<a
name="line.6617"></a>
+<span class="sourceLineNo">6618</span> scanner = table.getScanner(scan);<a
name="line.6618"></a>
+<span class="sourceLineNo">6619</span> result = scanner.next();<a
name="line.6619"></a>
+<span class="sourceLineNo">6620</span> // ts[0] has gone from user view.
Only read ts[2] which value is less or equal to 3<a name="line.6620"></a>
+<span class="sourceLineNo">6621</span> assertNResult(result, ROW, FAMILY,
QUALIFIER, new long[] { ts[1] }, new byte[][] { VALUEA }, 0,<a
name="line.6621"></a>
+<span class="sourceLineNo">6622</span> 0);<a name="line.6622"></a>
+<span class="sourceLineNo">6623</span><a name="line.6623"></a>
+<span class="sourceLineNo">6624</span> // Test with max versions 1, it
should still read ts[1]<a name="line.6624"></a>
+<span class="sourceLineNo">6625</span> get =<a name="line.6625"></a>
+<span class="sourceLineNo">6626</span> new Get(ROW)<a
name="line.6626"></a>
+<span class="sourceLineNo">6627</span> .setFilter(new
ValueFilter(CompareOperator.EQUAL, new SubstringComparator("value-a")))<a
name="line.6627"></a>
+<span class="sourceLineNo">6628</span> .setMaxVersions(1);<a
name="line.6628"></a>
+<span class="sourceLineNo">6629</span> result = table.get(get);<a
name="line.6629"></a>
+<span class="sourceLineNo">6630</span> // ts[0] has gone from user view.
Only read ts[2] which value is less or equal to 3<a name="line.6630"></a>
+<span class="sourceLineNo">6631</span> assertNResult(result, ROW, FAMILY,
QUALIFIER, new long[] { ts[1] }, new byte[][] { VALUEA }, 0,<a
name="line.6631"></a>
+<span class="sourceLineNo">6632</span> 0);<a name="line.6632"></a>
+<span class="sourceLineNo">6633</span><a name="line.6633"></a>
+<span class="sourceLineNo">6634</span> // Test with max versions 5, it
should still read ts[1]<a name="line.6634"></a>
+<span class="sourceLineNo">6635</span> scan =<a name="line.6635"></a>
+<span class="sourceLineNo">6636</span> new Scan().setFilter(new
ValueFilter(CompareOperator.EQUAL, new SubstringComparator("value-a")))<a
name="line.6636"></a>
+<span class="sourceLineNo">6637</span> .setMaxVersions(5);<a
name="line.6637"></a>
+<span class="sourceLineNo">6638</span> scanner = table.getScanner(scan);<a
name="line.6638"></a>
+<span class="sourceLineNo">6639</span> result = scanner.next();<a
name="line.6639"></a>
+<span class="sourceLineNo">6640</span> // ts[0] has gone from user view.
Only read ts[2] which value is less or equal to 3<a name="line.6640"></a>
+<span class="sourceLineNo">6641</span> assertNResult(result, ROW, FAMILY,
QUALIFIER, new long[] { ts[1] }, new byte[][] { VALUEA }, 0,<a
name="line.6641"></a>
+<span class="sourceLineNo">6642</span> 0);<a name="line.6642"></a>
+<span class="sourceLineNo">6643</span><a name="line.6643"></a>
+<span class="sourceLineNo">6644</span> // Test with max versions 5, it
should still read ts[1]<a name="line.6644"></a>
+<span class="sourceLineNo">6645</span> get =<a name="line.6645"></a>
+<span class="sourceLineNo">6646</span> new Get(ROW)<a
name="line.6646"></a>
+<span class="sourceLineNo">6647</span> .setFilter(new
ValueFilter(CompareOperator.EQUAL, new SubstringComparator("value-a")))<a
name="line.6647"></a>
+<span class="sourceLineNo">6648</span> .setMaxVersions(5);<a
name="line.6648"></a>
+<span class="sourceLineNo">6649</span> result = table.get(get);<a
name="line.6649"></a>
+<span class="sourceLineNo">6650</span> // ts[0] has gone from user view.
Only read ts[2] which value is less or equal to 3<a name="line.6650"></a>
+<span class="sourceLineNo">6651</span> assertNResult(result, ROW, FAMILY,
QUALIFIER, new long[] { ts[1] }, new byte[][] { VALUEA }, 0,<a
name="line.6651"></a>
+<span class="sourceLineNo">6652</span> 0);<a name="line.6652"></a>
+<span class="sourceLineNo">6653</span><a name="line.6653"></a>
+<span class="sourceLineNo">6654</span> table.close();<a
name="line.6654"></a>
+<span class="sourceLineNo">6655</span> admin.close();<a
name="line.6655"></a>
+<span class="sourceLineNo">6656</span> }<a name="line.6656"></a>
+<span class="sourceLineNo">6657</span><a name="line.6657"></a>
+<span class="sourceLineNo">6658</span> @Test<a name="line.6658"></a>
+<span class="sourceLineNo">6659</span> public void testCellUtilTypeMethods()
throws IOException {<a name="line.6659"></a>
+<span class="sourceLineNo">6660</span> final TableName tableName =
TableName.valueOf(name.getMethodName());<a name="line.6660"></a>
+<span class="sourceLineNo">6661</span> Table table =
TEST_UTIL.createTable(tableName, FAMILY);<a name="line.6661"></a>
+<span class="sourceLineNo">6662</span><a name="line.6662"></a>
+<span class="sourceLineNo">6663</span> final byte[] row =
Bytes.toBytes("p");<a name="line.6663"></a>
+<span class="sourceLineNo">6664</span> Put p = new Put(row);<a
name="line.6664"></a>
+<span class="sourceLineNo">6665</span> p.addColumn(FAMILY, QUALIFIER,
VALUE);<a name="line.6665"></a>
+<span class="sourceLineNo">6666</span> table.put(p);<a name="line.6666"></a>
+<span class="sourceLineNo">6667</span><a name="line.6667"></a>
+<span class="sourceLineNo">6668</span> try (ResultScanner scanner =
table.getScanner(new Scan())) {<a name="line.6668"></a>
+<span class="sourceLineNo">6669</span> Result result = scanner.next();<a
name="line.6669"></a>
+<span class="sourceLineNo">6670</span> assertNotNull(result);<a
name="line.6670"></a>
+<span class="sourceLineNo">6671</span> CellScanner cs =
result.cellScanner();<a name="line.6671"></a>
+<span class="sourceLineNo">6672</span> assertTrue(cs.advance());<a
name="line.6672"></a>
+<span class="sourceLineNo">6673</span> Cell c = cs.current();<a
name="line.6673"></a>
+<span class="sourceLineNo">6674</span> assertTrue(CellUtil.isPut(c));<a
name="line.6674"></a>
+<span class="sourceLineNo">6675</span>
assertFalse(CellUtil.isDelete(c));<a name="line.6675"></a>
+<span class="sourceLineNo">6676</span> assertFalse(cs.advance());<a
name="line.6676"></a>
+<span class="sourceLineNo">6677</span> assertNull(scanner.next());<a
name="line.6677"></a>
+<span class="sourceLineNo">6678</span> }<a name="line.6678"></a>
+<span class="sourceLineNo">6679</span><a name="line.6679"></a>
+<span class="sourceLineNo">6680</span> Delete d = new Delete(row);<a
name="line.6680"></a>
+<span class="sourceLineNo">6681</span> d.addColumn(FAMILY, QUALIFIER);<a
name="line.6681"></a>
+<span class="sourceLineNo">6682</span> table.delete(d);<a
name="line.6682"></a>
+<span class="sourceLineNo">6683</span><a name="line.6683"></a>
+<span class="sourceLineNo">6684</span> Scan scan = new Scan();<a
name="line.6684"></a>
+<span class="sourceLineNo">6685</span> scan.setRaw(true);<a
name="line.6685"></a>
+<span class="sourceLineNo">6686</span> try (ResultScanner scanner =
table.getScanner(scan)) {<a name="line.6686"></a>
+<span class="sourceLineNo">6687</span> Result result = scanner.next();<a
name="line.6687"></a>
+<span class="sourceLineNo">6688</span> assertNotNull(result);<a
name="line.6688"></a>
+<span class="sourceLineNo">6689</span> CellScanner cs =
result.cellScanner();<a name="line.6689"></a>
+<span class="sourceLineNo">6690</span> assertTrue(cs.advance());<a
name="line.6690"></a>
+<span class="sourceLineNo">6691</span><a name="line.6691"></a>
+<span class="sourceLineNo">6692</span> // First cell should be the delete
(masking the Put)<a name="line.6692"></a>
+<span class="sourceLineNo">6693</span> Cell c = cs.current();<a
name="line.6693"></a>
+<span class="sourceLineNo">6694</span> assertTrue("Cell should be a
Delete: " + c, CellUtil.isDelete(c));<a name="line.6694"></a>
+<span class="sourceLineNo">6695</span> assertFalse("Cell should not be a
Put: " + c, CellUtil.isPut(c));<a name="line.6695"></a>
+<span class="sourceLineNo">6696</span><a name="line.6696"></a>
+<span class="sourceLineNo">6697</span> // Second cell should be the
original Put<a name="line.6697"></a>
+<span class="sourceLineNo">6698</span> assertTrue(cs.advance());<a
name="line.6698"></a>
+<span class="sourceLineNo">6699</span> c = cs.current();<a
name="line.6699"></a>
+<span class="sourceLineNo">6700</span> assertFalse("Cell should not be a
Delete: " + c, CellUtil.isDelete(c));<a name="line.6700"></a>
+<span class="sourceLineNo">6701</span> assertTrue("Cell should be a Put:
" + c, CellUtil.isPut(c));<a name="line.6701"></a>
+<span class="sourceLineNo">6702</span><a name="line.6702"></a>
+<span class="sourceLineNo">6703</span> // No more cells in this row<a
name="line.6703"></a>
+<span class="sourceLineNo">6704</span> assertFalse(cs.advance());<a
name="line.6704"></a>
+<span class="sourceLineNo">6705</span><a name="line.6705"></a>
+<span class="sourceLineNo">6706</span> // No more results in this scan<a
name="line.6706"></a>
+<span class="sourceLineNo">6707</span> assertNull(scanner.next());<a
name="line.6707"></a>
+<span class="sourceLineNo">6708</span> }<a name="line.6708"></a>
+<span class="sourceLineNo">6709</span> }<a name="line.6709"></a>
+<span class="sourceLineNo">6710</span>}<a name="line.6710"></a>