You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by gi...@apache.org on 2020/03/29 14:43:32 UTC

[hbase-site] branch asf-site updated: Published site at aaae46c976dc7d99779f86bf2b7ec73730e20577.

This is an automated email from the ASF dual-hosted git repository.

git-site-role pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/hbase-site.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 2e062dd  Published site at aaae46c976dc7d99779f86bf2b7ec73730e20577.
2e062dd is described below

commit 2e062ddbcb732b84bb8c8a444e2d155323eef3e2
Author: jenkins <bu...@apache.org>
AuthorDate: Sun Mar 29 14:43:01 2020 +0000

    Published site at aaae46c976dc7d99779f86bf2b7ec73730e20577.
---
 acid-semantics.html                                |    2 +-
 apache_hbase_reference_guide.pdf                   |    4 +-
 apidocs/deprecated-list.html                       |   44 +-
 apidocs/index-all.html                             |    7 -
 .../apache/hadoop/hbase/client/Scan.ReadType.html  |    8 +-
 apidocs/org/apache/hadoop/hbase/client/Scan.html   |  245 +--
 .../apache/hadoop/hbase/client/class-use/Scan.html |   47 +-
 .../apache/hadoop/hbase/client/Scan.ReadType.html  | 2116 ++++++++++----------
 .../org/apache/hadoop/hbase/client/Scan.html       | 2116 ++++++++++----------
 book.html                                          |    2 +-
 bulk-loads.html                                    |    2 +-
 checkstyle-aggregate.html                          |   12 +-
 coc.html                                           |    2 +-
 dependencies.html                                  |    2 +-
 dependency-convergence.html                        |    2 +-
 dependency-info.html                               |    2 +-
 dependency-management.html                         |    2 +-
 devapidocs/constant-values.html                    |    4 +-
 devapidocs/deprecated-list.html                    |   68 +-
 devapidocs/index-all.html                          |    7 -
 .../apache/hadoop/hbase/backup/package-tree.html   |    4 +-
 .../apache/hadoop/hbase/client/Scan.ReadType.html  |   12 +-
 .../org/apache/hadoop/hbase/client/Scan.html       |  301 ++-
 .../apache/hadoop/hbase/client/class-use/Scan.html |   49 +-
 .../apache/hadoop/hbase/client/package-tree.html   |   22 +-
 .../hadoop/hbase/coprocessor/package-tree.html     |    2 +-
 .../apache/hadoop/hbase/executor/package-tree.html |    2 +-
 .../apache/hadoop/hbase/filter/package-tree.html   |    6 +-
 .../org/apache/hadoop/hbase/http/package-tree.html |    2 +-
 .../apache/hadoop/hbase/io/hfile/package-tree.html |    4 +-
 .../hadoop/hbase/mapreduce/package-tree.html       |    4 +-
 .../hadoop/hbase/master/balancer/package-tree.html |    2 +-
 .../apache/hadoop/hbase/master/package-tree.html   |    2 +-
 .../hbase/master/procedure/package-tree.html       |    2 +-
 .../hadoop/hbase/monitoring/package-tree.html      |    2 +-
 .../org/apache/hadoop/hbase/package-tree.html      |   12 +-
 .../hadoop/hbase/procedure2/package-tree.html      |    6 +-
 .../apache/hadoop/hbase/quotas/package-tree.html   |    6 +-
 .../hadoop/hbase/regionserver/InternalScan.html    |    2 +-
 .../hadoop/hbase/regionserver/package-tree.html    |   16 +-
 .../regionserver/querymatcher/package-tree.html    |    2 +-
 .../hbase/regionserver/wal/package-tree.html       |    2 +-
 .../replication/regionserver/package-tree.html     |    2 +-
 .../hadoop/hbase/security/access/package-tree.html |    6 +-
 .../apache/hadoop/hbase/security/package-tree.html |    4 +-
 .../apache/hadoop/hbase/thrift/package-tree.html   |    2 +-
 .../org/apache/hadoop/hbase/util/package-tree.html |   10 +-
 .../org/apache/hadoop/hbase/wal/package-tree.html  |    2 +-
 .../src-html/org/apache/hadoop/hbase/Version.html  |    4 +-
 .../apache/hadoop/hbase/client/Scan.ReadType.html  | 2116 ++++++++++----------
 .../org/apache/hadoop/hbase/client/Scan.html       | 2116 ++++++++++----------
 downloads.html                                     |    2 +-
 export_control.html                                |    2 +-
 index.html                                         |    2 +-
 issue-tracking.html                                |    2 +-
 mail-lists.html                                    |    2 +-
 metrics.html                                       |    2 +-
 old_news.html                                      |    2 +-
 plugin-management.html                             |    2 +-
 plugins.html                                       |    2 +-
 poweredbyhbase.html                                |    2 +-
 project-info.html                                  |    2 +-
 project-reports.html                               |    2 +-
 project-summary.html                               |    2 +-
 pseudo-distributed.html                            |    2 +-
 replication.html                                   |    2 +-
 resources.html                                     |    2 +-
 source-repository.html                             |    2 +-
 sponsors.html                                      |    2 +-
 supportingprojects.html                            |    2 +-
 team-list.html                                     |    2 +-
 .../hbase/TestPartialResultsFromClientSide.html    |    2 +-
 .../hadoop/hbase/client/TestFromClientSide.html    |    8 +-
 .../hadoop/hbase/client/TestFromClientSide5.html   |    2 +-
 ...cannersFromClientSide.LimitKVsReturnFilter.html |    4 +-
 .../hbase/client/TestScannersFromClientSide.html   |    4 +-
 .../hadoop/hbase/client/TestTimestampsFilter.html  |    2 +-
 .../apache/hadoop/hbase/filter/StringRange.html    |    2 +-
 .../hbase/filter/TestColumnPrefixFilter.html       |    4 +-
 .../hadoop/hbase/filter/TestColumnRangeFilter.html |    2 +-
 .../filter/TestFilterListOrOperatorWithBlkCnt.html |    4 +-
 .../filter/TestMultipleColumnPrefixFilter.html     |    8 +-
 .../TestImportExport.TableWALActionListener.html   |    4 +-
 .../hadoop/hbase/mapreduce/TestImportExport.html   |    4 +-
 ...TestTimeRangeMapRed.ProcessTimeRangeMapper.html |    2 +-
 .../hbase/mapreduce/TestTimeRangeMapRed.html       |    2 +-
 .../hbase/regionserver/TestColumnSeeking.html      |    4 +-
 .../hbase/regionserver/TestHRegion.Appender.html   |    2 +-
 .../regionserver/TestHRegion.FlushThread.html      |    2 +-
 .../TestHRegion.GetTillDoneOrException.html        |    2 +-
 .../TestHRegion.HRegionForTesting.html             |    2 +-
 .../regionserver/TestHRegion.HRegionWithSeqId.html |    2 +-
 .../regionserver/TestHRegion.HStoreForTesting.html |    2 +-
 .../regionserver/TestHRegion.Incrementer.html      |    2 +-
 .../regionserver/TestHRegion.IsFlushWALMarker.html |    2 +-
 .../hbase/regionserver/TestHRegion.PutThread.html  |    2 +-
 .../hadoop/hbase/regionserver/TestHRegion.html     |    2 +-
 .../hadoop/hbase/regionserver/TestKeepDeletes.html |   16 +-
 .../TestNewVersionBehaviorFromClientSide.html      |    6 +-
 99 files changed, 4700 insertions(+), 4858 deletions(-)

diff --git a/acid-semantics.html b/acid-semantics.html
index 7ef20f1..3664ff7 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -467,7 +467,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-03-27</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-03-29</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index eaf048f..bf1bc80 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,8 +5,8 @@
 /Author (Apache HBase Team)
 /Creator (Asciidoctor PDF 1.5.0.rc.2, based on Prawn 2.2.2)
 /Producer (Apache HBase Team)
-/ModDate (D:20200327152515+00'00')
-/CreationDate (D:20200327155229+00'00')
+/ModDate (D:20200329143028+00'00')
+/CreationDate (D:20200329144015+00'00')
 >>
 endobj
 2 0 obj
diff --git a/apidocs/deprecated-list.html b/apidocs/deprecated-list.html
index 02735de..5ed19fb 100644
--- a/apidocs/deprecated-list.html
+++ b/apidocs/deprecated-list.html
@@ -1019,74 +1019,68 @@
 </td>
 </tr>
 <tr class="altColor">
-<td class="colOne"><a href="org/apache/hadoop/hbase/client/Scan.html#setMaxVersions--">org.apache.hadoop.hbase.client.Scan.setMaxVersions()</a>
-<div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column
-   family's max versions, so use <a href="org/apache/hadoop/hbase/client/Scan.html#readAllVersions--"><code>Scan.readAllVersions()</code></a> instead.</span></div>
-</td>
-</tr>
-<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/Scan.html#setMaxVersions-int-">org.apache.hadoop.hbase.client.Scan.setMaxVersions(int)</a>
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column
    family's max versions, so use <a href="org/apache/hadoop/hbase/client/Scan.html#readVersions-int-"><code>Scan.readVersions(int)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html#setNamespaces-java.util.Set-">org.apache.hadoop.hbase.replication.ReplicationPeerConfig.setNamespaces(Set&lt;String&gt;)</a>
 <div class="block"><span class="deprecationComment">as release of 2.0.0, and it will be removed in 3.0.0. Use
              <a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfigBuilder.html#setNamespaces-java.util.Set-"><code>ReplicationPeerConfigBuilder.setNamespaces(Set)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/BufferedMutator.html#setOperationTimeout-int-">org.apache.hadoop.hbase.client.BufferedMutator.setOperationTimeout(int)</a>
 <div class="block"><span class="deprecationComment">Since 3.0.0, will be removed in 4.0.0. Please set this through the
              <a href="org/apache/hadoop/hbase/client/BufferedMutatorParams.html" title="class in org.apache.hadoop.hbase.client"><code>BufferedMutatorParams</code></a>.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HTableDescriptor.html#setOwner-org.apache.hadoop.hbase.security.User-">org.apache.hadoop.hbase.HTableDescriptor.setOwner(User)</a>
 <div class="block"><span class="deprecationComment">since 0.94.1</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#setOwner-org.apache.hadoop.hbase.security.User-">org.apache.hadoop.hbase.client.TableDescriptorBuilder.setOwner(User)</a>
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HTableDescriptor.html#setOwnerString-java.lang.String-">org.apache.hadoop.hbase.HTableDescriptor.setOwnerString(String)</a>
 <div class="block"><span class="deprecationComment">since 0.94.1</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#setOwnerString-java.lang.String-">org.apache.hadoop.hbase.client.TableDescriptorBuilder.setOwnerString(String)</a>
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HTableDescriptor.html#setRegionMemstoreReplication-boolean-">org.apache.hadoop.hbase.HTableDescriptor.setRegionMemstoreReplication(boolean)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.
              Use <a href="org/apache/hadoop/hbase/HTableDescriptor.html#setRegionMemStoreReplication-boolean-"><code>HTableDescriptor.setRegionMemStoreReplication(boolean)</code></a> instead</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html#setReplicateAllUserTables-boolean-">org.apache.hadoop.hbase.replication.ReplicationPeerConfig.setReplicateAllUserTables(boolean)</a>
 <div class="block"><span class="deprecationComment">as release of 2.0.0, and it will be removed in 3.0.0. Use
              <a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfigBuilder.html#setReplicateAllUserTables-boolean-"><code>ReplicationPeerConfigBuilder.setReplicateAllUserTables(boolean)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html#setReplicationEndpointImpl-java.lang.String-">org.apache.hadoop.hbase.replication.ReplicationPeerConfig.setReplicationEndpointImpl(String)</a>
 <div class="block"><span class="deprecationComment">as release of 2.0.0, and it will be removed in 3.0.0. Use
              <a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfigBuilder.html#setReplicationEndpointImpl-java.lang.String-"><code>ReplicationPeerConfigBuilder.setReplicationEndpointImpl(String)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/BufferedMutator.html#setRpcTimeout-int-">org.apache.hadoop.hbase.client.BufferedMutator.setRpcTimeout(int)</a>
 <div class="block"><span class="deprecationComment">Since 3.0.0, will be removed in 4.0.0. Please set this through the
              <a href="org/apache/hadoop/hbase/client/BufferedMutatorParams.html" title="class in org.apache.hadoop.hbase.client"><code>BufferedMutatorParams</code></a>.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/Scan.html#setSmall-boolean-">org.apache.hadoop.hbase.client.Scan.setSmall(boolean)</a>
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. Use <a href="org/apache/hadoop/hbase/client/Scan.html#setLimit-int-"><code>Scan.setLimit(int)</code></a> and
    <a href="org/apache/hadoop/hbase/client/Scan.html#setReadType-org.apache.hadoop.hbase.client.Scan.ReadType-"><code>Scan.setReadType(ReadType)</code></a> instead. And for the one rpc optimization, now we will also
@@ -1094,50 +1088,50 @@
    the scanner automatically which means we will fall back to one rpc.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/Scan.html#setStopRow-byte:A-">org.apache.hadoop.hbase.client.Scan.setStopRow(byte[])</a>
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. Use <a href="org/apache/hadoop/hbase/client/Scan.html#withStopRow-byte:A-"><code>Scan.withStopRow(byte[])</code></a> instead.
    This method may change the inclusive of the stop row to keep compatible with the old
    behavior.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html#setTableCFsMap-java.util.Map-">org.apache.hadoop.hbase.replication.ReplicationPeerConfig.setTableCFsMap(Map&lt;TableName, ? extends Collection&lt;String&gt;&gt;)</a>
 <div class="block"><span class="deprecationComment">as release of 2.0.0, and it will be removed in 3.0.0. Use
              <a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfigBuilder.html#setTableCFsMap-java.util.Map-"><code>ReplicationPeerConfigBuilder.setTableCFsMap(Map)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/Scan.html#setTimeStamp-long-">org.apache.hadoop.hbase.client.Scan.setTimeStamp(long)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.
              Use <a href="org/apache/hadoop/hbase/client/Scan.html#setTimestamp-long-"><code>Scan.setTimestamp(long)</code></a> instead</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/BufferedMutatorParams.html#setWriteBufferPeriodicFlushTimerTickMs-long-">org.apache.hadoop.hbase.client.BufferedMutatorParams.setWriteBufferPeriodicFlushTimerTickMs(long)</a>
 <div class="block"><span class="deprecationComment">Since 3.0.0, will be removed in 4.0.0. We use a common timer in the whole client
              implementation so you can not set it any more.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HRegionInfo.html#toByteArray--">org.apache.hadoop.hbase.HRegionInfo.toByteArray()</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
              Use <a href="org/apache/hadoop/hbase/client/RegionInfo.html#toByteArray-org.apache.hadoop.hbase.client.RegionInfo-"><code>RegionInfo.toByteArray(RegionInfo)</code></a>.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HRegionInfo.html#toDelimitedByteArray--">org.apache.hadoop.hbase.HRegionInfo.toDelimitedByteArray()</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
              Use <a href="org/apache/hadoop/hbase/client/RegionInfo.html#toDelimitedByteArray-org.apache.hadoop.hbase.client.RegionInfo-"><code>RegionInfo.toDelimitedByteArray(RegionInfo)</code></a>.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HRegionInfo.html#toDelimitedByteArray-org.apache.hadoop.hbase.HRegionInfo...-">org.apache.hadoop.hbase.HRegionInfo.toDelimitedByteArray(HRegionInfo...)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
              Use <a href="org/apache/hadoop/hbase/client/RegionInfo.html#toDelimitedByteArray-org.apache.hadoop.hbase.client.RegionInfo...-"><code>RegionInfo.toDelimitedByteArray(RegionInfo...)</code></a>.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/io/TimeRange.html#withinTimeRange-byte:A-int-">org.apache.hadoop.hbase.io.TimeRange.withinTimeRange(byte[], int)</a>
 <div class="block"><span class="deprecationComment">This is made @InterfaceAudience.Private in the 2.0 line and above and may be
    changed to private or removed in 3.0. Use <a href="org/apache/hadoop/hbase/io/TimeRange.html#withinTimeRange-long-"><code>TimeRange.withinTimeRange(long)</code></a> instead</span></div>
diff --git a/apidocs/index-all.html b/apidocs/index-all.html
index e9ea9a6..14fb684 100644
--- a/apidocs/index-all.html
+++ b/apidocs/index-all.html
@@ -15274,13 +15274,6 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ColumnFamilyDescriptorBuilder.html#setMaxVersions-int-">setMaxVersions(int)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ColumnFamilyDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">ColumnFamilyDescriptorBuilder</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Scan.html#setMaxVersions--">setMaxVersions()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></dt>
-<dd>
-<div class="block"><span class="deprecatedLabel">Deprecated.</span>
-<div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column
-   family's max versions, so use <a href="org/apache/hadoop/hbase/client/Scan.html#readAllVersions--"><code>Scan.readAllVersions()</code></a> instead.</span></div>
-</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Scan.html#setMaxVersions-int-">setMaxVersions(int)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></dt>
 <dd>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>
diff --git a/apidocs/org/apache/hadoop/hbase/client/Scan.ReadType.html b/apidocs/org/apache/hadoop/hbase/client/Scan.ReadType.html
index f8846af..f52a287 100644
--- a/apidocs/org/apache/hadoop/hbase/client/Scan.ReadType.html
+++ b/apidocs/org/apache/hadoop/hbase/client/Scan.ReadType.html
@@ -123,7 +123,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Public
-public static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1096">Scan.ReadType</a>
+public static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1082">Scan.ReadType</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang">Enum</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a>&gt;</pre>
 </li>
 </ul>
@@ -214,7 +214,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html#line.1097">DEFAULT</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html#line.1083">DEFAULT</a></pre>
 </li>
 </ul>
 <a name="STREAM">
@@ -223,7 +223,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>STREAM</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html#line.1097">STREAM</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html#line.1083">STREAM</a></pre>
 </li>
 </ul>
 <a name="PREAD">
@@ -232,7 +232,7 @@ the order they are declared.</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>PREAD</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html#line.1097">PREAD</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html#line.1083">PREAD</a></pre>
 </li>
 </ul>
 </li>
diff --git a/apidocs/org/apache/hadoop/hbase/client/Scan.html b/apidocs/org/apache/hadoop/hbase/client/Scan.html
index 72b3944..1de7a9f 100644
--- a/apidocs/org/apache/hadoop/hbase/client/Scan.html
+++ b/apidocs/org/apache/hadoop/hbase/client/Scan.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":9,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":42,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":42,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":42,"i [...]
+var methods = {"i0":10,"i1":10,"i2":9,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":42,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":42,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":42,"i [...]
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -129,7 +129,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Public
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.86">Scan</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.85">Scan</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title="class in org.apache.hadoop.hbase.client">Query</a></pre>
 <div class="block">Used to perform Scan operations.
  <p>
@@ -150,7 +150,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
  To only retrieve columns with a specific timestamp, call <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setTimestamp-long-"><code>setTimestamp</code></a>
  .
  <p>
- To limit the number of versions of each column to be returned, call <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions-int-"><code>setMaxVersions</code></a>.
+ To limit the number of versions of each column to be returned, call <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions-int-"><code>setMaxVersions(int)</code></a>.
  <p>
  To limit the maximum number of values returned for each call to next(), call
  <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setBatch-int-"><code>setBatch</code></a>.
@@ -584,15 +584,6 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 </tr>
 <tr id="i53" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions--">setMaxVersions</a></span>()</code>
-<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
-<div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column
-   family's max versions, so use <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#readAllVersions--"><code>readAllVersions()</code></a> instead.</span></div>
-</div>
-</td>
-</tr>
-<tr id="i54" class="altColor">
-<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions-int-">setMaxVersions</a></span>(int&nbsp;maxVersions)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column
@@ -600,67 +591,67 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 </div>
 </td>
 </tr>
-<tr id="i55" class="rowColor">
+<tr id="i54" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setNeedCursorResult-boolean-">setNeedCursorResult</a></span>(boolean&nbsp;needCursorResult)</code>
 <div class="block">When the server is slow or we scan a table with many deleted data or we use a sparse filter,
  the server will response heartbeat to prevent timeout.</div>
 </td>
 </tr>
-<tr id="i56" class="altColor">
+<tr id="i55" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setOneRowLimit--">setOneRowLimit</a></span>()</code>
 <div class="block">Call this when you only want to get one row.</div>
 </td>
 </tr>
-<tr id="i57" class="rowColor">
+<tr id="i56" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setPriority-int-">setPriority</a></span>(int&nbsp;priority)</code>&nbsp;</td>
 </tr>
-<tr id="i58" class="altColor">
+<tr id="i57" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setRaw-boolean-">setRaw</a></span>(boolean&nbsp;raw)</code>
 <div class="block">Enable/disable "raw" mode for this scan.</div>
 </td>
 </tr>
-<tr id="i59" class="rowColor">
+<tr id="i58" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setReadType-org.apache.hadoop.hbase.client.Scan.ReadType-">setReadType</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a>&nbsp;readType)</code>
 <div class="block">Set the read type for this scan.</div>
 </td>
 </tr>
-<tr id="i60" class="altColor">
+<tr id="i59" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setReplicaId-int-">setReplicaId</a></span>(int&nbsp;Id)</code>
 <div class="block">Specify region replica id where Query will fetch data from.</div>
 </td>
 </tr>
-<tr id="i61" class="rowColor">
+<tr id="i60" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setReversed-boolean-">setReversed</a></span>(boolean&nbsp;reversed)</code>
 <div class="block">Set whether this scan is a reversed one</div>
 </td>
 </tr>
-<tr id="i62" class="altColor">
+<tr id="i61" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setRowOffsetPerColumnFamily-int-">setRowOffsetPerColumnFamily</a></span>(int&nbsp;offset)</code>
 <div class="block">Set offset for the row per Column Family.</div>
 </td>
 </tr>
-<tr id="i63" class="rowColor">
+<tr id="i62" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setRowPrefixFilter-byte:A-">setRowPrefixFilter</a></span>(byte[]&nbsp;rowPrefix)</code>
 <div class="block">Set a filter (using stopRow and startRow) so the result set only contains rows where the
  rowKey starts with the specified prefix.</div>
 </td>
 </tr>
-<tr id="i64" class="altColor">
+<tr id="i63" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setScanMetricsEnabled-boolean-">setScanMetricsEnabled</a></span>(boolean&nbsp;enabled)</code>
 <div class="block">Enable collection of <code>ScanMetrics</code>.</div>
 </td>
 </tr>
-<tr id="i65" class="rowColor">
+<tr id="i64" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setSmall-boolean-">setSmall</a></span>(boolean&nbsp;small)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -671,7 +662,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 </div>
 </td>
 </tr>
-<tr id="i66" class="altColor">
+<tr id="i65" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setStopRow-byte:A-">setStopRow</a></span>(byte[]&nbsp;stopRow)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -681,7 +672,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 </div>
 </td>
 </tr>
-<tr id="i67" class="rowColor">
+<tr id="i66" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setTimeRange-long-long-">setTimeRange</a></span>(long&nbsp;minStamp,
             long&nbsp;maxStamp)</code>
@@ -689,13 +680,13 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
  [minStamp, maxStamp).</div>
 </td>
 </tr>
-<tr id="i68" class="altColor">
+<tr id="i67" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setTimestamp-long-">setTimestamp</a></span>(long&nbsp;timestamp)</code>
 <div class="block">Get versions of columns with the specified timestamp.</div>
 </td>
 </tr>
-<tr id="i69" class="rowColor">
+<tr id="i68" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setTimeStamp-long-">setTimeStamp</a></span>(long&nbsp;timestamp)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -704,33 +695,33 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 </div>
 </td>
 </tr>
-<tr id="i70" class="altColor">
+<tr id="i69" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#toMap-int-">toMap</a></span>(int&nbsp;maxCols)</code>
 <div class="block">Compile the details beyond the scope of getFingerprint (row, columns,
  timestamps, etc.) into a Map along with the fingerprinted information.</div>
 </td>
 </tr>
-<tr id="i71" class="rowColor">
+<tr id="i70" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#withStartRow-byte:A-">withStartRow</a></span>(byte[]&nbsp;startRow)</code>
 <div class="block">Set the start row of the scan.</div>
 </td>
 </tr>
-<tr id="i72" class="altColor">
+<tr id="i71" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#withStartRow-byte:A-boolean-">withStartRow</a></span>(byte[]&nbsp;startRow,
             boolean&nbsp;inclusive)</code>
 <div class="block">Set the start row of the scan.</div>
 </td>
 </tr>
-<tr id="i73" class="rowColor">
+<tr id="i72" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#withStopRow-byte:A-">withStopRow</a></span>(byte[]&nbsp;stopRow)</code>
 <div class="block">Set the stop row of the scan.</div>
 </td>
 </tr>
-<tr id="i74" class="altColor">
+<tr id="i73" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#withStopRow-byte:A-boolean-">withStopRow</a></span>(byte[]&nbsp;stopRow,
            boolean&nbsp;inclusive)</code>
@@ -786,7 +777,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>SCAN_ATTRIBUTES_TABLE_NAME</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.119">SCAN_ATTRIBUTES_TABLE_NAME</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.118">SCAN_ATTRIBUTES_TABLE_NAME</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.Scan.SCAN_ATTRIBUTES_TABLE_NAME">Constant Field Values</a></dd>
@@ -799,7 +790,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>HBASE_CLIENT_SCANNER_ASYNC_PREFETCH</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.140">HBASE_CLIENT_SCANNER_ASYNC_PREFETCH</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.139">HBASE_CLIENT_SCANNER_ASYNC_PREFETCH</a></pre>
 <div class="block">Parameter name for client scanner sync/async prefetch toggle.
  When using async scanner, prefetching data from the server is done at the background.
  The parameter currently won't have any effect in the case that the user has set
@@ -816,7 +807,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DEFAULT_HBASE_CLIENT_SCANNER_ASYNC_PREFETCH</h4>
-<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.146">DEFAULT_HBASE_CLIENT_SCANNER_ASYNC_PREFETCH</a></pre>
+<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.145">DEFAULT_HBASE_CLIENT_SCANNER_ASYNC_PREFETCH</a></pre>
 <div class="block">Default value of <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#HBASE_CLIENT_SCANNER_ASYNC_PREFETCH"><code>HBASE_CLIENT_SCANNER_ASYNC_PREFETCH</code></a>.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -838,7 +829,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>Scan</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.181">Scan</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.180">Scan</a>()</pre>
 <div class="block">Create a Scan operation across all rows.</div>
 </li>
 </ul>
@@ -849,7 +840,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <li class="blockList">
 <h4>Scan</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.194">Scan</a>(byte[]&nbsp;startRow)</pre>
+public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.193">Scan</a>(byte[]&nbsp;startRow)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. Use
    <code>new Scan().withStartRow(startRow)</code> instead.</span></div>
 <div class="block">Create a Scan operation starting at the specified row.
@@ -871,7 +862,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan
 <li class="blockList">
 <h4>Scan</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.207">Scan</a>(byte[]&nbsp;startRow,
+public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.206">Scan</a>(byte[]&nbsp;startRow,
                         byte[]&nbsp;stopRow)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. Use
    <code>new Scan().withStartRow(startRow).withStopRow(stopRow)</code> instead.</span></div>
@@ -891,7 +882,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan
 <ul class="blockList">
 <li class="blockList">
 <h4>Scan</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.218">Scan</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.217">Scan</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)
      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Creates a new instance of this class while copying all values.</div>
 <dl>
@@ -908,7 +899,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan
 <ul class="blockListLast">
 <li class="blockList">
 <h4>Scan</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.270">Scan</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&nbsp;get)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.269">Scan</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&nbsp;get)</pre>
 <div class="block">Builds a scan object with the same specs as get.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -930,7 +921,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan
 <ul class="blockList">
 <li class="blockList">
 <h4>isGetScan</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.298">isGetScan</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.297">isGetScan</a>()</pre>
 </li>
 </ul>
 <a name="addFamily-byte:A-">
@@ -939,7 +930,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan
 <ul class="blockList">
 <li class="blockList">
 <h4>addFamily</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.310">addFamily</a>(byte[]&nbsp;family)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.309">addFamily</a>(byte[]&nbsp;family)</pre>
 <div class="block">Get all columns from the specified family.
  <p>
  Overrides previous calls to addColumn for this family.</div>
@@ -957,7 +948,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan
 <ul class="blockList">
 <li class="blockList">
 <h4>addColumn</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.324">addColumn</a>(byte[]&nbsp;family,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.323">addColumn</a>(byte[]&nbsp;family,
                       byte[]&nbsp;qualifier)</pre>
 <div class="block">Get the column from the specified family with the specified qualifier.
  <p>
@@ -977,7 +968,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan
 <ul class="blockList">
 <li class="blockList">
 <h4>setTimeRange</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.348">setTimeRange</a>(long&nbsp;minStamp,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.347">setTimeRange</a>(long&nbsp;minStamp,
                          long&nbsp;maxStamp)
                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get versions of columns only within the specified timestamp range,
@@ -993,7 +984,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
 <dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions--"><code>setMaxVersions()</code></a>, 
+<dd><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#readAllVersions--"><code>readAllVersions()</code></a>, 
 <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions-int-"><code>setMaxVersions(int)</code></a></dd>
 </dl>
 </li>
@@ -1005,7 +996,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan
 <li class="blockList">
 <h4>setTimeStamp</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.366">setTimeStamp</a>(long&nbsp;timestamp)
+public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.365">setTimeStamp</a>(long&nbsp;timestamp)
                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.
              Use <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setTimestamp-long-"><code>setTimestamp(long)</code></a> instead</span></div>
@@ -1021,7 +1012,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
 <dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions--"><code>setMaxVersions()</code></a>, 
+<dd><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#readAllVersions--"><code>readAllVersions()</code></a>, 
 <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions-int-"><code>setMaxVersions(int)</code></a></dd>
 </dl>
 </li>
@@ -1032,7 +1023,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setTimestamp</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.381">setTimestamp</a>(long&nbsp;timestamp)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.380">setTimestamp</a>(long&nbsp;timestamp)</pre>
 <div class="block">Get versions of columns with the specified timestamp. Note, default maximum
  versions to return is 1.  If your time range spans more than one version
  and you want all versions returned, up the number of versions beyond the
@@ -1043,7 +1034,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>this</dd>
 <dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions--"><code>setMaxVersions()</code></a>, 
+<dd><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#readAllVersions--"><code>readAllVersions()</code></a>, 
 <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions-int-"><code>setMaxVersions(int)</code></a></dd>
 </dl>
 </li>
@@ -1054,7 +1045,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setColumnFamilyTimeRange</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.393">setColumnFamilyTimeRange</a>(byte[]&nbsp;cf,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.392">setColumnFamilyTimeRange</a>(byte[]&nbsp;cf,
                                      long&nbsp;minStamp,
                                      long&nbsp;maxStamp)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Query.html#setColumnFamilyTimeRange-byte:A-long-long-">Query</a></code></span></div>
@@ -1081,7 +1072,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>withStartRow</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.407">withStartRow</a>(byte[]&nbsp;startRow)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.406">withStartRow</a>(byte[]&nbsp;startRow)</pre>
 <div class="block">Set the start row of the scan.
  <p>
  If the specified row does not exist, the Scanner will start from the next closest row after the
@@ -1103,7 +1094,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>withStartRow</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.422">withStartRow</a>(byte[]&nbsp;startRow,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.421">withStartRow</a>(byte[]&nbsp;startRow,
                          boolean&nbsp;inclusive)</pre>
 <div class="block">Set the start row of the scan.
  <p>
@@ -1128,7 +1119,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <li class="blockList">
 <h4>setStopRow</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.451">setStopRow</a>(byte[]&nbsp;stopRow)</pre>
+public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.450">setStopRow</a>(byte[]&nbsp;stopRow)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. Use <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#withStopRow-byte:A-"><code>withStopRow(byte[])</code></a> instead.
    This method may change the inclusive of the stop row to keep compatible with the old
    behavior.</span></div>
@@ -1159,7 +1150,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>withStopRow</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.473">withStopRow</a>(byte[]&nbsp;stopRow)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.472">withStopRow</a>(byte[]&nbsp;stopRow)</pre>
 <div class="block">Set the stop row of the scan.
  <p>
  The scan will include rows that are lexicographically less than the provided stopRow.
@@ -1184,7 +1175,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>withStopRow</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.488">withStopRow</a>(byte[]&nbsp;stopRow,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.487">withStopRow</a>(byte[]&nbsp;stopRow,
                         boolean&nbsp;inclusive)</pre>
 <div class="block">Set the stop row of the scan.
  <p>
@@ -1208,7 +1199,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setRowPrefixFilter</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.509">setRowPrefixFilter</a>(byte[]&nbsp;rowPrefix)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.508">setRowPrefixFilter</a>(byte[]&nbsp;rowPrefix)</pre>
 <div class="block"><p>Set a filter (using stopRow and startRow) so the result set only contains rows where the
  rowKey starts with the specified prefix.</p>
  <p>This is a utility method that converts the desired rowPrefix into the appropriate values
@@ -1224,26 +1215,6 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 </dl>
 </li>
 </ul>
-<a name="setMaxVersions--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>setMaxVersions</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.529">setMaxVersions</a>()</pre>
-<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column
-   family's max versions, so use <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#readAllVersions--"><code>readAllVersions()</code></a> instead.</span></div>
-<div class="block">Get all available versions.</div>
-<dl>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>this</dd>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#readAllVersions--"><code>readAllVersions()</code></a>, 
-<a href="https://issues.apache.org/jira/browse/HBASE-17125">HBASE-17125</a></dd>
-</dl>
-</li>
-</ul>
 <a name="setMaxVersions-int-">
 <!--   -->
 </a>
@@ -1251,7 +1222,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <li class="blockList">
 <h4>setMaxVersions</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.543">setMaxVersions</a>(int&nbsp;maxVersions)</pre>
+public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.529">setMaxVersions</a>(int&nbsp;maxVersions)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column
    family's max versions, so use <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#readVersions-int-"><code>readVersions(int)</code></a> instead.</span></div>
 <div class="block">Get up to the specified number of versions of each column.</div>
@@ -1272,7 +1243,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>readAllVersions</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.551">readAllVersions</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.537">readAllVersions</a>()</pre>
 <div class="block">Get all available versions.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1286,7 +1257,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>readVersions</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.561">readVersions</a>(int&nbsp;versions)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.547">readVersions</a>(int&nbsp;versions)</pre>
 <div class="block">Get up to the specified number of versions of each column.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1302,7 +1273,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setBatch</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.575">setBatch</a>(int&nbsp;batch)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.561">setBatch</a>(int&nbsp;batch)</pre>
 <div class="block">Set the maximum number of cells to return for each call to next(). Callers should be aware
  that this is not equivalent to calling <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setAllowPartialResults-boolean-"><code>setAllowPartialResults(boolean)</code></a>.
  If you don't allow partial results, the number of cells in each Result must equal to your
@@ -1322,7 +1293,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setMaxResultsPerColumnFamily</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.589">setMaxResultsPerColumnFamily</a>(int&nbsp;limit)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.575">setMaxResultsPerColumnFamily</a>(int&nbsp;limit)</pre>
 <div class="block">Set the maximum number of values to return per row per Column Family</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1336,7 +1307,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setRowOffsetPerColumnFamily</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.598">setRowOffsetPerColumnFamily</a>(int&nbsp;offset)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.584">setRowOffsetPerColumnFamily</a>(int&nbsp;offset)</pre>
 <div class="block">Set offset for the row per Column Family.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1350,7 +1321,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setCaching</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.610">setCaching</a>(int&nbsp;caching)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.596">setCaching</a>(int&nbsp;caching)</pre>
 <div class="block">Set the number of rows for caching that will be passed to scanners.
  If not set, the Configuration setting <a href="../../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_SCANNER_CACHING"><code>HConstants.HBASE_CLIENT_SCANNER_CACHING</code></a> will
  apply.
@@ -1367,7 +1338,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxResultSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.618">getMaxResultSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.604">getMaxResultSize</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the maximum result size in bytes. See <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxResultSize-long-"><code>setMaxResultSize(long)</code></a></dd>
@@ -1380,7 +1351,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setMaxResultSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.629">setMaxResultSize</a>(long&nbsp;maxResultSize)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.615">setMaxResultSize</a>(long&nbsp;maxResultSize)</pre>
 <div class="block">Set the maximum result size. The default is -1; this means that no specific
  maximum result size will be set for this scan, and the global configured
  value will be used instead. (Defaults to unlimited).</div>
@@ -1396,7 +1367,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setFilter</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.635">setFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a>&nbsp;filter)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.621">setFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a>&nbsp;filter)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Query.html#setFilter-org.apache.hadoop.hbase.filter.Filter-">Query</a></code></span></div>
 <div class="block">Apply the specified server-side filter when performing the Query. Only
  <a href="../../../../../org/apache/hadoop/hbase/filter/Filter.html#filterCell-org.apache.hadoop.hbase.Cell-"><code>Filter.filterCell(org.apache.hadoop.hbase.Cell)</code></a> is called AFTER all tests for ttl,
@@ -1417,7 +1388,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setFamilyMap</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.645">setFamilyMap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" tit [...]
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.631">setFamilyMap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" tit [...]
 <div class="block">Setting the familyMap</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1433,7 +1404,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getFamilyMap</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;byte[]&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.654">getFamilyMap</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;byte[]&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.640">getFamilyMap</a>()</pre>
 <div class="block">Getting the familyMap</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1447,7 +1418,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>numFamilies</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.661">numFamilies</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.647">numFamilies</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the number of families in familyMap</dd>
@@ -1460,7 +1431,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>hasFamilies</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.671">hasFamilies</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.657">hasFamilies</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>true if familyMap is non empty, false otherwise</dd>
@@ -1473,7 +1444,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getFamilies</h4>
-<pre>public&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.678">getFamilies</a>()</pre>
+<pre>public&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.664">getFamilies</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the keys of the familyMap</dd>
@@ -1486,7 +1457,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getStartRow</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.688">getStartRow</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.674">getStartRow</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the startrow</dd>
@@ -1499,7 +1470,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>includeStartRow</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.695">includeStartRow</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.681">includeStartRow</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>if we should include start row when scan</dd>
@@ -1512,7 +1483,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getStopRow</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.702">getStopRow</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.688">getStopRow</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the stoprow</dd>
@@ -1525,7 +1496,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>includeStopRow</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.709">includeStopRow</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.695">includeStopRow</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>if we should include stop row when scan</dd>
@@ -1538,7 +1509,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxVersions</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.716">getMaxVersions</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.702">getMaxVersions</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the max number of versions to fetch</dd>
@@ -1551,7 +1522,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getBatch</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.723">getBatch</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.709">getBatch</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>maximum number of values to return for a single call to next()</dd>
@@ -1564,7 +1535,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxResultsPerColumnFamily</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.730">getMaxResultsPerColumnFamily</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.716">getMaxResultsPerColumnFamily</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>maximum number of values to return per row per CF</dd>
@@ -1577,7 +1548,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getRowOffsetPerColumnFamily</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.739">getRowOffsetPerColumnFamily</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.725">getRowOffsetPerColumnFamily</a>()</pre>
 <div class="block">Method for retrieving the scan's offset per row per column
  family (#kvs to be skipped)</div>
 <dl>
@@ -1592,7 +1563,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getCaching</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.746">getCaching</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.732">getCaching</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>caching the number of rows fetched when calling next on a scanner</dd>
@@ -1605,7 +1576,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getTimeRange</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/TimeRange.html" title="class in org.apache.hadoop.hbase.io">TimeRange</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.753">getTimeRange</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/TimeRange.html" title="class in org.apache.hadoop.hbase.io">TimeRange</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.739">getTimeRange</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>TimeRange</dd>
@@ -1618,7 +1589,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getFilter</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.761">getFilter</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.747">getFilter</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/Query.html#getFilter--">getFilter</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title="class in org.apache.hadoop.hbase.client">Query</a></code></dd>
@@ -1633,7 +1604,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>hasFilter</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.768">hasFilter</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.754">hasFilter</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>true is a filter has been specified, false if not</dd>
@@ -1646,7 +1617,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setCacheBlocks</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.782">setCacheBlocks</a>(boolean&nbsp;cacheBlocks)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.768">setCacheBlocks</a>(boolean&nbsp;cacheBlocks)</pre>
 <div class="block">Set whether blocks should be cached for this Scan.
  <p>
  This is true by default.  When true, default settings of the table and
@@ -1665,7 +1636,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getCacheBlocks</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.792">getCacheBlocks</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.778">getCacheBlocks</a>()</pre>
 <div class="block">Get whether blocks should be cached for this Scan.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1680,7 +1651,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setReversed</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.804">setReversed</a>(boolean&nbsp;reversed)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.790">setReversed</a>(boolean&nbsp;reversed)</pre>
 <div class="block">Set whether this scan is a reversed one
  <p>
  This is false by default which means forward(normal) scan.</div>
@@ -1698,7 +1669,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>isReversed</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.813">isReversed</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.799">isReversed</a>()</pre>
 <div class="block">Get whether this scan is a reversed one.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1712,7 +1683,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setAllowPartialResults</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.827">setAllowPartialResults</a>(boolean&nbsp;allowPartialResults)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.813">setAllowPartialResults</a>(boolean&nbsp;allowPartialResults)</pre>
 <div class="block">Setting whether the caller wants to see the partial results when server returns
  less-than-expected cells. It is helpful while scanning a huge row to prevent OOM at client.
  By default this value is false and the complete results will be assembled client side
@@ -1734,7 +1705,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllowPartialResults</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.837">getAllowPartialResults</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.823">getAllowPartialResults</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>true when the constructor of this scan understands that the results they will see may
@@ -1749,7 +1720,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setLoadColumnFamiliesOnDemand</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.842">setLoadColumnFamiliesOnDemand</a>(boolean&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.828">setLoadColumnFamiliesOnDemand</a>(boolean&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Query.html#setLoadColumnFamiliesOnDemand-boolean-">Query</a></code></span></div>
 <div class="block">Set the value indicating whether loading CFs on demand should be allowed (cluster
  default is false). On-demand CF loading doesn't load column families until necessary, e.g.
@@ -1777,7 +1748,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getFingerprint</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache [...]
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache [...]
 <div class="block">Compile the table and column family (i.e. schema) information
  into a String. Useful for parsing and aggregation by debugging,
  logging, and administration tools.</div>
@@ -1795,7 +1766,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>toMap</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache [...]
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache [...]
 <div class="block">Compile the details beyond the scope of getFingerprint (row, columns,
  timestamps, etc.) into a Map along with the fingerprinted information.
  Useful for debugging, logging, and administration tools.</div>
@@ -1815,7 +1786,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setRaw</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.940">setRaw</a>(boolean&nbsp;raw)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.926">setRaw</a>(boolean&nbsp;raw)</pre>
 <div class="block">Enable/disable "raw" mode for this scan.
  If "raw" is enabled the scan will return all
  delete marker and deleted rows that have not
@@ -1835,7 +1806,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>isRaw</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.948">isRaw</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.934">isRaw</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>True if this Scan is in "raw" mode.</dd>
@@ -1849,7 +1820,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <li class="blockList">
 <h4>setSmall</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.972">setSmall</a>(boolean&nbsp;small)</pre>
+public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.958">setSmall</a>(boolean&nbsp;small)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. Use <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setLimit-int-"><code>setLimit(int)</code></a> and
    <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setReadType-org.apache.hadoop.hbase.client.Scan.ReadType-"><code>setReadType(ReadType)</code></a> instead. And for the one rpc optimization, now we will also
    fetch data when openScanner, and if the number of rows reaches the limit then we will close
@@ -1879,7 +1850,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <li class="blockList">
 <h4>isSmall</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.986">isSmall</a>()</pre>
+public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.972">isSmall</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. See the comment of
    <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setSmall-boolean-"><code>setSmall(boolean)</code></a></span></div>
 <div class="block">Get whether this scan is a small scan</div>
@@ -1897,7 +1868,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setAttribute</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.991">setAttribute</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.977">setAttribute</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                          byte[]&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Attributes.html#setAttribute-java.lang.String-byte:A-">Attributes</a></code></span></div>
 <div class="block">Sets an attribute.
@@ -1920,7 +1891,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setId</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.996">setId</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.982">setId</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/OperationWithAttributes.html#setId-java.lang.String-">OperationWithAttributes</a></code></span></div>
 <div class="block">This method allows you to set an identifier on an operation. The original
  motivation for this was to allow the identifier to be used in slow query
@@ -1941,7 +1912,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setAuthorizations</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1001">setAuthorizations</a>(org.apache.hadoop.hbase.security.visibility.Authorizations&nbsp;authorizations)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.987">setAuthorizations</a>(org.apache.hadoop.hbase.security.visibility.Authorizations&nbsp;authorizations)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Query.html#setAuthorizations-org.apache.hadoop.hbase.security.visibility.Authorizations-">Query</a></code></span></div>
 <div class="block">Sets the authorizations to be used by this Query</div>
 <dl>
@@ -1956,7 +1927,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setACL</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1006">setACL</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or inter [...]
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.992">setACL</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interf [...]
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/Query.html#setACL-java.util.Map-">setACL</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title="class in org.apache.hadoop.hbase.client">Query</a></code></dd>
@@ -1971,7 +1942,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setACL</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1011">setACL</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;user,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.997">setACL</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;user,
                    org.apache.hadoop.hbase.security.access.Permission&nbsp;perms)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -1988,7 +1959,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setConsistency</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1016">setConsistency</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client">Consistency</a>&nbsp;consistency)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1002">setConsistency</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client">Consistency</a>&nbsp;consistency)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Query.html#setConsistency-org.apache.hadoop.hbase.client.Consistency-">Query</a></code></span></div>
 <div class="block">Sets the consistency level for this operation</div>
 <dl>
@@ -2005,7 +1976,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setReplicaId</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1021">setReplicaId</a>(int&nbsp;Id)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1007">setReplicaId</a>(int&nbsp;Id)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Query.html#setReplicaId-int-">Query</a></code></span></div>
 <div class="block">Specify region replica id where Query will fetch data from. Use this together with
  <a href="../../../../../org/apache/hadoop/hbase/client/Query.html#setConsistency-org.apache.hadoop.hbase.client.Consistency-"><code>Query.setConsistency(Consistency)</code></a> passing <a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html#TIMELINE"><code>Consistency.TIMELINE</code></a> to read data from
@@ -2023,7 +1994,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setIsolationLevel</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1026">setIsolationLevel</a>(<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client">IsolationLevel</a>&nbsp;level)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1012">setIsolationLevel</a>(<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client">IsolationLevel</a>&nbsp;level)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Query.html#setIsolationLevel-org.apache.hadoop.hbase.client.IsolationLevel-">Query</a></code></span></div>
 <div class="block">Set the isolation level for this query. If the
  isolation level is set to READ_UNCOMMITTED, then
@@ -2047,7 +2018,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setPriority</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1031">setPriority</a>(int&nbsp;priority)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1017">setPriority</a>(int&nbsp;priority)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/OperationWithAttributes.html#setPriority-int-">setPriority</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/OperationWithAttributes.html" title="class in org.apache.hadoop.hbase.client">OperationWithAttributes</a></code></dd>
@@ -2060,7 +2031,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setScanMetricsEnabled</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1039">setScanMetricsEnabled</a>(boolean&nbsp;enabled)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1025">setScanMetricsEnabled</a>(boolean&nbsp;enabled)</pre>
 <div class="block">Enable collection of <code>ScanMetrics</code>. For advanced users.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2074,7 +2045,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isScanMetricsEnabled</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1047">isScanMetricsEnabled</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1033">isScanMetricsEnabled</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>True if collection of scan metrics is enabled. For advanced users.</dd>
@@ -2087,7 +2058,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isAsyncPrefetch</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1052">isAsyncPrefetch</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1038">isAsyncPrefetch</a>()</pre>
 </li>
 </ul>
 <a name="setAsyncPrefetch-boolean-">
@@ -2097,7 +2068,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>setAsyncPrefetch</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1061">setAsyncPrefetch</a>(boolean&nbsp;asyncPrefetch)</pre>
+public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1047">setAsyncPrefetch</a>(boolean&nbsp;asyncPrefetch)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Since 3.0.0, will be removed in 4.0.0. After building sync client upon async
              client, the implementation is always 'async prefetch', so this flag is useless now.</span></div>
 </li>
@@ -2108,7 +2079,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getLimit</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1069">getLimit</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1055">getLimit</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the limit of rows for this scan</dd>
@@ -2121,7 +2092,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setLimit</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1081">setLimit</a>(int&nbsp;limit)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1067">setLimit</a>(int&nbsp;limit)</pre>
 <div class="block">Set the limit of rows for this scan. We will terminate the scan if the number of returned rows
  reaches this value.
  <p>
@@ -2140,7 +2111,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setOneRowLimit</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1091">setOneRowLimit</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1077">setOneRowLimit</a>()</pre>
 <div class="block">Call this when you only want to get one row. It will set <code>limit</code> to <code>1</code>, and also
  set <code>readType</code> to <a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html#PREAD"><code>Scan.ReadType.PREAD</code></a>.</div>
 <dl>
@@ -2155,7 +2126,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getReadType</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1103">getReadType</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1089">getReadType</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the read type for this scan</dd>
@@ -2168,7 +2139,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setReadType</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1114">setReadType</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a>&nbsp;readType)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1100">setReadType</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a>&nbsp;readType)</pre>
 <div class="block">Set the read type for this scan.
  <p>
  Notice that we may choose to use pread even if you specific <a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html#STREAM"><code>Scan.ReadType.STREAM</code></a> here. For
@@ -2185,7 +2156,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setNeedCursorResult</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1160">setNeedCursorResult</a>(boolean&nbsp;needCursorResult)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1146">setNeedCursorResult</a>(boolean&nbsp;needCursorResult)</pre>
 <div class="block">When the server is slow or we scan a table with many deleted data or we use a sparse filter,
  the server will response heartbeat to prevent timeout. However the scanner will return a Result
  only when client can do it. So if there are many heartbeats, the blocking time on
@@ -2211,7 +2182,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>isNeedCursorResult</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1165">isNeedCursorResult</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1151">isNeedCursorResult</a>()</pre>
 </li>
 </ul>
 <a name="createScanFromCursor-org.apache.hadoop.hbase.client.Cursor-">
@@ -2220,7 +2191,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockListLast">
 <li class="blockList">
 <h4>createScanFromCursor</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1176">createScanFromCursor</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Cursor.html" title="class in org.apache.hadoop.hbase.client">Cursor</a>&nbsp;cursor)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1162">createScanFromCursor</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Cursor.html" title="class in org.apache.hadoop.hbase.client">Cursor</a>&nbsp;cursor)</pre>
 <div class="block">Create a new Scan with a cursor. It only set the position information like start row key.
  The others (like cfs, stop row, limit) should still be filled in by the user.
  <a href="../../../../../org/apache/hadoop/hbase/client/Result.html#isCursor--"><code>Result.isCursor()</code></a>
diff --git a/apidocs/org/apache/hadoop/hbase/client/class-use/Scan.html b/apidocs/org/apache/hadoop/hbase/client/class-use/Scan.html
index 638f947..85656d3 100644
--- a/apidocs/org/apache/hadoop/hbase/client/class-use/Scan.html
+++ b/apidocs/org/apache/hadoop/hbase/client/class-use/Scan.html
@@ -257,15 +257,6 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
-<td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions--">setMaxVersions</a></span>()</code>
-<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
-<div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column
-   family's max versions, so use <a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#readAllVersions--"><code>readAllVersions()</code></a> instead.</span></div>
-</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions-int-">setMaxVersions</a></span>(int&nbsp;maxVersions)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column
@@ -273,65 +264,65 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setNeedCursorResult-boolean-">setNeedCursorResult</a></span>(boolean&nbsp;needCursorResult)</code>
 <div class="block">When the server is slow or we scan a table with many deleted data or we use a sparse filter,
  the server will response heartbeat to prevent timeout.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setOneRowLimit--">setOneRowLimit</a></span>()</code>
 <div class="block">Call this when you only want to get one row.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setPriority-int-">setPriority</a></span>(int&nbsp;priority)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setRaw-boolean-">setRaw</a></span>(boolean&nbsp;raw)</code>
 <div class="block">Enable/disable "raw" mode for this scan.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setReadType-org.apache.hadoop.hbase.client.Scan.ReadType-">setReadType</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a>&nbsp;readType)</code>
 <div class="block">Set the read type for this scan.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setReplicaId-int-">setReplicaId</a></span>(int&nbsp;Id)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setReversed-boolean-">setReversed</a></span>(boolean&nbsp;reversed)</code>
 <div class="block">Set whether this scan is a reversed one</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setRowOffsetPerColumnFamily-int-">setRowOffsetPerColumnFamily</a></span>(int&nbsp;offset)</code>
 <div class="block">Set offset for the row per Column Family.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setRowPrefixFilter-byte:A-">setRowPrefixFilter</a></span>(byte[]&nbsp;rowPrefix)</code>
 <div class="block">Set a filter (using stopRow and startRow) so the result set only contains rows where the
  rowKey starts with the specified prefix.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setScanMetricsEnabled-boolean-">setScanMetricsEnabled</a></span>(boolean&nbsp;enabled)</code>
 <div class="block">Enable collection of <code>ScanMetrics</code>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setSmall-boolean-">setSmall</a></span>(boolean&nbsp;small)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -342,7 +333,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setStopRow-byte:A-">setStopRow</a></span>(byte[]&nbsp;stopRow)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -352,7 +343,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setTimeRange-long-long-">setTimeRange</a></span>(long&nbsp;minStamp,
             long&nbsp;maxStamp)</code>
@@ -360,13 +351,13 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
  [minStamp, maxStamp).</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setTimestamp-long-">setTimestamp</a></span>(long&nbsp;timestamp)</code>
 <div class="block">Get versions of columns with the specified timestamp.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setTimeStamp-long-">setTimeStamp</a></span>(long&nbsp;timestamp)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -375,26 +366,26 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#withStartRow-byte:A-">withStartRow</a></span>(byte[]&nbsp;startRow)</code>
 <div class="block">Set the start row of the scan.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#withStartRow-byte:A-boolean-">withStartRow</a></span>(byte[]&nbsp;startRow,
             boolean&nbsp;inclusive)</code>
 <div class="block">Set the start row of the scan.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#withStopRow-byte:A-">withStopRow</a></span>(byte[]&nbsp;stopRow)</code>
 <div class="block">Set the stop row of the scan.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#withStopRow-byte:A-boolean-">withStopRow</a></span>(byte[]&nbsp;stopRow,
            boolean&nbsp;inclusive)</code>
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html b/apidocs/src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html
index a3d844a..476aa00 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html
@@ -67,1124 +67,1110 @@
 <span class="sourceLineNo">059</span> * To only retrieve columns with a specific timestamp, call {@link #setTimestamp(long) setTimestamp}<a name="line.59"></a>
 <span class="sourceLineNo">060</span> * .<a name="line.60"></a>
 <span class="sourceLineNo">061</span> * &lt;p&gt;<a name="line.61"></a>
-<span class="sourceLineNo">062</span> * To limit the number of versions of each column to be returned, call {@link #setMaxVersions(int)<a name="line.62"></a>
-<span class="sourceLineNo">063</span> * setMaxVersions}.<a name="line.63"></a>
-<span class="sourceLineNo">064</span> * &lt;p&gt;<a name="line.64"></a>
-<span class="sourceLineNo">065</span> * To limit the maximum number of values returned for each call to next(), call<a name="line.65"></a>
-<span class="sourceLineNo">066</span> * {@link #setBatch(int) setBatch}.<a name="line.66"></a>
-<span class="sourceLineNo">067</span> * &lt;p&gt;<a name="line.67"></a>
-<span class="sourceLineNo">068</span> * To add a filter, call {@link #setFilter(org.apache.hadoop.hbase.filter.Filter) setFilter}.<a name="line.68"></a>
-<span class="sourceLineNo">069</span> * &lt;p&gt;<a name="line.69"></a>
-<span class="sourceLineNo">070</span> * For small scan, it is deprecated in 2.0.0. Now we have a {@link #setLimit(int)} method in Scan<a name="line.70"></a>
-<span class="sourceLineNo">071</span> * object which is used to tell RS how many rows we want. If the rows return reaches the limit, the<a name="line.71"></a>
-<span class="sourceLineNo">072</span> * RS will close the RegionScanner automatically. And we will also fetch data when openScanner in<a name="line.72"></a>
-<span class="sourceLineNo">073</span> * the new implementation, this means we can also finish a scan operation in one rpc call. And we<a name="line.73"></a>
-<span class="sourceLineNo">074</span> * have also introduced a {@link #setReadType(ReadType)} method. You can use this method to tell RS<a name="line.74"></a>
-<span class="sourceLineNo">075</span> * to use pread explicitly.<a name="line.75"></a>
-<span class="sourceLineNo">076</span> * &lt;p&gt;<a name="line.76"></a>
-<span class="sourceLineNo">077</span> * Expert: To explicitly disable server-side block caching for this scan, execute<a name="line.77"></a>
-<span class="sourceLineNo">078</span> * {@link #setCacheBlocks(boolean)}.<a name="line.78"></a>
-<span class="sourceLineNo">079</span> * &lt;p&gt;<a name="line.79"></a>
-<span class="sourceLineNo">080</span> * &lt;em&gt;Note:&lt;/em&gt; Usage alters Scan instances. Internally, attributes are updated as the Scan runs<a name="line.80"></a>
-<span class="sourceLineNo">081</span> * and if enabled, metrics accumulate in the Scan instance. Be aware this is the case when you go to<a name="line.81"></a>
-<span class="sourceLineNo">082</span> * clone a Scan instance or if you go to reuse a created Scan instance; safer is create a Scan<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * instance per usage.<a name="line.83"></a>
-<span class="sourceLineNo">084</span> */<a name="line.84"></a>
-<span class="sourceLineNo">085</span>@InterfaceAudience.Public<a name="line.85"></a>
-<span class="sourceLineNo">086</span>public class Scan extends Query {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  private static final Logger LOG = LoggerFactory.getLogger(Scan.class);<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  private static final String RAW_ATTR = "_raw_";<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private byte[] startRow = HConstants.EMPTY_START_ROW;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  private boolean includeStartRow = true;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private byte[] stopRow  = HConstants.EMPTY_END_ROW;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  private boolean includeStopRow = false;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  private int maxVersions = 1;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  private int batch = -1;<a name="line.96"></a>
-<span class="sourceLineNo">097</span><a name="line.97"></a>
-<span class="sourceLineNo">098</span>  /**<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * Partial {@link Result}s are {@link Result}s must be combined to form a complete {@link Result}.<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   * The {@link Result}s had to be returned in fragments (i.e. as partials) because the size of the<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * cells in the row exceeded max result size on the server. Typically partial results will be<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * combined client side into complete results before being delivered to the caller. However, if<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * this flag is set, the caller is indicating that they do not mind seeing partial results (i.e.<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * they understand that the results returned from the Scanner may only represent part of a<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   * particular row). In such a case, any attempt to combine the partials into a complete result on<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   * the client side will be skipped, and the caller will be able to see the exact results returned<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   * from the server.<a name="line.107"></a>
-<span class="sourceLineNo">108</span>   */<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  private boolean allowPartialResults = false;<a name="line.109"></a>
-<span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>  private int storeLimit = -1;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  private int storeOffset = 0;<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private static final String SCAN_ATTRIBUTES_METRICS_ENABLE = "scan.attributes.metrics.enable";<a name="line.114"></a>
-<span class="sourceLineNo">115</span><a name="line.115"></a>
-<span class="sourceLineNo">116</span>  // If an application wants to use multiple scans over different tables each scan must<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  // define this attribute with the appropriate table name by calling<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  // scan.setAttribute(Scan.SCAN_ATTRIBUTES_TABLE_NAME, Bytes.toBytes(tableName))<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  static public final String SCAN_ATTRIBUTES_TABLE_NAME = "scan.attributes.table.name";<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  /**<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   * -1 means no caching specified and the value of {@link HConstants#HBASE_CLIENT_SCANNER_CACHING}<a name="line.122"></a>
-<span class="sourceLineNo">123</span>   * (default to {@link HConstants#DEFAULT_HBASE_CLIENT_SCANNER_CACHING}) will be used<a name="line.123"></a>
-<span class="sourceLineNo">124</span>   */<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  private int caching = -1;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private long maxResultSize = -1;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  private boolean cacheBlocks = true;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  private boolean reversed = false;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  private TimeRange tr = TimeRange.allTime();<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private Map&lt;byte [], NavigableSet&lt;byte []&gt;&gt; familyMap =<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    new TreeMap&lt;byte [], NavigableSet&lt;byte []&gt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private Boolean asyncPrefetch = null;<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  /**<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   * Parameter name for client scanner sync/async prefetch toggle.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * When using async scanner, prefetching data from the server is done at the background.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * The parameter currently won't have any effect in the case that the user has set<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * Scan#setSmall or Scan#setReversed<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   */<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  public static final String HBASE_CLIENT_SCANNER_ASYNC_PREFETCH =<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      "hbase.client.scanner.async.prefetch";<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>  /**<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * Default value of {@link #HBASE_CLIENT_SCANNER_ASYNC_PREFETCH}.<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  public static final boolean DEFAULT_HBASE_CLIENT_SCANNER_ASYNC_PREFETCH = false;<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>  /**<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * Set it true for small scan to get better performance Small scan should use pread and big scan<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * can use seek + read seek + read is fast but can cause two problem (1) resource contention (2)<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * cause too much network io [89-fb] Using pread for non-compaction read request<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   * https://issues.apache.org/jira/browse/HBASE-7266 On the other hand, if setting it true, we<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   * would do openScanner,next,closeScanner in one RPC call. It means the better performance for<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * small scan. [HBASE-9488]. Generally, if the scan range is within one data block(64KB), it could<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   * be considered as a small scan.<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   */<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  private boolean small = false;<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  /**<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   * The mvcc read point to use when open a scanner. Remember to clear it after switching regions as<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   * the mvcc is only valid within region scope.<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   */<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  private long mvccReadPoint = -1L;<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>  /**<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * The number of rows we want for this scan. We will terminate the scan if the number of return<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * rows reaches this value.<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   */<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  private int limit = -1;<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>  /**<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * Control whether to use pread at server side.<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   */<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  private ReadType readType = ReadType.DEFAULT;<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>  private boolean needCursorResult = false;<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  /**<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   * Create a Scan operation across all rows.<a name="line.179"></a>
-<span class="sourceLineNo">180</span>   */<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  public Scan() {}<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>  /**<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * Create a Scan operation starting at the specified row.<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * &lt;p&gt;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * If the specified row does not exist, the Scanner will start from the next closest row after the<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * specified row.<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * @param startRow row to start scanner at or after<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   *   {@code new Scan().withStartRow(startRow)} instead.<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17320"&gt;HBASE-17320&lt;/a&gt;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   */<a name="line.192"></a>
-<span class="sourceLineNo">193</span>  @Deprecated<a name="line.193"></a>
-<span class="sourceLineNo">194</span>  public Scan(byte[] startRow) {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    withStartRow(startRow);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>  }<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>  /**<a name="line.198"></a>
-<span class="sourceLineNo">199</span>   * Create a Scan operation for the range of rows specified.<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   * @param startRow row to start scanner at or after (inclusive)<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   * @param stopRow row to stop scanner before (exclusive)<a name="line.201"></a>
-<span class="sourceLineNo">202</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use<a name="line.202"></a>
-<span class="sourceLineNo">203</span>   *   {@code new Scan().withStartRow(startRow).withStopRow(stopRow)} instead.<a name="line.203"></a>
-<span class="sourceLineNo">204</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17320"&gt;HBASE-17320&lt;/a&gt;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>   */<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  @Deprecated<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  public Scan(byte[] startRow, byte[] stopRow) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    withStartRow(startRow);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    setStopRow(stopRow);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  }<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>  /**<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * Creates a new instance of this class while copying all values.<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   *<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * @param scan  The scan instance to copy from.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @throws IOException When copying the values fails.<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   */<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public Scan(Scan scan) throws IOException {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    startRow = scan.getStartRow();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    includeStartRow = scan.includeStartRow();<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    stopRow  = scan.getStopRow();<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    includeStopRow = scan.includeStopRow();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    maxVersions = scan.getMaxVersions();<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    batch = scan.getBatch();<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    storeLimit = scan.getMaxResultsPerColumnFamily();<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    storeOffset = scan.getRowOffsetPerColumnFamily();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    caching = scan.getCaching();<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    maxResultSize = scan.getMaxResultSize();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    cacheBlocks = scan.getCacheBlocks();<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    filter = scan.getFilter(); // clone?<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    loadColumnFamiliesOnDemand = scan.getLoadColumnFamiliesOnDemandValue();<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    consistency = scan.getConsistency();<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    this.setIsolationLevel(scan.getIsolationLevel());<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    reversed = scan.isReversed();<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    asyncPrefetch = scan.isAsyncPrefetch();<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    small = scan.isSmall();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    allowPartialResults = scan.getAllowPartialResults();<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    tr = scan.getTimeRange(); // TimeRange is immutable<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    Map&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; fams = scan.getFamilyMap();<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    for (Map.Entry&lt;byte[],NavigableSet&lt;byte[]&gt;&gt; entry : fams.entrySet()) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      byte [] fam = entry.getKey();<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      NavigableSet&lt;byte[]&gt; cols = entry.getValue();<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      if (cols != null &amp;&amp; cols.size() &gt; 0) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        for (byte[] col : cols) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          addColumn(fam, col);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        }<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      } else {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        addFamily(fam);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    }<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    for (Map.Entry&lt;String, byte[]&gt; attr : scan.getAttributesMap().entrySet()) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      setAttribute(attr.getKey(), attr.getValue());<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    for (Map.Entry&lt;byte[], TimeRange&gt; entry : scan.getColumnFamilyTimeRange().entrySet()) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      TimeRange tr = entry.getValue();<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      setColumnFamilyTimeRange(entry.getKey(), tr.getMin(), tr.getMax());<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    this.mvccReadPoint = scan.getMvccReadPoint();<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    this.limit = scan.getLimit();<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    this.needCursorResult = scan.isNeedCursorResult();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    setPriority(scan.getPriority());<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    readType = scan.getReadType();<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    super.setReplicaId(scan.getReplicaId());<a name="line.263"></a>
-<span class="sourceLineNo">264</span>  }<a name="line.264"></a>
-<span class="sourceLineNo">265</span><a name="line.265"></a>
-<span class="sourceLineNo">266</span>  /**<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   * Builds a scan object with the same specs as get.<a name="line.267"></a>
-<span class="sourceLineNo">268</span>   * @param get get to model scan after<a name="line.268"></a>
-<span class="sourceLineNo">269</span>   */<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  public Scan(Get get) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    this.startRow = get.getRow();<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    this.includeStartRow = true;<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    this.stopRow = get.getRow();<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    this.includeStopRow = true;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    this.filter = get.getFilter();<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    this.cacheBlocks = get.getCacheBlocks();<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    this.maxVersions = get.getMaxVersions();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    this.storeLimit = get.getMaxResultsPerColumnFamily();<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    this.storeOffset = get.getRowOffsetPerColumnFamily();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    this.tr = get.getTimeRange();<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    this.familyMap = get.getFamilyMap();<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    this.asyncPrefetch = false;<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    this.consistency = get.getConsistency();<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    this.setIsolationLevel(get.getIsolationLevel());<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    this.loadColumnFamiliesOnDemand = get.getLoadColumnFamiliesOnDemandValue();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    for (Map.Entry&lt;String, byte[]&gt; attr : get.getAttributesMap().entrySet()) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      setAttribute(attr.getKey(), attr.getValue());<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    for (Map.Entry&lt;byte[], TimeRange&gt; entry : get.getColumnFamilyTimeRange().entrySet()) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      TimeRange tr = entry.getValue();<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      setColumnFamilyTimeRange(entry.getKey(), tr.getMin(), tr.getMax());<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    this.mvccReadPoint = -1L;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    setPriority(get.getPriority());<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    super.setReplicaId(get.getReplicaId());<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  }<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>  public boolean isGetScan() {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    return includeStartRow &amp;&amp; includeStopRow<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        &amp;&amp; ClientUtil.areScanStartRowAndStopRowEqual(this.startRow, this.stopRow);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  }<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>  /**<a name="line.303"></a>
-<span class="sourceLineNo">304</span>   * Get all columns from the specified family.<a name="line.304"></a>
-<span class="sourceLineNo">305</span>   * &lt;p&gt;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>   * Overrides previous calls to addColumn for this family.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   * @param family family name<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * @return this<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   */<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  public Scan addFamily(byte [] family) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    familyMap.remove(family);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    familyMap.put(family, null);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    return this;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  /**<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * Get the column from the specified family with the specified qualifier.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * &lt;p&gt;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * Overrides previous calls to addFamily for this family.<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   * @param family family name<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * @param qualifier column qualifier<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   * @return this<a name="line.322"></a>
-<span class="sourceLineNo">323</span>   */<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  public Scan addColumn(byte [] family, byte [] qualifier) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    NavigableSet&lt;byte []&gt; set = familyMap.get(family);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    if(set == null) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      set = new TreeSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      familyMap.put(family, set);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    }<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    if (qualifier == null) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      qualifier = HConstants.EMPTY_BYTE_ARRAY;<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    set.add(qualifier);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    return this;<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  }<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>  /**<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   * Get versions of columns only within the specified timestamp range,<a name="line.338"></a>
-<span class="sourceLineNo">339</span>   * [minStamp, maxStamp).  Note, default maximum versions to return is 1.  If<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   * your time range spans more than one version and you want all versions<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * returned, up the number of versions beyond the default.<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * @param minStamp minimum timestamp value, inclusive<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   * @param maxStamp maximum timestamp value, exclusive<a name="line.343"></a>
-<span class="sourceLineNo">344</span>   * @see #setMaxVersions()<a name="line.344"></a>
-<span class="sourceLineNo">345</span>   * @see #setMaxVersions(int)<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   * @return this<a name="line.346"></a>
-<span class="sourceLineNo">347</span>   */<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  public Scan setTimeRange(long minStamp, long maxStamp) throws IOException {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    tr = new TimeRange(minStamp, maxStamp);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    return this;<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /**<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * Get versions of columns with the specified timestamp. Note, default maximum<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * versions to return is 1.  If your time range spans more than one version<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * and you want all versions returned, up the number of versions beyond the<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   * defaut.<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * @param timestamp version timestamp<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * @see #setMaxVersions()<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   * @see #setMaxVersions(int)<a name="line.360"></a>
-<span class="sourceLineNo">361</span>   * @return this<a name="line.361"></a>
-<span class="sourceLineNo">362</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   *             Use {@link #setTimestamp(long)} instead<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   */<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  @Deprecated<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  public Scan setTimeStamp(long timestamp)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  throws IOException {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    return this.setTimestamp(timestamp);<a name="line.368"></a>
-<span class="sourceLineNo">369</span>  }<a name="line.369"></a>
-<span class="sourceLineNo">370</span><a name="line.370"></a>
-<span class="sourceLineNo">371</span>  /**<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * Get versions of columns with the specified timestamp. Note, default maximum<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * versions to return is 1.  If your time range spans more than one version<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * and you want all versions returned, up the number of versions beyond the<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   * defaut.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * @param timestamp version timestamp<a name="line.376"></a>
-<span class="sourceLineNo">377</span>   * @see #setMaxVersions()<a name="line.377"></a>
-<span class="sourceLineNo">378</span>   * @see #setMaxVersions(int)<a name="line.378"></a>
-<span class="sourceLineNo">379</span>   * @return this<a name="line.379"></a>
-<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  public Scan setTimestamp(long timestamp) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    try {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      tr = new TimeRange(timestamp, timestamp + 1);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    } catch(Exception e) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      // This should never happen, unless integer overflow or something extremely wrong...<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      LOG.error("TimeRange failed, likely caused by integer overflow. ", e);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      throw e;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    }<a name="line.388"></a>
-<span class="sourceLineNo">389</span><a name="line.389"></a>
-<span class="sourceLineNo">390</span>    return this;<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  }<a name="line.391"></a>
-<span class="sourceLineNo">392</span><a name="line.392"></a>
-<span class="sourceLineNo">393</span>  @Override public Scan setColumnFamilyTimeRange(byte[] cf, long minStamp, long maxStamp) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    return (Scan) super.setColumnFamilyTimeRange(cf, minStamp, maxStamp);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>  /**<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * Set the start row of the scan.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * &lt;p&gt;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * If the specified row does not exist, the Scanner will start from the next closest row after the<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * specified row.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param startRow row to start scanner at or after<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @return this<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @throws IllegalArgumentException if startRow does not meet criteria for a row key (when length<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.405"></a>
-<span class="sourceLineNo">406</span>   */<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  public Scan withStartRow(byte[] startRow) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    return withStartRow(startRow, true);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>  }<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>  /**<a name="line.411"></a>
-<span class="sourceLineNo">412</span>   * Set the start row of the scan.<a name="line.412"></a>
-<span class="sourceLineNo">413</span>   * &lt;p&gt;<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * If the specified row does not exist, or the {@code inclusive} is {@code false}, the Scanner<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * will start from the next closest row after the specified row.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * @param startRow row to start scanner at or after<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param inclusive whether we should include the start row when scan<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @return this<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * @throws IllegalArgumentException if startRow does not meet criteria for a row key (when length<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   */<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  public Scan withStartRow(byte[] startRow, boolean inclusive) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    if (Bytes.len(startRow) &gt; HConstants.MAX_ROW_LENGTH) {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      throw new IllegalArgumentException("startRow's length must be less than or equal to "<a name="line.424"></a>
-<span class="sourceLineNo">425</span>          + HConstants.MAX_ROW_LENGTH + " to meet the criteria" + " for a row key.");<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    }<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    this.startRow = startRow;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    this.includeStartRow = inclusive;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    return this;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>  }<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>  /**<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * Set the stop row of the scan.<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   * &lt;p&gt;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>   * The scan will include rows that are lexicographically less than the provided stopRow.<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   * &lt;p&gt;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * &lt;b&gt;Note:&lt;/b&gt; When doing a filter for a rowKey &lt;u&gt;Prefix&lt;/u&gt; use<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   * {@link #setRowPrefixFilter(byte[])}. The 'trailing 0' will not yield the desired result.<a name="line.438"></a>
-<span class="sourceLineNo">439</span>   * &lt;/p&gt;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>   * @param stopRow row to end at (exclusive)<a name="line.440"></a>
-<span class="sourceLineNo">441</span>   * @return this<a name="line.441"></a>
-<span class="sourceLineNo">442</span>   * @throws IllegalArgumentException if stopRow does not meet criteria for a row key (when length<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use {@link #withStopRow(byte[])} instead.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   *   This method may change the inclusive of the stop row to keep compatible with the old<a name="line.445"></a>
-<span class="sourceLineNo">446</span>   *   behavior.<a name="line.446"></a>
-<span class="sourceLineNo">447</span>   * @see #withStopRow(byte[])<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17320"&gt;HBASE-17320&lt;/a&gt;<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   */<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  @Deprecated<a name="line.450"></a>
-<span class="sourceLineNo">451</span>  public Scan setStopRow(byte[] stopRow) {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    withStopRow(stopRow);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    if (ClientUtil.areScanStartRowAndStopRowEqual(this.startRow, this.stopRow)) {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      // for keeping the old behavior that a scan with the same start and stop row is a get scan.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      this.includeStopRow = true;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    return this;<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
-<span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>  /**<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * Set the stop row of the scan.<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * &lt;p&gt;<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * The scan will include rows that are lexicographically less than the provided stopRow.<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * &lt;p&gt;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   * &lt;b&gt;Note:&lt;/b&gt; When doing a filter for a rowKey &lt;u&gt;Prefix&lt;/u&gt; use<a name="line.465"></a>
-<span class="sourceLineNo">466</span>   * {@link #setRowPrefixFilter(byte[])}. The 'trailing 0' will not yield the desired result.<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   * &lt;/p&gt;<a name="line.467"></a>
-<span class="sourceLineNo">468</span>   * @param stopRow row to end at (exclusive)<a name="line.468"></a>
-<span class="sourceLineNo">469</span>   * @return this<a name="line.469"></a>
-<span class="sourceLineNo">470</span>   * @throws IllegalArgumentException if stopRow does not meet criteria for a row key (when length<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   */<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  public Scan withStopRow(byte[] stopRow) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    return withStopRow(stopRow, false);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>  }<a name="line.475"></a>
-<span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span>  /**<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * Set the stop row of the scan.<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * &lt;p&gt;<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * The scan will include rows that are lexicographically less than (or equal to if<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * {@code inclusive} is {@code true}) the provided stopRow.<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * @param stopRow row to end at<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * @param inclusive whether we should include the stop row when scan<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   * @return this<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * @throws IllegalArgumentException if stopRow does not meet criteria for a row key (when length<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   */<a name="line.487"></a>
-<span class="sourceLineNo">488</span>  public Scan withStopRow(byte[] stopRow, boolean inclusive) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    if (Bytes.len(stopRow) &gt; HConstants.MAX_ROW_LENGTH) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      throw new IllegalArgumentException("stopRow's length must be less than or equal to "<a name="line.490"></a>
-<span class="sourceLineNo">491</span>          + HConstants.MAX_ROW_LENGTH + " to meet the criteria" + " for a row key.");<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    this.stopRow = stopRow;<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    this.includeStopRow = inclusive;<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    return this;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>  }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>  /**<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * &lt;p&gt;Set a filter (using stopRow and startRow) so the result set only contains rows where the<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   * rowKey starts with the specified prefix.&lt;/p&gt;<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * &lt;p&gt;This is a utility method that converts the desired rowPrefix into the appropriate values<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   * for the startRow and stopRow to achieve the desired result.&lt;/p&gt;<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * &lt;p&gt;This can safely be used in combination with setFilter.&lt;/p&gt;<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * &lt;p&gt;&lt;b&gt;NOTE: Doing a {@link #withStartRow(byte[])} and/or {@link #setStopRow(byte[])}<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * after this method will yield undefined results.&lt;/b&gt;&lt;/p&gt;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @param rowPrefix the prefix all rows must start with. (Set &lt;i&gt;null&lt;/i&gt; to remove the filter.)<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * @return this<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   */<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  public Scan setRowPrefixFilter(byte[] rowPrefix) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    if (rowPrefix == null) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      withStartRow(HConstants.EMPTY_START_ROW);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      setStopRow(HConstants.EMPTY_END_ROW);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    } else {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      this.withStartRow(rowPrefix);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      this.setStopRow(ClientUtil.calculateTheClosestNextRowKeyForPrefix(rowPrefix));<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    return this;<a name="line.517"></a>
-<span class="sourceLineNo">518</span>  }<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>  /**<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * Get all available versions.<a name="line.521"></a>
+<span class="sourceLineNo">062</span> * To limit the number of versions of each column to be returned, call {@link #setMaxVersions(int)}.<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * &lt;p&gt;<a name="line.63"></a>
+<span class="sourceLineNo">064</span> * To limit the maximum number of values returned for each call to next(), call<a name="line.64"></a>
+<span class="sourceLineNo">065</span> * {@link #setBatch(int) setBatch}.<a name="line.65"></a>
+<span class="sourceLineNo">066</span> * &lt;p&gt;<a name="line.66"></a>
+<span class="sourceLineNo">067</span> * To add a filter, call {@link #setFilter(org.apache.hadoop.hbase.filter.Filter) setFilter}.<a name="line.67"></a>
+<span class="sourceLineNo">068</span> * &lt;p&gt;<a name="line.68"></a>
+<span class="sourceLineNo">069</span> * For small scan, it is deprecated in 2.0.0. Now we have a {@link #setLimit(int)} method in Scan<a name="line.69"></a>
+<span class="sourceLineNo">070</span> * object which is used to tell RS how many rows we want. If the rows return reaches the limit, the<a name="line.70"></a>
+<span class="sourceLineNo">071</span> * RS will close the RegionScanner automatically. And we will also fetch data when openScanner in<a name="line.71"></a>
+<span class="sourceLineNo">072</span> * the new implementation, this means we can also finish a scan operation in one rpc call. And we<a name="line.72"></a>
+<span class="sourceLineNo">073</span> * have also introduced a {@link #setReadType(ReadType)} method. You can use this method to tell RS<a name="line.73"></a>
+<span class="sourceLineNo">074</span> * to use pread explicitly.<a name="line.74"></a>
+<span class="sourceLineNo">075</span> * &lt;p&gt;<a name="line.75"></a>
+<span class="sourceLineNo">076</span> * Expert: To explicitly disable server-side block caching for this scan, execute<a name="line.76"></a>
+<span class="sourceLineNo">077</span> * {@link #setCacheBlocks(boolean)}.<a name="line.77"></a>
+<span class="sourceLineNo">078</span> * &lt;p&gt;<a name="line.78"></a>
+<span class="sourceLineNo">079</span> * &lt;em&gt;Note:&lt;/em&gt; Usage alters Scan instances. Internally, attributes are updated as the Scan runs<a name="line.79"></a>
+<span class="sourceLineNo">080</span> * and if enabled, metrics accumulate in the Scan instance. Be aware this is the case when you go to<a name="line.80"></a>
+<span class="sourceLineNo">081</span> * clone a Scan instance or if you go to reuse a created Scan instance; safer is create a Scan<a name="line.81"></a>
+<span class="sourceLineNo">082</span> * instance per usage.<a name="line.82"></a>
+<span class="sourceLineNo">083</span> */<a name="line.83"></a>
+<span class="sourceLineNo">084</span>@InterfaceAudience.Public<a name="line.84"></a>
+<span class="sourceLineNo">085</span>public class Scan extends Query {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private static final Logger LOG = LoggerFactory.getLogger(Scan.class);<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>  private static final String RAW_ATTR = "_raw_";<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  private byte[] startRow = HConstants.EMPTY_START_ROW;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  private boolean includeStartRow = true;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private byte[] stopRow  = HConstants.EMPTY_END_ROW;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  private boolean includeStopRow = false;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  private int maxVersions = 1;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private int batch = -1;<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>  /**<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   * Partial {@link Result}s are {@link Result}s must be combined to form a complete {@link Result}.<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   * The {@link Result}s had to be returned in fragments (i.e. as partials) because the size of the<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   * cells in the row exceeded max result size on the server. Typically partial results will be<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * combined client side into complete results before being delivered to the caller. However, if<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * this flag is set, the caller is indicating that they do not mind seeing partial results (i.e.<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * they understand that the results returned from the Scanner may only represent part of a<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   * particular row). In such a case, any attempt to combine the partials into a complete result on<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   * the client side will be skipped, and the caller will be able to see the exact results returned<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   * from the server.<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   */<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private boolean allowPartialResults = false;<a name="line.108"></a>
+<span class="sourceLineNo">109</span><a name="line.109"></a>
+<span class="sourceLineNo">110</span>  private int storeLimit = -1;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private int storeOffset = 0;<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  private static final String SCAN_ATTRIBUTES_METRICS_ENABLE = "scan.attributes.metrics.enable";<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  // If an application wants to use multiple scans over different tables each scan must<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  // define this attribute with the appropriate table name by calling<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  // scan.setAttribute(Scan.SCAN_ATTRIBUTES_TABLE_NAME, Bytes.toBytes(tableName))<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  static public final String SCAN_ATTRIBUTES_TABLE_NAME = "scan.attributes.table.name";<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  /**<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   * -1 means no caching specified and the value of {@link HConstants#HBASE_CLIENT_SCANNER_CACHING}<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   * (default to {@link HConstants#DEFAULT_HBASE_CLIENT_SCANNER_CACHING}) will be used<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   */<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  private int caching = -1;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  private long maxResultSize = -1;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  private boolean cacheBlocks = true;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  private boolean reversed = false;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private TimeRange tr = TimeRange.allTime();<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  private Map&lt;byte [], NavigableSet&lt;byte []&gt;&gt; familyMap =<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    new TreeMap&lt;byte [], NavigableSet&lt;byte []&gt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  private Boolean asyncPrefetch = null;<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  /**<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   * Parameter name for client scanner sync/async prefetch toggle.<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   * When using async scanner, prefetching data from the server is done at the background.<a name="line.135"></a>
+<span class="sourceLineNo">136</span>   * The parameter currently won't have any effect in the case that the user has set<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   * Scan#setSmall or Scan#setReversed<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   */<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  public static final String HBASE_CLIENT_SCANNER_ASYNC_PREFETCH =<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      "hbase.client.scanner.async.prefetch";<a name="line.140"></a>
+<span class="sourceLineNo">141</span><a name="line.141"></a>
+<span class="sourceLineNo">142</span>  /**<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   * Default value of {@link #HBASE_CLIENT_SCANNER_ASYNC_PREFETCH}.<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   */<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  public static final boolean DEFAULT_HBASE_CLIENT_SCANNER_ASYNC_PREFETCH = false;<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  /**<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * Set it true for small scan to get better performance Small scan should use pread and big scan<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * can use seek + read seek + read is fast but can cause two problem (1) resource contention (2)<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   * cause too much network io [89-fb] Using pread for non-compaction read request<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * https://issues.apache.org/jira/browse/HBASE-7266 On the other hand, if setting it true, we<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   * would do openScanner,next,closeScanner in one RPC call. It means the better performance for<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * small scan. [HBASE-9488]. Generally, if the scan range is within one data block(64KB), it could<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * be considered as a small scan.<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   */<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  private boolean small = false;<a name="line.156"></a>
+<span class="sourceLineNo">157</span><a name="line.157"></a>
+<span class="sourceLineNo">158</span>  /**<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   * The mvcc read point to use when open a scanner. Remember to clear it after switching regions as<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   * the mvcc is only valid within region scope.<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   */<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  private long mvccReadPoint = -1L;<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>  /**<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * The number of rows we want for this scan. We will terminate the scan if the number of return<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * rows reaches this value.<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   */<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  private int limit = -1;<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>  /**<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * Control whether to use pread at server side.<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   */<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  private ReadType readType = ReadType.DEFAULT;<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>  private boolean needCursorResult = false;<a name="line.175"></a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span>  /**<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   * Create a Scan operation across all rows.<a name="line.178"></a>
+<span class="sourceLineNo">179</span>   */<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  public Scan() {}<a name="line.180"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span>  /**<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   * Create a Scan operation starting at the specified row.<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * &lt;p&gt;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   * If the specified row does not exist, the Scanner will start from the next closest row after the<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   * specified row.<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * @param startRow row to start scanner at or after<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   *   {@code new Scan().withStartRow(startRow)} instead.<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17320"&gt;HBASE-17320&lt;/a&gt;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   */<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  @Deprecated<a name="line.192"></a>
+<span class="sourceLineNo">193</span>  public Scan(byte[] startRow) {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    withStartRow(startRow);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>  }<a name="line.195"></a>
+<span class="sourceLineNo">196</span><a name="line.196"></a>
+<span class="sourceLineNo">197</span>  /**<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * Create a Scan operation for the range of rows specified.<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * @param startRow row to start scanner at or after (inclusive)<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * @param stopRow row to stop scanner before (exclusive)<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use<a name="line.201"></a>
+<span class="sourceLineNo">202</span>   *   {@code new Scan().withStartRow(startRow).withStopRow(stopRow)} instead.<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17320"&gt;HBASE-17320&lt;/a&gt;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>   */<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  @Deprecated<a name="line.205"></a>
+<span class="sourceLineNo">206</span>  public Scan(byte[] startRow, byte[] stopRow) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    withStartRow(startRow);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    setStopRow(stopRow);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>  /**<a name="line.211"></a>
+<span class="sourceLineNo">212</span>   * Creates a new instance of this class while copying all values.<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   *<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   * @param scan  The scan instance to copy from.<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   * @throws IOException When copying the values fails.<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   */<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  public Scan(Scan scan) throws IOException {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    startRow = scan.getStartRow();<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    includeStartRow = scan.includeStartRow();<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    stopRow  = scan.getStopRow();<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    includeStopRow = scan.includeStopRow();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    maxVersions = scan.getMaxVersions();<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    batch = scan.getBatch();<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    storeLimit = scan.getMaxResultsPerColumnFamily();<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    storeOffset = scan.getRowOffsetPerColumnFamily();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    caching = scan.getCaching();<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    maxResultSize = scan.getMaxResultSize();<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    cacheBlocks = scan.getCacheBlocks();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    filter = scan.getFilter(); // clone?<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    loadColumnFamiliesOnDemand = scan.getLoadColumnFamiliesOnDemandValue();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    consistency = scan.getConsistency();<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    this.setIsolationLevel(scan.getIsolationLevel());<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    reversed = scan.isReversed();<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    asyncPrefetch = scan.isAsyncPrefetch();<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    small = scan.isSmall();<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    allowPartialResults = scan.getAllowPartialResults();<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    tr = scan.getTimeRange(); // TimeRange is immutable<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    Map&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; fams = scan.getFamilyMap();<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    for (Map.Entry&lt;byte[],NavigableSet&lt;byte[]&gt;&gt; entry : fams.entrySet()) {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      byte [] fam = entry.getKey();<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      NavigableSet&lt;byte[]&gt; cols = entry.getValue();<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      if (cols != null &amp;&amp; cols.size() &gt; 0) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        for (byte[] col : cols) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          addColumn(fam, col);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        }<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      } else {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        addFamily(fam);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      }<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    for (Map.Entry&lt;String, byte[]&gt; attr : scan.getAttributesMap().entrySet()) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      setAttribute(attr.getKey(), attr.getValue());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    }<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    for (Map.Entry&lt;byte[], TimeRange&gt; entry : scan.getColumnFamilyTimeRange().entrySet()) {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      TimeRange tr = entry.getValue();<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      setColumnFamilyTimeRange(entry.getKey(), tr.getMin(), tr.getMax());<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    }<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    this.mvccReadPoint = scan.getMvccReadPoint();<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    this.limit = scan.getLimit();<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    this.needCursorResult = scan.isNeedCursorResult();<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    setPriority(scan.getPriority());<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    readType = scan.getReadType();<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    super.setReplicaId(scan.getReplicaId());<a name="line.262"></a>
+<span class="sourceLineNo">263</span>  }<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>  /**<a name="line.265"></a>
+<span class="sourceLineNo">266</span>   * Builds a scan object with the same specs as get.<a name="line.266"></a>
+<span class="sourceLineNo">267</span>   * @param get get to model scan after<a name="line.267"></a>
+<span class="sourceLineNo">268</span>   */<a name="line.268"></a>
+<span class="sourceLineNo">269</span>  public Scan(Get get) {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    this.startRow = get.getRow();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    this.includeStartRow = true;<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    this.stopRow = get.getRow();<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    this.includeStopRow = true;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    this.filter = get.getFilter();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    this.cacheBlocks = get.getCacheBlocks();<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    this.maxVersions = get.getMaxVersions();<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    this.storeLimit = get.getMaxResultsPerColumnFamily();<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    this.storeOffset = get.getRowOffsetPerColumnFamily();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    this.tr = get.getTimeRange();<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    this.familyMap = get.getFamilyMap();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    this.asyncPrefetch = false;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    this.consistency = get.getConsistency();<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    this.setIsolationLevel(get.getIsolationLevel());<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    this.loadColumnFamiliesOnDemand = get.getLoadColumnFamiliesOnDemandValue();<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    for (Map.Entry&lt;String, byte[]&gt; attr : get.getAttributesMap().entrySet()) {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      setAttribute(attr.getKey(), attr.getValue());<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    }<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    for (Map.Entry&lt;byte[], TimeRange&gt; entry : get.getColumnFamilyTimeRange().entrySet()) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      TimeRange tr = entry.getValue();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      setColumnFamilyTimeRange(entry.getKey(), tr.getMin(), tr.getMax());<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    this.mvccReadPoint = -1L;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    setPriority(get.getPriority());<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    super.setReplicaId(get.getReplicaId());<a name="line.294"></a>
+<span class="sourceLineNo">295</span>  }<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public boolean isGetScan() {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    return includeStartRow &amp;&amp; includeStopRow<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        &amp;&amp; ClientUtil.areScanStartRowAndStopRowEqual(this.startRow, this.stopRow);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  }<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>  /**<a name="line.302"></a>
+<span class="sourceLineNo">303</span>   * Get all columns from the specified family.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>   * &lt;p&gt;<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   * Overrides previous calls to addColumn for this family.<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   * @param family family name<a name="line.306"></a>
+<span class="sourceLineNo">307</span>   * @return this<a name="line.307"></a>
+<span class="sourceLineNo">308</span>   */<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  public Scan addFamily(byte [] family) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    familyMap.remove(family);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    familyMap.put(family, null);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    return this;<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>  /**<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   * Get the column from the specified family with the specified qualifier.<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * &lt;p&gt;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * Overrides previous calls to addFamily for this family.<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @param family family name<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   * @param qualifier column qualifier<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   * @return this<a name="line.321"></a>
+<span class="sourceLineNo">322</span>   */<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public Scan addColumn(byte [] family, byte [] qualifier) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    NavigableSet&lt;byte []&gt; set = familyMap.get(family);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    if(set == null) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      set = new TreeSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      familyMap.put(family, set);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    if (qualifier == null) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      qualifier = HConstants.EMPTY_BYTE_ARRAY;<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    }<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    set.add(qualifier);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    return this;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  /**<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   * Get versions of columns only within the specified timestamp range,<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * [minStamp, maxStamp).  Note, default maximum versions to return is 1.  If<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * your time range spans more than one version and you want all versions<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * returned, up the number of versions beyond the default.<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * @param minStamp minimum timestamp value, inclusive<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   * @param maxStamp maximum timestamp value, exclusive<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   * @see #readAllVersions()<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   * @see #setMaxVersions(int)<a name="line.344"></a>
+<span class="sourceLineNo">345</span>   * @return this<a name="line.345"></a>
+<span class="sourceLineNo">346</span>   */<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  public Scan setTimeRange(long minStamp, long maxStamp) throws IOException {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    tr = new TimeRange(minStamp, maxStamp);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    return this;<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  }<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span>  /**<a name="line.352"></a>
+<span class="sourceLineNo">353</span>   * Get versions of columns with the specified timestamp. Note, default maximum<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   * versions to return is 1.  If your time range spans more than one version<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * and you want all versions returned, up the number of versions beyond the<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * defaut.<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * @param timestamp version timestamp<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   * @see #readAllVersions()<a name="line.358"></a>
+<span class="sourceLineNo">359</span>   * @see #setMaxVersions(int)<a name="line.359"></a>
+<span class="sourceLineNo">360</span>   * @return this<a name="line.360"></a>
+<span class="sourceLineNo">361</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>   *             Use {@link #setTimestamp(long)} instead<a name="line.362"></a>
+<span class="sourceLineNo">363</span>   */<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  @Deprecated<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  public Scan setTimeStamp(long timestamp)<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  throws IOException {<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    return this.setTimestamp(timestamp);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>  /**<a name="line.370"></a>
+<span class="sourceLineNo">371</span>   * Get versions of columns with the specified timestamp. Note, default maximum<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * versions to return is 1.  If your time range spans more than one version<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * and you want all versions returned, up the number of versions beyond the<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * defaut.<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * @param timestamp version timestamp<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @see #readAllVersions()<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * @see #setMaxVersions(int)<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * @return this<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   */<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  public Scan setTimestamp(long timestamp) {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    try {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      tr = new TimeRange(timestamp, timestamp + 1);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    } catch(Exception e) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      // This should never happen, unless integer overflow or something extremely wrong...<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      LOG.error("TimeRange failed, likely caused by integer overflow. ", e);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      throw e;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    }<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>    return this;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  }<a name="line.390"></a>
+<span class="sourceLineNo">391</span><a name="line.391"></a>
+<span class="sourceLineNo">392</span>  @Override public Scan setColumnFamilyTimeRange(byte[] cf, long minStamp, long maxStamp) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    return (Scan) super.setColumnFamilyTimeRange(cf, minStamp, maxStamp);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  }<a name="line.394"></a>
+<span class="sourceLineNo">395</span><a name="line.395"></a>
+<span class="sourceLineNo">396</span>  /**<a name="line.396"></a>
+<span class="sourceLineNo">397</span>   * Set the start row of the scan.<a name="line.397"></a>
+<span class="sourceLineNo">398</span>   * &lt;p&gt;<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   * If the specified row does not exist, the Scanner will start from the next closest row after the<a name="line.399"></a>
+<span class="sourceLineNo">400</span>   * specified row.<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   * @param startRow row to start scanner at or after<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   * @return this<a name="line.402"></a>
+<span class="sourceLineNo">403</span>   * @throws IllegalArgumentException if startRow does not meet criteria for a row key (when length<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   */<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  public Scan withStartRow(byte[] startRow) {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    return withStartRow(startRow, true);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>  }<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>  /**<a name="line.410"></a>
+<span class="sourceLineNo">411</span>   * Set the start row of the scan.<a name="line.411"></a>
+<span class="sourceLineNo">412</span>   * &lt;p&gt;<a name="line.412"></a>
+<span class="sourceLineNo">413</span>   * If the specified row does not exist, or the {@code inclusive} is {@code false}, the Scanner<a name="line.413"></a>
+<span class="sourceLineNo">414</span>   * will start from the next closest row after the specified row.<a name="line.414"></a>
+<span class="sourceLineNo">415</span>   * @param startRow row to start scanner at or after<a name="line.415"></a>
+<span class="sourceLineNo">416</span>   * @param inclusive whether we should include the start row when scan<a name="line.416"></a>
+<span class="sourceLineNo">417</span>   * @return this<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   * @throws IllegalArgumentException if startRow does not meet criteria for a row key (when length<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   */<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  public Scan withStartRow(byte[] startRow, boolean inclusive) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    if (Bytes.len(startRow) &gt; HConstants.MAX_ROW_LENGTH) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      throw new IllegalArgumentException("startRow's length must be less than or equal to "<a name="line.423"></a>
+<span class="sourceLineNo">424</span>          + HConstants.MAX_ROW_LENGTH + " to meet the criteria" + " for a row key.");<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    }<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    this.startRow = startRow;<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    this.includeStartRow = inclusive;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    return this;<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  }<a name="line.429"></a>
+<span class="sourceLineNo">430</span><a name="line.430"></a>
+<span class="sourceLineNo">431</span>  /**<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   * Set the stop row of the scan.<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * &lt;p&gt;<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   * The scan will include rows that are lexicographically less than the provided stopRow.<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * &lt;p&gt;<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   * &lt;b&gt;Note:&lt;/b&gt; When doing a filter for a rowKey &lt;u&gt;Prefix&lt;/u&gt; use<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * {@link #setRowPrefixFilter(byte[])}. The 'trailing 0' will not yield the desired result.<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   * &lt;/p&gt;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>   * @param stopRow row to end at (exclusive)<a name="line.439"></a>
+<span class="sourceLineNo">440</span>   * @return this<a name="line.440"></a>
+<span class="sourceLineNo">441</span>   * @throws IllegalArgumentException if stopRow does not meet criteria for a row key (when length<a name="line.441"></a>
+<span class="sourceLineNo">442</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.442"></a>
+<span class="sourceLineNo">443</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use {@link #withStopRow(byte[])} instead.<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   *   This method may change the inclusive of the stop row to keep compatible with the old<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   *   behavior.<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * @see #withStopRow(byte[])<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17320"&gt;HBASE-17320&lt;/a&gt;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>   */<a name="line.448"></a>
+<span class="sourceLineNo">449</span>  @Deprecated<a name="line.449"></a>
+<span class="sourceLineNo">450</span>  public Scan setStopRow(byte[] stopRow) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    withStopRow(stopRow);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    if (ClientUtil.areScanStartRowAndStopRowEqual(this.startRow, this.stopRow)) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      // for keeping the old behavior that a scan with the same start and stop row is a get scan.<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      this.includeStopRow = true;<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    return this;<a name="line.456"></a>
+<span class="sourceLineNo">457</span>  }<a name="line.457"></a>
+<span class="sourceLineNo">458</span><a name="line.458"></a>
+<span class="sourceLineNo">459</span>  /**<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   * Set the stop row of the scan.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>   * &lt;p&gt;<a name="line.461"></a>
+<span class="sourceLineNo">462</span>   * The scan will include rows that are lexicographically less than the provided stopRow.<a name="line.462"></a>
+<span class="sourceLineNo">463</span>   * &lt;p&gt;<a name="line.463"></a>
+<span class="sourceLineNo">464</span>   * &lt;b&gt;Note:&lt;/b&gt; When doing a filter for a rowKey &lt;u&gt;Prefix&lt;/u&gt; use<a name="line.464"></a>
+<span class="sourceLineNo">465</span>   * {@link #setRowPrefixFilter(byte[])}. The 'trailing 0' will not yield the desired result.<a name="line.465"></a>
+<span class="sourceLineNo">466</span>   * &lt;/p&gt;<a name="line.466"></a>
+<span class="sourceLineNo">467</span>   * @param stopRow row to end at (exclusive)<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   * @return this<a name="line.468"></a>
+<span class="sourceLineNo">469</span>   * @throws IllegalArgumentException if stopRow does not meet criteria for a row key (when length<a name="line.469"></a>
+<span class="sourceLineNo">470</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.470"></a>
+<span class="sourceLineNo">471</span>   */<a name="line.471"></a>
+<span class="sourceLineNo">472</span>  public Scan withStopRow(byte[] stopRow) {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    return withStopRow(stopRow, false);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>  }<a name="line.474"></a>
+<span class="sourceLineNo">475</span><a name="line.475"></a>
+<span class="sourceLineNo">476</span>  /**<a name="line.476"></a>
+<span class="sourceLineNo">477</span>   * Set the stop row of the scan.<a name="line.477"></a>
+<span class="sourceLineNo">478</span>   * &lt;p&gt;<a name="line.478"></a>
+<span class="sourceLineNo">479</span>   * The scan will include rows that are lexicographically less than (or equal to if<a name="line.479"></a>
+<span class="sourceLineNo">480</span>   * {@code inclusive} is {@code true}) the provided stopRow.<a name="line.480"></a>
+<span class="sourceLineNo">481</span>   * @param stopRow row to end at<a name="line.481"></a>
+<span class="sourceLineNo">482</span>   * @param inclusive whether we should include the stop row when scan<a name="line.482"></a>
+<span class="sourceLineNo">483</span>   * @return this<a name="line.483"></a>
+<span class="sourceLineNo">484</span>   * @throws IllegalArgumentException if stopRow does not meet criteria for a row key (when length<a name="line.484"></a>
+<span class="sourceLineNo">485</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.485"></a>
+<span class="sourceLineNo">486</span>   */<a name="line.486"></a>
+<span class="sourceLineNo">487</span>  public Scan withStopRow(byte[] stopRow, boolean inclusive) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    if (Bytes.len(stopRow) &gt; HConstants.MAX_ROW_LENGTH) {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      throw new IllegalArgumentException("stopRow's length must be less than or equal to "<a name="line.489"></a>
+<span class="sourceLineNo">490</span>          + HConstants.MAX_ROW_LENGTH + " to meet the criteria" + " for a row key.");<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    }<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    this.stopRow = stopRow;<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    this.includeStopRow = inclusive;<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    return this;<a name="line.494"></a>
+<span class="sourceLineNo">495</span>  }<a name="line.495"></a>
+<span class="sourceLineNo">496</span><a name="line.496"></a>
+<span class="sourceLineNo">497</span>  /**<a name="line.497"></a>
+<span class="sourceLineNo">498</span>   * &lt;p&gt;Set a filter (using stopRow and startRow) so the result set only contains rows where the<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   * rowKey starts with the specified prefix.&lt;/p&gt;<a name="line.499"></a>
+<span class="sourceLineNo">500</span>   * &lt;p&gt;This is a utility method that converts the desired rowPrefix into the appropriate values<a name="line.500"></a>
+<span class="sourceLineNo">501</span>   * for the startRow and stopRow to achieve the desired result.&lt;/p&gt;<a name="line.501"></a>
+<span class="sourceLineNo">502</span>   * &lt;p&gt;This can safely be used in combination with setFilter.&lt;/p&gt;<a name="line.502"></a>
+<span class="sourceLineNo">503</span>   * &lt;p&gt;&lt;b&gt;NOTE: Doing a {@link #withStartRow(byte[])} and/or {@link #setStopRow(byte[])}<a name="line.503"></a>
+<span class="sourceLineNo">504</span>   * after this method will yield undefined results.&lt;/b&gt;&lt;/p&gt;<a name="line.504"></a>
+<span class="sourceLineNo">505</span>   * @param rowPrefix the prefix all rows must start with. (Set &lt;i&gt;null&lt;/i&gt; to remove the filter.)<a name="line.505"></a>
+<span class="sourceLineNo">506</span>   * @return this<a name="line.506"></a>
+<span class="sourceLineNo">507</span>   */<a name="line.507"></a>
+<span class="sourceLineNo">508</span>  public Scan setRowPrefixFilter(byte[] rowPrefix) {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    if (rowPrefix == null) {<a name="line.509"></a>
+<span class="sourceLineNo">510</span>      withStartRow(HConstants.EMPTY_START_ROW);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>      setStopRow(HConstants.EMPTY_END_ROW);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    } else {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>      this.withStartRow(rowPrefix);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>      this.setStopRow(ClientUtil.calculateTheClosestNextRowKeyForPrefix(rowPrefix));<a name="line.514"></a>
+<span class="sourceLineNo">515</span>    }<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    return this;<a name="line.516"></a>
+<span class="sourceLineNo">517</span>  }<a name="line.517"></a>
+<span class="sourceLineNo">518</span><a name="line.518"></a>
+<span class="sourceLineNo">519</span>  /**<a name="line.519"></a>
+<span class="sourceLineNo">520</span>   * Get up to the specified number of versions of each column.<a name="line.520"></a>
+<span class="sourceLineNo">521</span>   * @param maxVersions maximum versions for each column<a name="line.521"></a>
 <span class="sourceLineNo">522</span>   * @return this<a name="line.522"></a>
 <span class="sourceLineNo">523</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   *   family's max versions, so use {@link #readAllVersions()} instead.<a name="line.524"></a>
-<span class="sourceLineNo">525</span>   * @see #readAllVersions()<a name="line.525"></a>
+<span class="sourceLineNo">524</span>   *   family's max versions, so use {@link #readVersions(int)} instead.<a name="line.524"></a>
+<span class="sourceLineNo">525</span>   * @see #readVersions(int)<a name="line.525"></a>
 <span class="sourceLineNo">526</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17125"&gt;HBASE-17125&lt;/a&gt;<a name="line.526"></a>
 <span class="sourceLineNo">527</span>   */<a name="line.527"></a>
 <span class="sourceLineNo">528</span>  @Deprecated<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  public Scan setMaxVersions() {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    return readAllVersions();<a name="line.530"></a>
+<span class="sourceLineNo">529</span>  public Scan setMaxVersions(int maxVersions) {<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    return readVersions(maxVersions);<a name="line.530"></a>
 <span class="sourceLineNo">531</span>  }<a name="line.531"></a>
 <span class="sourceLineNo">532</span><a name="line.532"></a>
 <span class="sourceLineNo">533</span>  /**<a name="line.533"></a>
-<span class="sourceLineNo">534</span>   * Get up to the specified number of versions of each column.<a name="line.534"></a>
-<span class="sourceLineNo">535</span>   * @param maxVersions maximum versions for each column<a name="line.535"></a>
-<span class="sourceLineNo">536</span>   * @return this<a name="line.536"></a>
-<span class="sourceLineNo">537</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   *   family's max versions, so use {@link #readVersions(int)} instead.<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @see #readVersions(int)<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17125"&gt;HBASE-17125&lt;/a&gt;<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   */<a name="line.541"></a>
-<span class="sourceLineNo">542</span>  @Deprecated<a name="line.542"></a>
-<span class="sourceLineNo">543</span>  public Scan setMaxVersions(int maxVersions) {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    return readVersions(maxVersions);<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span>  /**<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * Get all available versions.<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * @return this<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   */<a name="line.550"></a>
-<span class="sourceLineNo">551</span>  public Scan readAllVersions() {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    this.maxVersions = Integer.MAX_VALUE;<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    return this;<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  }<a name="line.554"></a>
-<span class="sourceLineNo">555</span><a name="line.555"></a>
-<span class="sourceLineNo">556</span>  /**<a name="line.556"></a>
-<span class="sourceLineNo">557</span>   * Get up to the specified number of versions of each column.<a name="line.557"></a>
-<span class="sourceLineNo">558</span>   * @param versions specified number of versions for each column<a name="line.558"></a>
-<span class="sourceLineNo">559</span>   * @return this<a name="line.559"></a>
+<span class="sourceLineNo">534</span>   * Get all available versions.<a name="line.534"></a>
+<span class="sourceLineNo">535</span>   * @return this<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   */<a name="line.536"></a>
+<span class="sourceLineNo">537</span>  public Scan readAllVersions() {<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    this.maxVersions = Integer.MAX_VALUE;<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    return this;<a name="line.539"></a>
+<span class="sourceLineNo">540</span>  }<a name="line.540"></a>
+<span class="sourceLineNo">541</span><a name="line.541"></a>
+<span class="sourceLineNo">542</span>  /**<a name="line.542"></a>
+<span class="sourceLineNo">543</span>   * Get up to the specified number of versions of each column.<a name="line.543"></a>
+<span class="sourceLineNo">544</span>   * @param versions specified number of versions for each column<a name="line.544"></a>
+<span class="sourceLineNo">545</span>   * @return this<a name="line.545"></a>
+<span class="sourceLineNo">546</span>   */<a name="line.546"></a>
+<span class="sourceLineNo">547</span>  public Scan readVersions(int versions) {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    this.maxVersions = versions;<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    return this;<a name="line.549"></a>
+<span class="sourceLineNo">550</span>  }<a name="line.550"></a>
+<span class="sourceLineNo">551</span><a name="line.551"></a>
+<span class="sourceLineNo">552</span>  /**<a name="line.552"></a>
+<span class="sourceLineNo">553</span>   * Set the maximum number of cells to return for each call to next(). Callers should be aware<a name="line.553"></a>
+<span class="sourceLineNo">554</span>   * that this is not equivalent to calling {@link #setAllowPartialResults(boolean)}.<a name="line.554"></a>
+<span class="sourceLineNo">555</span>   * If you don't allow partial results, the number of cells in each Result must equal to your<a name="line.555"></a>
+<span class="sourceLineNo">556</span>   * batch setting unless it is the last Result for current row. So this method is helpful in paging<a name="line.556"></a>
+<span class="sourceLineNo">557</span>   * queries. If you just want to prevent OOM at client, use setAllowPartialResults(true) is better.<a name="line.557"></a>
+<span class="sourceLineNo">558</span>   * @param batch the maximum number of values<a name="line.558"></a>
+<span class="sourceLineNo">559</span>   * @see Result#mayHaveMoreCellsInRow()<a name="line.559"></a>
 <span class="sourceLineNo">560</span>   */<a name="line.560"></a>
-<span class="sourceLineNo">561</span>  public Scan readVersions(int versions) {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    this.maxVersions = versions;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    return this;<a name="line.563"></a>
-<span class="sourceLineNo">564</span>  }<a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>  /**<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   * Set the maximum number of cells to return for each call to next(). Callers should be aware<a name="line.567"></a>
-<span class="sourceLineNo">568</span>   * that this is not equivalent to calling {@link #setAllowPartialResults(boolean)}.<a name="line.568"></a>
-<span class="sourceLineNo">569</span>   * If you don't allow partial results, the number of cells in each Result must equal to your<a name="line.569"></a>
-<span class="sourceLineNo">570</span>   * batch setting unless it is the last Result for current row. So this method is helpful in paging<a name="line.570"></a>
-<span class="sourceLineNo">571</span>   * queries. If you just want to prevent OOM at client, use setAllowPartialResults(true) is better.<a name="line.571"></a>
-<span class="sourceLineNo">572</span>   * @param batch the maximum number of values<a name="line.572"></a>
-<span class="sourceLineNo">573</span>   * @see Result#mayHaveMoreCellsInRow()<a name="line.573"></a>
+<span class="sourceLineNo">561</span>  public Scan setBatch(int batch) {<a name="line.561"></a>
+<span class="sourceLineNo">562</span>    if (this.hasFilter() &amp;&amp; this.filter.hasFilterRow()) {<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      throw new IncompatibleFilterException(<a name="line.563"></a>
+<span class="sourceLineNo">564</span>        "Cannot set batch on a scan using a filter" +<a name="line.564"></a>
+<span class="sourceLineNo">565</span>        " that returns true for filter.hasFilterRow");<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    }<a name="line.566"></a>
+<span class="sourceLineNo">567</span>    this.batch = batch;<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    return this;<a name="line.568"></a>
+<span class="sourceLineNo">569</span>  }<a name="line.569"></a>
+<span class="sourceLineNo">570</span><a name="line.570"></a>
+<span class="sourceLineNo">571</span>  /**<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   * Set the maximum number of values to return per row per Column Family<a name="line.572"></a>
+<span class="sourceLineNo">573</span>   * @param limit the maximum number of values returned / row / CF<a name="line.573"></a>
 <span class="sourceLineNo">574</span>   */<a name="line.574"></a>
-<span class="sourceLineNo">575</span>  public Scan setBatch(int batch) {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    if (this.hasFilter() &amp;&amp; this.filter.hasFilterRow()) {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      throw new IncompatibleFilterException(<a name="line.577"></a>
-<span class="sourceLineNo">578</span>        "Cannot set batch on a scan using a filter" +<a name="line.578"></a>
-<span class="sourceLineNo">579</span>        " that returns true for filter.hasFilterRow");<a name="line.579"></a>
-<span class="sourceLineNo">580</span>    }<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    this.batch = batch;<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    return this;<a name="line.582"></a>
-<span class="sourceLineNo">583</span>  }<a name="line.583"></a>
-<span class="sourceLineNo">584</span><a name="line.584"></a>
-<span class="sourceLineNo">585</span>  /**<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * Set the maximum number of values to return per row per Column Family<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   * @param limit the maximum number of values returned / row / CF<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   */<a name="line.588"></a>
-<span class="sourceLineNo">589</span>  public Scan setMaxResultsPerColumnFamily(int limit) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    this.storeLimit = limit;<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    return this;<a name="line.591"></a>
-<span class="sourceLineNo">592</span>  }<a name="line.592"></a>
-<span class="sourceLineNo">593</span><a name="line.593"></a>
-<span class="sourceLineNo">594</span>  /**<a name="line.594"></a>
-<span class="sourceLineNo">595</span>   * Set offset for the row per Column Family.<a name="line.595"></a>
-<span class="sourceLineNo">596</span>   * @param offset is the number of kvs that will be skipped.<a name="line.596"></a>
-<span class="sourceLineNo">597</span>   */<a name="line.597"></a>
-<span class="sourceLineNo">598</span>  public Scan setRowOffsetPerColumnFamily(int offset) {<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    this.storeOffset = offset;<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    return this;<a name="line.600"></a>
-<span class="sourceLineNo">601</span>  }<a name="line.601"></a>
-<span class="sourceLineNo">602</span><a name="line.602"></a>
-<span class="sourceLineNo">603</span>  /**<a name="line.603"></a>
-<span class="sourceLineNo">604</span>   * Set the number of rows for caching that will be passed to scanners.<a name="line.604"></a>
-<span class="sourceLineNo">605</span>   * If not set, the Configuration setting {@link HConstants#HBASE_CLIENT_SCANNER_CACHING} will<a name="line.605"></a>
-<span class="sourceLineNo">606</span>   * apply.<a name="line.606"></a>
-<span class="sourceLineNo">607</span>   * Higher caching values will enable faster scanners but will use more memory.<a name="line.607"></a>
-<span class="sourceLineNo">608</span>   * @param caching the number of rows for caching<a name="line.608"></a>
-<span class="sourceLineNo">609</span>   */<a name="line.609"></a>
-<span class="sourceLineNo">610</span>  public Scan setCaching(int caching) {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    this.caching = caching;<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    return this;<a name="line.612"></a>
-<span class="sourceLineNo">613</span>  }<a name="line.613"></a>
-<span class="sourceLineNo">614</span><a name="line.614"></a>
-<span class="sourceLineNo">615</span>  /**<a name="line.615"></a>
-<span class="sourceLineNo">616</span>   * @return the maximum result size in bytes. See {@link #setMaxResultSize(long)}<a name="line.616"></a>
-<span class="sourceLineNo">617</span>   */<a name="line.617"></a>
-<span class="sourceLineNo">618</span>  public long getMaxResultSize() {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    return maxResultSize;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>  }<a name="line.620"></a>
-<span class="sourceLineNo">621</span><a name="line.621"></a>
-<span class="sourceLineNo">622</span>  /**<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   * Set the maximum result size. The default is -1; this means that no specific<a name="line.623"></a>
-<span class="sourceLineNo">624</span>   * maximum result size will be set for this scan, and the global configured<a name="line.624"></a>
-<span class="sourceLineNo">625</span>   * value will be used instead. (Defaults to unlimited).<a name="line.625"></a>
-<span class="sourceLineNo">626</span>   *<a name="line.626"></a>
-<span class="sourceLineNo">627</span>   * @param maxResultSize The maximum result size in bytes.<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   */<a name="line.628"></a>
-<span class="sourceLineNo">629</span>  public Scan setMaxResultSize(long maxResultSize) {<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    this.maxResultSize = maxResultSize;<a name="line.630"></a>
-<span class="sourceLineNo">631</span>    return this;<a name="line.631"></a>
-<span class="sourceLineNo">632</span>  }<a name="line.632"></a>
-<span class="sourceLineNo">633</span><a name="line.633"></a>
-<span class="sourceLineNo">634</span>  @Override<a name="line.634"></a>
-<span class="sourceLineNo">635</span>  public Scan setFilter(Filter filter) {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    super.setFilter(filter);<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    return this;<a name="line.637"></a>
-<span class="sourceLineNo">638</span>  }<a name="line.638"></a>
-<span class="sourceLineNo">639</span><a name="line.639"></a>
-<span class="sourceLineNo">640</span>  /**<a name="line.640"></a>
-<span class="sourceLineNo">641</span>   * Setting the familyMap<a name="line.641"></a>
-<span class="sourceLineNo">642</span>   * @param familyMap map of family to qualifier<a name="line.642"></a>
-<span class="sourceLineNo">643</span>   * @return this<a name="line.643"></a>
-<span class="sourceLineNo">644</span>   */<a name="line.644"></a>
-<span class="sourceLineNo">645</span>  public Scan setFamilyMap(Map&lt;byte [], NavigableSet&lt;byte []&gt;&gt; familyMap) {<a name="line.645"></a>
-<span class="sourceLineNo">646</span>    this.familyMap = familyMap;<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    return this;<a name="line.647"></a>
-<span class="sourceLineNo">648</span>  }<a name="line.648"></a>
-<span class="sourceLineNo">649</span><a name="line.649"></a>
-<span class="sourceLineNo">650</span>  /**<a name="line.650"></a>
-<span class="sourceLineNo">651</span>   * Getting the familyMap<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   * @return familyMap<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   */<a name="line.653"></a>
-<span class="sourceLineNo">654</span>  public Map&lt;byte [], NavigableSet&lt;byte []&gt;&gt; getFamilyMap() {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    return this.familyMap;<a name="line.655"></a>
-<span class="sourceLineNo">656</span>  }<a name="line.656"></a>
-<span class="sourceLineNo">657</span><a name="line.657"></a>
-<span class="sourceLineNo">658</span>  /**<a name="line.658"></a>
-<span class="sourceLineNo">659</span>   * @return the number of families in familyMap<a name="line.659"></a>
-<span class="sourceLineNo">660</span>   */<a name="line.660"></a>
-<span class="sourceLineNo">661</span>  public int numFamilies() {<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    if(hasFamilies()) {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      return this.familyMap.size();<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    }<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    return 0;<a name="line.665"></a>
-<span class="sourceLineNo">666</span>  }<a name="line.666"></a>
-<span class="sourceLineNo">667</span><a name="line.667"></a>
-<span class="sourceLineNo">668</span>  /**<a name="line.668"></a>
-<span class="sourceLineNo">669</span>   * @return true if familyMap is non empty, false otherwise<a name="line.669"></a>
-<span class="sourceLineNo">670</span>   */<a name="line.670"></a>
-<span class="sourceLineNo">671</span>  public boolean hasFamilies() {<a name="line.671"></a>
-<span class="sourceLineNo">672</span>    return !this.familyMap.isEmpty();<a name="line.672"></a>
-<span class="sourceLineNo">673</span>  }<a name="line.673"></a>
-<span class="sourceLineNo">674</span><a name="line.674"></a>
-<span class="sourceLineNo">675</span>  /**<a name="line.675"></a>
-<span class="sourceLineNo">676</span>   * @return the keys of the familyMap<a name="line.676"></a>
-<span class="sourceLineNo">677</span>   */<a name="line.677"></a>
-<span class="sourceLineNo">678</span>  public byte[][] getFamilies() {<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    if(hasFamilies()) {<a name="line.679"></a>
-<span class="sourceLineNo">680</span>      return this.familyMap.keySet().toArray(new byte[0][0]);<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    }<a name="line.681"></a>
-<span class="sourceLineNo">682</span>    return null;<a name="line.682"></a>
+<span class="sourceLineNo">575</span>  public Scan setMaxResultsPerColumnFamily(int limit) {<a name="line.575"></a>
+<span class="sourceLineNo">576</span>    this.storeLimit = limit;<a name="line.576"></a>
+<span class="sourceLineNo">577</span>    return this;<a name="line.577"></a>
+<span class="sourceLineNo">578</span>  }<a name="line.578"></a>
+<span class="sourceLineNo">579</span><a name="line.579"></a>
+<span class="sourceLineNo">580</span>  /**<a name="line.580"></a>
+<span class="sourceLineNo">581</span>   * Set offset for the row per Column Family.<a name="line.581"></a>
+<span class="sourceLineNo">582</span>   * @param offset is the number of kvs that will be skipped.<a name="line.582"></a>
+<span class="sourceLineNo">583</span>   */<a name="line.583"></a>
+<span class="sourceLineNo">584</span>  public Scan setRowOffsetPerColumnFamily(int offset) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>    this.storeOffset = offset;<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    return this;<a name="line.586"></a>
+<span class="sourceLineNo">587</span>  }<a name="line.587"></a>
+<span class="sourceLineNo">588</span><a name="line.588"></a>
+<span class="sourceLineNo">589</span>  /**<a name="line.589"></a>
+<span class="sourceLineNo">590</span>   * Set the number of rows for caching that will be passed to scanners.<a name="line.590"></a>
+<span class="sourceLineNo">591</span>   * If not set, the Configuration setting {@link HConstants#HBASE_CLIENT_SCANNER_CACHING} will<a name="line.591"></a>
+<span class="sourceLineNo">592</span>   * apply.<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * Higher caching values will enable faster scanners but will use more memory.<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   * @param caching the number of rows for caching<a name="line.594"></a>
+<span class="sourceLineNo">595</span>   */<a name="line.595"></a>
+<span class="sourceLineNo">596</span>  public Scan setCaching(int caching) {<a name="line.596"></a>
+<span class="sourceLineNo">597</span>    this.caching = caching;<a name="line.597"></a>
+<span class="sourceLineNo">598</span>    return this;<a name="line.598"></a>
+<span class="sourceLineNo">599</span>  }<a name="line.599"></a>
+<span class="sourceLineNo">600</span><a name="line.600"></a>
+<span class="sourceLineNo">601</span>  /**<a name="line.601"></a>
+<span class="sourceLineNo">602</span>   * @return the maximum result size in bytes. See {@link #setMaxResultSize(long)}<a name="line.602"></a>
+<span class="sourceLineNo">603</span>   */<a name="line.603"></a>
+<span class="sourceLineNo">604</span>  public long getMaxResultSize() {<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    return maxResultSize;<a name="line.605"></a>
+<span class="sourceLineNo">606</span>  }<a name="line.606"></a>
+<span class="sourceLineNo">607</span><a name="line.607"></a>
+<span class="sourceLineNo">608</span>  /**<a name="line.608"></a>
+<span class="sourceLineNo">609</span>   * Set the maximum result size. The default is -1; this means that no specific<a name="line.609"></a>
+<span class="sourceLineNo">610</span>   * maximum result size will be set for this scan, and the global configured<a name="line.610"></a>
+<span class="sourceLineNo">611</span>   * value will be used instead. (Defaults to unlimited).<a name="line.611"></a>
+<span class="sourceLineNo">612</span>   *<a name="line.612"></a>
+<span class="sourceLineNo">613</span>   * @param maxResultSize The maximum result size in bytes.<a name="line.613"></a>
+<span class="sourceLineNo">614</span>   */<a name="line.614"></a>
+<span class="sourceLineNo">615</span>  public Scan setMaxResultSize(long maxResultSize) {<a name="line.615"></a>
+<span class="sourceLineNo">616</span>    this.maxResultSize = maxResultSize;<a name="line.616"></a>
+<span class="sourceLineNo">617</span>    return this;<a name="line.617"></a>
+<span class="sourceLineNo">618</span>  }<a name="line.618"></a>
+<span class="sourceLineNo">619</span><a name="line.619"></a>
+<span class="sourceLineNo">620</span>  @Override<a name="line.620"></a>
+<span class="sourceLineNo">621</span>  public Scan setFilter(Filter filter) {<a name="line.621"></a>
+<span class="sourceLineNo">622</span>    super.setFilter(filter);<a name="line.622"></a>
+<span class="sourceLineNo">623</span>    return this;<a name="line.623"></a>
+<span class="sourceLineNo">624</span>  }<a name="line.624"></a>
+<span class="sourceLineNo">625</span><a name="line.625"></a>
+<span class="sourceLineNo">626</span>  /**<a name="line.626"></a>
+<span class="sourceLineNo">627</span>   * Setting the familyMap<a name="line.627"></a>
+<span class="sourceLineNo">628</span>   * @param familyMap map of family to qualifier<a name="line.628"></a>
+<span class="sourceLineNo">629</span>   * @return this<a name="line.629"></a>
+<span class="sourceLineNo">630</span>   */<a name="line.630"></a>
+<span class="sourceLineNo">631</span>  public Scan setFamilyMap(Map&lt;byte [], NavigableSet&lt;byte []&gt;&gt; familyMap) {<a name="line.631"></a>
+<span class="sourceLineNo">632</span>    this.familyMap = familyMap;<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    return this;<a name="line.633"></a>
+<span class="sourceLineNo">634</span>  }<a name="line.634"></a>
+<span class="sourceLineNo">635</span><a name="line.635"></a>
+<span class="sourceLineNo">636</span>  /**<a name="line.636"></a>
+<span class="sourceLineNo">637</span>   * Getting the familyMap<a name="line.637"></a>
+<span class="sourceLineNo">638</span>   * @return familyMap<a name="line.638"></a>
+<span class="sourceLineNo">639</span>   */<a name="line.639"></a>
+<span class="sourceLineNo">640</span>  public Map&lt;byte [], NavigableSet&lt;byte []&gt;&gt; getFamilyMap() {<a name="line.640"></a>
+<span class="sourceLineNo">641</span>    return this.familyMap;<a name="line.641"></a>
+<span class="sourceLineNo">642</span>  }<a name="line.642"></a>
+<span class="sourceLineNo">643</span><a name="line.643"></a>
+<span class="sourceLineNo">644</span>  /**<a name="line.644"></a>
+<span class="sourceLineNo">645</span>   * @return the number of families in familyMap<a name="line.645"></a>
+<span class="sourceLineNo">646</span>   */<a name="line.646"></a>
+<span class="sourceLineNo">647</span>  public int numFamilies() {<a name="line.647"></a>
+<span class="sourceLineNo">648</span>    if(hasFamilies()) {<a name="line.648"></a>
+<span class="sourceLineNo">649</span>      return this.familyMap.size();<a name="line.649"></a>
+<span class="sourceLineNo">650</span>    }<a name="line.650"></a>
+<span class="sourceLineNo">651</span>    return 0;<a name="line.651"></a>
+<span class="sourceLineNo">652</span>  }<a name="line.652"></a>
+<span class="sourceLineNo">653</span><a name="line.653"></a>
+<span class="sourceLineNo">654</span>  /**<a name="line.654"></a>
+<span class="sourceLineNo">655</span>   * @return true if familyMap is non empty, false otherwise<a name="line.655"></a>
+<span class="sourceLineNo">656</span>   */<a name="line.656"></a>
+<span class="sourceLineNo">657</span>  public boolean hasFamilies() {<a name="line.657"></a>
+<span class="sourceLineNo">658</span>    return !this.familyMap.isEmpty();<a name="line.658"></a>
+<span class="sourceLineNo">659</span>  }<a name="line.659"></a>
+<span class="sourceLineNo">660</span><a name="line.660"></a>
+<span class="sourceLineNo">661</span>  /**<a name="line.661"></a>
+<span class="sourceLineNo">662</span>   * @return the keys of the familyMap<a name="line.662"></a>
+<span class="sourceLineNo">663</span>   */<a name="line.663"></a>
+<span class="sourceLineNo">664</span>  public byte[][] getFamilies() {<a name="line.664"></a>
+<span class="sourceLineNo">665</span>    if(hasFamilies()) {<a name="line.665"></a>
+<span class="sourceLineNo">666</span>      return this.familyMap.keySet().toArray(new byte[0][0]);<a name="line.666"></a>
+<span class="sourceLineNo">667</span>    }<a name="line.667"></a>
+<span class="sourceLineNo">668</span>    return null;<a name="line.668"></a>
+<span class="sourceLineNo">669</span>  }<a name="line.669"></a>
+<span class="sourceLineNo">670</span><a name="line.670"></a>
+<span class="sourceLineNo">671</span>  /**<a name="line.671"></a>
+<span class="sourceLineNo">672</span>   * @return the startrow<a name="line.672"></a>
+<span class="sourceLineNo">673</span>   */<a name="line.673"></a>
+<span class="sourceLineNo">674</span>  public byte [] getStartRow() {<a name="line.674"></a>
+<span class="sourceLineNo">675</span>    return this.startRow;<a name="line.675"></a>
+<span class="sourceLineNo">676</span>  }<a name="line.676"></a>
+<span class="sourceLineNo">677</span><a name="line.677"></a>
+<span class="sourceLineNo">678</span>  /**<a name="line.678"></a>
+<span class="sourceLineNo">679</span>   * @return if we should include start row when scan<a name="line.679"></a>
+<span class="sourceLineNo">680</span>   */<a name="line.680"></a>
+<span class="sourceLineNo">681</span>  public boolean includeStartRow() {<a name="line.681"></a>
+<span class="sourceLineNo">682</span>    return includeStartRow;<a name="line.682"></a>
 <span class="sourceLineNo">683</span>  }<a name="line.683"></a>
 <span class="sourceLineNo">684</span><a name="line.684"></a>
 <span class="sourceLineNo">685</span>  /**<a name="line.685"></a>
-<span class="sourceLineNo">686</span>   * @return the startrow<a name="line.686"></a>
+<span class="sourceLineNo">686</span>   * @return the stoprow<a name="line.686"></a>
 <span class="sourceLineNo">687</span>   */<a name="line.687"></a>
-<span class="sourceLineNo">688</span>  public byte [] getStartRow() {<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    return this.startRow;<a name="line.689"></a>
+<span class="sourceLineNo">688</span>  public byte[] getStopRow() {<a name="line.688"></a>
+<span class="sourceLineNo">689</span>    return this.stopRow;<a name="line.689"></a>
 <span class="sourceLineNo">690</span>  }<a name="line.690"></a>
 <span class="sourceLineNo">691</span><a name="line.691"></a>
 <span class="sourceLineNo">692</span>  /**<a name="line.692"></a>
-<span class="sourceLineNo">693</span>   * @return if we should include start row when scan<a name="line.693"></a>
+<span class="sourceLineNo">693</span>   * @return if we should include stop row when scan<a name="line.693"></a>
 <span class="sourceLineNo">694</span>   */<a name="line.694"></a>
-<span class="sourceLineNo">695</span>  public boolean includeStartRow() {<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    return includeStartRow;<a name="line.696"></a>
+<span class="sourceLineNo">695</span>  public boolean includeStopRow() {<a name="line.695"></a>
+<span class="sourceLineNo">696</span>    return includeStopRow;<a name="line.696"></a>
 <span class="sourceLineNo">697</span>  }<a name="line.697"></a>
 <span class="sourceLineNo">698</span><a name="line.698"></a>
 <span class="sourceLineNo">699</span>  /**<a name="line.699"></a>
-<span class="sourceLineNo">700</span>   * @return the stoprow<a name="line.700"></a>
+<span class="sourceLineNo">700</span>   * @return the max number of versions to fetch<a name="line.700"></a>
 <span class="sourceLineNo">701</span>   */<a name="line.701"></a>
-<span class="sourceLineNo">702</span>  public byte[] getStopRow() {<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    return this.stopRow;<a name="line.703"></a>
+<span class="sourceLineNo">702</span>  public int getMaxVersions() {<a name="line.702"></a>
+<span class="sourceLineNo">703</span>    return this.maxVersions;<a name="line.703"></a>
 <span class="sourceLineNo">704</span>  }<a name="line.704"></a>
 <span class="sourceLineNo">705</span><a name="line.705"></a>
 <span class="sourceLineNo">706</span>  /**<a name="line.706"></a>
-<span class="sourceLineNo">707</span>   * @return if we should include stop row when scan<a name="line.707"></a>
+<span class="sourceLineNo">707</span>   * @return maximum number of values to return for a single call to next()<a name="line.707"></a>
 <span class="sourceLineNo">708</span>   */<a name="line.708"></a>
-<span class="sourceLineNo">709</span>  public boolean includeStopRow() {<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    return includeStopRow;<a name="line.710"></a>
+<span class="sourceLineNo">709</span>  public int getBatch() {<a name="line.709"></a>
+<span class="sourceLineNo">710</span>    return this.batch;<a name="line.710"></a>
 <span class="sourceLineNo">711</span>  }<a name="line.711"></a>
 <span class="sourceLineNo">712</span><a name="line.712"></a>
 <span class="sourceLineNo">713</span>  /**<a name="line.713"></a>
-<span class="sourceLineNo">714</span>   * @return the max number of versions to fetch<a name="line.714"></a>
+<span class="sourceLineNo">714</span>   * @return maximum number of values to return per row per CF<a name="line.714"></a>
 <span class="sourceLineNo">715</span>   */<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  public int getMaxVersions() {<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    return this.maxVersions;<a name="line.717"></a>
+<span class="sourceLineNo">716</span>  public int getMaxResultsPerColumnFamily() {<a name="line.716"></a>
+<span class="sourceLineNo">717</span>    return this.storeLimit;<a name="line.717"></a>
 <span class="sourceLineNo">718</span>  }<a name="line.718"></a>
 <span class="sourceLineNo">719</span><a name="line.719"></a>
 <span class="sourceLineNo">720</span>  /**<a name="line.720"></a>
-<span class="sourceLineNo">721</span>   * @return maximum number of values to return for a single call to next()<a name="line.721"></a>
-<span class="sourceLineNo">722</span>   */<a name="line.722"></a>
-<span class="sourceLineNo">723</span>  public int getBatch() {<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    return this.batch;<a name="line.724"></a>
-<span class="sourceLineNo">725</span>  }<a name="line.725"></a>
-<span class="sourceLineNo">726</span><a name="line.726"></a>
-<span class="sourceLineNo">727</span>  /**<a name="line.727"></a>
-<span class="sourceLineNo">728</span>   * @return maximum number of values to return per row per CF<a name="line.728"></a>
-<span class="sourceLineNo">729</span>   */<a name="line.729"></a>
-<span class="sourceLineNo">730</span>  public int getMaxResultsPerColumnFamily() {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    return this.storeLimit;<a name="line.731"></a>
-<span class="sourceLineNo">732</span>  }<a name="line.732"></a>
-<span class="sourceLineNo">733</span><a name="line.733"></a>
-<span class="sourceLineNo">734</span>  /**<a name="line.734"></a>
-<span class="sourceLineNo">735</span>   * Method for retrieving the scan's offset per row per column<a name="line.735"></a>
-<span class="sourceLineNo">736</span>   * family (#kvs to be skipped)<a name="line.736"></a>
-<span class="sourceLineNo">737</span>   * @return row offset<a name="line.737"></a>
+<span class="sourceLineNo">721</span>   * Method for retrieving the scan's offset per row per column<a name="line.721"></a>
+<span class="sourceLineNo">722</span>   * family (#kvs to be skipped)<a name="line.722"></a>
+<span class="sourceLineNo">723</span>   * @return row offset<a name="line.723"></a>
+<span class="sourceLineNo">724</span>   */<a name="line.724"></a>
+<span class="sourceLineNo">725</span>  public int getRowOffsetPerColumnFamily() {<a name="line.725"></a>
+<span class="sourceLineNo">726</span>    return this.storeOffset;<a name="line.726"></a>
+<span class="sourceLineNo">727</span>  }<a name="line.727"></a>
+<span class="sourceLineNo">728</span><a name="line.728"></a>
+<span class="sourceLineNo">729</span>  /**<a name="line.729"></a>
+<span class="sourceLineNo">730</span>   * @return caching the number of rows fetched when calling next on a scanner<a name="line.730"></a>
+<span class="sourceLineNo">731</span>   */<a name="line.731"></a>
+<span class="sourceLineNo">732</span>  public int getCaching() {<a name="line.732"></a>
+<span class="sourceLineNo">733</span>    return this.caching;<a name="line.733"></a>
+<span class="sourceLineNo">734</span>  }<a name="line.734"></a>
+<span class="sourceLineNo">735</span><a name="line.735"></a>
+<span class="sourceLineNo">736</span>  /**<a name="line.736"></a>
+<span class="sourceLineNo">737</span>   * @return TimeRange<a name="line.737"></a>
 <span class="sourceLineNo">738</span>   */<a name="line.738"></a>
-<span class="sourceLineNo">739</span>  public int getRowOffsetPerColumnFamily() {<a name="line.739"></a>
-<span class="sourceLineNo">740</span>    return this.storeOffset;<a name="line.740"></a>
+<span class="sourceLineNo">739</span>  public TimeRange getTimeRange() {<a name="line.739"></a>
+<span class="sourceLineNo">740</span>    return this.tr;<a name="line.740"></a>
 <span class="sourceLineNo">741</span>  }<a name="line.741"></a>
 <span class="sourceLineNo">742</span><a name="line.742"></a>
 <span class="sourceLineNo">743</span>  /**<a name="line.743"></a>
-<span class="sourceLineNo">744</span>   * @return caching the number of rows fetched when calling next on a scanner<a name="line.744"></a>
+<span class="sourceLineNo">744</span>   * @return RowFilter<a name="line.744"></a>
 <span class="sourceLineNo">745</span>   */<a name="line.745"></a>
-<span class="sourceLineNo">746</span>  public int getCaching() {<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    return this.caching;<a name="line.747"></a>
-<span class="sourceLineNo">748</span>  }<a name="line.748"></a>
-<span class="sourceLineNo">749</span><a name="line.749"></a>
-<span class="sourceLineNo">750</span>  /**<a name="line.750"></a>
-<span class="sourceLineNo">751</span>   * @return TimeRange<a name="line.751"></a>
-<span class="sourceLineNo">752</span>   */<a name="line.752"></a>
-<span class="sourceLineNo">753</span>  public TimeRange getTimeRange() {<a name="line.753"></a>
-<span class="sourceLineNo">754</span>    return this.tr;<a name="line.754"></a>
-<span class="sourceLineNo">755</span>  }<a name="line.755"></a>
-<span class="sourceLineNo">756</span><a name="line.756"></a>
-<span class="sourceLineNo">757</span>  /**<a name="line.757"></a>
-<span class="sourceLineNo">758</span>   * @return RowFilter<a name="line.758"></a>
-<span class="sourceLineNo">759</span>   */<a name="line.759"></a>
-<span class="sourceLineNo">760</span>  @Override<a name="line.760"></a>
-<span class="sourceLineNo">761</span>  public Filter getFilter() {<a name="line.761"></a>
-<span class="sourceLineNo">762</span>    return filter;<a name="line.762"></a>
-<span class="sourceLineNo">763</span>  }<a name="line.763"></a>
-<span class="sourceLineNo">764</span><a name="line.764"></a>
-<span class="sourceLineNo">765</span>  /**<a name="line.765"></a>
-<span class="sourceLineNo">766</span>   * @return true is a filter has been specified, false if not<a name="line.766"></a>
+<span class="sourceLineNo">746</span>  @Override<a name="line.746"></a>
+<span class="sourceLineNo">747</span>  public Filter getFilter() {<a name="line.747"></a>
+<span class="sourceLineNo">748</span>    return filter;<a name="line.748"></a>
+<span class="sourceLineNo">749</span>  }<a name="line.749"></a>
+<span class="sourceLineNo">750</span><a name="line.750"></a>
+<span class="sourceLineNo">751</span>  /**<a name="line.751"></a>
+<span class="sourceLineNo">752</span>   * @return true is a filter has been specified, false if not<a name="line.752"></a>
+<span class="sourceLineNo">753</span>   */<a name="line.753"></a>
+<span class="sourceLineNo">754</span>  public boolean hasFilter() {<a name="line.754"></a>
+<span class="sourceLineNo">755</span>    return filter != null;<a name="line.755"></a>
+<span class="sourceLineNo">756</span>  }<a name="line.756"></a>
+<span class="sourceLineNo">757</span><a name="line.757"></a>
+<span class="sourceLineNo">758</span>  /**<a name="line.758"></a>
+<span class="sourceLineNo">759</span>   * Set whether blocks should be cached for this Scan.<a name="line.759"></a>
+<span class="sourceLineNo">760</span>   * &lt;p&gt;<a name="line.760"></a>
+<span class="sourceLineNo">761</span>   * This is true by default.  When true, default settings of the table and<a name="line.761"></a>
+<span class="sourceLineNo">762</span>   * family are used (this will never override caching blocks if the block<a name="line.762"></a>
+<span class="sourceLineNo">763</span>   * cache is disabled for that family or entirely).<a name="line.763"></a>
+<span class="sourceLineNo">764</span>   *<a name="line.764"></a>
+<span class="sourceLineNo">765</span>   * @param cacheBlocks if false, default settings are overridden and blocks<a name="line.765"></a>
+<span class="sourceLineNo">766</span>   * will not be cached<a name="line.766"></a>
 <span class="sourceLineNo">767</span>   */<a name="line.767"></a>
-<span class="sourceLineNo">768</span>  public boolean hasFilter() {<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    return filter != null;<a name="line.769"></a>
-<span class="sourceLineNo">770</span>  }<a name="line.770"></a>
-<span class="sourceLineNo">771</span><a name="line.771"></a>
-<span class="sourceLineNo">772</span>  /**<a name="line.772"></a>
-<span class="sourceLineNo">773</span>   * Set whether blocks should be cached for this Scan.<a name="line.773"></a>
-<span class="sourceLineNo">774</span>   * &lt;p&gt;<a name="line.774"></a>
-<span class="sourceLineNo">775</span>   * This is true by default.  When true, default settings of the table and<a name="line.775"></a>
-<span class="sourceLineNo">776</span>   * family are used (this will never override caching blocks if the block<a name="line.776"></a>
-<span class="sourceLineNo">777</span>   * cache is disabled for that family or entirely).<a name="line.777"></a>
-<span class="sourceLineNo">778</span>   *<a name="line.778"></a>
-<span class="sourceLineNo">779</span>   * @param cacheBlocks if false, default settings are overridden and blocks<a name="line.779"></a>
-<span class="sourceLineNo">780</span>   * will not be cached<a name="line.780"></a>
-<span class="sourceLineNo">781</span>   */<a name="line.781"></a>
-<span class="sourceLineNo">782</span>  public Scan setCacheBlocks(boolean cacheBlocks) {<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    this.cacheBlocks = cacheBlocks;<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    return this;<a name="line.784"></a>
-<span class="sourceLineNo">785</span>  }<a name="line.785"></a>
-<span class="sourceLineNo">786</span><a name="line.786"></a>
-<span class="sourceLineNo">787</span>  /**<a name="line.787"></a>
-<span class="sourceLineNo">788</span>   * Get whether blocks should be cached for this Scan.<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * @return true if default caching should be used, false if blocks should not<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   * be cached<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   */<a name="line.791"></a>
-<span class="sourceLineNo">792</span>  public boolean getCacheBlocks() {<a name="line.792"></a>
-<span class="sourceLineNo">793</span>    return cacheBlocks;<a name="line.793"></a>
-<span class="sourceLineNo">794</span>  }<a name="line.794"></a>
-<span class="sourceLineNo">795</span><a name="line.795"></a>
-<span class="sourceLineNo">796</span>  /**<a name="line.796"></a>
-<span class="sourceLineNo">797</span>   * Set whether this scan is a reversed one<a name="line.797"></a>
-<span class="sourceLineNo">798</span>   * &lt;p&gt;<a name="line.798"></a>
-<span class="sourceLineNo">799</span>   * This is false by default which means forward(normal) scan.<a name="line.799"></a>
-<span class="sourceLineNo">800</span>   *<a name="line.800"></a>
-<span class="sourceLineNo">801</span>   * @param reversed if true, scan will be backward order<a name="line.801"></a>
-<span class="sourceLineNo">802</span>   * @return this<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   */<a name="line.803"></a>
-<span class="sourceLineNo">804</span>  public Scan setReversed(boolean reversed) {<a name="line.804"></a>
-<span class="sourceLineNo">805</span>    this.reversed = reversed;<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    return this;<a name="line.806"></a>
-<span class="sourceLineNo">807</span>  }<a name="line.807"></a>
-<span class="sourceLineNo">808</span><a name="line.808"></a>
-<span class="sourceLineNo">809</span>  /**<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   * Get whether this scan is a reversed one.<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   * @return true if backward scan, false if forward(default) scan<a name="line.811"></a>
+<span class="sourceLineNo">768</span>  public Scan setCacheBlocks(boolean cacheBlocks) {<a name="line.768"></a>
+<span class="sourceLineNo">769</span>    this.cacheBlocks = cacheBlocks;<a name="line.769"></a>
+<span class="sourceLineNo">770</span>    return this;<a name="line.770"></a>
+<span class="sourceLineNo">771</span>  }<a name="line.771"></a>
+<span class="sourceLineNo">772</span><a name="line.772"></a>
+<span class="sourceLineNo">773</span>  /**<a name="line.773"></a>
+<span class="sourceLineNo">774</span>   * Get whether blocks should be cached for this Scan.<a name="line.774"></a>
+<span class="sourceLineNo">775</span>   * @return true if default caching should be used, false if blocks should not<a name="line.775"></a>
+<span class="sourceLineNo">776</span>   * be cached<a name="line.776"></a>
+<span class="sourceLineNo">777</span>   */<a name="line.777"></a>
+<span class="sourceLineNo">778</span>  public boolean getCacheBlocks() {<a name="line.778"></a>
+<span class="sourceLineNo">779</span>    return cacheBlocks;<a name="line.779"></a>
+<span class="sourceLineNo">780</span>  }<a name="line.780"></a>
+<span class="sourceLineNo">781</span><a name="line.781"></a>
+<span class="sourceLineNo">782</span>  /**<a name="line.782"></a>
+<span class="sourceLineNo">783</span>   * Set whether this scan is a reversed one<a name="line.783"></a>
+<span class="sourceLineNo">784</span>   * &lt;p&gt;<a name="line.784"></a>
+<span class="sourceLineNo">785</span>   * This is false by default which means forward(normal) scan.<a name="line.785"></a>
+<span class="sourceLineNo">786</span>   *<a name="line.786"></a>
+<span class="sourceLineNo">787</span>   * @param reversed if true, scan will be backward order<a name="line.787"></a>
+<span class="sourceLineNo">788</span>   * @return this<a name="line.788"></a>
+<span class="sourceLineNo">789</span>   */<a name="line.789"></a>
+<span class="sourceLineNo">790</span>  public Scan setReversed(boolean reversed) {<a name="line.790"></a>
+<span class="sourceLineNo">791</span>    this.reversed = reversed;<a name="line.791"></a>
+<span class="sourceLineNo">792</span>    return this;<a name="line.792"></a>
+<span class="sourceLineNo">793</span>  }<a name="line.793"></a>
+<span class="sourceLineNo">794</span><a name="line.794"></a>
+<span class="sourceLineNo">795</span>  /**<a name="line.795"></a>
+<span class="sourceLineNo">796</span>   * Get whether this scan is a reversed one.<a name="line.796"></a>
+<span class="sourceLineNo">797</span>   * @return true if backward scan, false if forward(default) scan<a name="line.797"></a>
+<span class="sourceLineNo">798</span>   */<a name="line.798"></a>
+<span class="sourceLineNo">799</span>  public boolean isReversed() {<a name="line.799"></a>
+<span class="sourceLineNo">800</span>    return reversed;<a name="line.800"></a>
+<span class="sourceLineNo">801</span>  }<a name="line.801"></a>
+<span class="sourceLineNo">802</span><a name="line.802"></a>
+<span class="sourceLineNo">803</span>  /**<a name="line.803"></a>
+<span class="sourceLineNo">804</span>   * Setting whether the caller wants to see the partial results when server returns<a name="line.804"></a>
+<span class="sourceLineNo">805</span>   * less-than-expected cells. It is helpful while scanning a huge row to prevent OOM at client.<a name="line.805"></a>
+<span class="sourceLineNo">806</span>   * By default this value is false and the complete results will be assembled client side<a name="line.806"></a>
+<span class="sourceLineNo">807</span>   * before being delivered to the caller.<a name="line.807"></a>
+<span class="sourceLineNo">808</span>   * @param allowPartialResults<a name="line.808"></a>
+<span class="sourceLineNo">809</span>   * @return this<a name="line.809"></a>
+<span class="sourceLineNo">810</span>   * @see Result#mayHaveMoreCellsInRow()<a name="line.810"></a>
+<span class="sourceLineNo">811</span>   * @see #setBatch(int)<a name="line.811"></a>
 <span class="sourceLineNo">812</span>   */<a name="line.812"></a>
-<span class="sourceLineNo">813</span>  public boolean isReversed() {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    return reversed;<a name="line.814"></a>
-<span class="sourceLineNo">815</span>  }<a name="line.815"></a>
-<span class="sourceLineNo">816</span><a name="line.816"></a>
-<span class="sourceLineNo">817</span>  /**<a name="line.817"></a>
-<span class="sourceLineNo">818</span>   * Setting whether the caller wants to see the partial results when server returns<a name="line.818"></a>
-<span class="sourceLineNo">819</span>   * less-than-expected cells. It is helpful while scanning a huge row to prevent OOM at client.<a name="line.819"></a>
-<span class="sourceLineNo">820</span>   * By default this value is false and the complete results will be assembled client side<a name="line.820"></a>
-<span class="sourceLineNo">821</span>   * before being delivered to the caller.<a name="line.821"></a>
-<span class="sourceLineNo">822</span>   * @param allowPartialResults<a name="line.822"></a>
-<span class="sourceLineNo">823</span>   * @return this<a name="line.823"></a>
-<span class="sourceLineNo">824</span>   * @see Result#mayHaveMoreCellsInRow()<a name="line.824"></a>
-<span class="sourceLineNo">825</span>   * @see #setBatch(int)<a name="line.825"></a>
-<span class="sourceLineNo">826</span>   */<a name="line.826"></a>
-<span class="sourceLineNo">827</span>  public Scan setAllowPartialResults(final boolean allowPartialResults) {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>    this.allowPartialResults = allowPartialResults;<a name="line.828"></a>
-<span class="sourceLineNo">829</span>    return this;<a name="line.829"></a>
+<span class="sourceLineNo">813</span>  public Scan setAllowPartialResults(final boolean allowPartialResults) {<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    this.allowPartialResults = allowPartialResults;<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    return this;<a name="line.815"></a>
+<span class="sourceLineNo">816</span>  }<a name="line.816"></a>
+<span class="sourceLineNo">817</span><a name="line.817"></a>
+<span class="sourceLineNo">818</span>  /**<a name="line.818"></a>
+<span class="sourceLineNo">819</span>   * @return true when the constructor of this scan understands that the results they will see may<a name="line.819"></a>
+<span class="sourceLineNo">820</span>   *         only represent a partial portion of a row. The entire row would be retrieved by<a name="line.820"></a>
+<span class="sourceLineNo">821</span>   *         subsequent calls to {@link ResultScanner#next()}<a name="line.821"></a>
+<span class="sourceLineNo">822</span>   */<a name="line.822"></a>
+<span class="sourceLineNo">823</span>  public boolean getAllowPartialResults() {<a name="line.823"></a>
+<span class="sourceLineNo">824</span>    return allowPartialResults;<a name="line.824"></a>
+<span class="sourceLineNo">825</span>  }<a name="line.825"></a>
+<span class="sourceLineNo">826</span><a name="line.826"></a>
+<span class="sourceLineNo">827</span>  @Override<a name="line.827"></a>
+<span class="sourceLineNo">828</span>  public Scan setLoadColumnFamiliesOnDemand(boolean value) {<a name="line.828"></a>
+<span class="sourceLineNo">829</span>    return (Scan) super.setLoadColumnFamiliesOnDemand(value);<a name="line.829"></a>
 <span class="sourceLineNo">830</span>  }<a name="line.830"></a>
 <span class="sourceLineNo">831</span><a name="line.831"></a>
 <span class="sourceLineNo">832</span>  /**<a name="line.832"></a>
-<span class="sourceLineNo">833</span>   * @return true when the constructor of this scan understands that the results they will see may<a name="line.833"></a>
-<span class="sourceLineNo">834</span>   *         only represent a partial portion of a row. The entire row would be retrieved by<a name="line.834"></a>
-<span class="sourceLineNo">835</span>   *         subsequent calls to {@link ResultScanner#next()}<a name="line.835"></a>
-<span class="sourceLineNo">836</span>   */<a name="line.836"></a>
-<span class="sourceLineNo">837</span>  public boolean getAllowPartialResults() {<a name="line.837"></a>
-<span class="sourceLineNo">838</span>    return allowPartialResults;<a name="line.838"></a>
-<span class="sourceLineNo">839</span>  }<a name="line.839"></a>
-<span class="sourceLineNo">840</span><a name="line.840"></a>
-<span class="sourceLineNo">841</span>  @Override<a name="line.841"></a>
-<span class="sourceLineNo">842</span>  public Scan setLoadColumnFamiliesOnDemand(boolean value) {<a name="line.842"></a>
-<span class="sourceLineNo">843</span>    return (Scan) super.setLoadColumnFamiliesOnDemand(value);<a name="line.843"></a>
-<span class="sourceLineNo">844</span>  }<a name="line.844"></a>
-<span class="sourceLineNo">845</span><a name="line.845"></a>
-<span class="sourceLineNo">846</span>  /**<a name="line.846"></a>
-<span class="sourceLineNo">847</span>   * Compile the table and column family (i.e. schema) information<a name="line.847"></a>
-<span class="sourceLineNo">848</span>   * into a String. Useful for parsing and aggregation by debugging,<a name="line.848"></a>
-<span class="sourceLineNo">849</span>   * logging, and administration tools.<a name="line.849"></a>
-<span class="sourceLineNo">850</span>   * @return Map<a name="line.850"></a>
-<span class="sourceLineNo">851</span>   */<a name="line.851"></a>
-<span class="sourceLineNo">852</span>  @Override<a name="line.852"></a>
-<span class="sourceLineNo">853</span>  public Map&lt;String, Object&gt; getFingerprint() {<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    Map&lt;String, Object&gt; map = new HashMap&lt;&gt;();<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    List&lt;String&gt; families = new ArrayList&lt;&gt;();<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    if(this.familyMap.isEmpty()) {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      map.put("families", "ALL");<a name="line.857"></a>
-<span class="sourceLineNo">858</span>      return map;<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    } else {<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      map.put("families", families);<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    }<a name="line.861"></a>
-<span class="sourceLineNo">862</span>    for (Map.Entry&lt;byte [], NavigableSet&lt;byte[]&gt;&gt; entry :<a name="line.862"></a>
-<span class="sourceLineNo">863</span>        this.familyMap.entrySet()) {<a name="line.863"></a>
-<span class="sourceLineNo">864</span>      families.add(Bytes.toStringBinary(entry.getKey()));<a name="line.864"></a>
-<span class="sourceLineNo">865</span>    }<a name="line.865"></a>
-<span class="sourceLineNo">866</span>    return map;<a name="line.866"></a>
-<span class="sourceLineNo">867</span>  }<a name="line.867"></a>
-<span class="sourceLineNo">868</span><a name="line.868"></a>
-<span class="sourceLineNo">869</span>  /**<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   * Compile the details beyond the scope of getFingerprint (row, columns,<a name="line.870"></a>
-<span class="sourceLineNo">871</span>   * timestamps, etc.) into a Map along with the fingerprinted information.<a name="line.871"></a>
-<span class="sourceLineNo">872</span>   * Useful for debugging, logging, and administration tools.<a name="line.872"></a>
-<span class="sourceLineNo">873</span>   * @param maxCols a limit on the number of columns output prior to truncation<a name="line.873"></a>
-<span class="sourceLineNo">874</span>   * @return Map<a name="line.874"></a>
-<span class="sourceLineNo">875</span>   */<a name="line.875"></a>
-<span class="sourceLineNo">876</span>  @Override<a name="line.876"></a>
-<span class="sourceLineNo">877</span>  public Map&lt;String, Object&gt; toMap(int maxCols) {<a name="line.877"></a>
-<span class="sourceLineNo">878</span>    // start with the fingerpring map and build on top of it<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    Map&lt;String, Object&gt; map = getFingerprint();<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    // map from families to column list replaces fingerprint's list of families<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    Map&lt;String, List&lt;String&gt;&gt; familyColumns = new HashMap&lt;&gt;();<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    map.put("families", familyColumns);<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    // add scalar information first<a name="line.883"></a>
-<span class="sourceLineNo">884</span>    map.put("startRow", Bytes.toStringBinary(this.startRow));<a name="line.884"></a>
-<span class="sourceLineNo">885</span>    map.put("stopRow", Bytes.toStringBinary(this.stopRow));<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    map.put("maxVersions", this.maxVersions);<a name="line.886"></a>
-<span class="sourceLineNo">887</span>    map.put("batch", this.batch);<a name="line.887"></a>
-<span class="sourceLineNo">888</span>    map.put("caching", this.caching);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    map.put("maxResultSize", this.maxResultSize);<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    map.put("cacheBlocks", this.cacheBlocks);<a name="line.890"></a>
-<span class="sourceLineNo">891</span>    map.put("loadColumnFamiliesOnDemand", this.loadColumnFamiliesOnDemand);<a name="line.891"></a>
-<span class="sourceLineNo">892</span>    List&lt;Long&gt; timeRange = new ArrayList&lt;&gt;(2);<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    timeRange.add(this.tr.getMin());<a name="line.893"></a>
-<span class="sourceLineNo">894</span>    timeRange.add(this.tr.getMax());<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    map.put("timeRange", timeRange);<a name="line.895"></a>
-<span class="sourceLineNo">896</span>    int colCount = 0;<a name="line.896"></a>
-<span class="sourceLineNo">897</span>    // iterate through affected families and list out up to maxCols columns<a name="line.897"></a>
-<span class="sourceLineNo">898</span>    for (Map.Entry&lt;byte [], NavigableSet&lt;byte[]&gt;&gt; entry :<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      this.familyMap.entrySet()) {<a name="line.899"></a>
-<span class="sourceLineNo">900</span>      List&lt;String&gt; columns = new ArrayList&lt;&gt;();<a name="line.900"></a>
-<span class="sourceLineNo">901</span>      familyColumns.put(Bytes.toStringBinary(entry.getKey()), columns);<a name="line.901"></a>
-<span class="sourceLineNo">902</span>      if(entry.getValue() == null) {<a name="line.902"></a>
-<span class="sourceLineNo">903</span>        colCount++;<a name="line.903"></a>
-<span class="sourceLineNo">904</span>        --maxCols;<a name="line.904"></a>
-<span class="sourceLineNo">905</span>        columns.add("ALL");<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      } else {<a name="line.906"></a>
-<span class="sourceLineNo">907</span>        colCount += entry.getValue().size();<a name="line.907"></a>
-<span class="sourceLineNo">908</span>        if (maxCols &lt;= 0) {<a name="line.908"></a>
-<span class="sourceLineNo">909</span>          continue;<a name="line.909"></a>
-<span class="sourceLineNo">910</span>        }<a name="line.910"></a>
-<span class="sourceLineNo">911</span>        for (byte [] column : entry.getValue()) {<a name="line.911"></a>
-<span class="sourceLineNo">912</span>          if (--maxCols &lt;= 0) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>            continue;<a name="line.913"></a>
-<span class="sourceLineNo">914</span>          }<a name="line.914"></a>
-<span class="sourceLineNo">915</span>          columns.add(Bytes.toStringBinary(column));<a name="line.915"></a>
-<span class="sourceLineNo">916</span>        }<a name="line.916"></a>
-<span class="sourceLineNo">917</span>      }<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    }<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    map.put("totalColumns", colCount);<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    if (this.filter != null) {<a name="line.920"></a>
-<span class="sourceLineNo">921</span>      map.put("filter", this.filter.toString());<a name="line.921"></a>
-<span class="sourceLineNo">922</span>    }<a name="line.922"></a>
-<span class="sourceLineNo">923</span>    // add the id if set<a name="line.923"></a>
-<span class="sourceLineNo">924</span>    if (getId() != null) {<a name="line.924"></a>
-<span class="sourceLineNo">925</span>      map.put("id", getId());<a name="line.925"></a>
-<span class="sourceLineNo">926</span>    }<a name="line.926"></a>
-<span class="sourceLineNo">927</span>    return map;<a name="line.927"></a>
-<span class="sourceLineNo">928</span>  }<a name="line.928"></a>
-<span class="sourceLineNo">929</span><a name="line.929"></a>
-<span class="sourceLineNo">930</span>  /**<a name="line.930"></a>
-<span class="sourceLineNo">931</span>   * Enable/disable "raw" mode for this scan.<a name="line.931"></a>
-<span class="sourceLineNo">932</span>   * If "raw" is enabled the scan will return all<a name="line.932"></a>
-<span class="sourceLineNo">933</span>   * delete marker and deleted rows that have not<a name="line.933"></a>
-<span class="sourceLineNo">934</span>   * been collected, yet.<a name="line.934"></a>
-<span class="sourceLineNo">935</span>   * This is mostly useful for Scan on column families<a name="line.935"></a>
-<span class="sourceLineNo">936</span>   * that have KEEP_DELETED_ROWS enabled.<a name="line.936"></a>
-<span class="sourceLineNo">937</span>   * It is an error to specify any column when "raw" is set.<a name="line.937"></a>
-<span class="sourceLineNo">938</span>   * @param raw True/False to enable/disable "raw" mode.<a name="line.938"></a>
-<span class="sourceLineNo">939</span>   */<a name="line.939"></a>
-<span class="sourceLineNo">940</span>  public Scan setRaw(boolean raw) {<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    setAttribute(RAW_ATTR, Bytes.toBytes(raw));<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    return this;<a name="line.942"></a>
-<span class="sourceLineNo">943</span>  }<a name="line.943"></a>
-<span class="sourceLineNo">944</span><a name="line.944"></a>
-<span class="sourceLineNo">945</span>  /**<a name="line.945"></a>
-<span class="sourceLineNo">946</span>   * @return True if this Scan is in "raw" mode.<a name="line.946"></a>
-<span class="sourceLineNo">947</span>   */<a name="line.947"></a>
-<span class="sourceLineNo">948</span>  public boolean isRaw() {<a name="line.948"></a>
-<span class="sourceLineNo">949</span>    byte[] attr = getAttribute(RAW_ATTR);<a name="line.949"></a>
-<span class="sourceLineNo">950</span>    return attr == null ? false : Bytes.toBoolean(attr);<a name="line.950"></a>
-<span class="sourceLineNo">951</span>  }<a name="line.951"></a>
-<span class="sourceLineNo">952</span><a name="line.952"></a>
-<span class="sourceLineNo">953</span>  /**<a name="line.953"></a>
-<span class="sourceLineNo">954</span>   * Set whether this scan is a small scan<a name="line.954"></a>
-<span class="sourceLineNo">955</span>   * &lt;p&gt;<a name="line.955"></a>
-<span class="sourceLineNo">956</span>   * Small scan should use pread and big scan can use seek + read seek + read is fast but can cause<a name="line.956"></a>
-<span class="sourceLineNo">957</span>   * two problem (1) resource contention (2) cause too much network io [89-fb] Using pread for<a name="line.957"></a>
-<span class="sourceLineNo">958</span>   * non-compaction read request https://issues.apache.org/jira/browse/HBASE-7266 On the other hand,<a name="line.958"></a>
-<span class="sourceLineNo">959</span>   * if setting it true, we would do openScanner,next,closeScanner in one RPC call. It means the<a name="line.959"></a>
-<span class="sourceLineNo">960</span>   * better performance for small scan. [HBASE-9488]. Generally, if the scan range is within one<a name="line.960"></a>
-<span class="sourceLineNo">961</span>   * data block(64KB), it could be considered as a small scan.<a name="line.961"></a>
-<span class="sourceLineNo">962</span>   * @param small<a name="line.962"></a>
-<span class="sourceLineNo">963</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use {@link #setLimit(int)} and<a name="line.963"></a>
-<span class="sourceLineNo">964</span>   *   {@link #setReadType(ReadType)} instead. And for the one rpc optimization, now we will also<a name="line.964"></a>
-<span class="sourceLineNo">965</span>   *   fetch data when openScanner, and if the number of rows reaches the limit then we will close<a name="line.965"></a>
-<span class="sourceLineNo">966</span>   *   the scanner automatically which means we will fall back to one rpc.<a name="line.966"></a>
-<span class="sourceLineNo">967</span>   * @see #setLimit(int)<a name="line.967"></a>
-<span class="sourceLineNo">968</span>   * @see #setReadType(ReadType)<a name="line.968"></a>
+<span class="sourceLineNo">833</span>   * Compile the table and column family (i.e. schema) information<a name="line.833"></a>
+<span class="sourceLineNo">834</span>   * into a String. Useful for parsing and aggregation by debugging,<a name="line.834"></a>
+<span class="sourceLineNo">835</span>   * logging, and administration tools.<a name="line.835"></a>
+<span class="sourceLineNo">836</span>   * @return Map<a name="line.836"></a>
+<span class="sourceLineNo">837</span>   */<a name="line.837"></a>
+<span class="sourceLineNo">838</span>  @Override<a name="line.838"></a>
+<span class="sourceLineNo">839</span>  public Map&lt;String, Object&gt; getFingerprint() {<a name="line.839"></a>
+<span class="sourceLineNo">840</span>    Map&lt;String, Object&gt; map = new HashMap&lt;&gt;();<a name="line.840"></a>
+<span class="sourceLineNo">841</span>    List&lt;String&gt; families = new ArrayList&lt;&gt;();<a name="line.841"></a>
+<span class="sourceLineNo">842</span>    if(this.familyMap.isEmpty()) {<a name="line.842"></a>
+<span class="sourceLineNo">843</span>      map.put("families", "ALL");<a name="line.843"></a>
+<span class="sourceLineNo">844</span>      return map;<a name="line.844"></a>
+<span class="sourceLineNo">845</span>    } else {<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      map.put("families", families);<a name="line.846"></a>
+<span class="sourceLineNo">847</span>    }<a name="line.847"></a>
+<span class="sourceLineNo">848</span>    for (Map.Entry&lt;byte [], NavigableSet&lt;byte[]&gt;&gt; entry :<a name="line.848"></a>
+<span class="sourceLineNo">849</span>        this.familyMap.entrySet()) {<a name="line.849"></a>
+<span class="sourceLineNo">850</span>      families.add(Bytes.toStringBinary(entry.getKey()));<a name="line.850"></a>
+<span class="sourceLineNo">851</span>    }<a name="line.851"></a>
+<span class="sourceLineNo">852</span>    return map;<a name="line.852"></a>
+<span class="sourceLineNo">853</span>  }<a name="line.853"></a>
+<span class="sourceLineNo">854</span><a name="line.854"></a>
+<span class="sourceLineNo">855</span>  /**<a name="line.855"></a>
+<span class="sourceLineNo">856</span>   * Compile the details beyond the scope of getFingerprint (row, columns,<a name="line.856"></a>
+<span class="sourceLineNo">857</span>   * timestamps, etc.) into a Map along with the fingerprinted information.<a name="line.857"></a>
+<span class="sourceLineNo">858</span>   * Useful for debugging, logging, and administration tools.<a name="line.858"></a>
+<span class="sourceLineNo">859</span>   * @param maxCols a limit on the number of columns output prior to truncation<a name="line.859"></a>
+<span class="sourceLineNo">860</span>   * @return Map<a name="line.860"></a>
+<span class="sourceLineNo">861</span>   */<a name="line.861"></a>
+<span class="sourceLineNo">862</span>  @Override<a name="line.862"></a>
+<span class="sourceLineNo">863</span>  public Map&lt;String, Object&gt; toMap(int maxCols) {<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    // start with the fingerpring map and build on top of it<a name="line.864"></a>
+<span class="sourceLineNo">865</span>    Map&lt;String, Object&gt; map = getFingerprint();<a name="line.865"></a>
+<span class="sourceLineNo">866</span>    // map from families to column list replaces fingerprint's list of families<a name="line.866"></a>
+<span class="sourceLineNo">867</span>    Map&lt;String, List&lt;String&gt;&gt; familyColumns = new HashMap&lt;&gt;();<a name="line.867"></a>
+<span class="sourceLineNo">868</span>    map.put("families", familyColumns);<a name="line.868"></a>
+<span class="sourceLineNo">869</span>    // add scalar information first<a name="line.869"></a>
+<span class="sourceLineNo">870</span>    map.put("startRow", Bytes.toStringBinary(this.startRow));<a name="line.870"></a>
+<span class="sourceLineNo">871</span>    map.put("stopRow", Bytes.toStringBinary(this.stopRow));<a name="line.871"></a>
+<span class="sourceLineNo">872</span>    map.put("maxVersions", this.maxVersions);<a name="line.872"></a>
+<span class="sourceLineNo">873</span>    map.put("batch", this.batch);<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    map.put("caching", this.caching);<a name="line.874"></a>
+<span class="sourceLineNo">875</span>    map.put("maxResultSize", this.maxResultSize);<a name="line.875"></a>
+<span class="sourceLineNo">876</span>    map.put("cacheBlocks", this.cacheBlocks);<a name="line.876"></a>
+<span class="sourceLineNo">877</span>    map.put("loadColumnFamiliesOnDemand", this.loadColumnFamiliesOnDemand);<a name="line.877"></a>
+<span class="sourceLineNo">878</span>    List&lt;Long&gt; timeRange = new ArrayList&lt;&gt;(2);<a name="line.878"></a>
+<span class="sourceLineNo">879</span>    timeRange.add(this.tr.getMin());<a name="line.879"></a>
+<span class="sourceLineNo">880</span>    timeRange.add(this.tr.getMax());<a name="line.880"></a>
+<span class="sourceLineNo">881</span>    map.put("timeRange", timeRange);<a name="line.881"></a>
+<span class="sourceLineNo">882</span>    int colCount = 0;<a name="line.882"></a>
+<span class="sourceLineNo">883</span>    // iterate through affected families and list out up to maxCols columns<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    for (Map.Entry&lt;byte [], NavigableSet&lt;byte[]&gt;&gt; entry :<a name="line.884"></a>
+<span class="sourceLineNo">885</span>      this.familyMap.entrySet()) {<a name="line.885"></a>
+<span class="sourceLineNo">886</span>      List&lt;String&gt; columns = new ArrayList&lt;&gt;();<a name="line.886"></a>
+<span class="sourceLineNo">887</span>      familyColumns.put(Bytes.toStringBinary(entry.getKey()), columns);<a name="line.887"></a>
+<span class="sourceLineNo">888</span>      if(entry.getValue() == null) {<a name="line.888"></a>
+<span class="sourceLineNo">889</span>        colCount++;<a name="line.889"></a>
+<span class="sourceLineNo">890</span>        --maxCols;<a name="line.890"></a>
+<span class="sourceLineNo">891</span>        columns.add("ALL");<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      } else {<a name="line.892"></a>
+<span class="sourceLineNo">893</span>        colCount += entry.getValue().size();<a name="line.893"></a>
+<span class="sourceLineNo">894</span>        if (maxCols &lt;= 0) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>          continue;<a name="line.895"></a>
+<span class="sourceLineNo">896</span>        }<a name="line.896"></a>
+<span class="sourceLineNo">897</span>        for (byte [] column : entry.getValue()) {<a name="line.897"></a>
+<span class="sourceLineNo">898</span>          if (--maxCols &lt;= 0) {<a name="line.898"></a>
+<span class="sourceLineNo">899</span>            continue;<a name="line.899"></a>
+<span class="sourceLineNo">900</span>          }<a name="line.900"></a>
+<span class="sourceLineNo">901</span>          columns.add(Bytes.toStringBinary(column));<a name="line.901"></a>
+<span class="sourceLineNo">902</span>        }<a name="line.902"></a>
+<span class="sourceLineNo">903</span>      }<a name="line.903"></a>
+<span class="sourceLineNo">904</span>    }<a name="line.904"></a>
+<span class="sourceLineNo">905</span>    map.put("totalColumns", colCount);<a name="line.905"></a>
+<span class="sourceLineNo">906</span>    if (this.filter != null) {<a name="line.906"></a>
+<span class="sourceLineNo">907</span>      map.put("filter", this.filter.toString());<a name="line.907"></a>
+<span class="sourceLineNo">908</span>    }<a name="line.908"></a>
+<span class="sourceLineNo">909</span>    // add the id if set<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    if (getId() != null) {<a name="line.910"></a>
+<span class="sourceLineNo">911</span>      map.put("id", getId());<a name="line.911"></a>
+<span class="sourceLineNo">912</span>    }<a name="line.912"></a>
+<span class="sourceLineNo">913</span>    return map;<a name="line.913"></a>
+<span class="sourceLineNo">914</span>  }<a name="line.914"></a>
+<span class="sourceLineNo">915</span><a name="line.915"></a>
+<span class="sourceLineNo">916</span>  /**<a name="line.916"></a>
+<span class="sourceLineNo">917</span>   * Enable/disable "raw" mode for this scan.<a name="line.917"></a>
+<span class="sourceLineNo">918</span>   * If "raw" is enabled the scan will return all<a name="line.918"></a>
+<span class="sourceLineNo">919</span>   * delete marker and deleted rows that have not<a name="line.919"></a>
+<span class="sourceLineNo">920</span>   * been collected, yet.<a name="line.920"></a>
+<span class="sourceLineNo">921</span>   * This is mostly useful for Scan on column families<a name="line.921"></a>
+<span class="sourceLineNo">922</span>   * that have KEEP_DELETED_ROWS enabled.<a name="line.922"></a>
+<span class="sourceLineNo">923</span>   * It is an error to specify any column when "raw" is set.<a name="line.923"></a>
+<span class="sourceLineNo">924</span>   * @param raw True/False to enable/disable "raw" mode.<a name="line.924"></a>
+<span class="sourceLineNo">925</span>   */<a name="line.925"></a>
+<span class="sourceLineNo">926</span>  public Scan setRaw(boolean raw) {<a name="line.926"></a>
+<span class="sourceLineNo">927</span>    setAttribute(RAW_ATTR, Bytes.toBytes(raw));<a name="line.927"></a>
+<span class="sourceLineNo">928</span>    return this;<a name="line.928"></a>
+<span class="sourceLineNo">929</span>  }<a name="line.929"></a>
+<span class="sourceLineNo">930</span><a name="line.930"></a>
+<span class="sourceLineNo">931</span>  /**<a name="line.931"></a>
+<span class="sourceLineNo">932</span>   * @return True if this Scan is in "raw" mode.<a name="line.932"></a>
+<span class="sourceLineNo">933</span>   */<a name="line.933"></a>
+<span class="sourceLineNo">934</span>  public boolean isRaw() {<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    byte[] attr = getAttribute(RAW_ATTR);<a name="line.935"></a>
+<span class="sourceLineNo">936</span>    return attr == null ? false : Bytes.toBoolean(attr);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>  }<a name="line.937"></a>
+<span class="sourceLineNo">938</span><a name="line.938"></a>
+<span class="sourceLineNo">939</span>  /**<a name="line.939"></a>
+<span class="sourceLineNo">940</span>   * Set whether this scan is a small scan<a name="line.940"></a>
+<span class="sourceLineNo">941</span>   * &lt;p&gt;<a name="line.941"></a>
+<span class="sourceLineNo">942</span>   * Small scan should use pread and big scan can use seek + read seek + read is fast but can cause<a name="line.942"></a>
+<span class="sourceLineNo">943</span>   * two problem (1) resource contention (2) cause too much network io [89-fb] Using pread for<a name="line.943"></a>
+<span class="sourceLineNo">944</span>   * non-compaction read request https://issues.apache.org/jira/browse/HBASE-7266 On the other hand,<a name="line.944"></a>
+<span class="sourceLineNo">945</span>   * if setting it true, we would do openScanner,next,closeScanner in one RPC call. It means the<a name="line.945"></a>
+<span class="sourceLineNo">946</span>   * better performance for small scan. [HBASE-9488]. Generally, if the scan range is within one<a name="line.946"></a>
+<span class="sourceLineNo">947</span>   * data block(64KB), it could be considered as a small scan.<a name="line.947"></a>
+<span class="sourceLineNo">948</span>   * @param small<a name="line.948"></a>
+<span class="sourceLineNo">949</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use {@link #setLimit(int)} and<a name="line.949"></a>
+<span class="sourceLineNo">950</span>   *   {@link #setReadType(ReadType)} instead. And for the one rpc optimization, now we will also<a name="line.950"></a>
+<span class="sourceLineNo">951</span>   *   fetch data when openScanner, and if the number of rows reaches the limit then we will close<a name="line.951"></a>
+<span class="sourceLineNo">952</span>   *   the scanner automatically which means we will fall back to one rpc.<a name="line.952"></a>
+<span class="sourceLineNo">953</span>   * @see #setLimit(int)<a name="line.953"></a>
+<span class="sourceLineNo">954</span>   * @see #setReadType(ReadType)<a name="line.954"></a>
+<span class="sourceLineNo">955</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17045"&gt;HBASE-17045&lt;/a&gt;<a name="line.955"></a>
+<span class="sourceLineNo">956</span>   */<a name="line.956"></a>
+<span class="sourceLineNo">957</span>  @Deprecated<a name="line.957"></a>
+<span class="sourceLineNo">958</span>  public Scan setSmall(boolean small) {<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    this.small = small;<a name="line.959"></a>
+<span class="sourceLineNo">960</span>    this.readType = ReadType.PREAD;<a name="line.960"></a>
+<span class="sourceLineNo">961</span>    return this;<a name="line.961"></a>
+<span class="sourceLineNo">962</span>  }<a name="line.962"></a>
+<span class="sourceLineNo">963</span><a name="line.963"></a>
+<span class="sourceLineNo">964</span>  /**<a name="line.964"></a>
+<span class="sourceLineNo">965</span>   * Get whether this scan is a small scan<a name="line.965"></a>
+<span class="sourceLineNo">966</span>   * @return true if small scan<a name="line.966"></a>
+<span class="sourceLineNo">967</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. See the comment of<a name="line.967"></a>
+<span class="sourceLineNo">968</span>   *   {@link #setSmall(boolean)}<a name="line.968"></a>
 <span class="sourceLineNo">969</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17045"&gt;HBASE-17045&lt;/a&gt;<a name="line.969"></a>
 <span class="sourceLineNo">970</span>   */<a name="line.970"></a>
 <span class="sourceLineNo">971</span>  @Deprecated<a name="line.971"></a>
-<span class="sourceLineNo">972</span>  public Scan setSmall(boolean small) {<a name="line.972"></a>
-<span class="sourceLineNo">973</span>    this.small = small;<a name="line.973"></a>
-<span class="sourceLineNo">974</span>    this.readType = ReadType.PREAD;<a name="line.974"></a>
-<span class="sourceLineNo">975</span>    return this;<a name="line.975"></a>
-<span class="sourceLineNo">976</span>  }<a name="line.976"></a>
-<span class="sourceLineNo">977</span><a name="line.977"></a>
-<span class="sourceLineNo">978</span>  /**<a name="line.978"></a>
-<span class="sourceLineNo">979</span>   * Get whether this scan is a small scan<a name="line.979"></a>
-<span class="sourceLineNo">980</span>   * @return true if small scan<a name="line.980"></a>
-<span class="sourceLineNo">981</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. See the comment of<a name="line.981"></a>
-<span class="sourceLineNo">982</span>   *   {@link #setSmall(boolean)}<a name="line.982"></a>
-<span class="sourceLineNo">983</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17045"&gt;HBASE-17045&lt;/a&gt;<a name="line.983"></a>
-<span class="sourceLineNo">984</span>   */<a name="line.984"></a>
-<span class="sourceLineNo">985</span>  @Deprecated<a name="line.985"></a>
-<span class="sourceLineNo">986</span>  public boolean isSmall() {<a name="line.986"></a>
-<span class="sourceLineNo">987</span>    return small;<a name="line.987"></a>
-<span class="sourceLineNo">988</span>  }<a name="line.988"></a>
-<span class="sourceLineNo">989</span><a name="line.989"></a>
-<span class="sourceLineNo">990</span>  @Override<a name="line.990"></a>
-<span class="sourceLineNo">991</span>  public Scan setAttribute(String name, byte[] value) {<a name="line.991"></a>
-<span class="sourceLineNo">992</span>    return (Scan) super.setAttribute(name, value);<a name="line.992"></a>
-<span class="sourceLineNo">993</span>  }<a name="line.993"></a>
-<span class="sourceLineNo">994</span><a name="line.994"></a>
-<span class="sourceLineNo">995</span>  @Override<a name="line.995"></a>
-<span class="sourceLineNo">996</span>  public Scan setId(String id) {<a name="line.996"></a>
-<span class="sourceLineNo">997</span>    return (Scan) super.setId(id);<a name="line.997"></a>
-<span class="sourceLineNo">998</span>  }<a name="line.998"></a>
-<span class="sourceLineNo">999</span><a name="line.999"></a>
-<span class="sourceLineNo">1000</span>  @Override<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  public Scan setAuthorizations(Authorizations authorizations) {<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>    return (Scan) super.setAuthorizations(authorizations);<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>  }<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span><a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>  @Override<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>  public Scan setACL(Map&lt;String, Permission&gt; perms) {<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>    return (Scan) super.setACL(perms);<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>  }<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span><a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>  @Override<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>  public Scan setACL(String user, Permission perms) {<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    return (Scan) super.setACL(user, perms);<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>  }<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span><a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>  @Override<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>  public Scan setConsistency(Consistency consistency) {<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>    return (Scan) super.setConsistency(consistency);<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>  }<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span><a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>  @Override<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>  public Scan setReplicaId(int Id) {<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>    return (Scan) super.setReplicaId(Id);<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>  }<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span><a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>  @Override<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>  public Scan setIsolationLevel(IsolationLevel level) {<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>    return (Scan) super.setIsolationLevel(level);<a name="line.1027"></a>
+<span class="sourceLineNo">972</span>  public boolean isSmall() {<a name="line.972"></a>
+<span class="sourceLineNo">973</span>    return small;<a name="line.973"></a>
+<span class="sourceLineNo">974</span>  }<a name="line.974"></a>
+<span class="sourceLineNo">975</span><a name="line.975"></a>
+<span class="sourceLineNo">976</span>  @Override<a name="line.976"></a>
+<span class="sourceLineNo">977</span>  public Scan setAttribute(String name, byte[] value) {<a name="line.977"></a>
+<span class="sourceLineNo">978</span>    return (Scan) super.setAttribute(name, value);<a name="line.978"></a>
+<span class="sourceLineNo">979</span>  }<a name="line.979"></a>
+<span class="sourceLineNo">980</span><a name="line.980"></a>
+<span class="sourceLineNo">981</span>  @Override<a name="line.981"></a>
+<span class="sourceLineNo">982</span>  public Scan setId(String id) {<a name="line.982"></a>
+<span class="sourceLineNo">983</span>    return (Scan) super.setId(id);<a name="line.983"></a>
+<span class="sourceLineNo">984</span>  }<a name="line.984"></a>
+<span class="sourceLineNo">985</span><a name="line.985"></a>
+<span class="sourceLineNo">986</span>  @Override<a name="line.986"></a>
+<span class="sourceLineNo">987</span>  public Scan setAuthorizations(Authorizations authorizations) {<a name="line.987"></a>
+<span class="sourceLineNo">988</span>    return (Scan) super.setAuthorizations(authorizations);<a name="line.988"></a>
+<span class="sourceLineNo">989</span>  }<a name="line.989"></a>
+<span class="sourceLineNo">990</span><a name="line.990"></a>
+<span class="sourceLineNo">991</span>  @Override<a name="line.991"></a>
+<span class="sourceLineNo">992</span>  public Scan setACL(Map&lt;String, Permission&gt; perms) {<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    return (Scan) super.setACL(perms);<a name="line.993"></a>
+<span class="sourceLineNo">994</span>  }<a name="line.994"></a>
+<span class="sourceLineNo">995</span><a name="line.995"></a>
+<span class="sourceLineNo">996</span>  @Override<a name="line.996"></a>
+<span class="sourceLineNo">997</span>  public Scan setACL(String user, Permission perms) {<a name="line.997"></a>
+<span class="sourceLineNo">998</span>    return (Scan) super.setACL(user, perms);<a name="line.998"></a>
+<span class="sourceLineNo">999</span>  }<a name="line.999"></a>
+<span class="sourceLineNo">1000</span><a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>  @Override<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>  public Scan setConsistency(Consistency consistency) {<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>    return (Scan) super.setConsistency(consistency);<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>  }<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span><a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>  @Override<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span>  public Scan setReplicaId(int Id) {<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>    return (Scan) super.setReplicaId(Id);<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>  }<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span><a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>  @Override<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>  public Scan setIsolationLevel(IsolationLevel level) {<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>    return (Scan) super.setIsolationLevel(level);<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>  }<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span><a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>  @Override<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>  public Scan setPriority(int priority) {<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>    return (Scan) super.setPriority(priority);<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>  }<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span><a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>  /**<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>   * Enable collection of {@link ScanMetrics}. For advanced users.<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>   * @param enabled Set to true to enable accumulating scan metrics<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>   */<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>  public Scan setScanMetricsEnabled(final boolean enabled) {<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>    setAttribute(Scan.SCAN_ATTRIBUTES_METRICS_ENABLE, Bytes.toBytes(Boolean.valueOf(enabled)));<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    return this;<a name="line.1027"></a>
 <span class="sourceLineNo">1028</span>  }<a name="line.1028"></a>
 <span class="sourceLineNo">1029</span><a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>  @Override<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>  public Scan setPriority(int priority) {<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>    return (Scan) super.setPriority(priority);<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>  }<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span><a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>  /**<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>   * Enable collection of {@link ScanMetrics}. For advanced users.<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>   * @param enabled Set to true to enable accumulating scan metrics<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>   */<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>  public Scan setScanMetricsEnabled(final boolean enabled) {<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>    setAttribute(Scan.SCAN_ATTRIBUTES_METRICS_ENABLE, Bytes.toBytes(Boolean.valueOf(enabled)));<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>    return this;<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>  }<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span><a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>  /**<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>   * @return True if collection of scan metrics is enabled. For advanced users.<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>   */<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>  public boolean isScanMetricsEnabled() {<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>    byte[] attr = getAttribute(Scan.SCAN_ATTRIBUTES_METRICS_ENABLE);<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>    return attr == null ? false : Bytes.toBoolean(attr);<a name="line.1049"></a>
+<span class="sourceLineNo">1030</span>  /**<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>   * @return True if collection of scan metrics is enabled. For advanced users.<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>   */<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>  public boolean isScanMetricsEnabled() {<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>    byte[] attr = getAttribute(Scan.SCAN_ATTRIBUTES_METRICS_ENABLE);<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>    return attr == null ? false : Bytes.toBoolean(attr);<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>  }<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>  public Boolean isAsyncPrefetch() {<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>    return asyncPrefetch;<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>  }<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span><a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>  /**<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>   * @deprecated Since 3.0.0, will be removed in 4.0.0. After building sync client upon async<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>   *             client, the implementation is always 'async prefetch', so this flag is useless now.<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>   */<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>  @Deprecated<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>  public Scan setAsyncPrefetch(boolean asyncPrefetch) {<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>    this.asyncPrefetch = asyncPrefetch;<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>    return this;<a name="line.1049"></a>
 <span class="sourceLineNo">1050</span>  }<a name="line.1050"></a>
 <span class="sourceLineNo">1051</span><a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>  public Boolean isAsyncPrefetch() {<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>    return asyncPrefetch;<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>  }<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span><a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>  /**<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>   * @deprecated Since 3.0.0, will be removed in 4.0.0. After building sync client upon async<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>   *             client, the implementation is always 'async prefetch', so this flag is useless now.<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>   */<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>  @Deprecated<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>  public Scan setAsyncPrefetch(boolean asyncPrefetch) {<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>    this.asyncPrefetch = asyncPrefetch;<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>    return this;<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>  }<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span><a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>  /**<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>   * @return the limit of rows for this scan<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>   */<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>  public int getLimit() {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>    return limit;<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>  }<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span><a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>  /**<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>   * Set the limit of rows for this scan. We will terminate the scan if the number of returned rows<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>   * reaches this value.<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>   * &lt;p&gt;<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>   * This condition will be tested at last, after all other conditions such as stopRow, filter, etc.<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>   * @param limit the limit of rows for this scan<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>   * @return this<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>   */<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>  public Scan setLimit(int limit) {<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>    this.limit = limit;<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    return this;<a name="line.1083"></a>
+<span class="sourceLineNo">1052</span>  /**<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>   * @return the limit of rows for this scan<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>   */<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>  public int getLimit() {<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>    return limit;<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>  }<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span><a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>  /**<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>   * Set the limit of rows for this scan. We will terminate the scan if the number of returned rows<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>   * reaches this value.<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>   * &lt;p&gt;<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>   * This condition will be tested at last, after all other conditions such as stopRow, filter, etc.<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>   * @param limit the limit of rows for this scan<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>   * @return this<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>   */<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>  public Scan setLimit(int limit) {<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>    this.limit = limit;<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span>    return this;<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>  }<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span><a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>  /**<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>   * Call this when you only want to get one row. It will set {@code limit} to {@code 1}, and also<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>   * set {@code readType} to {@link ReadType#PREAD}.<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>   * @return this<a name="line.1075"></a>
+<span class="sourceLineNo">1076</span>   */<a name="line.1076"></a>
+<span class="sourceLineNo">1077</span>  public Scan setOneRowLimit() {<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>    return setLimit(1).setReadType(ReadType.PREAD);<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>  }<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span><a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>  @InterfaceAudience.Public<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>  public enum ReadType {<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>    DEFAULT, STREAM, PREAD<a name="line.1083"></a>
 <span class="sourceLineNo">1084</span>  }<a name="line.1084"></a>
 <span class="sourceLineNo">1085</span><a name="line.1085"></a>
 <span class="sourceLineNo">1086</span>  /**<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>   * Call this when you only want to get one row. It will set {@code limit} to {@code 1}, and also<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>   * set {@code readType} to {@link ReadType#PREAD}.<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>   * @return this<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>   */<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>  public Scan setOneRowLimit() {<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>    return setLimit(1).setReadType(ReadType.PREAD);<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>  }<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span><a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>  @InterfaceAudience.Public<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>  public enum ReadType {<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    DEFAULT, STREAM, PREAD<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>  }<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span><a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>  /**<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>   * @return the read type for this scan<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>   */<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>  public ReadType getReadType() {<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>    return readType;<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>  }<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span><a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>  /**<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>   * Set the read type for this scan.<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>   * &lt;p&gt;<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>   * Notice that we may choose to use pread even if you specific {@link ReadType#STREAM} here. For<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>   * example, we will always use pread if this is a get scan.<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>   * @return this<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>   */<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>  public Scan setReadType(ReadType readType) {<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>    this.readType = readType;<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>    return this;<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>  }<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span><a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>  /**<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>   * Get the mvcc read point used to open a scanner.<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span>   */<a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>  long getMvccReadPoint() {<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    return mvccReadPoint;<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>  }<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span><a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>  /**<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>   * Set the mvcc read point used to open a scanner.<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>   */<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>  Scan setMvccReadPoint(long mvccReadPoint) {<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>    this.mvccReadPoint = mvccReadPoint;<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>    return this;<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>  }<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span><a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>  /**<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>   * Set the mvcc read point to -1 which means do not use it.<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>   */<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>  Scan resetMvccReadPoint() {<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>    return setMvccReadPoint(-1L);<a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>  }<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span><a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>  /**<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>   * When the server is slow or we scan a table with many deleted data or we use a sparse filter,<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>   * the server will response heartbeat to prevent timeout. However the scanner will return a Result<a name="line.1143"></a>
-<span class="sourceLineNo">1144</span>   * only when client can do it. So if there are many heartbeats, the blocking time on<a name="line.1144"></a>
-<span class="sourceLineNo">1145</span>   * ResultScanner#next() may be very long, which is not friendly to online services.<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>   *<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>   * Set this to true then you can get a special Result whose #isCursor() returns true and is not<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>   * contains any real data. It only tells you where the server has scanned. You can call next<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span>   * to continue scanning or open a new scanner with this row key as start row whenever you want.<a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>   *<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>   * Users can get a cursor when and only when there is a response from the server but we can not<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>   * return a Result to users, for example, this response is a heartbeat or there are partial cells<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span>   * but users do not allow partial result.<a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>   *<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>   * Now the cursor is in row level which means the special Result will only contains a row key.<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>   * {@link Result#isCursor()}<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>   * {@link Result#getCursor()}<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>   * {@link Cursor}<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>   */<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>  public Scan setNeedCursorResult(boolean needCursorResult) {<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span>    this.needCursorResult = needCursorResult;<a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>    return this;<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>  }<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span><a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>  public boolean isNeedCursorResult() {<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>    return needCursorResult;<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>  }<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span><a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>  /**<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>   * Create a new Scan with a cursor. It only set the position information like start row key.<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>   * The others (like cfs, stop row, limit) should still be filled in by the user.<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>   * {@link Result#isCursor()}<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>   * {@link Result#getCursor()}<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>   * {@link Cursor}<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span>   */<a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>  public static Scan createScanFromCursor(Cursor cursor) {<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>    return new Scan().withStartRow(cursor.getRow());<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>  }<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>}<a name="line.1179"></a>
+<span class="sourceLineNo">1087</span>   * @return the read type for this scan<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>   */<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>  public ReadType getReadType() {<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>    return readType;<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>  }<a name="line.1091"></a>
+<span class="sourceLineNo">1092</span><a name="line.1092"></a>
+<span class="sourceLineNo">1093</span>  /**<a name="line.1093"></a>
+<span class="sourceLineNo">1094</span>   * Set the read type for this scan.<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>   * &lt;p&gt;<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>   * Notice that we may choose to use pread even if you specific {@link ReadType#STREAM} here. For<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>   * example, we will always use pread if this is a get scan.<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span>   * @return this<a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>   */<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>  public Scan setReadType(ReadType readType) {<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>    this.readType = readType;<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>    return this;<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>  }<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span><a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>  /**<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>   * Get the mvcc read point used to open a scanner.<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>   */<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>  long getMvccReadPoint() {<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span>    return mvccReadPoint;<a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>  }<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span><a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>  /**<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>   * Set the mvcc read point used to open a scanner.<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>   */<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>  Scan setMvccReadPoint(long mvccReadPoint) {<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>    this.mvccReadPoint = mvccReadPoint;<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>    return this;<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>  }<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span><a name="line.1119"></a>
+<span class="sourceLineNo">1120</span>  /**<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>   * Set the mvcc read point to -1 which means do not use it.<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>   */<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>  Scan resetMvccReadPoint() {<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>    return setMvccReadPoint(-1L);<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>  }<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span><a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>  /**<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span>   * When the server is slow or we scan a table with many deleted data or we use a sparse filter,<a name="line.1128"></a>
+<span class="sourceLineNo">1129</span>   * the server will response heartbeat to prevent timeout. However the scanner will return a Result<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>   * only when client can do it. So if there are many heartbeats, the blocking time on<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>   * ResultScanner#next() may be very long, which is not friendly to online services.<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>   *<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>   * Set this to true then you can get a special Result whose #isCursor() returns true and is not<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>   * contains any real data. It only tells you where the server has scanned. You can call next<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>   * to continue scanning or open a new scanner with this row key as start row whenever you want.<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>   *<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>   * Users can get a cursor when and only when there is a response from the server but we can not<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>   * return a Result to users, for example, this response is a heartbeat or there are partial cells<a name="line.1138"></a>
+<span class="sourceLineNo">1139</span>   * but users do not allow partial result.<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>   *<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>   * Now the cursor is in row level which means the special Result will only contains a row key.<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span>   * {@link Result#isCursor()}<a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>   * {@link Result#getCursor()}<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>   * {@link Cursor}<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span>   */<a name="line.1145"></a>
+<span class="sourceLineNo">1146</span>  public Scan setNeedCursorResult(boolean needCursorResult) {<a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>    this.needCursorResult = needCursorResult;<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>    return this;<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>  }<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span><a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>  public boolean isNeedCursorResult() {<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span>    return needCursorResult;<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>  }<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span><a name="line.1154"></a>
+<span class="sourceLineNo">1155</span>  /**<a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>   * Create a new Scan with a cursor. It only set the position information like start row key.<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>   * The others (like cfs, stop row, limit) should still be filled in by the user.<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>   * {@link Result#isCursor()}<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>   * {@link Result#getCursor()}<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>   * {@link Cursor}<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>   */<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span>  public static Scan createScanFromCursor(Cursor cursor) {<a name="line.1162"></a>
+<span class="sourceLineNo">1163</span>    return new Scan().withStartRow(cursor.getRow());<a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>  }<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>}<a name="line.1165"></a>
 
 
 
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/client/Scan.html b/apidocs/src-html/org/apache/hadoop/hbase/client/Scan.html
index a3d844a..476aa00 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/client/Scan.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/client/Scan.html
@@ -67,1124 +67,1110 @@
 <span class="sourceLineNo">059</span> * To only retrieve columns with a specific timestamp, call {@link #setTimestamp(long) setTimestamp}<a name="line.59"></a>
 <span class="sourceLineNo">060</span> * .<a name="line.60"></a>
 <span class="sourceLineNo">061</span> * &lt;p&gt;<a name="line.61"></a>
-<span class="sourceLineNo">062</span> * To limit the number of versions of each column to be returned, call {@link #setMaxVersions(int)<a name="line.62"></a>
-<span class="sourceLineNo">063</span> * setMaxVersions}.<a name="line.63"></a>
-<span class="sourceLineNo">064</span> * &lt;p&gt;<a name="line.64"></a>
-<span class="sourceLineNo">065</span> * To limit the maximum number of values returned for each call to next(), call<a name="line.65"></a>
-<span class="sourceLineNo">066</span> * {@link #setBatch(int) setBatch}.<a name="line.66"></a>
-<span class="sourceLineNo">067</span> * &lt;p&gt;<a name="line.67"></a>
-<span class="sourceLineNo">068</span> * To add a filter, call {@link #setFilter(org.apache.hadoop.hbase.filter.Filter) setFilter}.<a name="line.68"></a>
-<span class="sourceLineNo">069</span> * &lt;p&gt;<a name="line.69"></a>
-<span class="sourceLineNo">070</span> * For small scan, it is deprecated in 2.0.0. Now we have a {@link #setLimit(int)} method in Scan<a name="line.70"></a>
-<span class="sourceLineNo">071</span> * object which is used to tell RS how many rows we want. If the rows return reaches the limit, the<a name="line.71"></a>
-<span class="sourceLineNo">072</span> * RS will close the RegionScanner automatically. And we will also fetch data when openScanner in<a name="line.72"></a>
-<span class="sourceLineNo">073</span> * the new implementation, this means we can also finish a scan operation in one rpc call. And we<a name="line.73"></a>
-<span class="sourceLineNo">074</span> * have also introduced a {@link #setReadType(ReadType)} method. You can use this method to tell RS<a name="line.74"></a>
-<span class="sourceLineNo">075</span> * to use pread explicitly.<a name="line.75"></a>
-<span class="sourceLineNo">076</span> * &lt;p&gt;<a name="line.76"></a>
-<span class="sourceLineNo">077</span> * Expert: To explicitly disable server-side block caching for this scan, execute<a name="line.77"></a>
-<span class="sourceLineNo">078</span> * {@link #setCacheBlocks(boolean)}.<a name="line.78"></a>
-<span class="sourceLineNo">079</span> * &lt;p&gt;<a name="line.79"></a>
-<span class="sourceLineNo">080</span> * &lt;em&gt;Note:&lt;/em&gt; Usage alters Scan instances. Internally, attributes are updated as the Scan runs<a name="line.80"></a>
-<span class="sourceLineNo">081</span> * and if enabled, metrics accumulate in the Scan instance. Be aware this is the case when you go to<a name="line.81"></a>
-<span class="sourceLineNo">082</span> * clone a Scan instance or if you go to reuse a created Scan instance; safer is create a Scan<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * instance per usage.<a name="line.83"></a>
-<span class="sourceLineNo">084</span> */<a name="line.84"></a>
-<span class="sourceLineNo">085</span>@InterfaceAudience.Public<a name="line.85"></a>
-<span class="sourceLineNo">086</span>public class Scan extends Query {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  private static final Logger LOG = LoggerFactory.getLogger(Scan.class);<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  private static final String RAW_ATTR = "_raw_";<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private byte[] startRow = HConstants.EMPTY_START_ROW;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  private boolean includeStartRow = true;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private byte[] stopRow  = HConstants.EMPTY_END_ROW;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  private boolean includeStopRow = false;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  private int maxVersions = 1;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  private int batch = -1;<a name="line.96"></a>
-<span class="sourceLineNo">097</span><a name="line.97"></a>
-<span class="sourceLineNo">098</span>  /**<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * Partial {@link Result}s are {@link Result}s must be combined to form a complete {@link Result}.<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   * The {@link Result}s had to be returned in fragments (i.e. as partials) because the size of the<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * cells in the row exceeded max result size on the server. Typically partial results will be<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * combined client side into complete results before being delivered to the caller. However, if<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * this flag is set, the caller is indicating that they do not mind seeing partial results (i.e.<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * they understand that the results returned from the Scanner may only represent part of a<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   * particular row). In such a case, any attempt to combine the partials into a complete result on<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   * the client side will be skipped, and the caller will be able to see the exact results returned<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   * from the server.<a name="line.107"></a>
-<span class="sourceLineNo">108</span>   */<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  private boolean allowPartialResults = false;<a name="line.109"></a>
-<span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>  private int storeLimit = -1;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  private int storeOffset = 0;<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private static final String SCAN_ATTRIBUTES_METRICS_ENABLE = "scan.attributes.metrics.enable";<a name="line.114"></a>
-<span class="sourceLineNo">115</span><a name="line.115"></a>
-<span class="sourceLineNo">116</span>  // If an application wants to use multiple scans over different tables each scan must<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  // define this attribute with the appropriate table name by calling<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  // scan.setAttribute(Scan.SCAN_ATTRIBUTES_TABLE_NAME, Bytes.toBytes(tableName))<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  static public final String SCAN_ATTRIBUTES_TABLE_NAME = "scan.attributes.table.name";<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  /**<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   * -1 means no caching specified and the value of {@link HConstants#HBASE_CLIENT_SCANNER_CACHING}<a name="line.122"></a>
-<span class="sourceLineNo">123</span>   * (default to {@link HConstants#DEFAULT_HBASE_CLIENT_SCANNER_CACHING}) will be used<a name="line.123"></a>
-<span class="sourceLineNo">124</span>   */<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  private int caching = -1;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private long maxResultSize = -1;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  private boolean cacheBlocks = true;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  private boolean reversed = false;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  private TimeRange tr = TimeRange.allTime();<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private Map&lt;byte [], NavigableSet&lt;byte []&gt;&gt; familyMap =<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    new TreeMap&lt;byte [], NavigableSet&lt;byte []&gt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private Boolean asyncPrefetch = null;<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  /**<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   * Parameter name for client scanner sync/async prefetch toggle.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * When using async scanner, prefetching data from the server is done at the background.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * The parameter currently won't have any effect in the case that the user has set<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * Scan#setSmall or Scan#setReversed<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   */<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  public static final String HBASE_CLIENT_SCANNER_ASYNC_PREFETCH =<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      "hbase.client.scanner.async.prefetch";<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>  /**<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * Default value of {@link #HBASE_CLIENT_SCANNER_ASYNC_PREFETCH}.<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  public static final boolean DEFAULT_HBASE_CLIENT_SCANNER_ASYNC_PREFETCH = false;<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>  /**<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * Set it true for small scan to get better performance Small scan should use pread and big scan<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * can use seek + read seek + read is fast but can cause two problem (1) resource contention (2)<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * cause too much network io [89-fb] Using pread for non-compaction read request<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   * https://issues.apache.org/jira/browse/HBASE-7266 On the other hand, if setting it true, we<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   * would do openScanner,next,closeScanner in one RPC call. It means the better performance for<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * small scan. [HBASE-9488]. Generally, if the scan range is within one data block(64KB), it could<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   * be considered as a small scan.<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   */<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  private boolean small = false;<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  /**<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   * The mvcc read point to use when open a scanner. Remember to clear it after switching regions as<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   * the mvcc is only valid within region scope.<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   */<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  private long mvccReadPoint = -1L;<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>  /**<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * The number of rows we want for this scan. We will terminate the scan if the number of return<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * rows reaches this value.<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   */<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  private int limit = -1;<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>  /**<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * Control whether to use pread at server side.<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   */<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  private ReadType readType = ReadType.DEFAULT;<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>  private boolean needCursorResult = false;<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  /**<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   * Create a Scan operation across all rows.<a name="line.179"></a>
-<span class="sourceLineNo">180</span>   */<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  public Scan() {}<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>  /**<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * Create a Scan operation starting at the specified row.<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * &lt;p&gt;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * If the specified row does not exist, the Scanner will start from the next closest row after the<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * specified row.<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * @param startRow row to start scanner at or after<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   *   {@code new Scan().withStartRow(startRow)} instead.<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17320"&gt;HBASE-17320&lt;/a&gt;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   */<a name="line.192"></a>
-<span class="sourceLineNo">193</span>  @Deprecated<a name="line.193"></a>
-<span class="sourceLineNo">194</span>  public Scan(byte[] startRow) {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    withStartRow(startRow);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>  }<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>  /**<a name="line.198"></a>
-<span class="sourceLineNo">199</span>   * Create a Scan operation for the range of rows specified.<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   * @param startRow row to start scanner at or after (inclusive)<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   * @param stopRow row to stop scanner before (exclusive)<a name="line.201"></a>
-<span class="sourceLineNo">202</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use<a name="line.202"></a>
-<span class="sourceLineNo">203</span>   *   {@code new Scan().withStartRow(startRow).withStopRow(stopRow)} instead.<a name="line.203"></a>
-<span class="sourceLineNo">204</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17320"&gt;HBASE-17320&lt;/a&gt;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>   */<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  @Deprecated<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  public Scan(byte[] startRow, byte[] stopRow) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    withStartRow(startRow);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    setStopRow(stopRow);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  }<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>  /**<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * Creates a new instance of this class while copying all values.<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   *<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * @param scan  The scan instance to copy from.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @throws IOException When copying the values fails.<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   */<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public Scan(Scan scan) throws IOException {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    startRow = scan.getStartRow();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    includeStartRow = scan.includeStartRow();<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    stopRow  = scan.getStopRow();<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    includeStopRow = scan.includeStopRow();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    maxVersions = scan.getMaxVersions();<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    batch = scan.getBatch();<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    storeLimit = scan.getMaxResultsPerColumnFamily();<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    storeOffset = scan.getRowOffsetPerColumnFamily();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    caching = scan.getCaching();<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    maxResultSize = scan.getMaxResultSize();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    cacheBlocks = scan.getCacheBlocks();<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    filter = scan.getFilter(); // clone?<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    loadColumnFamiliesOnDemand = scan.getLoadColumnFamiliesOnDemandValue();<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    consistency = scan.getConsistency();<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    this.setIsolationLevel(scan.getIsolationLevel());<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    reversed = scan.isReversed();<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    asyncPrefetch = scan.isAsyncPrefetch();<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    small = scan.isSmall();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    allowPartialResults = scan.getAllowPartialResults();<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    tr = scan.getTimeRange(); // TimeRange is immutable<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    Map&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; fams = scan.getFamilyMap();<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    for (Map.Entry&lt;byte[],NavigableSet&lt;byte[]&gt;&gt; entry : fams.entrySet()) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      byte [] fam = entry.getKey();<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      NavigableSet&lt;byte[]&gt; cols = entry.getValue();<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      if (cols != null &amp;&amp; cols.size() &gt; 0) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        for (byte[] col : cols) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          addColumn(fam, col);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        }<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      } else {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        addFamily(fam);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    }<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    for (Map.Entry&lt;String, byte[]&gt; attr : scan.getAttributesMap().entrySet()) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      setAttribute(attr.getKey(), attr.getValue());<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    for (Map.Entry&lt;byte[], TimeRange&gt; entry : scan.getColumnFamilyTimeRange().entrySet()) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      TimeRange tr = entry.getValue();<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      setColumnFamilyTimeRange(entry.getKey(), tr.getMin(), tr.getMax());<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    this.mvccReadPoint = scan.getMvccReadPoint();<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    this.limit = scan.getLimit();<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    this.needCursorResult = scan.isNeedCursorResult();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    setPriority(scan.getPriority());<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    readType = scan.getReadType();<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    super.setReplicaId(scan.getReplicaId());<a name="line.263"></a>
-<span class="sourceLineNo">264</span>  }<a name="line.264"></a>
-<span class="sourceLineNo">265</span><a name="line.265"></a>
-<span class="sourceLineNo">266</span>  /**<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   * Builds a scan object with the same specs as get.<a name="line.267"></a>
-<span class="sourceLineNo">268</span>   * @param get get to model scan after<a name="line.268"></a>
-<span class="sourceLineNo">269</span>   */<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  public Scan(Get get) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    this.startRow = get.getRow();<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    this.includeStartRow = true;<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    this.stopRow = get.getRow();<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    this.includeStopRow = true;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    this.filter = get.getFilter();<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    this.cacheBlocks = get.getCacheBlocks();<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    this.maxVersions = get.getMaxVersions();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    this.storeLimit = get.getMaxResultsPerColumnFamily();<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    this.storeOffset = get.getRowOffsetPerColumnFamily();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    this.tr = get.getTimeRange();<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    this.familyMap = get.getFamilyMap();<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    this.asyncPrefetch = false;<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    this.consistency = get.getConsistency();<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    this.setIsolationLevel(get.getIsolationLevel());<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    this.loadColumnFamiliesOnDemand = get.getLoadColumnFamiliesOnDemandValue();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    for (Map.Entry&lt;String, byte[]&gt; attr : get.getAttributesMap().entrySet()) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      setAttribute(attr.getKey(), attr.getValue());<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    for (Map.Entry&lt;byte[], TimeRange&gt; entry : get.getColumnFamilyTimeRange().entrySet()) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      TimeRange tr = entry.getValue();<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      setColumnFamilyTimeRange(entry.getKey(), tr.getMin(), tr.getMax());<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    this.mvccReadPoint = -1L;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    setPriority(get.getPriority());<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    super.setReplicaId(get.getReplicaId());<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  }<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>  public boolean isGetScan() {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    return includeStartRow &amp;&amp; includeStopRow<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        &amp;&amp; ClientUtil.areScanStartRowAndStopRowEqual(this.startRow, this.stopRow);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  }<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>  /**<a name="line.303"></a>
-<span class="sourceLineNo">304</span>   * Get all columns from the specified family.<a name="line.304"></a>
-<span class="sourceLineNo">305</span>   * &lt;p&gt;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>   * Overrides previous calls to addColumn for this family.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   * @param family family name<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * @return this<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   */<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  public Scan addFamily(byte [] family) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    familyMap.remove(family);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    familyMap.put(family, null);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    return this;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  /**<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * Get the column from the specified family with the specified qualifier.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * &lt;p&gt;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * Overrides previous calls to addFamily for this family.<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   * @param family family name<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * @param qualifier column qualifier<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   * @return this<a name="line.322"></a>
-<span class="sourceLineNo">323</span>   */<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  public Scan addColumn(byte [] family, byte [] qualifier) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    NavigableSet&lt;byte []&gt; set = familyMap.get(family);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    if(set == null) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      set = new TreeSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      familyMap.put(family, set);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    }<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    if (qualifier == null) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      qualifier = HConstants.EMPTY_BYTE_ARRAY;<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    set.add(qualifier);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    return this;<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  }<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>  /**<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   * Get versions of columns only within the specified timestamp range,<a name="line.338"></a>
-<span class="sourceLineNo">339</span>   * [minStamp, maxStamp).  Note, default maximum versions to return is 1.  If<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   * your time range spans more than one version and you want all versions<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * returned, up the number of versions beyond the default.<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * @param minStamp minimum timestamp value, inclusive<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   * @param maxStamp maximum timestamp value, exclusive<a name="line.343"></a>
-<span class="sourceLineNo">344</span>   * @see #setMaxVersions()<a name="line.344"></a>
-<span class="sourceLineNo">345</span>   * @see #setMaxVersions(int)<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   * @return this<a name="line.346"></a>
-<span class="sourceLineNo">347</span>   */<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  public Scan setTimeRange(long minStamp, long maxStamp) throws IOException {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    tr = new TimeRange(minStamp, maxStamp);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    return this;<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /**<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * Get versions of columns with the specified timestamp. Note, default maximum<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * versions to return is 1.  If your time range spans more than one version<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * and you want all versions returned, up the number of versions beyond the<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   * defaut.<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * @param timestamp version timestamp<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * @see #setMaxVersions()<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   * @see #setMaxVersions(int)<a name="line.360"></a>
-<span class="sourceLineNo">361</span>   * @return this<a name="line.361"></a>
-<span class="sourceLineNo">362</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   *             Use {@link #setTimestamp(long)} instead<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   */<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  @Deprecated<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  public Scan setTimeStamp(long timestamp)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  throws IOException {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    return this.setTimestamp(timestamp);<a name="line.368"></a>
-<span class="sourceLineNo">369</span>  }<a name="line.369"></a>
-<span class="sourceLineNo">370</span><a name="line.370"></a>
-<span class="sourceLineNo">371</span>  /**<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * Get versions of columns with the specified timestamp. Note, default maximum<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * versions to return is 1.  If your time range spans more than one version<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * and you want all versions returned, up the number of versions beyond the<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   * defaut.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * @param timestamp version timestamp<a name="line.376"></a>
-<span class="sourceLineNo">377</span>   * @see #setMaxVersions()<a name="line.377"></a>
-<span class="sourceLineNo">378</span>   * @see #setMaxVersions(int)<a name="line.378"></a>
-<span class="sourceLineNo">379</span>   * @return this<a name="line.379"></a>
-<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  public Scan setTimestamp(long timestamp) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    try {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      tr = new TimeRange(timestamp, timestamp + 1);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    } catch(Exception e) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      // This should never happen, unless integer overflow or something extremely wrong...<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      LOG.error("TimeRange failed, likely caused by integer overflow. ", e);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      throw e;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    }<a name="line.388"></a>
-<span class="sourceLineNo">389</span><a name="line.389"></a>
-<span class="sourceLineNo">390</span>    return this;<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  }<a name="line.391"></a>
-<span class="sourceLineNo">392</span><a name="line.392"></a>
-<span class="sourceLineNo">393</span>  @Override public Scan setColumnFamilyTimeRange(byte[] cf, long minStamp, long maxStamp) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    return (Scan) super.setColumnFamilyTimeRange(cf, minStamp, maxStamp);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>  /**<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * Set the start row of the scan.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * &lt;p&gt;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * If the specified row does not exist, the Scanner will start from the next closest row after the<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * specified row.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param startRow row to start scanner at or after<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @return this<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @throws IllegalArgumentException if startRow does not meet criteria for a row key (when length<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.405"></a>
-<span class="sourceLineNo">406</span>   */<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  public Scan withStartRow(byte[] startRow) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    return withStartRow(startRow, true);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>  }<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>  /**<a name="line.411"></a>
-<span class="sourceLineNo">412</span>   * Set the start row of the scan.<a name="line.412"></a>
-<span class="sourceLineNo">413</span>   * &lt;p&gt;<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * If the specified row does not exist, or the {@code inclusive} is {@code false}, the Scanner<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * will start from the next closest row after the specified row.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * @param startRow row to start scanner at or after<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param inclusive whether we should include the start row when scan<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @return this<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * @throws IllegalArgumentException if startRow does not meet criteria for a row key (when length<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   */<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  public Scan withStartRow(byte[] startRow, boolean inclusive) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    if (Bytes.len(startRow) &gt; HConstants.MAX_ROW_LENGTH) {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      throw new IllegalArgumentException("startRow's length must be less than or equal to "<a name="line.424"></a>
-<span class="sourceLineNo">425</span>          + HConstants.MAX_ROW_LENGTH + " to meet the criteria" + " for a row key.");<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    }<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    this.startRow = startRow;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    this.includeStartRow = inclusive;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    return this;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>  }<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>  /**<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * Set the stop row of the scan.<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   * &lt;p&gt;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>   * The scan will include rows that are lexicographically less than the provided stopRow.<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   * &lt;p&gt;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * &lt;b&gt;Note:&lt;/b&gt; When doing a filter for a rowKey &lt;u&gt;Prefix&lt;/u&gt; use<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   * {@link #setRowPrefixFilter(byte[])}. The 'trailing 0' will not yield the desired result.<a name="line.438"></a>
-<span class="sourceLineNo">439</span>   * &lt;/p&gt;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>   * @param stopRow row to end at (exclusive)<a name="line.440"></a>
-<span class="sourceLineNo">441</span>   * @return this<a name="line.441"></a>
-<span class="sourceLineNo">442</span>   * @throws IllegalArgumentException if stopRow does not meet criteria for a row key (when length<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use {@link #withStopRow(byte[])} instead.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   *   This method may change the inclusive of the stop row to keep compatible with the old<a name="line.445"></a>
-<span class="sourceLineNo">446</span>   *   behavior.<a name="line.446"></a>
-<span class="sourceLineNo">447</span>   * @see #withStopRow(byte[])<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17320"&gt;HBASE-17320&lt;/a&gt;<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   */<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  @Deprecated<a name="line.450"></a>
-<span class="sourceLineNo">451</span>  public Scan setStopRow(byte[] stopRow) {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    withStopRow(stopRow);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    if (ClientUtil.areScanStartRowAndStopRowEqual(this.startRow, this.stopRow)) {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      // for keeping the old behavior that a scan with the same start and stop row is a get scan.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      this.includeStopRow = true;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    return this;<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
-<span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>  /**<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * Set the stop row of the scan.<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * &lt;p&gt;<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * The scan will include rows that are lexicographically less than the provided stopRow.<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * &lt;p&gt;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   * &lt;b&gt;Note:&lt;/b&gt; When doing a filter for a rowKey &lt;u&gt;Prefix&lt;/u&gt; use<a name="line.465"></a>
-<span class="sourceLineNo">466</span>   * {@link #setRowPrefixFilter(byte[])}. The 'trailing 0' will not yield the desired result.<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   * &lt;/p&gt;<a name="line.467"></a>
-<span class="sourceLineNo">468</span>   * @param stopRow row to end at (exclusive)<a name="line.468"></a>
-<span class="sourceLineNo">469</span>   * @return this<a name="line.469"></a>
-<span class="sourceLineNo">470</span>   * @throws IllegalArgumentException if stopRow does not meet criteria for a row key (when length<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   */<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  public Scan withStopRow(byte[] stopRow) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    return withStopRow(stopRow, false);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>  }<a name="line.475"></a>
-<span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span>  /**<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * Set the stop row of the scan.<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * &lt;p&gt;<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * The scan will include rows that are lexicographically less than (or equal to if<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * {@code inclusive} is {@code true}) the provided stopRow.<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * @param stopRow row to end at<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * @param inclusive whether we should include the stop row when scan<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   * @return this<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * @throws IllegalArgumentException if stopRow does not meet criteria for a row key (when length<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   */<a name="line.487"></a>
-<span class="sourceLineNo">488</span>  public Scan withStopRow(byte[] stopRow, boolean inclusive) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    if (Bytes.len(stopRow) &gt; HConstants.MAX_ROW_LENGTH) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      throw new IllegalArgumentException("stopRow's length must be less than or equal to "<a name="line.490"></a>
-<span class="sourceLineNo">491</span>          + HConstants.MAX_ROW_LENGTH + " to meet the criteria" + " for a row key.");<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    this.stopRow = stopRow;<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    this.includeStopRow = inclusive;<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    return this;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>  }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>  /**<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * &lt;p&gt;Set a filter (using stopRow and startRow) so the result set only contains rows where the<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   * rowKey starts with the specified prefix.&lt;/p&gt;<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * &lt;p&gt;This is a utility method that converts the desired rowPrefix into the appropriate values<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   * for the startRow and stopRow to achieve the desired result.&lt;/p&gt;<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * &lt;p&gt;This can safely be used in combination with setFilter.&lt;/p&gt;<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * &lt;p&gt;&lt;b&gt;NOTE: Doing a {@link #withStartRow(byte[])} and/or {@link #setStopRow(byte[])}<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * after this method will yield undefined results.&lt;/b&gt;&lt;/p&gt;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @param rowPrefix the prefix all rows must start with. (Set &lt;i&gt;null&lt;/i&gt; to remove the filter.)<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * @return this<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   */<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  public Scan setRowPrefixFilter(byte[] rowPrefix) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    if (rowPrefix == null) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      withStartRow(HConstants.EMPTY_START_ROW);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      setStopRow(HConstants.EMPTY_END_ROW);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    } else {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      this.withStartRow(rowPrefix);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      this.setStopRow(ClientUtil.calculateTheClosestNextRowKeyForPrefix(rowPrefix));<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    return this;<a name="line.517"></a>
-<span class="sourceLineNo">518</span>  }<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>  /**<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * Get all available versions.<a name="line.521"></a>
+<span class="sourceLineNo">062</span> * To limit the number of versions of each column to be returned, call {@link #setMaxVersions(int)}.<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * &lt;p&gt;<a name="line.63"></a>
+<span class="sourceLineNo">064</span> * To limit the maximum number of values returned for each call to next(), call<a name="line.64"></a>
+<span class="sourceLineNo">065</span> * {@link #setBatch(int) setBatch}.<a name="line.65"></a>
+<span class="sourceLineNo">066</span> * &lt;p&gt;<a name="line.66"></a>
+<span class="sourceLineNo">067</span> * To add a filter, call {@link #setFilter(org.apache.hadoop.hbase.filter.Filter) setFilter}.<a name="line.67"></a>
+<span class="sourceLineNo">068</span> * &lt;p&gt;<a name="line.68"></a>
+<span class="sourceLineNo">069</span> * For small scan, it is deprecated in 2.0.0. Now we have a {@link #setLimit(int)} method in Scan<a name="line.69"></a>
+<span class="sourceLineNo">070</span> * object which is used to tell RS how many rows we want. If the rows return reaches the limit, the<a name="line.70"></a>
+<span class="sourceLineNo">071</span> * RS will close the RegionScanner automatically. And we will also fetch data when openScanner in<a name="line.71"></a>
+<span class="sourceLineNo">072</span> * the new implementation, this means we can also finish a scan operation in one rpc call. And we<a name="line.72"></a>
+<span class="sourceLineNo">073</span> * have also introduced a {@link #setReadType(ReadType)} method. You can use this method to tell RS<a name="line.73"></a>
+<span class="sourceLineNo">074</span> * to use pread explicitly.<a name="line.74"></a>
+<span class="sourceLineNo">075</span> * &lt;p&gt;<a name="line.75"></a>
+<span class="sourceLineNo">076</span> * Expert: To explicitly disable server-side block caching for this scan, execute<a name="line.76"></a>
+<span class="sourceLineNo">077</span> * {@link #setCacheBlocks(boolean)}.<a name="line.77"></a>
+<span class="sourceLineNo">078</span> * &lt;p&gt;<a name="line.78"></a>
+<span class="sourceLineNo">079</span> * &lt;em&gt;Note:&lt;/em&gt; Usage alters Scan instances. Internally, attributes are updated as the Scan runs<a name="line.79"></a>
+<span class="sourceLineNo">080</span> * and if enabled, metrics accumulate in the Scan instance. Be aware this is the case when you go to<a name="line.80"></a>
+<span class="sourceLineNo">081</span> * clone a Scan instance or if you go to reuse a created Scan instance; safer is create a Scan<a name="line.81"></a>
+<span class="sourceLineNo">082</span> * instance per usage.<a name="line.82"></a>
+<span class="sourceLineNo">083</span> */<a name="line.83"></a>
+<span class="sourceLineNo">084</span>@InterfaceAudience.Public<a name="line.84"></a>
+<span class="sourceLineNo">085</span>public class Scan extends Query {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private static final Logger LOG = LoggerFactory.getLogger(Scan.class);<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>  private static final String RAW_ATTR = "_raw_";<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  private byte[] startRow = HConstants.EMPTY_START_ROW;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  private boolean includeStartRow = true;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private byte[] stopRow  = HConstants.EMPTY_END_ROW;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  private boolean includeStopRow = false;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  private int maxVersions = 1;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private int batch = -1;<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>  /**<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   * Partial {@link Result}s are {@link Result}s must be combined to form a complete {@link Result}.<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   * The {@link Result}s had to be returned in fragments (i.e. as partials) because the size of the<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   * cells in the row exceeded max result size on the server. Typically partial results will be<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * combined client side into complete results before being delivered to the caller. However, if<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * this flag is set, the caller is indicating that they do not mind seeing partial results (i.e.<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * they understand that the results returned from the Scanner may only represent part of a<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   * particular row). In such a case, any attempt to combine the partials into a complete result on<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   * the client side will be skipped, and the caller will be able to see the exact results returned<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   * from the server.<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   */<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private boolean allowPartialResults = false;<a name="line.108"></a>
+<span class="sourceLineNo">109</span><a name="line.109"></a>
+<span class="sourceLineNo">110</span>  private int storeLimit = -1;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private int storeOffset = 0;<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  private static final String SCAN_ATTRIBUTES_METRICS_ENABLE = "scan.attributes.metrics.enable";<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  // If an application wants to use multiple scans over different tables each scan must<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  // define this attribute with the appropriate table name by calling<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  // scan.setAttribute(Scan.SCAN_ATTRIBUTES_TABLE_NAME, Bytes.toBytes(tableName))<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  static public final String SCAN_ATTRIBUTES_TABLE_NAME = "scan.attributes.table.name";<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  /**<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   * -1 means no caching specified and the value of {@link HConstants#HBASE_CLIENT_SCANNER_CACHING}<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   * (default to {@link HConstants#DEFAULT_HBASE_CLIENT_SCANNER_CACHING}) will be used<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   */<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  private int caching = -1;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  private long maxResultSize = -1;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  private boolean cacheBlocks = true;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  private boolean reversed = false;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private TimeRange tr = TimeRange.allTime();<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  private Map&lt;byte [], NavigableSet&lt;byte []&gt;&gt; familyMap =<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    new TreeMap&lt;byte [], NavigableSet&lt;byte []&gt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  private Boolean asyncPrefetch = null;<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  /**<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   * Parameter name for client scanner sync/async prefetch toggle.<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   * When using async scanner, prefetching data from the server is done at the background.<a name="line.135"></a>
+<span class="sourceLineNo">136</span>   * The parameter currently won't have any effect in the case that the user has set<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   * Scan#setSmall or Scan#setReversed<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   */<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  public static final String HBASE_CLIENT_SCANNER_ASYNC_PREFETCH =<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      "hbase.client.scanner.async.prefetch";<a name="line.140"></a>
+<span class="sourceLineNo">141</span><a name="line.141"></a>
+<span class="sourceLineNo">142</span>  /**<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   * Default value of {@link #HBASE_CLIENT_SCANNER_ASYNC_PREFETCH}.<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   */<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  public static final boolean DEFAULT_HBASE_CLIENT_SCANNER_ASYNC_PREFETCH = false;<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  /**<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * Set it true for small scan to get better performance Small scan should use pread and big scan<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * can use seek + read seek + read is fast but can cause two problem (1) resource contention (2)<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   * cause too much network io [89-fb] Using pread for non-compaction read request<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * https://issues.apache.org/jira/browse/HBASE-7266 On the other hand, if setting it true, we<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   * would do openScanner,next,closeScanner in one RPC call. It means the better performance for<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * small scan. [HBASE-9488]. Generally, if the scan range is within one data block(64KB), it could<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * be considered as a small scan.<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   */<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  private boolean small = false;<a name="line.156"></a>
+<span class="sourceLineNo">157</span><a name="line.157"></a>
+<span class="sourceLineNo">158</span>  /**<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   * The mvcc read point to use when open a scanner. Remember to clear it after switching regions as<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   * the mvcc is only valid within region scope.<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   */<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  private long mvccReadPoint = -1L;<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>  /**<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * The number of rows we want for this scan. We will terminate the scan if the number of return<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * rows reaches this value.<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   */<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  private int limit = -1;<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>  /**<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * Control whether to use pread at server side.<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   */<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  private ReadType readType = ReadType.DEFAULT;<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>  private boolean needCursorResult = false;<a name="line.175"></a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span>  /**<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   * Create a Scan operation across all rows.<a name="line.178"></a>
+<span class="sourceLineNo">179</span>   */<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  public Scan() {}<a name="line.180"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span>  /**<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   * Create a Scan operation starting at the specified row.<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * &lt;p&gt;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   * If the specified row does not exist, the Scanner will start from the next closest row after the<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   * specified row.<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * @param startRow row to start scanner at or after<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   *   {@code new Scan().withStartRow(startRow)} instead.<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17320"&gt;HBASE-17320&lt;/a&gt;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   */<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  @Deprecated<a name="line.192"></a>
+<span class="sourceLineNo">193</span>  public Scan(byte[] startRow) {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    withStartRow(startRow);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>  }<a name="line.195"></a>
+<span class="sourceLineNo">196</span><a name="line.196"></a>
+<span class="sourceLineNo">197</span>  /**<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * Create a Scan operation for the range of rows specified.<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * @param startRow row to start scanner at or after (inclusive)<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * @param stopRow row to stop scanner before (exclusive)<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use<a name="line.201"></a>
+<span class="sourceLineNo">202</span>   *   {@code new Scan().withStartRow(startRow).withStopRow(stopRow)} instead.<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17320"&gt;HBASE-17320&lt;/a&gt;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>   */<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  @Deprecated<a name="line.205"></a>
+<span class="sourceLineNo">206</span>  public Scan(byte[] startRow, byte[] stopRow) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    withStartRow(startRow);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    setStopRow(stopRow);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>  /**<a name="line.211"></a>
+<span class="sourceLineNo">212</span>   * Creates a new instance of this class while copying all values.<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   *<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   * @param scan  The scan instance to copy from.<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   * @throws IOException When copying the values fails.<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   */<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  public Scan(Scan scan) throws IOException {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    startRow = scan.getStartRow();<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    includeStartRow = scan.includeStartRow();<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    stopRow  = scan.getStopRow();<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    includeStopRow = scan.includeStopRow();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    maxVersions = scan.getMaxVersions();<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    batch = scan.getBatch();<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    storeLimit = scan.getMaxResultsPerColumnFamily();<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    storeOffset = scan.getRowOffsetPerColumnFamily();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    caching = scan.getCaching();<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    maxResultSize = scan.getMaxResultSize();<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    cacheBlocks = scan.getCacheBlocks();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    filter = scan.getFilter(); // clone?<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    loadColumnFamiliesOnDemand = scan.getLoadColumnFamiliesOnDemandValue();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    consistency = scan.getConsistency();<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    this.setIsolationLevel(scan.getIsolationLevel());<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    reversed = scan.isReversed();<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    asyncPrefetch = scan.isAsyncPrefetch();<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    small = scan.isSmall();<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    allowPartialResults = scan.getAllowPartialResults();<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    tr = scan.getTimeRange(); // TimeRange is immutable<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    Map&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; fams = scan.getFamilyMap();<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    for (Map.Entry&lt;byte[],NavigableSet&lt;byte[]&gt;&gt; entry : fams.entrySet()) {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      byte [] fam = entry.getKey();<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      NavigableSet&lt;byte[]&gt; cols = entry.getValue();<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      if (cols != null &amp;&amp; cols.size() &gt; 0) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        for (byte[] col : cols) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          addColumn(fam, col);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        }<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      } else {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        addFamily(fam);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      }<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    for (Map.Entry&lt;String, byte[]&gt; attr : scan.getAttributesMap().entrySet()) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      setAttribute(attr.getKey(), attr.getValue());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    }<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    for (Map.Entry&lt;byte[], TimeRange&gt; entry : scan.getColumnFamilyTimeRange().entrySet()) {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      TimeRange tr = entry.getValue();<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      setColumnFamilyTimeRange(entry.getKey(), tr.getMin(), tr.getMax());<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    }<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    this.mvccReadPoint = scan.getMvccReadPoint();<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    this.limit = scan.getLimit();<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    this.needCursorResult = scan.isNeedCursorResult();<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    setPriority(scan.getPriority());<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    readType = scan.getReadType();<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    super.setReplicaId(scan.getReplicaId());<a name="line.262"></a>
+<span class="sourceLineNo">263</span>  }<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>  /**<a name="line.265"></a>
+<span class="sourceLineNo">266</span>   * Builds a scan object with the same specs as get.<a name="line.266"></a>
+<span class="sourceLineNo">267</span>   * @param get get to model scan after<a name="line.267"></a>
+<span class="sourceLineNo">268</span>   */<a name="line.268"></a>
+<span class="sourceLineNo">269</span>  public Scan(Get get) {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    this.startRow = get.getRow();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    this.includeStartRow = true;<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    this.stopRow = get.getRow();<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    this.includeStopRow = true;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    this.filter = get.getFilter();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    this.cacheBlocks = get.getCacheBlocks();<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    this.maxVersions = get.getMaxVersions();<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    this.storeLimit = get.getMaxResultsPerColumnFamily();<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    this.storeOffset = get.getRowOffsetPerColumnFamily();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    this.tr = get.getTimeRange();<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    this.familyMap = get.getFamilyMap();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    this.asyncPrefetch = false;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    this.consistency = get.getConsistency();<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    this.setIsolationLevel(get.getIsolationLevel());<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    this.loadColumnFamiliesOnDemand = get.getLoadColumnFamiliesOnDemandValue();<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    for (Map.Entry&lt;String, byte[]&gt; attr : get.getAttributesMap().entrySet()) {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      setAttribute(attr.getKey(), attr.getValue());<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    }<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    for (Map.Entry&lt;byte[], TimeRange&gt; entry : get.getColumnFamilyTimeRange().entrySet()) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      TimeRange tr = entry.getValue();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      setColumnFamilyTimeRange(entry.getKey(), tr.getMin(), tr.getMax());<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    this.mvccReadPoint = -1L;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    setPriority(get.getPriority());<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    super.setReplicaId(get.getReplicaId());<a name="line.294"></a>
+<span class="sourceLineNo">295</span>  }<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public boolean isGetScan() {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    return includeStartRow &amp;&amp; includeStopRow<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        &amp;&amp; ClientUtil.areScanStartRowAndStopRowEqual(this.startRow, this.stopRow);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  }<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>  /**<a name="line.302"></a>
+<span class="sourceLineNo">303</span>   * Get all columns from the specified family.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>   * &lt;p&gt;<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   * Overrides previous calls to addColumn for this family.<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   * @param family family name<a name="line.306"></a>
+<span class="sourceLineNo">307</span>   * @return this<a name="line.307"></a>
+<span class="sourceLineNo">308</span>   */<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  public Scan addFamily(byte [] family) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    familyMap.remove(family);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    familyMap.put(family, null);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    return this;<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>  /**<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   * Get the column from the specified family with the specified qualifier.<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * &lt;p&gt;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * Overrides previous calls to addFamily for this family.<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @param family family name<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   * @param qualifier column qualifier<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   * @return this<a name="line.321"></a>
+<span class="sourceLineNo">322</span>   */<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public Scan addColumn(byte [] family, byte [] qualifier) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    NavigableSet&lt;byte []&gt; set = familyMap.get(family);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    if(set == null) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      set = new TreeSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      familyMap.put(family, set);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    if (qualifier == null) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      qualifier = HConstants.EMPTY_BYTE_ARRAY;<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    }<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    set.add(qualifier);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    return this;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  /**<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   * Get versions of columns only within the specified timestamp range,<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * [minStamp, maxStamp).  Note, default maximum versions to return is 1.  If<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * your time range spans more than one version and you want all versions<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * returned, up the number of versions beyond the default.<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * @param minStamp minimum timestamp value, inclusive<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   * @param maxStamp maximum timestamp value, exclusive<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   * @see #readAllVersions()<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   * @see #setMaxVersions(int)<a name="line.344"></a>
+<span class="sourceLineNo">345</span>   * @return this<a name="line.345"></a>
+<span class="sourceLineNo">346</span>   */<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  public Scan setTimeRange(long minStamp, long maxStamp) throws IOException {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    tr = new TimeRange(minStamp, maxStamp);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    return this;<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  }<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span>  /**<a name="line.352"></a>
+<span class="sourceLineNo">353</span>   * Get versions of columns with the specified timestamp. Note, default maximum<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   * versions to return is 1.  If your time range spans more than one version<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * and you want all versions returned, up the number of versions beyond the<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * defaut.<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * @param timestamp version timestamp<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   * @see #readAllVersions()<a name="line.358"></a>
+<span class="sourceLineNo">359</span>   * @see #setMaxVersions(int)<a name="line.359"></a>
+<span class="sourceLineNo">360</span>   * @return this<a name="line.360"></a>
+<span class="sourceLineNo">361</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>   *             Use {@link #setTimestamp(long)} instead<a name="line.362"></a>
+<span class="sourceLineNo">363</span>   */<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  @Deprecated<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  public Scan setTimeStamp(long timestamp)<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  throws IOException {<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    return this.setTimestamp(timestamp);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>  /**<a name="line.370"></a>
+<span class="sourceLineNo">371</span>   * Get versions of columns with the specified timestamp. Note, default maximum<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * versions to return is 1.  If your time range spans more than one version<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * and you want all versions returned, up the number of versions beyond the<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * defaut.<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * @param timestamp version timestamp<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @see #readAllVersions()<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * @see #setMaxVersions(int)<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * @return this<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   */<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  public Scan setTimestamp(long timestamp) {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    try {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      tr = new TimeRange(timestamp, timestamp + 1);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    } catch(Exception e) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      // This should never happen, unless integer overflow or something extremely wrong...<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      LOG.error("TimeRange failed, likely caused by integer overflow. ", e);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      throw e;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    }<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>    return this;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  }<a name="line.390"></a>
+<span class="sourceLineNo">391</span><a name="line.391"></a>
+<span class="sourceLineNo">392</span>  @Override public Scan setColumnFamilyTimeRange(byte[] cf, long minStamp, long maxStamp) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    return (Scan) super.setColumnFamilyTimeRange(cf, minStamp, maxStamp);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  }<a name="line.394"></a>
+<span class="sourceLineNo">395</span><a name="line.395"></a>
+<span class="sourceLineNo">396</span>  /**<a name="line.396"></a>
+<span class="sourceLineNo">397</span>   * Set the start row of the scan.<a name="line.397"></a>
+<span class="sourceLineNo">398</span>   * &lt;p&gt;<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   * If the specified row does not exist, the Scanner will start from the next closest row after the<a name="line.399"></a>
+<span class="sourceLineNo">400</span>   * specified row.<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   * @param startRow row to start scanner at or after<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   * @return this<a name="line.402"></a>
+<span class="sourceLineNo">403</span>   * @throws IllegalArgumentException if startRow does not meet criteria for a row key (when length<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   */<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  public Scan withStartRow(byte[] startRow) {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    return withStartRow(startRow, true);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>  }<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>  /**<a name="line.410"></a>
+<span class="sourceLineNo">411</span>   * Set the start row of the scan.<a name="line.411"></a>
+<span class="sourceLineNo">412</span>   * &lt;p&gt;<a name="line.412"></a>
+<span class="sourceLineNo">413</span>   * If the specified row does not exist, or the {@code inclusive} is {@code false}, the Scanner<a name="line.413"></a>
+<span class="sourceLineNo">414</span>   * will start from the next closest row after the specified row.<a name="line.414"></a>
+<span class="sourceLineNo">415</span>   * @param startRow row to start scanner at or after<a name="line.415"></a>
+<span class="sourceLineNo">416</span>   * @param inclusive whether we should include the start row when scan<a name="line.416"></a>
+<span class="sourceLineNo">417</span>   * @return this<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   * @throws IllegalArgumentException if startRow does not meet criteria for a row key (when length<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   */<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  public Scan withStartRow(byte[] startRow, boolean inclusive) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    if (Bytes.len(startRow) &gt; HConstants.MAX_ROW_LENGTH) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      throw new IllegalArgumentException("startRow's length must be less than or equal to "<a name="line.423"></a>
+<span class="sourceLineNo">424</span>          + HConstants.MAX_ROW_LENGTH + " to meet the criteria" + " for a row key.");<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    }<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    this.startRow = startRow;<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    this.includeStartRow = inclusive;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    return this;<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  }<a name="line.429"></a>
+<span class="sourceLineNo">430</span><a name="line.430"></a>
+<span class="sourceLineNo">431</span>  /**<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   * Set the stop row of the scan.<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * &lt;p&gt;<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   * The scan will include rows that are lexicographically less than the provided stopRow.<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * &lt;p&gt;<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   * &lt;b&gt;Note:&lt;/b&gt; When doing a filter for a rowKey &lt;u&gt;Prefix&lt;/u&gt; use<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * {@link #setRowPrefixFilter(byte[])}. The 'trailing 0' will not yield the desired result.<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   * &lt;/p&gt;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>   * @param stopRow row to end at (exclusive)<a name="line.439"></a>
+<span class="sourceLineNo">440</span>   * @return this<a name="line.440"></a>
+<span class="sourceLineNo">441</span>   * @throws IllegalArgumentException if stopRow does not meet criteria for a row key (when length<a name="line.441"></a>
+<span class="sourceLineNo">442</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.442"></a>
+<span class="sourceLineNo">443</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use {@link #withStopRow(byte[])} instead.<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   *   This method may change the inclusive of the stop row to keep compatible with the old<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   *   behavior.<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * @see #withStopRow(byte[])<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17320"&gt;HBASE-17320&lt;/a&gt;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>   */<a name="line.448"></a>
+<span class="sourceLineNo">449</span>  @Deprecated<a name="line.449"></a>
+<span class="sourceLineNo">450</span>  public Scan setStopRow(byte[] stopRow) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    withStopRow(stopRow);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    if (ClientUtil.areScanStartRowAndStopRowEqual(this.startRow, this.stopRow)) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      // for keeping the old behavior that a scan with the same start and stop row is a get scan.<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      this.includeStopRow = true;<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    return this;<a name="line.456"></a>
+<span class="sourceLineNo">457</span>  }<a name="line.457"></a>
+<span class="sourceLineNo">458</span><a name="line.458"></a>
+<span class="sourceLineNo">459</span>  /**<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   * Set the stop row of the scan.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>   * &lt;p&gt;<a name="line.461"></a>
+<span class="sourceLineNo">462</span>   * The scan will include rows that are lexicographically less than the provided stopRow.<a name="line.462"></a>
+<span class="sourceLineNo">463</span>   * &lt;p&gt;<a name="line.463"></a>
+<span class="sourceLineNo">464</span>   * &lt;b&gt;Note:&lt;/b&gt; When doing a filter for a rowKey &lt;u&gt;Prefix&lt;/u&gt; use<a name="line.464"></a>
+<span class="sourceLineNo">465</span>   * {@link #setRowPrefixFilter(byte[])}. The 'trailing 0' will not yield the desired result.<a name="line.465"></a>
+<span class="sourceLineNo">466</span>   * &lt;/p&gt;<a name="line.466"></a>
+<span class="sourceLineNo">467</span>   * @param stopRow row to end at (exclusive)<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   * @return this<a name="line.468"></a>
+<span class="sourceLineNo">469</span>   * @throws IllegalArgumentException if stopRow does not meet criteria for a row key (when length<a name="line.469"></a>
+<span class="sourceLineNo">470</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.470"></a>
+<span class="sourceLineNo">471</span>   */<a name="line.471"></a>
+<span class="sourceLineNo">472</span>  public Scan withStopRow(byte[] stopRow) {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    return withStopRow(stopRow, false);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>  }<a name="line.474"></a>
+<span class="sourceLineNo">475</span><a name="line.475"></a>
+<span class="sourceLineNo">476</span>  /**<a name="line.476"></a>
+<span class="sourceLineNo">477</span>   * Set the stop row of the scan.<a name="line.477"></a>
+<span class="sourceLineNo">478</span>   * &lt;p&gt;<a name="line.478"></a>
+<span class="sourceLineNo">479</span>   * The scan will include rows that are lexicographically less than (or equal to if<a name="line.479"></a>
+<span class="sourceLineNo">480</span>   * {@code inclusive} is {@code true}) the provided stopRow.<a name="line.480"></a>
+<span class="sourceLineNo">481</span>   * @param stopRow row to end at<a name="line.481"></a>
+<span class="sourceLineNo">482</span>   * @param inclusive whether we should include the stop row when scan<a name="line.482"></a>
+<span class="sourceLineNo">483</span>   * @return this<a name="line.483"></a>
+<span class="sourceLineNo">484</span>   * @throws IllegalArgumentException if stopRow does not meet criteria for a row key (when length<a name="line.484"></a>
+<span class="sourceLineNo">485</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.485"></a>
+<span class="sourceLineNo">486</span>   */<a name="line.486"></a>
+<span class="sourceLineNo">487</span>  public Scan withStopRow(byte[] stopRow, boolean inclusive) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    if (Bytes.len(stopRow) &gt; HConstants.MAX_ROW_LENGTH) {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      throw new IllegalArgumentException("stopRow's length must be less than or equal to "<a name="line.489"></a>
+<span class="sourceLineNo">490</span>          + HConstants.MAX_ROW_LENGTH + " to meet the criteria" + " for a row key.");<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    }<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    this.stopRow = stopRow;<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    this.includeStopRow = inclusive;<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    return this;<a name="line.494"></a>
+<span class="sourceLineNo">495</span>  }<a name="line.495"></a>
+<span class="sourceLineNo">496</span><a name="line.496"></a>
+<span class="sourceLineNo">497</span>  /**<a name="line.497"></a>
+<span class="sourceLineNo">498</span>   * &lt;p&gt;Set a filter (using stopRow and startRow) so the result set only contains rows where the<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   * rowKey starts with the specified prefix.&lt;/p&gt;<a name="line.499"></a>
+<span class="sourceLineNo">500</span>   * &lt;p&gt;This is a utility method that converts the desired rowPrefix into the appropriate values<a name="line.500"></a>
+<span class="sourceLineNo">501</span>   * for the startRow and stopRow to achieve the desired result.&lt;/p&gt;<a name="line.501"></a>
+<span class="sourceLineNo">502</span>   * &lt;p&gt;This can safely be used in combination with setFilter.&lt;/p&gt;<a name="line.502"></a>
+<span class="sourceLineNo">503</span>   * &lt;p&gt;&lt;b&gt;NOTE: Doing a {@link #withStartRow(byte[])} and/or {@link #setStopRow(byte[])}<a name="line.503"></a>
+<span class="sourceLineNo">504</span>   * after this method will yield undefined results.&lt;/b&gt;&lt;/p&gt;<a name="line.504"></a>
+<span class="sourceLineNo">505</span>   * @param rowPrefix the prefix all rows must start with. (Set &lt;i&gt;null&lt;/i&gt; to remove the filter.)<a name="line.505"></a>
+<span class="sourceLineNo">506</span>   * @return this<a name="line.506"></a>
+<span class="sourceLineNo">507</span>   */<a name="line.507"></a>
+<span class="sourceLineNo">508</span>  public Scan setRowPrefixFilter(byte[] rowPrefix) {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    if (rowPrefix == null) {<a name="line.509"></a>
+<span class="sourceLineNo">510</span>      withStartRow(HConstants.EMPTY_START_ROW);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>      setStopRow(HConstants.EMPTY_END_ROW);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    } else {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>      this.withStartRow(rowPrefix);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>      this.setStopRow(ClientUtil.calculateTheClosestNextRowKeyForPrefix(rowPrefix));<a name="line.514"></a>
+<span class="sourceLineNo">515</span>    }<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    return this;<a name="line.516"></a>
+<span class="sourceLineNo">517</span>  }<a name="line.517"></a>
+<span class="sourceLineNo">518</span><a name="line.518"></a>
+<span class="sourceLineNo">519</span>  /**<a name="line.519"></a>
+<span class="sourceLineNo">520</span>   * Get up to the specified number of versions of each column.<a name="line.520"></a>
+<span class="sourceLineNo">521</span>   * @param maxVersions maximum versions for each column<a name="line.521"></a>
 <span class="sourceLineNo">522</span>   * @return this<a name="line.522"></a>
 <span class="sourceLineNo">523</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   *   family's max versions, so use {@link #readAllVersions()} instead.<a name="line.524"></a>
-<span class="sourceLineNo">525</span>   * @see #readAllVersions()<a name="line.525"></a>
+<span class="sourceLineNo">524</span>   *   family's max versions, so use {@link #readVersions(int)} instead.<a name="line.524"></a>
+<span class="sourceLineNo">525</span>   * @see #readVersions(int)<a name="line.525"></a>
 <span class="sourceLineNo">526</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17125"&gt;HBASE-17125&lt;/a&gt;<a name="line.526"></a>
 <span class="sourceLineNo">527</span>   */<a name="line.527"></a>
 <span class="sourceLineNo">528</span>  @Deprecated<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  public Scan setMaxVersions() {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    return readAllVersions();<a name="line.530"></a>
+<span class="sourceLineNo">529</span>  public Scan setMaxVersions(int maxVersions) {<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    return readVersions(maxVersions);<a name="line.530"></a>
 <span class="sourceLineNo">531</span>  }<a name="line.531"></a>
 <span class="sourceLineNo">532</span><a name="line.532"></a>
 <span class="sourceLineNo">533</span>  /**<a name="line.533"></a>
-<span class="sourceLineNo">534</span>   * Get up to the specified number of versions of each column.<a name="line.534"></a>
-<span class="sourceLineNo">535</span>   * @param maxVersions maximum versions for each column<a name="line.535"></a>
-<span class="sourceLineNo">536</span>   * @return this<a name="line.536"></a>
-<span class="sourceLineNo">537</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   *   family's max versions, so use {@link #readVersions(int)} instead.<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @see #readVersions(int)<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17125"&gt;HBASE-17125&lt;/a&gt;<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   */<a name="line.541"></a>
-<span class="sourceLineNo">542</span>  @Deprecated<a name="line.542"></a>
-<span class="sourceLineNo">543</span>  public Scan setMaxVersions(int maxVersions) {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    return readVersions(maxVersions);<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span>  /**<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * Get all available versions.<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * @return this<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   */<a name="line.550"></a>
-<span class="sourceLineNo">551</span>  public Scan readAllVersions() {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    this.maxVersions = Integer.MAX_VALUE;<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    return this;<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  }<a name="line.554"></a>
-<span class="sourceLineNo">555</span><a name="line.555"></a>
-<span class="sourceLineNo">556</span>  /**<a name="line.556"></a>
-<span class="sourceLineNo">557</span>   * Get up to the specified number of versions of each column.<a name="line.557"></a>
-<span class="sourceLineNo">558</span>   * @param versions specified number of versions for each column<a name="line.558"></a>
-<span class="sourceLineNo">559</span>   * @return this<a name="line.559"></a>
+<span class="sourceLineNo">534</span>   * Get all available versions.<a name="line.534"></a>
+<span class="sourceLineNo">535</span>   * @return this<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   */<a name="line.536"></a>
+<span class="sourceLineNo">537</span>  public Scan readAllVersions() {<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    this.maxVersions = Integer.MAX_VALUE;<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    return this;<a name="line.539"></a>
+<span class="sourceLineNo">540</span>  }<a name="line.540"></a>
+<span class="sourceLineNo">541</span><a name="line.541"></a>
+<span class="sourceLineNo">542</span>  /**<a name="line.542"></a>
+<span class="sourceLineNo">543</span>   * Get up to the specified number of versions of each column.<a name="line.543"></a>
+<span class="sourceLineNo">544</span>   * @param versions specified number of versions for each column<a name="line.544"></a>
+<span class="sourceLineNo">545</span>   * @return this<a name="line.545"></a>
+<span class="sourceLineNo">546</span>   */<a name="line.546"></a>
+<span class="sourceLineNo">547</span>  public Scan readVersions(int versions) {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    this.maxVersions = versions;<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    return this;<a name="line.549"></a>
+<span class="sourceLineNo">550</span>  }<a name="line.550"></a>
+<span class="sourceLineNo">551</span><a name="line.551"></a>
+<span class="sourceLineNo">552</span>  /**<a name="line.552"></a>
+<span class="sourceLineNo">553</span>   * Set the maximum number of cells to return for each call to next(). Callers should be aware<a name="line.553"></a>
+<span class="sourceLineNo">554</span>   * that this is not equivalent to calling {@link #setAllowPartialResults(boolean)}.<a name="line.554"></a>
+<span class="sourceLineNo">555</span>   * If you don't allow partial results, the number of cells in each Result must equal to your<a name="line.555"></a>
+<span class="sourceLineNo">556</span>   * batch setting unless it is the last Result for current row. So this method is helpful in paging<a name="line.556"></a>
+<span class="sourceLineNo">557</span>   * queries. If you just want to prevent OOM at client, use setAllowPartialResults(true) is better.<a name="line.557"></a>
+<span class="sourceLineNo">558</span>   * @param batch the maximum number of values<a name="line.558"></a>
+<span class="sourceLineNo">559</span>   * @see Result#mayHaveMoreCellsInRow()<a name="line.559"></a>
 <span class="sourceLineNo">560</span>   */<a name="line.560"></a>
-<span class="sourceLineNo">561</span>  public Scan readVersions(int versions) {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    this.maxVersions = versions;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    return this;<a name="line.563"></a>
-<span class="sourceLineNo">564</span>  }<a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>  /**<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   * Set the maximum number of cells to return for each call to next(). Callers should be aware<a name="line.567"></a>
-<span class="sourceLineNo">568</span>   * that this is not equivalent to calling {@link #setAllowPartialResults(boolean)}.<a name="line.568"></a>
-<span class="sourceLineNo">569</span>   * If you don't allow partial results, the number of cells in each Result must equal to your<a name="line.569"></a>
-<span class="sourceLineNo">570</span>   * batch setting unless it is the last Result for current row. So this method is helpful in paging<a name="line.570"></a>
-<span class="sourceLineNo">571</span>   * queries. If you just want to prevent OOM at client, use setAllowPartialResults(true) is better.<a name="line.571"></a>
-<span class="sourceLineNo">572</span>   * @param batch the maximum number of values<a name="line.572"></a>
-<span class="sourceLineNo">573</span>   * @see Result#mayHaveMoreCellsInRow()<a name="line.573"></a>
+<span class="sourceLineNo">561</span>  public Scan setBatch(int batch) {<a name="line.561"></a>
+<span class="sourceLineNo">562</span>    if (this.hasFilter() &amp;&amp; this.filter.hasFilterRow()) {<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      throw new IncompatibleFilterException(<a name="line.563"></a>
+<span class="sourceLineNo">564</span>        "Cannot set batch on a scan using a filter" +<a name="line.564"></a>
+<span class="sourceLineNo">565</span>        " that returns true for filter.hasFilterRow");<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    }<a name="line.566"></a>
+<span class="sourceLineNo">567</span>    this.batch = batch;<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    return this;<a name="line.568"></a>
+<span class="sourceLineNo">569</span>  }<a name="line.569"></a>
+<span class="sourceLineNo">570</span><a name="line.570"></a>
+<span class="sourceLineNo">571</span>  /**<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   * Set the maximum number of values to return per row per Column Family<a name="line.572"></a>
+<span class="sourceLineNo">573</span>   * @param limit the maximum number of values returned / row / CF<a name="line.573"></a>
 <span class="sourceLineNo">574</span>   */<a name="line.574"></a>
-<span class="sourceLineNo">575</span>  public Scan setBatch(int batch) {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    if (this.hasFilter() &amp;&amp; this.filter.hasFilterRow()) {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      throw new IncompatibleFilterException(<a name="line.577"></a>
-<span class="sourceLineNo">578</span>        "Cannot set batch on a scan using a filter" +<a name="line.578"></a>
-<span class="sourceLineNo">579</span>        " that returns true for filter.hasFilterRow");<a name="line.579"></a>
-<span class="sourceLineNo">580</span>    }<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    this.batch = batch;<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    return this;<a name="line.582"></a>
-<span class="sourceLineNo">583</span>  }<a name="line.583"></a>
-<span class="sourceLineNo">584</span><a name="line.584"></a>
-<span class="sourceLineNo">585</span>  /**<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * Set the maximum number of values to return per row per Column Family<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   * @param limit the maximum number of values returned / row / CF<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   */<a name="line.588"></a>
-<span class="sourceLineNo">589</span>  public Scan setMaxResultsPerColumnFamily(int limit) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    this.storeLimit = limit;<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    return this;<a name="line.591"></a>
-<span class="sourceLineNo">592</span>  }<a name="line.592"></a>
-<span class="sourceLineNo">593</span><a name="line.593"></a>
-<span class="sourceLineNo">594</span>  /**<a name="line.594"></a>
-<span class="sourceLineNo">595</span>   * Set offset for the row per Column Family.<a name="line.595"></a>
-<span class="sourceLineNo">596</span>   * @param offset is the number of kvs that will be skipped.<a name="line.596"></a>
-<span class="sourceLineNo">597</span>   */<a name="line.597"></a>
-<span class="sourceLineNo">598</span>  public Scan setRowOffsetPerColumnFamily(int offset) {<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    this.storeOffset = offset;<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    return this;<a name="line.600"></a>
-<span class="sourceLineNo">601</span>  }<a name="line.601"></a>
-<span class="sourceLineNo">602</span><a name="line.602"></a>
-<span class="sourceLineNo">603</span>  /**<a name="line.603"></a>
-<span class="sourceLineNo">604</span>   * Set the number of rows for caching that will be passed to scanners.<a name="line.604"></a>
-<span class="sourceLineNo">605</span>   * If not set, the Configuration setting {@link HConstants#HBASE_CLIENT_SCANNER_CACHING} will<a name="line.605"></a>
-<span class="sourceLineNo">606</span>   * apply.<a name="line.606"></a>
-<span class="sourceLineNo">607</span>   * Higher caching values will enable faster scanners but will use more memory.<a name="line.607"></a>
-<span class="sourceLineNo">608</span>   * @param caching the number of rows for caching<a name="line.608"></a>
-<span class="sourceLineNo">609</span>   */<a name="line.609"></a>
-<span class="sourceLineNo">610</span>  public Scan setCaching(int caching) {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    this.caching = caching;<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    return this;<a name="line.612"></a>
-<span class="sourceLineNo">613</span>  }<a name="line.613"></a>
-<span class="sourceLineNo">614</span><a name="line.614"></a>
-<span class="sourceLineNo">615</span>  /**<a name="line.615"></a>
-<span class="sourceLineNo">616</span>   * @return the maximum result size in bytes. See {@link #setMaxResultSize(long)}<a name="line.616"></a>
-<span class="sourceLineNo">617</span>   */<a name="line.617"></a>
-<span class="sourceLineNo">618</span>  public long getMaxResultSize() {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    return maxResultSize;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>  }<a name="line.620"></a>
-<span class="sourceLineNo">621</span><a name="line.621"></a>
-<span class="sourceLineNo">622</span>  /**<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   * Set the maximum result size. The default is -1; this means that no specific<a name="line.623"></a>
-<span class="sourceLineNo">624</span>   * maximum result size will be set for this scan, and the global configured<a name="line.624"></a>
-<span class="sourceLineNo">625</span>   * value will be used instead. (Defaults to unlimited).<a name="line.625"></a>
-<span class="sourceLineNo">626</span>   *<a name="line.626"></a>
-<span class="sourceLineNo">627</span>   * @param maxResultSize The maximum result size in bytes.<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   */<a name="line.628"></a>
-<span class="sourceLineNo">629</span>  public Scan setMaxResultSize(long maxResultSize) {<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    this.maxResultSize = maxResultSize;<a name="line.630"></a>
-<span class="sourceLineNo">631</span>    return this;<a name="line.631"></a>
-<span class="sourceLineNo">632</span>  }<a name="line.632"></a>
-<span class="sourceLineNo">633</span><a name="line.633"></a>
-<span class="sourceLineNo">634</span>  @Override<a name="line.634"></a>
-<span class="sourceLineNo">635</span>  public Scan setFilter(Filter filter) {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    super.setFilter(filter);<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    return this;<a name="line.637"></a>
-<span class="sourceLineNo">638</span>  }<a name="line.638"></a>
-<span class="sourceLineNo">639</span><a name="line.639"></a>
-<span class="sourceLineNo">640</span>  /**<a name="line.640"></a>
-<span class="sourceLineNo">641</span>   * Setting the familyMap<a name="line.641"></a>
-<span class="sourceLineNo">642</span>   * @param familyMap map of family to qualifier<a name="line.642"></a>
-<span class="sourceLineNo">643</span>   * @return this<a name="line.643"></a>
-<span class="sourceLineNo">644</span>   */<a name="line.644"></a>
-<span class="sourceLineNo">645</span>  public Scan setFamilyMap(Map&lt;byte [], NavigableSet&lt;byte []&gt;&gt; familyMap) {<a name="line.645"></a>
-<span class="sourceLineNo">646</span>    this.familyMap = familyMap;<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    return this;<a name="line.647"></a>
-<span class="sourceLineNo">648</span>  }<a name="line.648"></a>
-<span class="sourceLineNo">649</span><a name="line.649"></a>
-<span class="sourceLineNo">650</span>  /**<a name="line.650"></a>
-<span class="sourceLineNo">651</span>   * Getting the familyMap<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   * @return familyMap<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   */<a name="line.653"></a>
-<span class="sourceLineNo">654</span>  public Map&lt;byte [], NavigableSet&lt;byte []&gt;&gt; getFamilyMap() {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    return this.familyMap;<a name="line.655"></a>
-<span class="sourceLineNo">656</span>  }<a name="line.656"></a>
-<span class="sourceLineNo">657</span><a name="line.657"></a>
-<span class="sourceLineNo">658</span>  /**<a name="line.658"></a>
-<span class="sourceLineNo">659</span>   * @return the number of families in familyMap<a name="line.659"></a>
-<span class="sourceLineNo">660</span>   */<a name="line.660"></a>
-<span class="sourceLineNo">661</span>  public int numFamilies() {<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    if(hasFamilies()) {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      return this.familyMap.size();<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    }<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    return 0;<a name="line.665"></a>
-<span class="sourceLineNo">666</span>  }<a name="line.666"></a>
-<span class="sourceLineNo">667</span><a name="line.667"></a>
-<span class="sourceLineNo">668</span>  /**<a name="line.668"></a>
-<span class="sourceLineNo">669</span>   * @return true if familyMap is non empty, false otherwise<a name="line.669"></a>
-<span class="sourceLineNo">670</span>   */<a name="line.670"></a>
-<span class="sourceLineNo">671</span>  public boolean hasFamilies() {<a name="line.671"></a>
-<span class="sourceLineNo">672</span>    return !this.familyMap.isEmpty();<a name="line.672"></a>
-<span class="sourceLineNo">673</span>  }<a name="line.673"></a>
-<span class="sourceLineNo">674</span><a name="line.674"></a>
-<span class="sourceLineNo">675</span>  /**<a name="line.675"></a>
-<span class="sourceLineNo">676</span>   * @return the keys of the familyMap<a name="line.676"></a>
-<span class="sourceLineNo">677</span>   */<a name="line.677"></a>
-<span class="sourceLineNo">678</span>  public byte[][] getFamilies() {<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    if(hasFamilies()) {<a name="line.679"></a>
-<span class="sourceLineNo">680</span>      return this.familyMap.keySet().toArray(new byte[0][0]);<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    }<a name="line.681"></a>
-<span class="sourceLineNo">682</span>    return null;<a name="line.682"></a>
+<span class="sourceLineNo">575</span>  public Scan setMaxResultsPerColumnFamily(int limit) {<a name="line.575"></a>
+<span class="sourceLineNo">576</span>    this.storeLimit = limit;<a name="line.576"></a>
+<span class="sourceLineNo">577</span>    return this;<a name="line.577"></a>
+<span class="sourceLineNo">578</span>  }<a name="line.578"></a>
+<span class="sourceLineNo">579</span><a name="line.579"></a>
+<span class="sourceLineNo">580</span>  /**<a name="line.580"></a>
+<span class="sourceLineNo">581</span>   * Set offset for the row per Column Family.<a name="line.581"></a>
+<span class="sourceLineNo">582</span>   * @param offset is the number of kvs that will be skipped.<a name="line.582"></a>
+<span class="sourceLineNo">583</span>   */<a name="line.583"></a>
+<span class="sourceLineNo">584</span>  public Scan setRowOffsetPerColumnFamily(int offset) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>    this.storeOffset = offset;<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    return this;<a name="line.586"></a>
+<span class="sourceLineNo">587</span>  }<a name="line.587"></a>
+<span class="sourceLineNo">588</span><a name="line.588"></a>
+<span class="sourceLineNo">589</span>  /**<a name="line.589"></a>
+<span class="sourceLineNo">590</span>   * Set the number of rows for caching that will be passed to scanners.<a name="line.590"></a>
+<span class="sourceLineNo">591</span>   * If not set, the Configuration setting {@link HConstants#HBASE_CLIENT_SCANNER_CACHING} will<a name="line.591"></a>
+<span class="sourceLineNo">592</span>   * apply.<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * Higher caching values will enable faster scanners but will use more memory.<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   * @param caching the number of rows for caching<a name="line.594"></a>
+<span class="sourceLineNo">595</span>   */<a name="line.595"></a>
+<span class="sourceLineNo">596</span>  public Scan setCaching(int caching) {<a name="line.596"></a>
+<span class="sourceLineNo">597</span>    this.caching = caching;<a name="line.597"></a>
+<span class="sourceLineNo">598</span>    return this;<a name="line.598"></a>
+<span class="sourceLineNo">599</span>  }<a name="line.599"></a>
+<span class="sourceLineNo">600</span><a name="line.600"></a>
+<span class="sourceLineNo">601</span>  /**<a name="line.601"></a>
+<span class="sourceLineNo">602</span>   * @return the maximum result size in bytes. See {@link #setMaxResultSize(long)}<a name="line.602"></a>
+<span class="sourceLineNo">603</span>   */<a name="line.603"></a>
+<span class="sourceLineNo">604</span>  public long getMaxResultSize() {<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    return maxResultSize;<a name="line.605"></a>
+<span class="sourceLineNo">606</span>  }<a name="line.606"></a>
+<span class="sourceLineNo">607</span><a name="line.607"></a>
+<span class="sourceLineNo">608</span>  /**<a name="line.608"></a>
+<span class="sourceLineNo">609</span>   * Set the maximum result size. The default is -1; this means that no specific<a name="line.609"></a>
+<span class="sourceLineNo">610</span>   * maximum result size will be set for this scan, and the global configured<a name="line.610"></a>
+<span class="sourceLineNo">611</span>   * value will be used instead. (Defaults to unlimited).<a name="line.611"></a>
+<span class="sourceLineNo">612</span>   *<a name="line.612"></a>
+<span class="sourceLineNo">613</span>   * @param maxResultSize The maximum result size in bytes.<a name="line.613"></a>
+<span class="sourceLineNo">614</span>   */<a name="line.614"></a>
+<span class="sourceLineNo">615</span>  public Scan setMaxResultSize(long maxResultSize) {<a name="line.615"></a>
+<span class="sourceLineNo">616</span>    this.maxResultSize = maxResultSize;<a name="line.616"></a>
+<span class="sourceLineNo">617</span>    return this;<a name="line.617"></a>
+<span class="sourceLineNo">618</span>  }<a name="line.618"></a>
+<span class="sourceLineNo">619</span><a name="line.619"></a>
+<span class="sourceLineNo">620</span>  @Override<a name="line.620"></a>
+<span class="sourceLineNo">621</span>  public Scan setFilter(Filter filter) {<a name="line.621"></a>
+<span class="sourceLineNo">622</span>    super.setFilter(filter);<a name="line.622"></a>
+<span class="sourceLineNo">623</span>    return this;<a name="line.623"></a>
+<span class="sourceLineNo">624</span>  }<a name="line.624"></a>
+<span class="sourceLineNo">625</span><a name="line.625"></a>
+<span class="sourceLineNo">626</span>  /**<a name="line.626"></a>
+<span class="sourceLineNo">627</span>   * Setting the familyMap<a name="line.627"></a>
+<span class="sourceLineNo">628</span>   * @param familyMap map of family to qualifier<a name="line.628"></a>
+<span class="sourceLineNo">629</span>   * @return this<a name="line.629"></a>
+<span class="sourceLineNo">630</span>   */<a name="line.630"></a>
+<span class="sourceLineNo">631</span>  public Scan setFamilyMap(Map&lt;byte [], NavigableSet&lt;byte []&gt;&gt; familyMap) {<a name="line.631"></a>
+<span class="sourceLineNo">632</span>    this.familyMap = familyMap;<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    return this;<a name="line.633"></a>
+<span class="sourceLineNo">634</span>  }<a name="line.634"></a>
+<span class="sourceLineNo">635</span><a name="line.635"></a>
+<span class="sourceLineNo">636</span>  /**<a name="line.636"></a>
+<span class="sourceLineNo">637</span>   * Getting the familyMap<a name="line.637"></a>
+<span class="sourceLineNo">638</span>   * @return familyMap<a name="line.638"></a>
+<span class="sourceLineNo">639</span>   */<a name="line.639"></a>
+<span class="sourceLineNo">640</span>  public Map&lt;byte [], NavigableSet&lt;byte []&gt;&gt; getFamilyMap() {<a name="line.640"></a>
+<span class="sourceLineNo">641</span>    return this.familyMap;<a name="line.641"></a>
+<span class="sourceLineNo">642</span>  }<a name="line.642"></a>
+<span class="sourceLineNo">643</span><a name="line.643"></a>
+<span class="sourceLineNo">644</span>  /**<a name="line.644"></a>
+<span class="sourceLineNo">645</span>   * @return the number of families in familyMap<a name="line.645"></a>
+<span class="sourceLineNo">646</span>   */<a name="line.646"></a>
+<span class="sourceLineNo">647</span>  public int numFamilies() {<a name="line.647"></a>
+<span class="sourceLineNo">648</span>    if(hasFamilies()) {<a name="line.648"></a>
+<span class="sourceLineNo">649</span>      return this.familyMap.size();<a name="line.649"></a>
+<span class="sourceLineNo">650</span>    }<a name="line.650"></a>
+<span class="sourceLineNo">651</span>    return 0;<a name="line.651"></a>
+<span class="sourceLineNo">652</span>  }<a name="line.652"></a>
+<span class="sourceLineNo">653</span><a name="line.653"></a>
+<span class="sourceLineNo">654</span>  /**<a name="line.654"></a>
+<span class="sourceLineNo">655</span>   * @return true if familyMap is non empty, false otherwise<a name="line.655"></a>
+<span class="sourceLineNo">656</span>   */<a name="line.656"></a>
+<span class="sourceLineNo">657</span>  public boolean hasFamilies() {<a name="line.657"></a>
+<span class="sourceLineNo">658</span>    return !this.familyMap.isEmpty();<a name="line.658"></a>
+<span class="sourceLineNo">659</span>  }<a name="line.659"></a>
+<span class="sourceLineNo">660</span><a name="line.660"></a>
+<span class="sourceLineNo">661</span>  /**<a name="line.661"></a>
+<span class="sourceLineNo">662</span>   * @return the keys of the familyMap<a name="line.662"></a>
+<span class="sourceLineNo">663</span>   */<a name="line.663"></a>
+<span class="sourceLineNo">664</span>  public byte[][] getFamilies() {<a name="line.664"></a>
+<span class="sourceLineNo">665</span>    if(hasFamilies()) {<a name="line.665"></a>
+<span class="sourceLineNo">666</span>      return this.familyMap.keySet().toArray(new byte[0][0]);<a name="line.666"></a>
+<span class="sourceLineNo">667</span>    }<a name="line.667"></a>
+<span class="sourceLineNo">668</span>    return null;<a name="line.668"></a>
+<span class="sourceLineNo">669</span>  }<a name="line.669"></a>
+<span class="sourceLineNo">670</span><a name="line.670"></a>
+<span class="sourceLineNo">671</span>  /**<a name="line.671"></a>
+<span class="sourceLineNo">672</span>   * @return the startrow<a name="line.672"></a>
+<span class="sourceLineNo">673</span>   */<a name="line.673"></a>
+<span class="sourceLineNo">674</span>  public byte [] getStartRow() {<a name="line.674"></a>
+<span class="sourceLineNo">675</span>    return this.startRow;<a name="line.675"></a>
+<span class="sourceLineNo">676</span>  }<a name="line.676"></a>
+<span class="sourceLineNo">677</span><a name="line.677"></a>
+<span class="sourceLineNo">678</span>  /**<a name="line.678"></a>
+<span class="sourceLineNo">679</span>   * @return if we should include start row when scan<a name="line.679"></a>
+<span class="sourceLineNo">680</span>   */<a name="line.680"></a>
+<span class="sourceLineNo">681</span>  public boolean includeStartRow() {<a name="line.681"></a>
+<span class="sourceLineNo">682</span>    return includeStartRow;<a name="line.682"></a>
 <span class="sourceLineNo">683</span>  }<a name="line.683"></a>
 <span class="sourceLineNo">684</span><a name="line.684"></a>
 <span class="sourceLineNo">685</span>  /**<a name="line.685"></a>
-<span class="sourceLineNo">686</span>   * @return the startrow<a name="line.686"></a>
+<span class="sourceLineNo">686</span>   * @return the stoprow<a name="line.686"></a>
 <span class="sourceLineNo">687</span>   */<a name="line.687"></a>
-<span class="sourceLineNo">688</span>  public byte [] getStartRow() {<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    return this.startRow;<a name="line.689"></a>
+<span class="sourceLineNo">688</span>  public byte[] getStopRow() {<a name="line.688"></a>
+<span class="sourceLineNo">689</span>    return this.stopRow;<a name="line.689"></a>
 <span class="sourceLineNo">690</span>  }<a name="line.690"></a>
 <span class="sourceLineNo">691</span><a name="line.691"></a>
 <span class="sourceLineNo">692</span>  /**<a name="line.692"></a>
-<span class="sourceLineNo">693</span>   * @return if we should include start row when scan<a name="line.693"></a>
+<span class="sourceLineNo">693</span>   * @return if we should include stop row when scan<a name="line.693"></a>
 <span class="sourceLineNo">694</span>   */<a name="line.694"></a>
-<span class="sourceLineNo">695</span>  public boolean includeStartRow() {<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    return includeStartRow;<a name="line.696"></a>
+<span class="sourceLineNo">695</span>  public boolean includeStopRow() {<a name="line.695"></a>
+<span class="sourceLineNo">696</span>    return includeStopRow;<a name="line.696"></a>
 <span class="sourceLineNo">697</span>  }<a name="line.697"></a>
 <span class="sourceLineNo">698</span><a name="line.698"></a>
 <span class="sourceLineNo">699</span>  /**<a name="line.699"></a>
-<span class="sourceLineNo">700</span>   * @return the stoprow<a name="line.700"></a>
+<span class="sourceLineNo">700</span>   * @return the max number of versions to fetch<a name="line.700"></a>
 <span class="sourceLineNo">701</span>   */<a name="line.701"></a>
-<span class="sourceLineNo">702</span>  public byte[] getStopRow() {<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    return this.stopRow;<a name="line.703"></a>
+<span class="sourceLineNo">702</span>  public int getMaxVersions() {<a name="line.702"></a>
+<span class="sourceLineNo">703</span>    return this.maxVersions;<a name="line.703"></a>
 <span class="sourceLineNo">704</span>  }<a name="line.704"></a>
 <span class="sourceLineNo">705</span><a name="line.705"></a>
 <span class="sourceLineNo">706</span>  /**<a name="line.706"></a>
-<span class="sourceLineNo">707</span>   * @return if we should include stop row when scan<a name="line.707"></a>
+<span class="sourceLineNo">707</span>   * @return maximum number of values to return for a single call to next()<a name="line.707"></a>
 <span class="sourceLineNo">708</span>   */<a name="line.708"></a>
-<span class="sourceLineNo">709</span>  public boolean includeStopRow() {<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    return includeStopRow;<a name="line.710"></a>
+<span class="sourceLineNo">709</span>  public int getBatch() {<a name="line.709"></a>
+<span class="sourceLineNo">710</span>    return this.batch;<a name="line.710"></a>
 <span class="sourceLineNo">711</span>  }<a name="line.711"></a>
 <span class="sourceLineNo">712</span><a name="line.712"></a>
 <span class="sourceLineNo">713</span>  /**<a name="line.713"></a>
-<span class="sourceLineNo">714</span>   * @return the max number of versions to fetch<a name="line.714"></a>
+<span class="sourceLineNo">714</span>   * @return maximum number of values to return per row per CF<a name="line.714"></a>
 <span class="sourceLineNo">715</span>   */<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  public int getMaxVersions() {<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    return this.maxVersions;<a name="line.717"></a>
+<span class="sourceLineNo">716</span>  public int getMaxResultsPerColumnFamily() {<a name="line.716"></a>
+<span class="sourceLineNo">717</span>    return this.storeLimit;<a name="line.717"></a>
 <span class="sourceLineNo">718</span>  }<a name="line.718"></a>
 <span class="sourceLineNo">719</span><a name="line.719"></a>
 <span class="sourceLineNo">720</span>  /**<a name="line.720"></a>
-<span class="sourceLineNo">721</span>   * @return maximum number of values to return for a single call to next()<a name="line.721"></a>
-<span class="sourceLineNo">722</span>   */<a name="line.722"></a>
-<span class="sourceLineNo">723</span>  public int getBatch() {<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    return this.batch;<a name="line.724"></a>
-<span class="sourceLineNo">725</span>  }<a name="line.725"></a>
-<span class="sourceLineNo">726</span><a name="line.726"></a>
-<span class="sourceLineNo">727</span>  /**<a name="line.727"></a>
-<span class="sourceLineNo">728</span>   * @return maximum number of values to return per row per CF<a name="line.728"></a>
-<span class="sourceLineNo">729</span>   */<a name="line.729"></a>
-<span class="sourceLineNo">730</span>  public int getMaxResultsPerColumnFamily() {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    return this.storeLimit;<a name="line.731"></a>
-<span class="sourceLineNo">732</span>  }<a name="line.732"></a>
-<span class="sourceLineNo">733</span><a name="line.733"></a>
-<span class="sourceLineNo">734</span>  /**<a name="line.734"></a>
-<span class="sourceLineNo">735</span>   * Method for retrieving the scan's offset per row per column<a name="line.735"></a>
-<span class="sourceLineNo">736</span>   * family (#kvs to be skipped)<a name="line.736"></a>
-<span class="sourceLineNo">737</span>   * @return row offset<a name="line.737"></a>
+<span class="sourceLineNo">721</span>   * Method for retrieving the scan's offset per row per column<a name="line.721"></a>
+<span class="sourceLineNo">722</span>   * family (#kvs to be skipped)<a name="line.722"></a>
+<span class="sourceLineNo">723</span>   * @return row offset<a name="line.723"></a>
+<span class="sourceLineNo">724</span>   */<a name="line.724"></a>
+<span class="sourceLineNo">725</span>  public int getRowOffsetPerColumnFamily() {<a name="line.725"></a>
+<span class="sourceLineNo">726</span>    return this.storeOffset;<a name="line.726"></a>
+<span class="sourceLineNo">727</span>  }<a name="line.727"></a>
+<span class="sourceLineNo">728</span><a name="line.728"></a>
+<span class="sourceLineNo">729</span>  /**<a name="line.729"></a>
+<span class="sourceLineNo">730</span>   * @return caching the number of rows fetched when calling next on a scanner<a name="line.730"></a>
+<span class="sourceLineNo">731</span>   */<a name="line.731"></a>
+<span class="sourceLineNo">732</span>  public int getCaching() {<a name="line.732"></a>
+<span class="sourceLineNo">733</span>    return this.caching;<a name="line.733"></a>
+<span class="sourceLineNo">734</span>  }<a name="line.734"></a>
+<span class="sourceLineNo">735</span><a name="line.735"></a>
+<span class="sourceLineNo">736</span>  /**<a name="line.736"></a>
+<span class="sourceLineNo">737</span>   * @return TimeRange<a name="line.737"></a>
 <span class="sourceLineNo">738</span>   */<a name="line.738"></a>
-<span class="sourceLineNo">739</span>  public int getRowOffsetPerColumnFamily() {<a name="line.739"></a>
-<span class="sourceLineNo">740</span>    return this.storeOffset;<a name="line.740"></a>
+<span class="sourceLineNo">739</span>  public TimeRange getTimeRange() {<a name="line.739"></a>
+<span class="sourceLineNo">740</span>    return this.tr;<a name="line.740"></a>
 <span class="sourceLineNo">741</span>  }<a name="line.741"></a>
 <span class="sourceLineNo">742</span><a name="line.742"></a>
 <span class="sourceLineNo">743</span>  /**<a name="line.743"></a>
-<span class="sourceLineNo">744</span>   * @return caching the number of rows fetched when calling next on a scanner<a name="line.744"></a>
+<span class="sourceLineNo">744</span>   * @return RowFilter<a name="line.744"></a>
 <span class="sourceLineNo">745</span>   */<a name="line.745"></a>
-<span class="sourceLineNo">746</span>  public int getCaching() {<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    return this.caching;<a name="line.747"></a>
-<span class="sourceLineNo">748</span>  }<a name="line.748"></a>
-<span class="sourceLineNo">749</span><a name="line.749"></a>
-<span class="sourceLineNo">750</span>  /**<a name="line.750"></a>
-<span class="sourceLineNo">751</span>   * @return TimeRange<a name="line.751"></a>
-<span class="sourceLineNo">752</span>   */<a name="line.752"></a>
-<span class="sourceLineNo">753</span>  public TimeRange getTimeRange() {<a name="line.753"></a>
-<span class="sourceLineNo">754</span>    return this.tr;<a name="line.754"></a>
-<span class="sourceLineNo">755</span>  }<a name="line.755"></a>
-<span class="sourceLineNo">756</span><a name="line.756"></a>
-<span class="sourceLineNo">757</span>  /**<a name="line.757"></a>
-<span class="sourceLineNo">758</span>   * @return RowFilter<a name="line.758"></a>
-<span class="sourceLineNo">759</span>   */<a name="line.759"></a>
-<span class="sourceLineNo">760</span>  @Override<a name="line.760"></a>
-<span class="sourceLineNo">761</span>  public Filter getFilter() {<a name="line.761"></a>
-<span class="sourceLineNo">762</span>    return filter;<a name="line.762"></a>
-<span class="sourceLineNo">763</span>  }<a name="line.763"></a>
-<span class="sourceLineNo">764</span><a name="line.764"></a>
-<span class="sourceLineNo">765</span>  /**<a name="line.765"></a>
-<span class="sourceLineNo">766</span>   * @return true is a filter has been specified, false if not<a name="line.766"></a>
+<span class="sourceLineNo">746</span>  @Override<a name="line.746"></a>
+<span class="sourceLineNo">747</span>  public Filter getFilter() {<a name="line.747"></a>
+<span class="sourceLineNo">748</span>    return filter;<a name="line.748"></a>
+<span class="sourceLineNo">749</span>  }<a name="line.749"></a>
+<span class="sourceLineNo">750</span><a name="line.750"></a>
+<span class="sourceLineNo">751</span>  /**<a name="line.751"></a>
+<span class="sourceLineNo">752</span>   * @return true is a filter has been specified, false if not<a name="line.752"></a>
+<span class="sourceLineNo">753</span>   */<a name="line.753"></a>
+<span class="sourceLineNo">754</span>  public boolean hasFilter() {<a name="line.754"></a>
+<span class="sourceLineNo">755</span>    return filter != null;<a name="line.755"></a>
+<span class="sourceLineNo">756</span>  }<a name="line.756"></a>
+<span class="sourceLineNo">757</span><a name="line.757"></a>
+<span class="sourceLineNo">758</span>  /**<a name="line.758"></a>
+<span class="sourceLineNo">759</span>   * Set whether blocks should be cached for this Scan.<a name="line.759"></a>
+<span class="sourceLineNo">760</span>   * &lt;p&gt;<a name="line.760"></a>
+<span class="sourceLineNo">761</span>   * This is true by default.  When true, default settings of the table and<a name="line.761"></a>
+<span class="sourceLineNo">762</span>   * family are used (this will never override caching blocks if the block<a name="line.762"></a>
+<span class="sourceLineNo">763</span>   * cache is disabled for that family or entirely).<a name="line.763"></a>
+<span class="sourceLineNo">764</span>   *<a name="line.764"></a>
+<span class="sourceLineNo">765</span>   * @param cacheBlocks if false, default settings are overridden and blocks<a name="line.765"></a>
+<span class="sourceLineNo">766</span>   * will not be cached<a name="line.766"></a>
 <span class="sourceLineNo">767</span>   */<a name="line.767"></a>
-<span class="sourceLineNo">768</span>  public boolean hasFilter() {<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    return filter != null;<a name="line.769"></a>
-<span class="sourceLineNo">770</span>  }<a name="line.770"></a>
-<span class="sourceLineNo">771</span><a name="line.771"></a>
-<span class="sourceLineNo">772</span>  /**<a name="line.772"></a>
-<span class="sourceLineNo">773</span>   * Set whether blocks should be cached for this Scan.<a name="line.773"></a>
-<span class="sourceLineNo">774</span>   * &lt;p&gt;<a name="line.774"></a>
-<span class="sourceLineNo">775</span>   * This is true by default.  When true, default settings of the table and<a name="line.775"></a>
-<span class="sourceLineNo">776</span>   * family are used (this will never override caching blocks if the block<a name="line.776"></a>
-<span class="sourceLineNo">777</span>   * cache is disabled for that family or entirely).<a name="line.777"></a>
-<span class="sourceLineNo">778</span>   *<a name="line.778"></a>
-<span class="sourceLineNo">779</span>   * @param cacheBlocks if false, default settings are overridden and blocks<a name="line.779"></a>
-<span class="sourceLineNo">780</span>   * will not be cached<a name="line.780"></a>
-<span class="sourceLineNo">781</span>   */<a name="line.781"></a>
-<span class="sourceLineNo">782</span>  public Scan setCacheBlocks(boolean cacheBlocks) {<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    this.cacheBlocks = cacheBlocks;<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    return this;<a name="line.784"></a>
-<span class="sourceLineNo">785</span>  }<a name="line.785"></a>
-<span class="sourceLineNo">786</span><a name="line.786"></a>
-<span class="sourceLineNo">787</span>  /**<a name="line.787"></a>
-<span class="sourceLineNo">788</span>   * Get whether blocks should be cached for this Scan.<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * @return true if default caching should be used, false if blocks should not<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   * be cached<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   */<a name="line.791"></a>
-<span class="sourceLineNo">792</span>  public boolean getCacheBlocks() {<a name="line.792"></a>
-<span class="sourceLineNo">793</span>    return cacheBlocks;<a name="line.793"></a>
-<span class="sourceLineNo">794</span>  }<a name="line.794"></a>
-<span class="sourceLineNo">795</span><a name="line.795"></a>
-<span class="sourceLineNo">796</span>  /**<a name="line.796"></a>
-<span class="sourceLineNo">797</span>   * Set whether this scan is a reversed one<a name="line.797"></a>
-<span class="sourceLineNo">798</span>   * &lt;p&gt;<a name="line.798"></a>
-<span class="sourceLineNo">799</span>   * This is false by default which means forward(normal) scan.<a name="line.799"></a>
-<span class="sourceLineNo">800</span>   *<a name="line.800"></a>
-<span class="sourceLineNo">801</span>   * @param reversed if true, scan will be backward order<a name="line.801"></a>
-<span class="sourceLineNo">802</span>   * @return this<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   */<a name="line.803"></a>
-<span class="sourceLineNo">804</span>  public Scan setReversed(boolean reversed) {<a name="line.804"></a>
-<span class="sourceLineNo">805</span>    this.reversed = reversed;<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    return this;<a name="line.806"></a>
-<span class="sourceLineNo">807</span>  }<a name="line.807"></a>
-<span class="sourceLineNo">808</span><a name="line.808"></a>
-<span class="sourceLineNo">809</span>  /**<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   * Get whether this scan is a reversed one.<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   * @return true if backward scan, false if forward(default) scan<a name="line.811"></a>
+<span class="sourceLineNo">768</span>  public Scan setCacheBlocks(boolean cacheBlocks) {<a name="line.768"></a>
+<span class="sourceLineNo">769</span>    this.cacheBlocks = cacheBlocks;<a name="line.769"></a>
+<span class="sourceLineNo">770</span>    return this;<a name="line.770"></a>
+<span class="sourceLineNo">771</span>  }<a name="line.771"></a>
+<span class="sourceLineNo">772</span><a name="line.772"></a>
+<span class="sourceLineNo">773</span>  /**<a name="line.773"></a>
+<span class="sourceLineNo">774</span>   * Get whether blocks should be cached for this Scan.<a name="line.774"></a>
+<span class="sourceLineNo">775</span>   * @return true if default caching should be used, false if blocks should not<a name="line.775"></a>
+<span class="sourceLineNo">776</span>   * be cached<a name="line.776"></a>
+<span class="sourceLineNo">777</span>   */<a name="line.777"></a>
+<span class="sourceLineNo">778</span>  public boolean getCacheBlocks() {<a name="line.778"></a>
+<span class="sourceLineNo">779</span>    return cacheBlocks;<a name="line.779"></a>
+<span class="sourceLineNo">780</span>  }<a name="line.780"></a>
+<span class="sourceLineNo">781</span><a name="line.781"></a>
+<span class="sourceLineNo">782</span>  /**<a name="line.782"></a>
+<span class="sourceLineNo">783</span>   * Set whether this scan is a reversed one<a name="line.783"></a>
+<span class="sourceLineNo">784</span>   * &lt;p&gt;<a name="line.784"></a>
+<span class="sourceLineNo">785</span>   * This is false by default which means forward(normal) scan.<a name="line.785"></a>
+<span class="sourceLineNo">786</span>   *<a name="line.786"></a>
+<span class="sourceLineNo">787</span>   * @param reversed if true, scan will be backward order<a name="line.787"></a>
+<span class="sourceLineNo">788</span>   * @return this<a name="line.788"></a>
+<span class="sourceLineNo">789</span>   */<a name="line.789"></a>
+<span class="sourceLineNo">790</span>  public Scan setReversed(boolean reversed) {<a name="line.790"></a>
+<span class="sourceLineNo">791</span>    this.reversed = reversed;<a name="line.791"></a>
+<span class="sourceLineNo">792</span>    return this;<a name="line.792"></a>
+<span class="sourceLineNo">793</span>  }<a name="line.793"></a>
+<span class="sourceLineNo">794</span><a name="line.794"></a>
+<span class="sourceLineNo">795</span>  /**<a name="line.795"></a>
+<span class="sourceLineNo">796</span>   * Get whether this scan is a reversed one.<a name="line.796"></a>
+<span class="sourceLineNo">797</span>   * @return true if backward scan, false if forward(default) scan<a name="line.797"></a>
+<span class="sourceLineNo">798</span>   */<a name="line.798"></a>
+<span class="sourceLineNo">799</span>  public boolean isReversed() {<a name="line.799"></a>
+<span class="sourceLineNo">800</span>    return reversed;<a name="line.800"></a>
+<span class="sourceLineNo">801</span>  }<a name="line.801"></a>
+<span class="sourceLineNo">802</span><a name="line.802"></a>
+<span class="sourceLineNo">803</span>  /**<a name="line.803"></a>
+<span class="sourceLineNo">804</span>   * Setting whether the caller wants to see the partial results when server returns<a name="line.804"></a>
+<span class="sourceLineNo">805</span>   * less-than-expected cells. It is helpful while scanning a huge row to prevent OOM at client.<a name="line.805"></a>
+<span class="sourceLineNo">806</span>   * By default this value is false and the complete results will be assembled client side<a name="line.806"></a>
+<span class="sourceLineNo">807</span>   * before being delivered to the caller.<a name="line.807"></a>
+<span class="sourceLineNo">808</span>   * @param allowPartialResults<a name="line.808"></a>
+<span class="sourceLineNo">809</span>   * @return this<a name="line.809"></a>
+<span class="sourceLineNo">810</span>   * @see Result#mayHaveMoreCellsInRow()<a name="line.810"></a>
+<span class="sourceLineNo">811</span>   * @see #setBatch(int)<a name="line.811"></a>
 <span class="sourceLineNo">812</span>   */<a name="line.812"></a>
-<span class="sourceLineNo">813</span>  public boolean isReversed() {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    return reversed;<a name="line.814"></a>
-<span class="sourceLineNo">815</span>  }<a name="line.815"></a>
-<span class="sourceLineNo">816</span><a name="line.816"></a>
-<span class="sourceLineNo">817</span>  /**<a name="line.817"></a>
-<span class="sourceLineNo">818</span>   * Setting whether the caller wants to see the partial results when server returns<a name="line.818"></a>
-<span class="sourceLineNo">819</span>   * less-than-expected cells. It is helpful while scanning a huge row to prevent OOM at client.<a name="line.819"></a>
-<span class="sourceLineNo">820</span>   * By default this value is false and the complete results will be assembled client side<a name="line.820"></a>
-<span class="sourceLineNo">821</span>   * before being delivered to the caller.<a name="line.821"></a>
-<span class="sourceLineNo">822</span>   * @param allowPartialResults<a name="line.822"></a>
-<span class="sourceLineNo">823</span>   * @return this<a name="line.823"></a>
-<span class="sourceLineNo">824</span>   * @see Result#mayHaveMoreCellsInRow()<a name="line.824"></a>
-<span class="sourceLineNo">825</span>   * @see #setBatch(int)<a name="line.825"></a>
-<span class="sourceLineNo">826</span>   */<a name="line.826"></a>
-<span class="sourceLineNo">827</span>  public Scan setAllowPartialResults(final boolean allowPartialResults) {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>    this.allowPartialResults = allowPartialResults;<a name="line.828"></a>
-<span class="sourceLineNo">829</span>    return this;<a name="line.829"></a>
+<span class="sourceLineNo">813</span>  public Scan setAllowPartialResults(final boolean allowPartialResults) {<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    this.allowPartialResults = allowPartialResults;<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    return this;<a name="line.815"></a>
+<span class="sourceLineNo">816</span>  }<a name="line.816"></a>
+<span class="sourceLineNo">817</span><a name="line.817"></a>
+<span class="sourceLineNo">818</span>  /**<a name="line.818"></a>
+<span class="sourceLineNo">819</span>   * @return true when the constructor of this scan understands that the results they will see may<a name="line.819"></a>
+<span class="sourceLineNo">820</span>   *         only represent a partial portion of a row. The entire row would be retrieved by<a name="line.820"></a>
+<span class="sourceLineNo">821</span>   *         subsequent calls to {@link ResultScanner#next()}<a name="line.821"></a>
+<span class="sourceLineNo">822</span>   */<a name="line.822"></a>
+<span class="sourceLineNo">823</span>  public boolean getAllowPartialResults() {<a name="line.823"></a>
+<span class="sourceLineNo">824</span>    return allowPartialResults;<a name="line.824"></a>
+<span class="sourceLineNo">825</span>  }<a name="line.825"></a>
+<span class="sourceLineNo">826</span><a name="line.826"></a>
+<span class="sourceLineNo">827</span>  @Override<a name="line.827"></a>
+<span class="sourceLineNo">828</span>  public Scan setLoadColumnFamiliesOnDemand(boolean value) {<a name="line.828"></a>
+<span class="sourceLineNo">829</span>    return (Scan) super.setLoadColumnFamiliesOnDemand(value);<a name="line.829"></a>
 <span class="sourceLineNo">830</span>  }<a name="line.830"></a>
 <span class="sourceLineNo">831</span><a name="line.831"></a>
 <span class="sourceLineNo">832</span>  /**<a name="line.832"></a>
-<span class="sourceLineNo">833</span>   * @return true when the constructor of this scan understands that the results they will see may<a name="line.833"></a>
-<span class="sourceLineNo">834</span>   *         only represent a partial portion of a row. The entire row would be retrieved by<a name="line.834"></a>
-<span class="sourceLineNo">835</span>   *         subsequent calls to {@link ResultScanner#next()}<a name="line.835"></a>
-<span class="sourceLineNo">836</span>   */<a name="line.836"></a>
-<span class="sourceLineNo">837</span>  public boolean getAllowPartialResults() {<a name="line.837"></a>
-<span class="sourceLineNo">838</span>    return allowPartialResults;<a name="line.838"></a>
-<span class="sourceLineNo">839</span>  }<a name="line.839"></a>
-<span class="sourceLineNo">840</span><a name="line.840"></a>
-<span class="sourceLineNo">841</span>  @Override<a name="line.841"></a>
-<span class="sourceLineNo">842</span>  public Scan setLoadColumnFamiliesOnDemand(boolean value) {<a name="line.842"></a>
-<span class="sourceLineNo">843</span>    return (Scan) super.setLoadColumnFamiliesOnDemand(value);<a name="line.843"></a>
-<span class="sourceLineNo">844</span>  }<a name="line.844"></a>
-<span class="sourceLineNo">845</span><a name="line.845"></a>
-<span class="sourceLineNo">846</span>  /**<a name="line.846"></a>
-<span class="sourceLineNo">847</span>   * Compile the table and column family (i.e. schema) information<a name="line.847"></a>
-<span class="sourceLineNo">848</span>   * into a String. Useful for parsing and aggregation by debugging,<a name="line.848"></a>
-<span class="sourceLineNo">849</span>   * logging, and administration tools.<a name="line.849"></a>
-<span class="sourceLineNo">850</span>   * @return Map<a name="line.850"></a>
-<span class="sourceLineNo">851</span>   */<a name="line.851"></a>
-<span class="sourceLineNo">852</span>  @Override<a name="line.852"></a>
-<span class="sourceLineNo">853</span>  public Map&lt;String, Object&gt; getFingerprint() {<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    Map&lt;String, Object&gt; map = new HashMap&lt;&gt;();<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    List&lt;String&gt; families = new ArrayList&lt;&gt;();<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    if(this.familyMap.isEmpty()) {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      map.put("families", "ALL");<a name="line.857"></a>
-<span class="sourceLineNo">858</span>      return map;<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    } else {<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      map.put("families", families);<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    }<a name="line.861"></a>
-<span class="sourceLineNo">862</span>    for (Map.Entry&lt;byte [], NavigableSet&lt;byte[]&gt;&gt; entry :<a name="line.862"></a>
-<span class="sourceLineNo">863</span>        this.familyMap.entrySet()) {<a name="line.863"></a>
-<span class="sourceLineNo">864</span>      families.add(Bytes.toStringBinary(entry.getKey()));<a name="line.864"></a>
-<span class="sourceLineNo">865</span>    }<a name="line.865"></a>
-<span class="sourceLineNo">866</span>    return map;<a name="line.866"></a>
-<span class="sourceLineNo">867</span>  }<a name="line.867"></a>
-<span class="sourceLineNo">868</span><a name="line.868"></a>
-<span class="sourceLineNo">869</span>  /**<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   * Compile the details beyond the scope of getFingerprint (row, columns,<a name="line.870"></a>
-<span class="sourceLineNo">871</span>   * timestamps, etc.) into a Map along with the fingerprinted information.<a name="line.871"></a>
-<span class="sourceLineNo">872</span>   * Useful for debugging, logging, and administration tools.<a name="line.872"></a>
-<span class="sourceLineNo">873</span>   * @param maxCols a limit on the number of columns output prior to truncation<a name="line.873"></a>
-<span class="sourceLineNo">874</span>   * @return Map<a name="line.874"></a>
-<span class="sourceLineNo">875</span>   */<a name="line.875"></a>
-<span class="sourceLineNo">876</span>  @Override<a name="line.876"></a>
-<span class="sourceLineNo">877</span>  public Map&lt;String, Object&gt; toMap(int maxCols) {<a name="line.877"></a>
-<span class="sourceLineNo">878</span>    // start with the fingerpring map and build on top of it<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    Map&lt;String, Object&gt; map = getFingerprint();<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    // map from families to column list replaces fingerprint's list of families<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    Map&lt;String, List&lt;String&gt;&gt; familyColumns = new HashMap&lt;&gt;();<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    map.put("families", familyColumns);<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    // add scalar information first<a name="line.883"></a>
-<span class="sourceLineNo">884</span>    map.put("startRow", Bytes.toStringBinary(this.startRow));<a name="line.884"></a>
-<span class="sourceLineNo">885</span>    map.put("stopRow", Bytes.toStringBinary(this.stopRow));<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    map.put("maxVersions", this.maxVersions);<a name="line.886"></a>
-<span class="sourceLineNo">887</span>    map.put("batch", this.batch);<a name="line.887"></a>
-<span class="sourceLineNo">888</span>    map.put("caching", this.caching);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    map.put("maxResultSize", this.maxResultSize);<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    map.put("cacheBlocks", this.cacheBlocks);<a name="line.890"></a>
-<span class="sourceLineNo">891</span>    map.put("loadColumnFamiliesOnDemand", this.loadColumnFamiliesOnDemand);<a name="line.891"></a>
-<span class="sourceLineNo">892</span>    List&lt;Long&gt; timeRange = new ArrayList&lt;&gt;(2);<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    timeRange.add(this.tr.getMin());<a name="line.893"></a>
-<span class="sourceLineNo">894</span>    timeRange.add(this.tr.getMax());<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    map.put("timeRange", timeRange);<a name="line.895"></a>
-<span class="sourceLineNo">896</span>    int colCount = 0;<a name="line.896"></a>
-<span class="sourceLineNo">897</span>    // iterate through affected families and list out up to maxCols columns<a name="line.897"></a>
-<span class="sourceLineNo">898</span>    for (Map.Entry&lt;byte [], NavigableSet&lt;byte[]&gt;&gt; entry :<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      this.familyMap.entrySet()) {<a name="line.899"></a>
-<span class="sourceLineNo">900</span>      List&lt;String&gt; columns = new ArrayList&lt;&gt;();<a name="line.900"></a>
-<span class="sourceLineNo">901</span>      familyColumns.put(Bytes.toStringBinary(entry.getKey()), columns);<a name="line.901"></a>
-<span class="sourceLineNo">902</span>      if(entry.getValue() == null) {<a name="line.902"></a>
-<span class="sourceLineNo">903</span>        colCount++;<a name="line.903"></a>
-<span class="sourceLineNo">904</span>        --maxCols;<a name="line.904"></a>
-<span class="sourceLineNo">905</span>        columns.add("ALL");<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      } else {<a name="line.906"></a>
-<span class="sourceLineNo">907</span>        colCount += entry.getValue().size();<a name="line.907"></a>
-<span class="sourceLineNo">908</span>        if (maxCols &lt;= 0) {<a name="line.908"></a>
-<span class="sourceLineNo">909</span>          continue;<a name="line.909"></a>
-<span class="sourceLineNo">910</span>        }<a name="line.910"></a>
-<span class="sourceLineNo">911</span>        for (byte [] column : entry.getValue()) {<a name="line.911"></a>
-<span class="sourceLineNo">912</span>          if (--maxCols &lt;= 0) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>            continue;<a name="line.913"></a>
-<span class="sourceLineNo">914</span>          }<a name="line.914"></a>
-<span class="sourceLineNo">915</span>          columns.add(Bytes.toStringBinary(column));<a name="line.915"></a>
-<span class="sourceLineNo">916</span>        }<a name="line.916"></a>
-<span class="sourceLineNo">917</span>      }<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    }<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    map.put("totalColumns", colCount);<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    if (this.filter != null) {<a name="line.920"></a>
-<span class="sourceLineNo">921</span>      map.put("filter", this.filter.toString());<a name="line.921"></a>
-<span class="sourceLineNo">922</span>    }<a name="line.922"></a>
-<span class="sourceLineNo">923</span>    // add the id if set<a name="line.923"></a>
-<span class="sourceLineNo">924</span>    if (getId() != null) {<a name="line.924"></a>
-<span class="sourceLineNo">925</span>      map.put("id", getId());<a name="line.925"></a>
-<span class="sourceLineNo">926</span>    }<a name="line.926"></a>
-<span class="sourceLineNo">927</span>    return map;<a name="line.927"></a>
-<span class="sourceLineNo">928</span>  }<a name="line.928"></a>
-<span class="sourceLineNo">929</span><a name="line.929"></a>
-<span class="sourceLineNo">930</span>  /**<a name="line.930"></a>
-<span class="sourceLineNo">931</span>   * Enable/disable "raw" mode for this scan.<a name="line.931"></a>
-<span class="sourceLineNo">932</span>   * If "raw" is enabled the scan will return all<a name="line.932"></a>
-<span class="sourceLineNo">933</span>   * delete marker and deleted rows that have not<a name="line.933"></a>
-<span class="sourceLineNo">934</span>   * been collected, yet.<a name="line.934"></a>
-<span class="sourceLineNo">935</span>   * This is mostly useful for Scan on column families<a name="line.935"></a>
-<span class="sourceLineNo">936</span>   * that have KEEP_DELETED_ROWS enabled.<a name="line.936"></a>
-<span class="sourceLineNo">937</span>   * It is an error to specify any column when "raw" is set.<a name="line.937"></a>
-<span class="sourceLineNo">938</span>   * @param raw True/False to enable/disable "raw" mode.<a name="line.938"></a>
-<span class="sourceLineNo">939</span>   */<a name="line.939"></a>
-<span class="sourceLineNo">940</span>  public Scan setRaw(boolean raw) {<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    setAttribute(RAW_ATTR, Bytes.toBytes(raw));<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    return this;<a name="line.942"></a>
-<span class="sourceLineNo">943</span>  }<a name="line.943"></a>
-<span class="sourceLineNo">944</span><a name="line.944"></a>
-<span class="sourceLineNo">945</span>  /**<a name="line.945"></a>
-<span class="sourceLineNo">946</span>   * @return True if this Scan is in "raw" mode.<a name="line.946"></a>
-<span class="sourceLineNo">947</span>   */<a name="line.947"></a>
-<span class="sourceLineNo">948</span>  public boolean isRaw() {<a name="line.948"></a>
-<span class="sourceLineNo">949</span>    byte[] attr = getAttribute(RAW_ATTR);<a name="line.949"></a>
-<span class="sourceLineNo">950</span>    return attr == null ? false : Bytes.toBoolean(attr);<a name="line.950"></a>
-<span class="sourceLineNo">951</span>  }<a name="line.951"></a>
-<span class="sourceLineNo">952</span><a name="line.952"></a>
-<span class="sourceLineNo">953</span>  /**<a name="line.953"></a>
-<span class="sourceLineNo">954</span>   * Set whether this scan is a small scan<a name="line.954"></a>
-<span class="sourceLineNo">955</span>   * &lt;p&gt;<a name="line.955"></a>
-<span class="sourceLineNo">956</span>   * Small scan should use pread and big scan can use seek + read seek + read is fast but can cause<a name="line.956"></a>
-<span class="sourceLineNo">957</span>   * two problem (1) resource contention (2) cause too much network io [89-fb] Using pread for<a name="line.957"></a>
-<span class="sourceLineNo">958</span>   * non-compaction read request https://issues.apache.org/jira/browse/HBASE-7266 On the other hand,<a name="line.958"></a>
-<span class="sourceLineNo">959</span>   * if setting it true, we would do openScanner,next,closeScanner in one RPC call. It means the<a name="line.959"></a>
-<span class="sourceLineNo">960</span>   * better performance for small scan. [HBASE-9488]. Generally, if the scan range is within one<a name="line.960"></a>
-<span class="sourceLineNo">961</span>   * data block(64KB), it could be considered as a small scan.<a name="line.961"></a>
-<span class="sourceLineNo">962</span>   * @param small<a name="line.962"></a>
-<span class="sourceLineNo">963</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use {@link #setLimit(int)} and<a name="line.963"></a>
-<span class="sourceLineNo">964</span>   *   {@link #setReadType(ReadType)} instead. And for the one rpc optimization, now we will also<a name="line.964"></a>
-<span class="sourceLineNo">965</span>   *   fetch data when openScanner, and if the number of rows reaches the limit then we will close<a name="line.965"></a>
-<span class="sourceLineNo">966</span>   *   the scanner automatically which means we will fall back to one rpc.<a name="line.966"></a>
-<span class="sourceLineNo">967</span>   * @see #setLimit(int)<a name="line.967"></a>
-<span class="sourceLineNo">968</span>   * @see #setReadType(ReadType)<a name="line.968"></a>
+<span class="sourceLineNo">833</span>   * Compile the table and column family (i.e. schema) information<a name="line.833"></a>
+<span class="sourceLineNo">834</span>   * into a String. Useful for parsing and aggregation by debugging,<a name="line.834"></a>
+<span class="sourceLineNo">835</span>   * logging, and administration tools.<a name="line.835"></a>
+<span class="sourceLineNo">836</span>   * @return Map<a name="line.836"></a>
+<span class="sourceLineNo">837</span>   */<a name="line.837"></a>
+<span class="sourceLineNo">838</span>  @Override<a name="line.838"></a>
+<span class="sourceLineNo">839</span>  public Map&lt;String, Object&gt; getFingerprint() {<a name="line.839"></a>
+<span class="sourceLineNo">840</span>    Map&lt;String, Object&gt; map = new HashMap&lt;&gt;();<a name="line.840"></a>
+<span class="sourceLineNo">841</span>    List&lt;String&gt; families = new ArrayList&lt;&gt;();<a name="line.841"></a>
+<span class="sourceLineNo">842</span>    if(this.familyMap.isEmpty()) {<a name="line.842"></a>
+<span class="sourceLineNo">843</span>      map.put("families", "ALL");<a name="line.843"></a>
+<span class="sourceLineNo">844</span>      return map;<a name="line.844"></a>
+<span class="sourceLineNo">845</span>    } else {<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      map.put("families", families);<a name="line.846"></a>
+<span class="sourceLineNo">847</span>    }<a name="line.847"></a>
+<span class="sourceLineNo">848</span>    for (Map.Entry&lt;byte [], NavigableSet&lt;byte[]&gt;&gt; entry :<a name="line.848"></a>
+<span class="sourceLineNo">849</span>        this.familyMap.entrySet()) {<a name="line.849"></a>
+<span class="sourceLineNo">850</span>      families.add(Bytes.toStringBinary(entry.getKey()));<a name="line.850"></a>
+<span class="sourceLineNo">851</span>    }<a name="line.851"></a>
+<span class="sourceLineNo">852</span>    return map;<a name="line.852"></a>
+<span class="sourceLineNo">853</span>  }<a name="line.853"></a>
+<span class="sourceLineNo">854</span><a name="line.854"></a>
+<span class="sourceLineNo">855</span>  /**<a name="line.855"></a>
+<span class="sourceLineNo">856</span>   * Compile the details beyond the scope of getFingerprint (row, columns,<a name="line.856"></a>
+<span class="sourceLineNo">857</span>   * timestamps, etc.) into a Map along with the fingerprinted information.<a name="line.857"></a>
+<span class="sourceLineNo">858</span>   * Useful for debugging, logging, and administration tools.<a name="line.858"></a>
+<span class="sourceLineNo">859</span>   * @param maxCols a limit on the number of columns output prior to truncation<a name="line.859"></a>
+<span class="sourceLineNo">860</span>   * @return Map<a name="line.860"></a>
+<span class="sourceLineNo">861</span>   */<a name="line.861"></a>
+<span class="sourceLineNo">862</span>  @Override<a name="line.862"></a>
+<span class="sourceLineNo">863</span>  public Map&lt;String, Object&gt; toMap(int maxCols) {<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    // start with the fingerpring map and build on top of it<a name="line.864"></a>
+<span class="sourceLineNo">865</span>    Map&lt;String, Object&gt; map = getFingerprint();<a name="line.865"></a>
+<span class="sourceLineNo">866</span>    // map from families to column list replaces fingerprint's list of families<a name="line.866"></a>
+<span class="sourceLineNo">867</span>    Map&lt;String, List&lt;String&gt;&gt; familyColumns = new HashMap&lt;&gt;();<a name="line.867"></a>
+<span class="sourceLineNo">868</span>    map.put("families", familyColumns);<a name="line.868"></a>
+<span class="sourceLineNo">869</span>    // add scalar information first<a name="line.869"></a>
+<span class="sourceLineNo">870</span>    map.put("startRow", Bytes.toStringBinary(this.startRow));<a name="line.870"></a>
+<span class="sourceLineNo">871</span>    map.put("stopRow", Bytes.toStringBinary(this.stopRow));<a name="line.871"></a>
+<span class="sourceLineNo">872</span>    map.put("maxVersions", this.maxVersions);<a name="line.872"></a>
+<span class="sourceLineNo">873</span>    map.put("batch", this.batch);<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    map.put("caching", this.caching);<a name="line.874"></a>
+<span class="sourceLineNo">875</span>    map.put("maxResultSize", this.maxResultSize);<a name="line.875"></a>
+<span class="sourceLineNo">876</span>    map.put("cacheBlocks", this.cacheBlocks);<a name="line.876"></a>
+<span class="sourceLineNo">877</span>    map.put("loadColumnFamiliesOnDemand", this.loadColumnFamiliesOnDemand);<a name="line.877"></a>
+<span class="sourceLineNo">878</span>    List&lt;Long&gt; timeRange = new ArrayList&lt;&gt;(2);<a name="line.878"></a>
+<span class="sourceLineNo">879</span>    timeRange.add(this.tr.getMin());<a name="line.879"></a>
+<span class="sourceLineNo">880</span>    timeRange.add(this.tr.getMax());<a name="line.880"></a>
+<span class="sourceLineNo">881</span>    map.put("timeRange", timeRange);<a name="line.881"></a>
+<span class="sourceLineNo">882</span>    int colCount = 0;<a name="line.882"></a>
+<span class="sourceLineNo">883</span>    // iterate through affected families and list out up to maxCols columns<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    for (Map.Entry&lt;byte [], NavigableSet&lt;byte[]&gt;&gt; entry :<a name="line.884"></a>
+<span class="sourceLineNo">885</span>      this.familyMap.entrySet()) {<a name="line.885"></a>
+<span class="sourceLineNo">886</span>      List&lt;String&gt; columns = new ArrayList&lt;&gt;();<a name="line.886"></a>
+<span class="sourceLineNo">887</span>      familyColumns.put(Bytes.toStringBinary(entry.getKey()), columns);<a name="line.887"></a>
+<span class="sourceLineNo">888</span>      if(entry.getValue() == null) {<a name="line.888"></a>
+<span class="sourceLineNo">889</span>        colCount++;<a name="line.889"></a>
+<span class="sourceLineNo">890</span>        --maxCols;<a name="line.890"></a>
+<span class="sourceLineNo">891</span>        columns.add("ALL");<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      } else {<a name="line.892"></a>
+<span class="sourceLineNo">893</span>        colCount += entry.getValue().size();<a name="line.893"></a>
+<span class="sourceLineNo">894</span>        if (maxCols &lt;= 0) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>          continue;<a name="line.895"></a>
+<span class="sourceLineNo">896</span>        }<a name="line.896"></a>
+<span class="sourceLineNo">897</span>        for (byte [] column : entry.getValue()) {<a name="line.897"></a>
+<span class="sourceLineNo">898</span>          if (--maxCols &lt;= 0) {<a name="line.898"></a>
+<span class="sourceLineNo">899</span>            continue;<a name="line.899"></a>
+<span class="sourceLineNo">900</span>          }<a name="line.900"></a>
+<span class="sourceLineNo">901</span>          columns.add(Bytes.toStringBinary(column));<a name="line.901"></a>
+<span class="sourceLineNo">902</span>        }<a name="line.902"></a>
+<span class="sourceLineNo">903</span>      }<a name="line.903"></a>
+<span class="sourceLineNo">904</span>    }<a name="line.904"></a>
+<span class="sourceLineNo">905</span>    map.put("totalColumns", colCount);<a name="line.905"></a>
+<span class="sourceLineNo">906</span>    if (this.filter != null) {<a name="line.906"></a>
+<span class="sourceLineNo">907</span>      map.put("filter", this.filter.toString());<a name="line.907"></a>
+<span class="sourceLineNo">908</span>    }<a name="line.908"></a>
+<span class="sourceLineNo">909</span>    // add the id if set<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    if (getId() != null) {<a name="line.910"></a>
+<span class="sourceLineNo">911</span>      map.put("id", getId());<a name="line.911"></a>
+<span class="sourceLineNo">912</span>    }<a name="line.912"></a>
+<span class="sourceLineNo">913</span>    return map;<a name="line.913"></a>
+<span class="sourceLineNo">914</span>  }<a name="line.914"></a>
+<span class="sourceLineNo">915</span><a name="line.915"></a>
+<span class="sourceLineNo">916</span>  /**<a name="line.916"></a>
+<span class="sourceLineNo">917</span>   * Enable/disable "raw" mode for this scan.<a name="line.917"></a>
+<span class="sourceLineNo">918</span>   * If "raw" is enabled the scan will return all<a name="line.918"></a>
+<span class="sourceLineNo">919</span>   * delete marker and deleted rows that have not<a name="line.919"></a>
+<span class="sourceLineNo">920</span>   * been collected, yet.<a name="line.920"></a>
+<span class="sourceLineNo">921</span>   * This is mostly useful for Scan on column families<a name="line.921"></a>
+<span class="sourceLineNo">922</span>   * that have KEEP_DELETED_ROWS enabled.<a name="line.922"></a>
+<span class="sourceLineNo">923</span>   * It is an error to specify any column when "raw" is set.<a name="line.923"></a>
+<span class="sourceLineNo">924</span>   * @param raw True/False to enable/disable "raw" mode.<a name="line.924"></a>
+<span class="sourceLineNo">925</span>   */<a name="line.925"></a>
+<span class="sourceLineNo">926</span>  public Scan setRaw(boolean raw) {<a name="line.926"></a>
+<span class="sourceLineNo">927</span>    setAttribute(RAW_ATTR, Bytes.toBytes(raw));<a name="line.927"></a>
+<span class="sourceLineNo">928</span>    return this;<a name="line.928"></a>
+<span class="sourceLineNo">929</span>  }<a name="line.929"></a>
+<span class="sourceLineNo">930</span><a name="line.930"></a>
+<span class="sourceLineNo">931</span>  /**<a name="line.931"></a>
+<span class="sourceLineNo">932</span>   * @return True if this Scan is in "raw" mode.<a name="line.932"></a>
+<span class="sourceLineNo">933</span>   */<a name="line.933"></a>
+<span class="sourceLineNo">934</span>  public boolean isRaw() {<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    byte[] attr = getAttribute(RAW_ATTR);<a name="line.935"></a>
+<span class="sourceLineNo">936</span>    return attr == null ? false : Bytes.toBoolean(attr);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>  }<a name="line.937"></a>
+<span class="sourceLineNo">938</span><a name="line.938"></a>
+<span class="sourceLineNo">939</span>  /**<a name="line.939"></a>
+<span class="sourceLineNo">940</span>   * Set whether this scan is a small scan<a name="line.940"></a>
+<span class="sourceLineNo">941</span>   * &lt;p&gt;<a name="line.941"></a>
+<span class="sourceLineNo">942</span>   * Small scan should use pread and big scan can use seek + read seek + read is fast but can cause<a name="line.942"></a>
+<span class="sourceLineNo">943</span>   * two problem (1) resource contention (2) cause too much network io [89-fb] Using pread for<a name="line.943"></a>
+<span class="sourceLineNo">944</span>   * non-compaction read request https://issues.apache.org/jira/browse/HBASE-7266 On the other hand,<a name="line.944"></a>
+<span class="sourceLineNo">945</span>   * if setting it true, we would do openScanner,next,closeScanner in one RPC call. It means the<a name="line.945"></a>
+<span class="sourceLineNo">946</span>   * better performance for small scan. [HBASE-9488]. Generally, if the scan range is within one<a name="line.946"></a>
+<span class="sourceLineNo">947</span>   * data block(64KB), it could be considered as a small scan.<a name="line.947"></a>
+<span class="sourceLineNo">948</span>   * @param small<a name="line.948"></a>
+<span class="sourceLineNo">949</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use {@link #setLimit(int)} and<a name="line.949"></a>
+<span class="sourceLineNo">950</span>   *   {@link #setReadType(ReadType)} instead. And for the one rpc optimization, now we will also<a name="line.950"></a>
+<span class="sourceLineNo">951</span>   *   fetch data when openScanner, and if the number of rows reaches the limit then we will close<a name="line.951"></a>
+<span class="sourceLineNo">952</span>   *   the scanner automatically which means we will fall back to one rpc.<a name="line.952"></a>
+<span class="sourceLineNo">953</span>   * @see #setLimit(int)<a name="line.953"></a>
+<span class="sourceLineNo">954</span>   * @see #setReadType(ReadType)<a name="line.954"></a>
+<span class="sourceLineNo">955</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17045"&gt;HBASE-17045&lt;/a&gt;<a name="line.955"></a>
+<span class="sourceLineNo">956</span>   */<a name="line.956"></a>
+<span class="sourceLineNo">957</span>  @Deprecated<a name="line.957"></a>
+<span class="sourceLineNo">958</span>  public Scan setSmall(boolean small) {<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    this.small = small;<a name="line.959"></a>
+<span class="sourceLineNo">960</span>    this.readType = ReadType.PREAD;<a name="line.960"></a>
+<span class="sourceLineNo">961</span>    return this;<a name="line.961"></a>
+<span class="sourceLineNo">962</span>  }<a name="line.962"></a>
+<span class="sourceLineNo">963</span><a name="line.963"></a>
+<span class="sourceLineNo">964</span>  /**<a name="line.964"></a>
+<span class="sourceLineNo">965</span>   * Get whether this scan is a small scan<a name="line.965"></a>
+<span class="sourceLineNo">966</span>   * @return true if small scan<a name="line.966"></a>
+<span class="sourceLineNo">967</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. See the comment of<a name="line.967"></a>
+<span class="sourceLineNo">968</span>   *   {@link #setSmall(boolean)}<a name="line.968"></a>
 <span class="sourceLineNo">969</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17045"&gt;HBASE-17045&lt;/a&gt;<a name="line.969"></a>
 <span class="sourceLineNo">970</span>   */<a name="line.970"></a>
 <span class="sourceLineNo">971</span>  @Deprecated<a name="line.971"></a>
-<span class="sourceLineNo">972</span>  public Scan setSmall(boolean small) {<a name="line.972"></a>
-<span class="sourceLineNo">973</span>    this.small = small;<a name="line.973"></a>
-<span class="sourceLineNo">974</span>    this.readType = ReadType.PREAD;<a name="line.974"></a>
-<span class="sourceLineNo">975</span>    return this;<a name="line.975"></a>
-<span class="sourceLineNo">976</span>  }<a name="line.976"></a>
-<span class="sourceLineNo">977</span><a name="line.977"></a>
-<span class="sourceLineNo">978</span>  /**<a name="line.978"></a>
-<span class="sourceLineNo">979</span>   * Get whether this scan is a small scan<a name="line.979"></a>
-<span class="sourceLineNo">980</span>   * @return true if small scan<a name="line.980"></a>
-<span class="sourceLineNo">981</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. See the comment of<a name="line.981"></a>
-<span class="sourceLineNo">982</span>   *   {@link #setSmall(boolean)}<a name="line.982"></a>
-<span class="sourceLineNo">983</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17045"&gt;HBASE-17045&lt;/a&gt;<a name="line.983"></a>
-<span class="sourceLineNo">984</span>   */<a name="line.984"></a>
-<span class="sourceLineNo">985</span>  @Deprecated<a name="line.985"></a>
-<span class="sourceLineNo">986</span>  public boolean isSmall() {<a name="line.986"></a>
-<span class="sourceLineNo">987</span>    return small;<a name="line.987"></a>
-<span class="sourceLineNo">988</span>  }<a name="line.988"></a>
-<span class="sourceLineNo">989</span><a name="line.989"></a>
-<span class="sourceLineNo">990</span>  @Override<a name="line.990"></a>
-<span class="sourceLineNo">991</span>  public Scan setAttribute(String name, byte[] value) {<a name="line.991"></a>
-<span class="sourceLineNo">992</span>    return (Scan) super.setAttribute(name, value);<a name="line.992"></a>
-<span class="sourceLineNo">993</span>  }<a name="line.993"></a>
-<span class="sourceLineNo">994</span><a name="line.994"></a>
-<span class="sourceLineNo">995</span>  @Override<a name="line.995"></a>
-<span class="sourceLineNo">996</span>  public Scan setId(String id) {<a name="line.996"></a>
-<span class="sourceLineNo">997</span>    return (Scan) super.setId(id);<a name="line.997"></a>
-<span class="sourceLineNo">998</span>  }<a name="line.998"></a>
-<span class="sourceLineNo">999</span><a name="line.999"></a>
-<span class="sourceLineNo">1000</span>  @Override<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  public Scan setAuthorizations(Authorizations authorizations) {<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>    return (Scan) super.setAuthorizations(authorizations);<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>  }<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span><a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>  @Override<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>  public Scan setACL(Map&lt;String, Permission&gt; perms) {<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>    return (Scan) super.setACL(perms);<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>  }<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span><a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>  @Override<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>  public Scan setACL(String user, Permission perms) {<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    return (Scan) super.setACL(user, perms);<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>  }<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span><a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>  @Override<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>  public Scan setConsistency(Consistency consistency) {<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>    return (Scan) super.setConsistency(consistency);<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>  }<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span><a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>  @Override<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>  public Scan setReplicaId(int Id) {<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>    return (Scan) super.setReplicaId(Id);<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>  }<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span><a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>  @Override<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>  public Scan setIsolationLevel(IsolationLevel level) {<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span>    return (Scan) super.setIsolationLevel(level);<a name="line.1027"></a>
+<span class="sourceLineNo">972</span>  public boolean isSmall() {<a name="line.972"></a>
+<span class="sourceLineNo">973</span>    return small;<a name="line.973"></a>
+<span class="sourceLineNo">974</span>  }<a name="line.974"></a>
+<span class="sourceLineNo">975</span><a name="line.975"></a>
+<span class="sourceLineNo">976</span>  @Override<a name="line.976"></a>
+<span class="sourceLineNo">977</span>  public Scan setAttribute(String name, byte[] value) {<a name="line.977"></a>
+<span class="sourceLineNo">978</span>    return (Scan) super.setAttribute(name, value);<a name="line.978"></a>
+<span class="sourceLineNo">979</span>  }<a name="line.979"></a>
+<span class="sourceLineNo">980</span><a name="line.980"></a>
+<span class="sourceLineNo">981</span>  @Override<a name="line.981"></a>
+<span class="sourceLineNo">982</span>  public Scan setId(String id) {<a name="line.982"></a>
+<span class="sourceLineNo">983</span>    return (Scan) super.setId(id);<a name="line.983"></a>
+<span class="sourceLineNo">984</span>  }<a name="line.984"></a>
+<span class="sourceLineNo">985</span><a name="line.985"></a>
+<span class="sourceLineNo">986</span>  @Override<a name="line.986"></a>
+<span class="sourceLineNo">987</span>  public Scan setAuthorizations(Authorizations authorizations) {<a name="line.987"></a>
+<span class="sourceLineNo">988</span>    return (Scan) super.setAuthorizations(authorizations);<a name="line.988"></a>
+<span class="sourceLineNo">989</span>  }<a name="line.989"></a>
+<span class="sourceLineNo">990</span><a name="line.990"></a>
+<span class="sourceLineNo">991</span>  @Override<a name="line.991"></a>
+<span class="sourceLineNo">992</span>  public Scan setACL(Map&lt;String, Permission&gt; perms) {<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    return (Scan) super.setACL(perms);<a name="line.993"></a>
+<span class="sourceLineNo">994</span>  }<a name="line.994"></a>
+<span class="sourceLineNo">995</span><a name="line.995"></a>
+<span class="sourceLineNo">996</span>  @Override<a name="line.996"></a>
+<span class="sourceLineNo">997</span>  public Scan setACL(String user, Permission perms) {<a name="line.997"></a>
+<span class="sourceLineNo">998</span>    return (Scan) super.setACL(user, perms);<a name="line.998"></a>
+<span class="sourceLineNo">999</span>  }<a name="line.999"></a>
+<span class="sourceLineNo">1000</span><a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>  @Override<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>  public Scan setConsistency(Consistency consistency) {<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>    return (Scan) super.setConsistency(consistency);<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>  }<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span><a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>  @Override<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span>  public Scan setReplicaId(int Id) {<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>    return (Scan) super.setReplicaId(Id);<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>  }<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span><a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>  @Override<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>  public Scan setIsolationLevel(IsolationLevel level) {<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>    return (Scan) super.setIsolationLevel(level);<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>  }<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span><a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>  @Override<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>  public Scan setPriority(int priority) {<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>    return (Scan) super.setPriority(priority);<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>  }<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span><a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>  /**<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>   * Enable collection of {@link ScanMetrics}. For advanced users.<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>   * @param enabled Set to true to enable accumulating scan metrics<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>   */<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>  public Scan setScanMetricsEnabled(final boolean enabled) {<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>    setAttribute(Scan.SCAN_ATTRIBUTES_METRICS_ENABLE, Bytes.toBytes(Boolean.valueOf(enabled)));<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    return this;<a name="line.1027"></a>
 <span class="sourceLineNo">1028</span>  }<a name="line.1028"></a>
 <span class="sourceLineNo">1029</span><a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>  @Override<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>  public Scan setPriority(int priority) {<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>    return (Scan) super.setPriority(priority);<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>  }<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span><a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>  /**<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>   * Enable collection of {@link ScanMetrics}. For advanced users.<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>   * @param enabled Set to true to enable accumulating scan metrics<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>   */<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>  public Scan setScanMetricsEnabled(final boolean enabled) {<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span>    setAttribute(Scan.SCAN_ATTRIBUTES_METRICS_ENABLE, Bytes.toBytes(Boolean.valueOf(enabled)));<a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>    return this;<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>  }<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span><a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>  /**<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>   * @return True if collection of scan metrics is enabled. For advanced users.<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>   */<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>  public boolean isScanMetricsEnabled() {<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>    byte[] attr = getAttribute(Scan.SCAN_ATTRIBUTES_METRICS_ENABLE);<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>    return attr == null ? false : Bytes.toBoolean(attr);<a name="line.1049"></a>
+<span class="sourceLineNo">1030</span>  /**<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>   * @return True if collection of scan metrics is enabled. For advanced users.<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>   */<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>  public boolean isScanMetricsEnabled() {<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>    byte[] attr = getAttribute(Scan.SCAN_ATTRIBUTES_METRICS_ENABLE);<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>    return attr == null ? false : Bytes.toBoolean(attr);<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>  }<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>  public Boolean isAsyncPrefetch() {<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>    return asyncPrefetch;<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>  }<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span><a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>  /**<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>   * @deprecated Since 3.0.0, will be removed in 4.0.0. After building sync client upon async<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>   *             client, the implementation is always 'async prefetch', so this flag is useless now.<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>   */<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span>  @Deprecated<a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>  public Scan setAsyncPrefetch(boolean asyncPrefetch) {<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>    this.asyncPrefetch = asyncPrefetch;<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>    return this;<a name="line.1049"></a>
 <span class="sourceLineNo">1050</span>  }<a name="line.1050"></a>
 <span class="sourceLineNo">1051</span><a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>  public Boolean isAsyncPrefetch() {<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>    return asyncPrefetch;<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>  }<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span><a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>  /**<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>   * @deprecated Since 3.0.0, will be removed in 4.0.0. After building sync client upon async<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>   *             client, the implementation is always 'async prefetch', so this flag is useless now.<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>   */<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>  @Deprecated<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>  public Scan setAsyncPrefetch(boolean asyncPrefetch) {<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>    this.asyncPrefetch = asyncPrefetch;<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>    return this;<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>  }<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span><a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>  /**<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>   * @return the limit of rows for this scan<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>   */<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>  public int getLimit() {<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>    return limit;<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>  }<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span><a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>  /**<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>   * Set the limit of rows for this scan. We will terminate the scan if the number of returned rows<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>   * reaches this value.<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>   * &lt;p&gt;<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>   * This condition will be tested at last, after all other conditions such as stopRow, filter, etc.<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>   * @param limit the limit of rows for this scan<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>   * @return this<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>   */<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>  public Scan setLimit(int limit) {<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>    this.limit = limit;<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    return this;<a name="line.1083"></a>
+<span class="sourceLineNo">1052</span>  /**<a name="line.1052"></a>
+<span class="sourceLineNo">1053</span>   * @return the limit of rows for this scan<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>   */<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span>  public int getLimit() {<a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>    return limit;<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>  }<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span><a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>  /**<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>   * Set the limit of rows for this scan. We will terminate the scan if the number of returned rows<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>   * reaches this value.<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>   * &lt;p&gt;<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>   * This condition will be tested at last, after all other conditions such as stopRow, filter, etc.<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span>   * @param limit the limit of rows for this scan<a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>   * @return this<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>   */<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>  public Scan setLimit(int limit) {<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>    this.limit = limit;<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span>    return this;<a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>  }<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span><a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>  /**<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span>   * Call this when you only want to get one row. It will set {@code limit} to {@code 1}, and also<a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>   * set {@code readType} to {@link ReadType#PREAD}.<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>   * @return this<a name="line.1075"></a>
+<span class="sourceLineNo">1076</span>   */<a name="line.1076"></a>
+<span class="sourceLineNo">1077</span>  public Scan setOneRowLimit() {<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>    return setLimit(1).setReadType(ReadType.PREAD);<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>  }<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span><a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>  @InterfaceAudience.Public<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>  public enum ReadType {<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>    DEFAULT, STREAM, PREAD<a name="line.1083"></a>
 <span class="sourceLineNo">1084</span>  }<a name="line.1084"></a>
 <span class="sourceLineNo">1085</span><a name="line.1085"></a>
 <span class="sourceLineNo">1086</span>  /**<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>   * Call this when you only want to get one row. It will set {@code limit} to {@code 1}, and also<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>   * set {@code readType} to {@link ReadType#PREAD}.<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>   * @return this<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>   */<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>  public Scan setOneRowLimit() {<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>    return setLimit(1).setReadType(ReadType.PREAD);<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>  }<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span><a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>  @InterfaceAudience.Public<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>  public enum ReadType {<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    DEFAULT, STREAM, PREAD<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>  }<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span><a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>  /**<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>   * @return the read type for this scan<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>   */<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>  public ReadType getReadType() {<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>    return readType;<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>  }<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span><a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>  /**<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>   * Set the read type for this scan.<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>   * &lt;p&gt;<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>   * Notice that we may choose to use pread even if you specific {@link ReadType#STREAM} here. For<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>   * example, we will always use pread if this is a get scan.<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>   * @return this<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>   */<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>  public Scan setReadType(ReadType readType) {<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>    this.readType = readType;<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>    return this;<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>  }<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span><a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>  /**<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>   * Get the mvcc read point used to open a scanner.<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span>   */<a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>  long getMvccReadPoint() {<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>    return mvccReadPoint;<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>  }<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span><a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>  /**<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>   * Set the mvcc read point used to open a scanner.<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>   */<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>  Scan setMvccReadPoint(long mvccReadPoint) {<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>    this.mvccReadPoint = mvccReadPoint;<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>    return this;<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>  }<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span><a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>  /**<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>   * Set the mvcc read point to -1 which means do not use it.<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>   */<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>  Scan resetMvccReadPoint() {<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>    return setMvccReadPoint(-1L);<a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>  }<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span><a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>  /**<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>   * When the server is slow or we scan a table with many deleted data or we use a sparse filter,<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>   * the server will response heartbeat to prevent timeout. However the scanner will return a Result<a name="line.1143"></a>
-<span class="sourceLineNo">1144</span>   * only when client can do it. So if there are many heartbeats, the blocking time on<a name="line.1144"></a>
-<span class="sourceLineNo">1145</span>   * ResultScanner#next() may be very long, which is not friendly to online services.<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>   *<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>   * Set this to true then you can get a special Result whose #isCursor() returns true and is not<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>   * contains any real data. It only tells you where the server has scanned. You can call next<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span>   * to continue scanning or open a new scanner with this row key as start row whenever you want.<a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>   *<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>   * Users can get a cursor when and only when there is a response from the server but we can not<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>   * return a Result to users, for example, this response is a heartbeat or there are partial cells<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span>   * but users do not allow partial result.<a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>   *<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>   * Now the cursor is in row level which means the special Result will only contains a row key.<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>   * {@link Result#isCursor()}<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>   * {@link Result#getCursor()}<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>   * {@link Cursor}<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>   */<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>  public Scan setNeedCursorResult(boolean needCursorResult) {<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span>    this.needCursorResult = needCursorResult;<a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>    return this;<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>  }<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span><a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>  public boolean isNeedCursorResult() {<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>    return needCursorResult;<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>  }<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span><a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>  /**<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span>   * Create a new Scan with a cursor. It only set the position information like start row key.<a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>   * The others (like cfs, stop row, limit) should still be filled in by the user.<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>   * {@link Result#isCursor()}<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>   * {@link Result#getCursor()}<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>   * {@link Cursor}<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span>   */<a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>  public static Scan createScanFromCursor(Cursor cursor) {<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>    return new Scan().withStartRow(cursor.getRow());<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>  }<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>}<a name="line.1179"></a>
+<span class="sourceLineNo">1087</span>   * @return the read type for this scan<a name="line.1087"></a>
+<span class="sourceLineNo">1088</span>   */<a name="line.1088"></a>
+<span class="sourceLineNo">1089</span>  public ReadType getReadType() {<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>    return readType;<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>  }<a name="line.1091"></a>
+<span class="sourceLineNo">1092</span><a name="line.1092"></a>
+<span class="sourceLineNo">1093</span>  /**<a name="line.1093"></a>
+<span class="sourceLineNo">1094</span>   * Set the read type for this scan.<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>   * &lt;p&gt;<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>   * Notice that we may choose to use pread even if you specific {@link ReadType#STREAM} here. For<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>   * example, we will always use pread if this is a get scan.<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span>   * @return this<a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>   */<a name="line.1099"></a>
+<span class="sourceLineNo">1100</span>  public Scan setReadType(ReadType readType) {<a name="line.1100"></a>
+<span class="sourceLineNo">1101</span>    this.readType = readType;<a name="line.1101"></a>
+<span class="sourceLineNo">1102</span>    return this;<a name="line.1102"></a>
+<span class="sourceLineNo">1103</span>  }<a name="line.1103"></a>
+<span class="sourceLineNo">1104</span><a name="line.1104"></a>
+<span class="sourceLineNo">1105</span>  /**<a name="line.1105"></a>
+<span class="sourceLineNo">1106</span>   * Get the mvcc read point used to open a scanner.<a name="line.1106"></a>
+<span class="sourceLineNo">1107</span>   */<a name="line.1107"></a>
+<span class="sourceLineNo">1108</span>  long getMvccReadPoint() {<a name="line.1108"></a>
+<span class="sourceLineNo">1109</span>    return mvccReadPoint;<a name="line.1109"></a>
+<span class="sourceLineNo">1110</span>  }<a name="line.1110"></a>
+<span class="sourceLineNo">1111</span><a name="line.1111"></a>
+<span class="sourceLineNo">1112</span>  /**<a name="line.1112"></a>
+<span class="sourceLineNo">1113</span>   * Set the mvcc read point used to open a scanner.<a name="line.1113"></a>
+<span class="sourceLineNo">1114</span>   */<a name="line.1114"></a>
+<span class="sourceLineNo">1115</span>  Scan setMvccReadPoint(long mvccReadPoint) {<a name="line.1115"></a>
+<span class="sourceLineNo">1116</span>    this.mvccReadPoint = mvccReadPoint;<a name="line.1116"></a>
+<span class="sourceLineNo">1117</span>    return this;<a name="line.1117"></a>
+<span class="sourceLineNo">1118</span>  }<a name="line.1118"></a>
+<span class="sourceLineNo">1119</span><a name="line.1119"></a>
+<span class="sourceLineNo">1120</span>  /**<a name="line.1120"></a>
+<span class="sourceLineNo">1121</span>   * Set the mvcc read point to -1 which means do not use it.<a name="line.1121"></a>
+<span class="sourceLineNo">1122</span>   */<a name="line.1122"></a>
+<span class="sourceLineNo">1123</span>  Scan resetMvccReadPoint() {<a name="line.1123"></a>
+<span class="sourceLineNo">1124</span>    return setMvccReadPoint(-1L);<a name="line.1124"></a>
+<span class="sourceLineNo">1125</span>  }<a name="line.1125"></a>
+<span class="sourceLineNo">1126</span><a name="line.1126"></a>
+<span class="sourceLineNo">1127</span>  /**<a name="line.1127"></a>
+<span class="sourceLineNo">1128</span>   * When the server is slow or we scan a table with many deleted data or we use a sparse filter,<a name="line.1128"></a>
+<span class="sourceLineNo">1129</span>   * the server will response heartbeat to prevent timeout. However the scanner will return a Result<a name="line.1129"></a>
+<span class="sourceLineNo">1130</span>   * only when client can do it. So if there are many heartbeats, the blocking time on<a name="line.1130"></a>
+<span class="sourceLineNo">1131</span>   * ResultScanner#next() may be very long, which is not friendly to online services.<a name="line.1131"></a>
+<span class="sourceLineNo">1132</span>   *<a name="line.1132"></a>
+<span class="sourceLineNo">1133</span>   * Set this to true then you can get a special Result whose #isCursor() returns true and is not<a name="line.1133"></a>
+<span class="sourceLineNo">1134</span>   * contains any real data. It only tells you where the server has scanned. You can call next<a name="line.1134"></a>
+<span class="sourceLineNo">1135</span>   * to continue scanning or open a new scanner with this row key as start row whenever you want.<a name="line.1135"></a>
+<span class="sourceLineNo">1136</span>   *<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>   * Users can get a cursor when and only when there is a response from the server but we can not<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>   * return a Result to users, for example, this response is a heartbeat or there are partial cells<a name="line.1138"></a>
+<span class="sourceLineNo">1139</span>   * but users do not allow partial result.<a name="line.1139"></a>
+<span class="sourceLineNo">1140</span>   *<a name="line.1140"></a>
+<span class="sourceLineNo">1141</span>   * Now the cursor is in row level which means the special Result will only contains a row key.<a name="line.1141"></a>
+<span class="sourceLineNo">1142</span>   * {@link Result#isCursor()}<a name="line.1142"></a>
+<span class="sourceLineNo">1143</span>   * {@link Result#getCursor()}<a name="line.1143"></a>
+<span class="sourceLineNo">1144</span>   * {@link Cursor}<a name="line.1144"></a>
+<span class="sourceLineNo">1145</span>   */<a name="line.1145"></a>
+<span class="sourceLineNo">1146</span>  public Scan setNeedCursorResult(boolean needCursorResult) {<a name="line.1146"></a>
+<span class="sourceLineNo">1147</span>    this.needCursorResult = needCursorResult;<a name="line.1147"></a>
+<span class="sourceLineNo">1148</span>    return this;<a name="line.1148"></a>
+<span class="sourceLineNo">1149</span>  }<a name="line.1149"></a>
+<span class="sourceLineNo">1150</span><a name="line.1150"></a>
+<span class="sourceLineNo">1151</span>  public boolean isNeedCursorResult() {<a name="line.1151"></a>
+<span class="sourceLineNo">1152</span>    return needCursorResult;<a name="line.1152"></a>
+<span class="sourceLineNo">1153</span>  }<a name="line.1153"></a>
+<span class="sourceLineNo">1154</span><a name="line.1154"></a>
+<span class="sourceLineNo">1155</span>  /**<a name="line.1155"></a>
+<span class="sourceLineNo">1156</span>   * Create a new Scan with a cursor. It only set the position information like start row key.<a name="line.1156"></a>
+<span class="sourceLineNo">1157</span>   * The others (like cfs, stop row, limit) should still be filled in by the user.<a name="line.1157"></a>
+<span class="sourceLineNo">1158</span>   * {@link Result#isCursor()}<a name="line.1158"></a>
+<span class="sourceLineNo">1159</span>   * {@link Result#getCursor()}<a name="line.1159"></a>
+<span class="sourceLineNo">1160</span>   * {@link Cursor}<a name="line.1160"></a>
+<span class="sourceLineNo">1161</span>   */<a name="line.1161"></a>
+<span class="sourceLineNo">1162</span>  public static Scan createScanFromCursor(Cursor cursor) {<a name="line.1162"></a>
+<span class="sourceLineNo">1163</span>    return new Scan().withStartRow(cursor.getRow());<a name="line.1163"></a>
+<span class="sourceLineNo">1164</span>  }<a name="line.1164"></a>
+<span class="sourceLineNo">1165</span>}<a name="line.1165"></a>
 
 
 
diff --git a/book.html b/book.html
index 4733426..9711fd1 100644
--- a/book.html
+++ b/book.html
@@ -44986,7 +44986,7 @@ org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2020-03-27 15:25:15 UTC
+Last updated 2020-03-29 14:30:28 UTC
 </div>
 </div>
 <script type="text/x-mathjax-config">
diff --git a/bulk-loads.html b/bulk-loads.html
index 5bb4285..586ce0e 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -172,7 +172,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-03-27</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-03-29</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 76c274f..57be0ab 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -17766,31 +17766,31 @@
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>367</td></tr>
+<td>366</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>780</td></tr>
+<td>766</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>790</td></tr>
+<td>776</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>822</td></tr>
+<td>808</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>962</td></tr></table></div>
+<td>948</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.SimpleRequestController.java">org/apache/hadoop/hbase/client/SimpleRequestController.java</h3>
 <table border="0" class="table table-striped">
@@ -81138,7 +81138,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-03-27</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-03-29</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/coc.html b/coc.html
index 3b758fe..2c01aad 100644
--- a/coc.html
+++ b/coc.html
@@ -241,7 +241,7 @@ email to <a class="externalLink" href="mailto:private@hbase.apache.org">the priv
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-03-27</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-03-29</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependencies.html b/dependencies.html
index 58c225f..6b80cc6 100644
--- a/dependencies.html
+++ b/dependencies.html
@@ -313,7 +313,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-03-27</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-03-29</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 16fbc84..9d1e91b 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -648,7 +648,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-03-27</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-03-29</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-info.html b/dependency-info.html
index b696e51..de6cfd25 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -194,7 +194,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-03-27</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-03-29</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-management.html b/dependency-management.html
index 004f229..4c6f25a 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -934,7 +934,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-03-27</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-03-29</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 968d637..9113e46 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -4165,14 +4165,14 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#date">date</a></code></td>
-<td class="colLast"><code>"Fri Mar 27 15:49:08 UTC 2020"</code></td>
+<td class="colLast"><code>"Sun Mar 29 14:36:54 UTC 2020"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#revision">revision</a></code></td>
-<td class="colLast"><code>"3f2489467fe01bfa6a1970018c30687ba85b18be"</code></td>
+<td class="colLast"><code>"aaae46c976dc7d99779f86bf2b7ec73730e20577"</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.srcChecksum">
diff --git a/devapidocs/deprecated-list.html b/devapidocs/deprecated-list.html
index 67b63ca..ae55693 100644
--- a/devapidocs/deprecated-list.html
+++ b/devapidocs/deprecated-list.html
@@ -1816,94 +1816,88 @@
 </td>
 </tr>
 <tr class="altColor">
-<td class="colOne"><a href="org/apache/hadoop/hbase/client/Scan.html#setMaxVersions--">org.apache.hadoop.hbase.client.Scan.setMaxVersions()</a>
-<div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column
-   family's max versions, so use <a href="org/apache/hadoop/hbase/client/Scan.html#readAllVersions--"><code>Scan.readAllVersions()</code></a> instead.</span></div>
-</td>
-</tr>
-<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/Scan.html#setMaxVersions-int-">org.apache.hadoop.hbase.client.Scan.setMaxVersions(int)</a>
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column
    family's max versions, so use <a href="org/apache/hadoop/hbase/client/Scan.html#readVersions-int-"><code>Scan.readVersions(int)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/http/HttpServer.Builder.html#setName-java.lang.String-">org.apache.hadoop.hbase.http.HttpServer.Builder.setName(String)</a>
 <div class="block"><span class="deprecationComment">Since 0.99.0. Use <a href="org/apache/hadoop/hbase/http/HttpServer.Builder.html#setAppDir-java.lang.String-"><code>HttpServer.Builder.setAppDir(String)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html#setNamespaces-java.util.Set-">org.apache.hadoop.hbase.replication.ReplicationPeerConfig.setNamespaces(Set&lt;String&gt;)</a>
 <div class="block"><span class="deprecationComment">as release of 2.0.0, and it will be removed in 3.0.0. Use
              <a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfigBuilder.html#setNamespaces-java.util.Set-"><code>ReplicationPeerConfigBuilder.setNamespaces(Set)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/BufferedMutator.html#setOperationTimeout-int-">org.apache.hadoop.hbase.client.BufferedMutator.setOperationTimeout(int)</a>
 <div class="block"><span class="deprecationComment">Since 3.0.0, will be removed in 4.0.0. Please set this through the
              <a href="org/apache/hadoop/hbase/client/BufferedMutatorParams.html" title="class in org.apache.hadoop.hbase.client"><code>BufferedMutatorParams</code></a>.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#setOwner-org.apache.hadoop.hbase.security.User-">org.apache.hadoop.hbase.client.TableDescriptorBuilder.setOwner(User)</a>
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#setOwner-org.apache.hadoop.hbase.security.User-">org.apache.hadoop.hbase.client.TableDescriptorBuilder.ModifyableTableDescriptor.setOwner(User)</a>
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HTableDescriptor.html#setOwner-org.apache.hadoop.hbase.security.User-">org.apache.hadoop.hbase.HTableDescriptor.setOwner(User)</a>
 <div class="block"><span class="deprecationComment">since 0.94.1</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/TableDescriptorBuilder.html#setOwnerString-java.lang.String-">org.apache.hadoop.hbase.client.TableDescriptorBuilder.setOwnerString(String)</a>
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/TableDescriptorBuilder.ModifyableTableDescriptor.html#setOwnerString-java.lang.String-">org.apache.hadoop.hbase.client.TableDescriptorBuilder.ModifyableTableDescriptor.setOwnerString(String)</a>
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HTableDescriptor.html#setOwnerString-java.lang.String-">org.apache.hadoop.hbase.HTableDescriptor.setOwnerString(String)</a>
 <div class="block"><span class="deprecationComment">since 0.94.1</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/http/HttpServer.Builder.html#setPort-int-">org.apache.hadoop.hbase.http.HttpServer.Builder.setPort(int)</a>
 <div class="block"><span class="deprecationComment">Since 0.99.0. Use <a href="org/apache/hadoop/hbase/http/HttpServer.Builder.html#addEndpoint-java.net.URI-"><code>HttpServer.Builder.addEndpoint(URI)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HTableDescriptor.html#setRegionMemstoreReplication-boolean-">org.apache.hadoop.hbase.HTableDescriptor.setRegionMemstoreReplication(boolean)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.
              Use <a href="org/apache/hadoop/hbase/HTableDescriptor.html#setRegionMemStoreReplication-boolean-"><code>HTableDescriptor.setRegionMemStoreReplication(boolean)</code></a> instead</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html#setReplicateAllUserTables-boolean-">org.apache.hadoop.hbase.replication.ReplicationPeerConfig.setReplicateAllUserTables(boolean)</a>
 <div class="block"><span class="deprecationComment">as release of 2.0.0, and it will be removed in 3.0.0. Use
              <a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfigBuilder.html#setReplicateAllUserTables-boolean-"><code>ReplicationPeerConfigBuilder.setReplicateAllUserTables(boolean)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html#setReplicationEndpointImpl-java.lang.String-">org.apache.hadoop.hbase.replication.ReplicationPeerConfig.setReplicationEndpointImpl(String)</a>
 <div class="block"><span class="deprecationComment">as release of 2.0.0, and it will be removed in 3.0.0. Use
              <a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfigBuilder.html#setReplicationEndpointImpl-java.lang.String-"><code>ReplicationPeerConfigBuilder.setReplicationEndpointImpl(String)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/BufferedMutator.html#setRpcTimeout-int-">org.apache.hadoop.hbase.client.BufferedMutator.setRpcTimeout(int)</a>
 <div class="block"><span class="deprecationComment">Since 3.0.0, will be removed in 4.0.0. Please set this through the
              <a href="org/apache/hadoop/hbase/client/BufferedMutatorParams.html" title="class in org.apache.hadoop.hbase.client"><code>BufferedMutatorParams</code></a>.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/Scan.html#setSmall-boolean-">org.apache.hadoop.hbase.client.Scan.setSmall(boolean)</a>
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. Use <a href="org/apache/hadoop/hbase/client/Scan.html#setLimit-int-"><code>Scan.setLimit(int)</code></a> and
    <a href="org/apache/hadoop/hbase/client/Scan.html#setReadType-org.apache.hadoop.hbase.client.Scan.ReadType-"><code>Scan.setReadType(ReadType)</code></a> instead. And for the one rpc optimization, now we will also
@@ -1911,96 +1905,96 @@
    the scanner automatically which means we will fall back to one rpc.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/Scan.html#setStopRow-byte:A-">org.apache.hadoop.hbase.client.Scan.setStopRow(byte[])</a>
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. Use <a href="org/apache/hadoop/hbase/client/Scan.html#withStopRow-byte:A-"><code>Scan.withStopRow(byte[])</code></a> instead.
    This method may change the inclusive of the stop row to keep compatible with the old
    behavior.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html#setTableCFsMap-java.util.Map-">org.apache.hadoop.hbase.replication.ReplicationPeerConfig.setTableCFsMap(Map&lt;TableName, ? extends Collection&lt;String&gt;&gt;)</a>
 <div class="block"><span class="deprecationComment">as release of 2.0.0, and it will be removed in 3.0.0. Use
              <a href="org/apache/hadoop/hbase/replication/ReplicationPeerConfigBuilder.html#setTableCFsMap-java.util.Map-"><code>ReplicationPeerConfigBuilder.setTableCFsMap(Map)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/Scan.html#setTimeStamp-long-">org.apache.hadoop.hbase.client.Scan.setTimeStamp(long)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.
              Use <a href="org/apache/hadoop/hbase/client/Scan.html#setTimestamp-long-"><code>Scan.setTimestamp(long)</code></a> instead</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/client/BufferedMutatorParams.html#setWriteBufferPeriodicFlushTimerTickMs-long-">org.apache.hadoop.hbase.client.BufferedMutatorParams.setWriteBufferPeriodicFlushTimerTickMs(long)</a>
 <div class="block"><span class="deprecationComment">Since 3.0.0, will be removed in 4.0.0. We use a common timer in the whole client
              implementation so you can not set it any more.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HRegionInfo.html#toByteArray--">org.apache.hadoop.hbase.HRegionInfo.toByteArray()</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
              Use <a href="org/apache/hadoop/hbase/client/RegionInfo.html#toByteArray-org.apache.hadoop.hbase.client.RegionInfo-"><code>RegionInfo.toByteArray(RegionInfo)</code></a>.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HRegionInfo.html#toDelimitedByteArray--">org.apache.hadoop.hbase.HRegionInfo.toDelimitedByteArray()</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
              Use <a href="org/apache/hadoop/hbase/client/RegionInfo.html#toDelimitedByteArray-org.apache.hadoop.hbase.client.RegionInfo-"><code>RegionInfo.toDelimitedByteArray(RegionInfo)</code></a>.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/HRegionInfo.html#toDelimitedByteArray-org.apache.hadoop.hbase.HRegionInfo...-">org.apache.hadoop.hbase.HRegionInfo.toDelimitedByteArray(HRegionInfo...)</a>
 <div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0
              Use <a href="org/apache/hadoop/hbase/client/RegionInfo.html#toDelimitedByteArray-org.apache.hadoop.hbase.client.RegionInfo...-"><code>RegionInfo.toDelimitedByteArray(RegionInfo...)</code></a>.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/security/token/TokenUtil.html#toToken-org.apache.hadoop.hbase.shaded.protobuf.generated.AuthenticationProtos.Token-">org.apache.hadoop.hbase.security.token.TokenUtil.toToken(AuthenticationProtos.Token)</a>
 <div class="block"><span class="deprecationComment">External users should not use this method. Please post on
    the HBase dev mailing list if you need this method. Internal
    HBase code should use <a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/security/token/TokenUtil.html#toToken-org.apache.hadoop.security.token.Token-">org.apache.hadoop.hbase.security.token.TokenUtil.toToken(Token&lt;AuthenticationTokenIdentifier&gt;)</a>
 <div class="block"><span class="deprecationComment">External users should not use this method. Please post on
    the HBase dev mailing list if you need this method. Internal
    HBase code should use <a href="org/apache/hadoop/hbase/security/token/ClientTokenUtil.html" title="class in org.apache.hadoop.hbase.security.token"><code>ClientTokenUtil</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/replication/ReplicationPeer.html#trackPeerConfigChanges-org.apache.hadoop.hbase.replication.ReplicationPeerConfigListener-">org.apache.hadoop.hbase.replication.ReplicationPeer.trackPeerConfigChanges(ReplicationPeerConfigListener)</a>
 <div class="block"><span class="deprecationComment">since 2.1.0 and will be removed in 4.0.0. Use
    <a href="org/apache/hadoop/hbase/replication/ReplicationPeer.html#registerPeerConfigListener-org.apache.hadoop.hbase.replication.ReplicationPeerConfigListener-"><code>ReplicationPeer.registerPeerConfigListener(ReplicationPeerConfigListener)</code></a> instead.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/regionserver/wal/Compressor.html#uncompressIntoArray-byte:A-int-java.io.DataInput-org.apache.hadoop.hbase.io.util.Dictionary-">org.apache.hadoop.hbase.regionserver.wal.Compressor.uncompressIntoArray(byte[], int, DataInput, Dictionary)</a></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/zookeeper/ZKUtil.html#updateExistingNodeData-org.apache.hadoop.hbase.zookeeper.ZKWatcher-java.lang.String-byte:A-int-">org.apache.hadoop.hbase.zookeeper.ZKUtil.updateExistingNodeData(ZKWatcher, String, byte[], int)</a>
 <div class="block"><span class="deprecationComment">Unused</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#waitMetaExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-">org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler.waitMetaExclusiveLock(Procedure&lt;?&gt;)</a>
 <div class="block"><span class="deprecationComment">only used for <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
              <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.html#wakeMetaExclusiveLock-org.apache.hadoop.hbase.procedure2.Procedure-">org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler.wakeMetaExclusiveLock(Procedure&lt;?&gt;)</a>
 <div class="block"><span class="deprecationComment">only used for <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>. Should be removed along with
              <a href="org/apache/hadoop/hbase/master/procedure/RecoverMetaProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure"><code>RecoverMetaProcedure</code></a>.</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/io/TimeRange.html#withinTimeRange-byte:A-int-">org.apache.hadoop.hbase.io.TimeRange.withinTimeRange(byte[], int)</a>
 <div class="block"><span class="deprecationComment">This is made @InterfaceAudience.Private in the 2.0 line and above and may be
    changed to private or removed in 3.0. Use <a href="org/apache/hadoop/hbase/io/TimeRange.html#withinTimeRange-long-"><code>TimeRange.withinTimeRange(long)</code></a> instead</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/regionserver/wal/Compressor.html#writeCompressed-byte:A-int-int-java.io.DataOutput-org.apache.hadoop.hbase.io.util.Dictionary-">org.apache.hadoop.hbase.regionserver.wal.Compressor.writeCompressed(byte[], int, int, DataOutput, Dictionary)</a></td>
 </tr>
 </tbody>
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index e076f73..289f70f 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -108170,13 +108170,6 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ColumnFamilyDescriptorBuilder.html#setMaxVersions-int-">setMaxVersions(int)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ColumnFamilyDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">ColumnFamilyDescriptorBuilder</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Scan.html#setMaxVersions--">setMaxVersions()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></dt>
-<dd>
-<div class="block"><span class="deprecatedLabel">Deprecated.</span>
-<div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column
-   family's max versions, so use <a href="org/apache/hadoop/hbase/client/Scan.html#readAllVersions--"><code>Scan.readAllVersions()</code></a> instead.</span></div>
-</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Scan.html#setMaxVersions-int-">setMaxVersions(int)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></dt>
 <dd>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>
diff --git a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
index b0f4f5d..561141f 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -167,10 +167,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupRestoreConstants.BackupCommand.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupRestoreConstants.BackupCommand</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupState.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupRestoreConstants.BackupCommand.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupRestoreConstants.BackupCommand</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupPhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupPhase</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupType</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/Scan.ReadType.html b/devapidocs/org/apache/hadoop/hbase/client/Scan.ReadType.html
index 62e1e3f..bfbbd60 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/Scan.ReadType.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/Scan.ReadType.html
@@ -123,7 +123,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Public
-public static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1096">Scan.ReadType</a>
+public static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1082">Scan.ReadType</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang">Enum</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a>&gt;</pre>
 </li>
 </ul>
@@ -214,7 +214,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html#line.1097">DEFAULT</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html#line.1083">DEFAULT</a></pre>
 </li>
 </ul>
 <a name="STREAM">
@@ -223,7 +223,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>STREAM</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html#line.1097">STREAM</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html#line.1083">STREAM</a></pre>
 </li>
 </ul>
 <a name="PREAD">
@@ -232,7 +232,7 @@ the order they are declared.</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>PREAD</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html#line.1097">PREAD</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html#line.1083">PREAD</a></pre>
 </li>
 </ul>
 </li>
@@ -249,7 +249,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>values</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html#line.123">values</a>()</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html#line.122">values</a>()</pre>
 <div class="block">Returns an array containing the constants of this enum type, in
 the order they are declared.  This method may be used to iterate
 over the constants as follows:
@@ -269,7 +269,7 @@ for (Scan.ReadType c : Scan.ReadType.values())
 <ul class="blockListLast">
 <li class="blockList">
 <h4>valueOf</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html#line.123">valueOf</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html#line.122">valueOf</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
 <div class="block">Returns the enum constant of this type with the specified name.
 The string must match <i>exactly</i> an identifier used to declare an
 enum constant in this type.  (Extraneous whitespace characters are 
diff --git a/devapidocs/org/apache/hadoop/hbase/client/Scan.html b/devapidocs/org/apache/hadoop/hbase/client/Scan.html
index 820d59b..d91c436 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/Scan.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/Scan.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":9,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":42,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":42,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i [...]
+var methods = {"i0":10,"i1":10,"i2":9,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":42,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":42,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i [...]
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -133,7 +133,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Public
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.86">Scan</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.85">Scan</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title="class in org.apache.hadoop.hbase.client">Query</a></pre>
 <div class="block">Used to perform Scan operations.
  <p>
@@ -154,7 +154,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
  To only retrieve columns with a specific timestamp, call <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setTimestamp-long-"><code>setTimestamp</code></a>
  .
  <p>
- To limit the number of versions of each column to be returned, call <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions-int-"><code>setMaxVersions</code></a>.
+ To limit the number of versions of each column to be returned, call <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions-int-"><code>setMaxVersions(int)</code></a>.
  <p>
  To limit the maximum number of values returned for each call to next(), call
  <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setBatch-int-"><code>setBatch</code></a>.
@@ -713,15 +713,6 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 </tr>
 <tr id="i55" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions--">setMaxVersions</a></span>()</code>
-<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
-<div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column
-   family's max versions, so use <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#readAllVersions--"><code>readAllVersions()</code></a> instead.</span></div>
-</div>
-</td>
-</tr>
-<tr id="i56" class="altColor">
-<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions-int-">setMaxVersions</a></span>(int&nbsp;maxVersions)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column
@@ -729,73 +720,73 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 </div>
 </td>
 </tr>
-<tr id="i57" class="rowColor">
+<tr id="i56" class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setMvccReadPoint-long-">setMvccReadPoint</a></span>(long&nbsp;mvccReadPoint)</code>
 <div class="block">Set the mvcc read point used to open a scanner.</div>
 </td>
 </tr>
-<tr id="i58" class="altColor">
+<tr id="i57" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setNeedCursorResult-boolean-">setNeedCursorResult</a></span>(boolean&nbsp;needCursorResult)</code>
 <div class="block">When the server is slow or we scan a table with many deleted data or we use a sparse filter,
  the server will response heartbeat to prevent timeout.</div>
 </td>
 </tr>
-<tr id="i59" class="rowColor">
+<tr id="i58" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setOneRowLimit--">setOneRowLimit</a></span>()</code>
 <div class="block">Call this when you only want to get one row.</div>
 </td>
 </tr>
-<tr id="i60" class="altColor">
+<tr id="i59" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setPriority-int-">setPriority</a></span>(int&nbsp;priority)</code>&nbsp;</td>
 </tr>
-<tr id="i61" class="rowColor">
+<tr id="i60" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setRaw-boolean-">setRaw</a></span>(boolean&nbsp;raw)</code>
 <div class="block">Enable/disable "raw" mode for this scan.</div>
 </td>
 </tr>
-<tr id="i62" class="altColor">
+<tr id="i61" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setReadType-org.apache.hadoop.hbase.client.Scan.ReadType-">setReadType</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a>&nbsp;readType)</code>
 <div class="block">Set the read type for this scan.</div>
 </td>
 </tr>
-<tr id="i63" class="rowColor">
+<tr id="i62" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setReplicaId-int-">setReplicaId</a></span>(int&nbsp;Id)</code>
 <div class="block">Specify region replica id where Query will fetch data from.</div>
 </td>
 </tr>
-<tr id="i64" class="altColor">
+<tr id="i63" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setReversed-boolean-">setReversed</a></span>(boolean&nbsp;reversed)</code>
 <div class="block">Set whether this scan is a reversed one</div>
 </td>
 </tr>
-<tr id="i65" class="rowColor">
+<tr id="i64" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setRowOffsetPerColumnFamily-int-">setRowOffsetPerColumnFamily</a></span>(int&nbsp;offset)</code>
 <div class="block">Set offset for the row per Column Family.</div>
 </td>
 </tr>
-<tr id="i66" class="altColor">
+<tr id="i65" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setRowPrefixFilter-byte:A-">setRowPrefixFilter</a></span>(byte[]&nbsp;rowPrefix)</code>
 <div class="block">Set a filter (using stopRow and startRow) so the result set only contains rows where the
  rowKey starts with the specified prefix.</div>
 </td>
 </tr>
-<tr id="i67" class="rowColor">
+<tr id="i66" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setScanMetricsEnabled-boolean-">setScanMetricsEnabled</a></span>(boolean&nbsp;enabled)</code>
 <div class="block">Enable collection of <a href="../../../../../org/apache/hadoop/hbase/client/metrics/ScanMetrics.html" title="class in org.apache.hadoop.hbase.client.metrics"><code>ScanMetrics</code></a>.</div>
 </td>
 </tr>
-<tr id="i68" class="altColor">
+<tr id="i67" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setSmall-boolean-">setSmall</a></span>(boolean&nbsp;small)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -806,7 +797,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 </div>
 </td>
 </tr>
-<tr id="i69" class="rowColor">
+<tr id="i68" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setStopRow-byte:A-">setStopRow</a></span>(byte[]&nbsp;stopRow)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -816,7 +807,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 </div>
 </td>
 </tr>
-<tr id="i70" class="altColor">
+<tr id="i69" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setTimeRange-long-long-">setTimeRange</a></span>(long&nbsp;minStamp,
             long&nbsp;maxStamp)</code>
@@ -824,13 +815,13 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
  [minStamp, maxStamp).</div>
 </td>
 </tr>
-<tr id="i71" class="rowColor">
+<tr id="i70" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setTimestamp-long-">setTimestamp</a></span>(long&nbsp;timestamp)</code>
 <div class="block">Get versions of columns with the specified timestamp.</div>
 </td>
 </tr>
-<tr id="i72" class="altColor">
+<tr id="i71" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setTimeStamp-long-">setTimeStamp</a></span>(long&nbsp;timestamp)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -839,33 +830,33 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 </div>
 </td>
 </tr>
-<tr id="i73" class="rowColor">
+<tr id="i72" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#toMap-int-">toMap</a></span>(int&nbsp;maxCols)</code>
 <div class="block">Compile the details beyond the scope of getFingerprint (row, columns,
  timestamps, etc.) into a Map along with the fingerprinted information.</div>
 </td>
 </tr>
-<tr id="i74" class="altColor">
+<tr id="i73" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#withStartRow-byte:A-">withStartRow</a></span>(byte[]&nbsp;startRow)</code>
 <div class="block">Set the start row of the scan.</div>
 </td>
 </tr>
-<tr id="i75" class="rowColor">
+<tr id="i74" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#withStartRow-byte:A-boolean-">withStartRow</a></span>(byte[]&nbsp;startRow,
             boolean&nbsp;inclusive)</code>
 <div class="block">Set the start row of the scan.</div>
 </td>
 </tr>
-<tr id="i76" class="altColor">
+<tr id="i75" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#withStopRow-byte:A-">withStopRow</a></span>(byte[]&nbsp;stopRow)</code>
 <div class="block">Set the stop row of the scan.</div>
 </td>
 </tr>
-<tr id="i77" class="rowColor">
+<tr id="i76" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#withStopRow-byte:A-boolean-">withStopRow</a></span>(byte[]&nbsp;stopRow,
            boolean&nbsp;inclusive)</code>
@@ -921,7 +912,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.87">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.86">LOG</a></pre>
 </li>
 </ul>
 <a name="RAW_ATTR">
@@ -930,7 +921,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>RAW_ATTR</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.89">RAW_ATTR</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.88">RAW_ATTR</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.Scan.RAW_ATTR">Constant Field Values</a></dd>
@@ -943,7 +934,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>startRow</h4>
-<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.91">startRow</a></pre>
+<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.90">startRow</a></pre>
 </li>
 </ul>
 <a name="includeStartRow">
@@ -952,7 +943,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>includeStartRow</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.92">includeStartRow</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.91">includeStartRow</a></pre>
 </li>
 </ul>
 <a name="stopRow">
@@ -961,7 +952,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>stopRow</h4>
-<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.93">stopRow</a></pre>
+<pre>private&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.92">stopRow</a></pre>
 </li>
 </ul>
 <a name="includeStopRow">
@@ -970,7 +961,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>includeStopRow</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.94">includeStopRow</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.93">includeStopRow</a></pre>
 </li>
 </ul>
 <a name="maxVersions">
@@ -979,7 +970,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>maxVersions</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.95">maxVersions</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.94">maxVersions</a></pre>
 </li>
 </ul>
 <a name="batch">
@@ -988,7 +979,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>batch</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.96">batch</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.95">batch</a></pre>
 </li>
 </ul>
 <a name="allowPartialResults">
@@ -997,7 +988,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>allowPartialResults</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.109">allowPartialResults</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.108">allowPartialResults</a></pre>
 <div class="block">Partial <a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client"><code>Result</code></a>s are <a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client"><code>Result</code></a>s must be combined to form a complete <a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client"><code>Result</code></a>.
  The <a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client"><code>Result</code></a>s had to be returned in fragments (i.e. as partials) because the size of the
  cells in the row exceeded max result size on the server. Typically partial results will be
@@ -1015,7 +1006,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>storeLimit</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.111">storeLimit</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.110">storeLimit</a></pre>
 </li>
 </ul>
 <a name="storeOffset">
@@ -1024,7 +1015,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>storeOffset</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.112">storeOffset</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.111">storeOffset</a></pre>
 </li>
 </ul>
 <a name="SCAN_ATTRIBUTES_METRICS_ENABLE">
@@ -1033,7 +1024,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>SCAN_ATTRIBUTES_METRICS_ENABLE</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.114">SCAN_ATTRIBUTES_METRICS_ENABLE</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.113">SCAN_ATTRIBUTES_METRICS_ENABLE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.Scan.SCAN_ATTRIBUTES_METRICS_ENABLE">Constant Field Values</a></dd>
@@ -1046,7 +1037,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>SCAN_ATTRIBUTES_TABLE_NAME</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.119">SCAN_ATTRIBUTES_TABLE_NAME</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.118">SCAN_ATTRIBUTES_TABLE_NAME</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.Scan.SCAN_ATTRIBUTES_TABLE_NAME">Constant Field Values</a></dd>
@@ -1059,7 +1050,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>caching</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.125">caching</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.124">caching</a></pre>
 <div class="block">-1 means no caching specified and the value of <a href="../../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_SCANNER_CACHING"><code>HConstants.HBASE_CLIENT_SCANNER_CACHING</code></a>
  (default to <a href="../../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_HBASE_CLIENT_SCANNER_CACHING"><code>HConstants.DEFAULT_HBASE_CLIENT_SCANNER_CACHING</code></a>) will be used</div>
 </li>
@@ -1070,7 +1061,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>maxResultSize</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.126">maxResultSize</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.125">maxResultSize</a></pre>
 </li>
 </ul>
 <a name="cacheBlocks">
@@ -1079,7 +1070,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheBlocks</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.127">cacheBlocks</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.126">cacheBlocks</a></pre>
 </li>
 </ul>
 <a name="reversed">
@@ -1088,7 +1079,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>reversed</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.128">reversed</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.127">reversed</a></pre>
 </li>
 </ul>
 <a name="tr">
@@ -1097,7 +1088,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>tr</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/TimeRange.html" title="class in org.apache.hadoop.hbase.io">TimeRange</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.129">tr</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/TimeRange.html" title="class in org.apache.hadoop.hbase.io">TimeRange</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.128">tr</a></pre>
 </li>
 </ul>
 <a name="familyMap">
@@ -1106,7 +1097,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>familyMap</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;byte[]&gt;&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.130">familyMap</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;byte[]&gt;&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.129">familyMap</a></pre>
 </li>
 </ul>
 <a name="asyncPrefetch">
@@ -1115,7 +1106,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>asyncPrefetch</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.132">asyncPrefetch</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.131">asyncPrefetch</a></pre>
 </li>
 </ul>
 <a name="HBASE_CLIENT_SCANNER_ASYNC_PREFETCH">
@@ -1124,7 +1115,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>HBASE_CLIENT_SCANNER_ASYNC_PREFETCH</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.140">HBASE_CLIENT_SCANNER_ASYNC_PREFETCH</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.139">HBASE_CLIENT_SCANNER_ASYNC_PREFETCH</a></pre>
 <div class="block">Parameter name for client scanner sync/async prefetch toggle.
  When using async scanner, prefetching data from the server is done at the background.
  The parameter currently won't have any effect in the case that the user has set
@@ -1141,7 +1132,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_HBASE_CLIENT_SCANNER_ASYNC_PREFETCH</h4>
-<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.146">DEFAULT_HBASE_CLIENT_SCANNER_ASYNC_PREFETCH</a></pre>
+<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.145">DEFAULT_HBASE_CLIENT_SCANNER_ASYNC_PREFETCH</a></pre>
 <div class="block">Default value of <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#HBASE_CLIENT_SCANNER_ASYNC_PREFETCH"><code>HBASE_CLIENT_SCANNER_ASYNC_PREFETCH</code></a>.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -1155,7 +1146,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>small</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.157">small</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.156">small</a></pre>
 <div class="block">Set it true for small scan to get better performance Small scan should use pread and big scan
  can use seek + read seek + read is fast but can cause two problem (1) resource contention (2)
  cause too much network io [89-fb] Using pread for non-compaction read request
@@ -1171,7 +1162,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>mvccReadPoint</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.163">mvccReadPoint</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.162">mvccReadPoint</a></pre>
 <div class="block">The mvcc read point to use when open a scanner. Remember to clear it after switching regions as
  the mvcc is only valid within region scope.</div>
 </li>
@@ -1182,7 +1173,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>limit</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.169">limit</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.168">limit</a></pre>
 <div class="block">The number of rows we want for this scan. We will terminate the scan if the number of return
  rows reaches this value.</div>
 </li>
@@ -1193,7 +1184,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>readType</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.174">readType</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.173">readType</a></pre>
 <div class="block">Control whether to use pread at server side.</div>
 </li>
 </ul>
@@ -1203,7 +1194,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockListLast">
 <li class="blockList">
 <h4>needCursorResult</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.176">needCursorResult</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.175">needCursorResult</a></pre>
 </li>
 </ul>
 </li>
@@ -1220,7 +1211,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>Scan</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.181">Scan</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.180">Scan</a>()</pre>
 <div class="block">Create a Scan operation across all rows.</div>
 </li>
 </ul>
@@ -1231,7 +1222,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title
 <li class="blockList">
 <h4>Scan</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.194">Scan</a>(byte[]&nbsp;startRow)</pre>
+public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.193">Scan</a>(byte[]&nbsp;startRow)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. Use
    <code>new Scan().withStartRow(startRow)</code> instead.</span></div>
 <div class="block">Create a Scan operation starting at the specified row.
@@ -1253,7 +1244,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan
 <li class="blockList">
 <h4>Scan</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.207">Scan</a>(byte[]&nbsp;startRow,
+public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.206">Scan</a>(byte[]&nbsp;startRow,
                         byte[]&nbsp;stopRow)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. Use
    <code>new Scan().withStartRow(startRow).withStopRow(stopRow)</code> instead.</span></div>
@@ -1273,7 +1264,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan
 <ul class="blockList">
 <li class="blockList">
 <h4>Scan</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.218">Scan</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.217">Scan</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)
      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Creates a new instance of this class while copying all values.</div>
 <dl>
@@ -1290,7 +1281,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan
 <ul class="blockListLast">
 <li class="blockList">
 <h4>Scan</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.270">Scan</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&nbsp;get)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.269">Scan</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&nbsp;get)</pre>
 <div class="block">Builds a scan object with the same specs as get.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1312,7 +1303,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan
 <ul class="blockList">
 <li class="blockList">
 <h4>isGetScan</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.298">isGetScan</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.297">isGetScan</a>()</pre>
 </li>
 </ul>
 <a name="addFamily-byte:A-">
@@ -1321,7 +1312,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan
 <ul class="blockList">
 <li class="blockList">
 <h4>addFamily</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.310">addFamily</a>(byte[]&nbsp;family)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.309">addFamily</a>(byte[]&nbsp;family)</pre>
 <div class="block">Get all columns from the specified family.
  <p>
  Overrides previous calls to addColumn for this family.</div>
@@ -1339,7 +1330,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan
 <ul class="blockList">
 <li class="blockList">
 <h4>addColumn</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.324">addColumn</a>(byte[]&nbsp;family,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.323">addColumn</a>(byte[]&nbsp;family,
                       byte[]&nbsp;qualifier)</pre>
 <div class="block">Get the column from the specified family with the specified qualifier.
  <p>
@@ -1359,7 +1350,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan
 <ul class="blockList">
 <li class="blockList">
 <h4>setTimeRange</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.348">setTimeRange</a>(long&nbsp;minStamp,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.347">setTimeRange</a>(long&nbsp;minStamp,
                          long&nbsp;maxStamp)
                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get versions of columns only within the specified timestamp range,
@@ -1375,7 +1366,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
 <dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions--"><code>setMaxVersions()</code></a>, 
+<dd><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#readAllVersions--"><code>readAllVersions()</code></a>, 
 <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions-int-"><code>setMaxVersions(int)</code></a></dd>
 </dl>
 </li>
@@ -1387,7 +1378,7 @@ public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan
 <li class="blockList">
 <h4>setTimeStamp</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.366">setTimeStamp</a>(long&nbsp;timestamp)
+public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.365">setTimeStamp</a>(long&nbsp;timestamp)
                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.
              Use <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setTimestamp-long-"><code>setTimestamp(long)</code></a> instead</span></div>
@@ -1403,7 +1394,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
 <dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions--"><code>setMaxVersions()</code></a>, 
+<dd><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#readAllVersions--"><code>readAllVersions()</code></a>, 
 <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions-int-"><code>setMaxVersions(int)</code></a></dd>
 </dl>
 </li>
@@ -1414,7 +1405,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setTimestamp</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.381">setTimestamp</a>(long&nbsp;timestamp)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.380">setTimestamp</a>(long&nbsp;timestamp)</pre>
 <div class="block">Get versions of columns with the specified timestamp. Note, default maximum
  versions to return is 1.  If your time range spans more than one version
  and you want all versions returned, up the number of versions beyond the
@@ -1425,7 +1416,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>this</dd>
 <dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions--"><code>setMaxVersions()</code></a>, 
+<dd><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#readAllVersions--"><code>readAllVersions()</code></a>, 
 <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions-int-"><code>setMaxVersions(int)</code></a></dd>
 </dl>
 </li>
@@ -1436,7 +1427,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setColumnFamilyTimeRange</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.393">setColumnFamilyTimeRange</a>(byte[]&nbsp;cf,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.392">setColumnFamilyTimeRange</a>(byte[]&nbsp;cf,
                                      long&nbsp;minStamp,
                                      long&nbsp;maxStamp)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Query.html#setColumnFamilyTimeRange-byte:A-long-long-">Query</a></code></span></div>
@@ -1463,7 +1454,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>withStartRow</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.407">withStartRow</a>(byte[]&nbsp;startRow)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.406">withStartRow</a>(byte[]&nbsp;startRow)</pre>
 <div class="block">Set the start row of the scan.
  <p>
  If the specified row does not exist, the Scanner will start from the next closest row after the
@@ -1485,7 +1476,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>withStartRow</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.422">withStartRow</a>(byte[]&nbsp;startRow,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.421">withStartRow</a>(byte[]&nbsp;startRow,
                          boolean&nbsp;inclusive)</pre>
 <div class="block">Set the start row of the scan.
  <p>
@@ -1510,7 +1501,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <li class="blockList">
 <h4>setStopRow</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.451">setStopRow</a>(byte[]&nbsp;stopRow)</pre>
+public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.450">setStopRow</a>(byte[]&nbsp;stopRow)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. Use <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#withStopRow-byte:A-"><code>withStopRow(byte[])</code></a> instead.
    This method may change the inclusive of the stop row to keep compatible with the old
    behavior.</span></div>
@@ -1541,7 +1532,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>withStopRow</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.473">withStopRow</a>(byte[]&nbsp;stopRow)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.472">withStopRow</a>(byte[]&nbsp;stopRow)</pre>
 <div class="block">Set the stop row of the scan.
  <p>
  The scan will include rows that are lexicographically less than the provided stopRow.
@@ -1566,7 +1557,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>withStopRow</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.488">withStopRow</a>(byte[]&nbsp;stopRow,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.487">withStopRow</a>(byte[]&nbsp;stopRow,
                         boolean&nbsp;inclusive)</pre>
 <div class="block">Set the stop row of the scan.
  <p>
@@ -1590,7 +1581,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setRowPrefixFilter</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.509">setRowPrefixFilter</a>(byte[]&nbsp;rowPrefix)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.508">setRowPrefixFilter</a>(byte[]&nbsp;rowPrefix)</pre>
 <div class="block"><p>Set a filter (using stopRow and startRow) so the result set only contains rows where the
  rowKey starts with the specified prefix.</p>
  <p>This is a utility method that converts the desired rowPrefix into the appropriate values
@@ -1606,26 +1597,6 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 </dl>
 </li>
 </ul>
-<a name="setMaxVersions--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>setMaxVersions</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.529">setMaxVersions</a>()</pre>
-<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column
-   family's max versions, so use <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#readAllVersions--"><code>readAllVersions()</code></a> instead.</span></div>
-<div class="block">Get all available versions.</div>
-<dl>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>this</dd>
-<dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#readAllVersions--"><code>readAllVersions()</code></a>, 
-<a href="https://issues.apache.org/jira/browse/HBASE-17125">HBASE-17125</a></dd>
-</dl>
-</li>
-</ul>
 <a name="setMaxVersions-int-">
 <!--   -->
 </a>
@@ -1633,7 +1604,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <li class="blockList">
 <h4>setMaxVersions</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.543">setMaxVersions</a>(int&nbsp;maxVersions)</pre>
+public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.529">setMaxVersions</a>(int&nbsp;maxVersions)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column
    family's max versions, so use <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#readVersions-int-"><code>readVersions(int)</code></a> instead.</span></div>
 <div class="block">Get up to the specified number of versions of each column.</div>
@@ -1654,7 +1625,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>readAllVersions</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.551">readAllVersions</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.537">readAllVersions</a>()</pre>
 <div class="block">Get all available versions.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1668,7 +1639,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>readVersions</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.561">readVersions</a>(int&nbsp;versions)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.547">readVersions</a>(int&nbsp;versions)</pre>
 <div class="block">Get up to the specified number of versions of each column.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1684,7 +1655,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setBatch</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.575">setBatch</a>(int&nbsp;batch)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.561">setBatch</a>(int&nbsp;batch)</pre>
 <div class="block">Set the maximum number of cells to return for each call to next(). Callers should be aware
  that this is not equivalent to calling <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setAllowPartialResults-boolean-"><code>setAllowPartialResults(boolean)</code></a>.
  If you don't allow partial results, the number of cells in each Result must equal to your
@@ -1704,7 +1675,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setMaxResultsPerColumnFamily</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.589">setMaxResultsPerColumnFamily</a>(int&nbsp;limit)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.575">setMaxResultsPerColumnFamily</a>(int&nbsp;limit)</pre>
 <div class="block">Set the maximum number of values to return per row per Column Family</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1718,7 +1689,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setRowOffsetPerColumnFamily</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.598">setRowOffsetPerColumnFamily</a>(int&nbsp;offset)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.584">setRowOffsetPerColumnFamily</a>(int&nbsp;offset)</pre>
 <div class="block">Set offset for the row per Column Family.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1732,7 +1703,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setCaching</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.610">setCaching</a>(int&nbsp;caching)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.596">setCaching</a>(int&nbsp;caching)</pre>
 <div class="block">Set the number of rows for caching that will be passed to scanners.
  If not set, the Configuration setting <a href="../../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_SCANNER_CACHING"><code>HConstants.HBASE_CLIENT_SCANNER_CACHING</code></a> will
  apply.
@@ -1749,7 +1720,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxResultSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.618">getMaxResultSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.604">getMaxResultSize</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the maximum result size in bytes. See <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxResultSize-long-"><code>setMaxResultSize(long)</code></a></dd>
@@ -1762,7 +1733,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setMaxResultSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.629">setMaxResultSize</a>(long&nbsp;maxResultSize)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.615">setMaxResultSize</a>(long&nbsp;maxResultSize)</pre>
 <div class="block">Set the maximum result size. The default is -1; this means that no specific
  maximum result size will be set for this scan, and the global configured
  value will be used instead. (Defaults to unlimited).</div>
@@ -1778,7 +1749,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setFilter</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.635">setFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a>&nbsp;filter)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.621">setFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a>&nbsp;filter)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Query.html#setFilter-org.apache.hadoop.hbase.filter.Filter-">Query</a></code></span></div>
 <div class="block">Apply the specified server-side filter when performing the Query. Only
  <a href="../../../../../org/apache/hadoop/hbase/filter/Filter.html#filterCell-org.apache.hadoop.hbase.Cell-"><code>Filter.filterCell(org.apache.hadoop.hbase.Cell)</code></a> is called AFTER all tests for ttl,
@@ -1799,7 +1770,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setFamilyMap</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.645">setFamilyMap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" tit [...]
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.631">setFamilyMap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" tit [...]
 <div class="block">Setting the familyMap</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1815,7 +1786,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getFamilyMap</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;byte[]&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.654">getFamilyMap</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;byte[]&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.640">getFamilyMap</a>()</pre>
 <div class="block">Getting the familyMap</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1829,7 +1800,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>numFamilies</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.661">numFamilies</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.647">numFamilies</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the number of families in familyMap</dd>
@@ -1842,7 +1813,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>hasFamilies</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.671">hasFamilies</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.657">hasFamilies</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>true if familyMap is non empty, false otherwise</dd>
@@ -1855,7 +1826,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getFamilies</h4>
-<pre>public&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.678">getFamilies</a>()</pre>
+<pre>public&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.664">getFamilies</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the keys of the familyMap</dd>
@@ -1868,7 +1839,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getStartRow</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.688">getStartRow</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.674">getStartRow</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the startrow</dd>
@@ -1881,7 +1852,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>includeStartRow</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.695">includeStartRow</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.681">includeStartRow</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>if we should include start row when scan</dd>
@@ -1894,7 +1865,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getStopRow</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.702">getStopRow</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.688">getStopRow</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the stoprow</dd>
@@ -1907,7 +1878,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>includeStopRow</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.709">includeStopRow</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.695">includeStopRow</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>if we should include stop row when scan</dd>
@@ -1920,7 +1891,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxVersions</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.716">getMaxVersions</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.702">getMaxVersions</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the max number of versions to fetch</dd>
@@ -1933,7 +1904,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getBatch</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.723">getBatch</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.709">getBatch</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>maximum number of values to return for a single call to next()</dd>
@@ -1946,7 +1917,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxResultsPerColumnFamily</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.730">getMaxResultsPerColumnFamily</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.716">getMaxResultsPerColumnFamily</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>maximum number of values to return per row per CF</dd>
@@ -1959,7 +1930,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getRowOffsetPerColumnFamily</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.739">getRowOffsetPerColumnFamily</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.725">getRowOffsetPerColumnFamily</a>()</pre>
 <div class="block">Method for retrieving the scan's offset per row per column
  family (#kvs to be skipped)</div>
 <dl>
@@ -1974,7 +1945,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getCaching</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.746">getCaching</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.732">getCaching</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>caching the number of rows fetched when calling next on a scanner</dd>
@@ -1987,7 +1958,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getTimeRange</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/TimeRange.html" title="class in org.apache.hadoop.hbase.io">TimeRange</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.753">getTimeRange</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/TimeRange.html" title="class in org.apache.hadoop.hbase.io">TimeRange</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.739">getTimeRange</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>TimeRange</dd>
@@ -2000,7 +1971,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getFilter</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.761">getFilter</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.747">getFilter</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/Query.html#getFilter--">getFilter</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title="class in org.apache.hadoop.hbase.client">Query</a></code></dd>
@@ -2015,7 +1986,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>hasFilter</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.768">hasFilter</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.754">hasFilter</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>true is a filter has been specified, false if not</dd>
@@ -2028,7 +1999,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setCacheBlocks</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.782">setCacheBlocks</a>(boolean&nbsp;cacheBlocks)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.768">setCacheBlocks</a>(boolean&nbsp;cacheBlocks)</pre>
 <div class="block">Set whether blocks should be cached for this Scan.
  <p>
  This is true by default.  When true, default settings of the table and
@@ -2047,7 +2018,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getCacheBlocks</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.792">getCacheBlocks</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.778">getCacheBlocks</a>()</pre>
 <div class="block">Get whether blocks should be cached for this Scan.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -2062,7 +2033,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setReversed</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.804">setReversed</a>(boolean&nbsp;reversed)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.790">setReversed</a>(boolean&nbsp;reversed)</pre>
 <div class="block">Set whether this scan is a reversed one
  <p>
  This is false by default which means forward(normal) scan.</div>
@@ -2080,7 +2051,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>isReversed</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.813">isReversed</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.799">isReversed</a>()</pre>
 <div class="block">Get whether this scan is a reversed one.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -2094,7 +2065,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setAllowPartialResults</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.827">setAllowPartialResults</a>(boolean&nbsp;allowPartialResults)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.813">setAllowPartialResults</a>(boolean&nbsp;allowPartialResults)</pre>
 <div class="block">Setting whether the caller wants to see the partial results when server returns
  less-than-expected cells. It is helpful while scanning a huge row to prevent OOM at client.
  By default this value is false and the complete results will be assembled client side
@@ -2116,7 +2087,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllowPartialResults</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.837">getAllowPartialResults</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.823">getAllowPartialResults</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>true when the constructor of this scan understands that the results they will see may
@@ -2131,7 +2102,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setLoadColumnFamiliesOnDemand</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.842">setLoadColumnFamiliesOnDemand</a>(boolean&nbsp;value)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.828">setLoadColumnFamiliesOnDemand</a>(boolean&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Query.html#setLoadColumnFamiliesOnDemand-boolean-">Query</a></code></span></div>
 <div class="block">Set the value indicating whether loading CFs on demand should be allowed (cluster
  default is false). On-demand CF loading doesn't load column families until necessary, e.g.
@@ -2159,7 +2130,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getFingerprint</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache [...]
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache [...]
 <div class="block">Compile the table and column family (i.e. schema) information
  into a String. Useful for parsing and aggregation by debugging,
  logging, and administration tools.</div>
@@ -2177,7 +2148,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>toMap</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache [...]
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache [...]
 <div class="block">Compile the details beyond the scope of getFingerprint (row, columns,
  timestamps, etc.) into a Map along with the fingerprinted information.
  Useful for debugging, logging, and administration tools.</div>
@@ -2197,7 +2168,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setRaw</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.940">setRaw</a>(boolean&nbsp;raw)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.926">setRaw</a>(boolean&nbsp;raw)</pre>
 <div class="block">Enable/disable "raw" mode for this scan.
  If "raw" is enabled the scan will return all
  delete marker and deleted rows that have not
@@ -2217,7 +2188,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>isRaw</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.948">isRaw</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.934">isRaw</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>True if this Scan is in "raw" mode.</dd>
@@ -2231,7 +2202,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <li class="blockList">
 <h4>setSmall</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.972">setSmall</a>(boolean&nbsp;small)</pre>
+public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.958">setSmall</a>(boolean&nbsp;small)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. Use <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setLimit-int-"><code>setLimit(int)</code></a> and
    <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setReadType-org.apache.hadoop.hbase.client.Scan.ReadType-"><code>setReadType(ReadType)</code></a> instead. And for the one rpc optimization, now we will also
    fetch data when openScanner, and if the number of rows reaches the limit then we will close
@@ -2261,7 +2232,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <li class="blockList">
 <h4>isSmall</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.986">isSmall</a>()</pre>
+public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.972">isSmall</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. See the comment of
    <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#setSmall-boolean-"><code>setSmall(boolean)</code></a></span></div>
 <div class="block">Get whether this scan is a small scan</div>
@@ -2279,7 +2250,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setAttribute</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.991">setAttribute</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.977">setAttribute</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                          byte[]&nbsp;value)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Attributes.html#setAttribute-java.lang.String-byte:A-">Attributes</a></code></span></div>
 <div class="block">Sets an attribute.
@@ -2302,7 +2273,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setId</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.996">setId</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.982">setId</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;id)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/OperationWithAttributes.html#setId-java.lang.String-">OperationWithAttributes</a></code></span></div>
 <div class="block">This method allows you to set an identifier on an operation. The original
  motivation for this was to allow the identifier to be used in slow query
@@ -2323,7 +2294,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setAuthorizations</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1001">setAuthorizations</a>(<a href="../../../../../org/apache/hadoop/hbase/security/visibility/Authorizations.html" title="class in org.apache.hadoop.hbase.security.visibility">Authorizations</a>&nbsp;authorizations)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.987">setAuthorizations</a>(<a href="../../../../../org/apache/hadoop/hbase/security/visibility/Authorizations.html" title="class in org.apache.hadoop.hbase.security.visibility">Authorizations</a>&nbsp;authorizations)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Query.html#setAuthorizations-org.apache.hadoop.hbase.security.visibility.Authorizations-">Query</a></code></span></div>
 <div class="block">Sets the authorizations to be used by this Query</div>
 <dl>
@@ -2338,7 +2309,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setACL</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1006">setACL</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or inter [...]
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.992">setACL</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interf [...]
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/Query.html#setACL-java.util.Map-">setACL</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Query.html" title="class in org.apache.hadoop.hbase.client">Query</a></code></dd>
@@ -2353,7 +2324,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setACL</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1011">setACL</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;user,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.997">setACL</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;user,
                    <a href="../../../../../org/apache/hadoop/hbase/security/access/Permission.html" title="class in org.apache.hadoop.hbase.security.access">Permission</a>&nbsp;perms)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -2370,7 +2341,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setConsistency</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1016">setConsistency</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client">Consistency</a>&nbsp;consistency)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1002">setConsistency</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client">Consistency</a>&nbsp;consistency)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Query.html#setConsistency-org.apache.hadoop.hbase.client.Consistency-">Query</a></code></span></div>
 <div class="block">Sets the consistency level for this operation</div>
 <dl>
@@ -2387,7 +2358,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setReplicaId</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1021">setReplicaId</a>(int&nbsp;Id)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1007">setReplicaId</a>(int&nbsp;Id)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Query.html#setReplicaId-int-">Query</a></code></span></div>
 <div class="block">Specify region replica id where Query will fetch data from. Use this together with
  <a href="../../../../../org/apache/hadoop/hbase/client/Query.html#setConsistency-org.apache.hadoop.hbase.client.Consistency-"><code>Query.setConsistency(Consistency)</code></a> passing <a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html#TIMELINE"><code>Consistency.TIMELINE</code></a> to read data from
@@ -2405,7 +2376,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setIsolationLevel</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1026">setIsolationLevel</a>(<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client">IsolationLevel</a>&nbsp;level)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1012">setIsolationLevel</a>(<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client">IsolationLevel</a>&nbsp;level)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Query.html#setIsolationLevel-org.apache.hadoop.hbase.client.IsolationLevel-">Query</a></code></span></div>
 <div class="block">Set the isolation level for this query. If the
  isolation level is set to READ_UNCOMMITTED, then
@@ -2429,7 +2400,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setPriority</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1031">setPriority</a>(int&nbsp;priority)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1017">setPriority</a>(int&nbsp;priority)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/OperationWithAttributes.html#setPriority-int-">setPriority</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/OperationWithAttributes.html" title="class in org.apache.hadoop.hbase.client">OperationWithAttributes</a></code></dd>
@@ -2442,7 +2413,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setScanMetricsEnabled</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1039">setScanMetricsEnabled</a>(boolean&nbsp;enabled)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1025">setScanMetricsEnabled</a>(boolean&nbsp;enabled)</pre>
 <div class="block">Enable collection of <a href="../../../../../org/apache/hadoop/hbase/client/metrics/ScanMetrics.html" title="class in org.apache.hadoop.hbase.client.metrics"><code>ScanMetrics</code></a>. For advanced users.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2456,7 +2427,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isScanMetricsEnabled</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1047">isScanMetricsEnabled</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1033">isScanMetricsEnabled</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>True if collection of scan metrics is enabled. For advanced users.</dd>
@@ -2469,7 +2440,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isAsyncPrefetch</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1052">isAsyncPrefetch</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1038">isAsyncPrefetch</a>()</pre>
 </li>
 </ul>
 <a name="setAsyncPrefetch-boolean-">
@@ -2479,7 +2450,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <li class="blockList">
 <h4>setAsyncPrefetch</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1061">setAsyncPrefetch</a>(boolean&nbsp;asyncPrefetch)</pre>
+public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1047">setAsyncPrefetch</a>(boolean&nbsp;asyncPrefetch)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Since 3.0.0, will be removed in 4.0.0. After building sync client upon async
              client, the implementation is always 'async prefetch', so this flag is useless now.</span></div>
 </li>
@@ -2490,7 +2461,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getLimit</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1069">getLimit</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1055">getLimit</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the limit of rows for this scan</dd>
@@ -2503,7 +2474,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setLimit</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1081">setLimit</a>(int&nbsp;limit)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1067">setLimit</a>(int&nbsp;limit)</pre>
 <div class="block">Set the limit of rows for this scan. We will terminate the scan if the number of returned rows
  reaches this value.
  <p>
@@ -2522,7 +2493,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setOneRowLimit</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1091">setOneRowLimit</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1077">setOneRowLimit</a>()</pre>
 <div class="block">Call this when you only want to get one row. It will set <code>limit</code> to <code>1</code>, and also
  set <code>readType</code> to <a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html#PREAD"><code>Scan.ReadType.PREAD</code></a>.</div>
 <dl>
@@ -2537,7 +2508,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getReadType</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1103">getReadType</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1089">getReadType</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the read type for this scan</dd>
@@ -2550,7 +2521,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setReadType</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1114">setReadType</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a>&nbsp;readType)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1100">setReadType</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a>&nbsp;readType)</pre>
 <div class="block">Set the read type for this scan.
  <p>
  Notice that we may choose to use pread even if you specific <a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html#STREAM"><code>Scan.ReadType.STREAM</code></a> here. For
@@ -2567,7 +2538,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>getMvccReadPoint</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1122">getMvccReadPoint</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1108">getMvccReadPoint</a>()</pre>
 <div class="block">Get the mvcc read point used to open a scanner.</div>
 </li>
 </ul>
@@ -2577,7 +2548,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setMvccReadPoint</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1129">setMvccReadPoint</a>(long&nbsp;mvccReadPoint)</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1115">setMvccReadPoint</a>(long&nbsp;mvccReadPoint)</pre>
 <div class="block">Set the mvcc read point used to open a scanner.</div>
 </li>
 </ul>
@@ -2587,7 +2558,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>resetMvccReadPoint</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1137">resetMvccReadPoint</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1123">resetMvccReadPoint</a>()</pre>
 <div class="block">Set the mvcc read point to -1 which means do not use it.</div>
 </li>
 </ul>
@@ -2597,7 +2568,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>setNeedCursorResult</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1160">setNeedCursorResult</a>(boolean&nbsp;needCursorResult)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1146">setNeedCursorResult</a>(boolean&nbsp;needCursorResult)</pre>
 <div class="block">When the server is slow or we scan a table with many deleted data or we use a sparse filter,
  the server will response heartbeat to prevent timeout. However the scanner will return a Result
  only when client can do it. So if there are many heartbeats, the blocking time on
@@ -2623,7 +2594,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockList">
 <li class="blockList">
 <h4>isNeedCursorResult</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1165">isNeedCursorResult</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1151">isNeedCursorResult</a>()</pre>
 </li>
 </ul>
 <a name="createScanFromCursor-org.apache.hadoop.hbase.client.Cursor-">
@@ -2632,7 +2603,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" ti
 <ul class="blockListLast">
 <li class="blockList">
 <h4>createScanFromCursor</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1176">createScanFromCursor</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Cursor.html" title="class in org.apache.hadoop.hbase.client">Cursor</a>&nbsp;cursor)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Scan.html#line.1162">createScanFromCursor</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Cursor.html" title="class in org.apache.hadoop.hbase.client">Cursor</a>&nbsp;cursor)</pre>
 <div class="block">Create a new Scan with a cursor. It only set the position information like start row key.
  The others (like cfs, stop row, limit) should still be filled in by the user.
  <a href="../../../../../org/apache/hadoop/hbase/client/Result.html#isCursor--"><code>Result.isCursor()</code></a>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/Scan.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/Scan.html
index 63bbe36..279f219 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/Scan.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/Scan.html
@@ -459,15 +459,6 @@ service.</div>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
-<td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions--">setMaxVersions</a></span>()</code>
-<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
-<div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column
-   family's max versions, so use <a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#readAllVersions--"><code>readAllVersions()</code></a> instead.</span></div>
-</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setMaxVersions-int-">setMaxVersions</a></span>(int&nbsp;maxVersions)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
 <div class="block"><span class="deprecationComment">since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column
@@ -475,71 +466,71 @@ service.</div>
 </div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setMvccReadPoint-long-">setMvccReadPoint</a></span>(long&nbsp;mvccReadPoint)</code>
 <div class="block">Set the mvcc read point used to open a scanner.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setNeedCursorResult-boolean-">setNeedCursorResult</a></span>(boolean&nbsp;needCursorResult)</code>
 <div class="block">When the server is slow or we scan a table with many deleted data or we use a sparse filter,
  the server will response heartbeat to prevent timeout.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setOneRowLimit--">setOneRowLimit</a></span>()</code>
 <div class="block">Call this when you only want to get one row.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setPriority-int-">setPriority</a></span>(int&nbsp;priority)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setRaw-boolean-">setRaw</a></span>(boolean&nbsp;raw)</code>
 <div class="block">Enable/disable "raw" mode for this scan.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setReadType-org.apache.hadoop.hbase.client.Scan.ReadType-">setReadType</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client">Scan.ReadType</a>&nbsp;readType)</code>
 <div class="block">Set the read type for this scan.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setReplicaId-int-">setReplicaId</a></span>(int&nbsp;Id)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setReversed-boolean-">setReversed</a></span>(boolean&nbsp;reversed)</code>
 <div class="block">Set whether this scan is a reversed one</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setRowOffsetPerColumnFamily-int-">setRowOffsetPerColumnFamily</a></span>(int&nbsp;offset)</code>
 <div class="block">Set offset for the row per Column Family.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setRowPrefixFilter-byte:A-">setRowPrefixFilter</a></span>(byte[]&nbsp;rowPrefix)</code>
 <div class="block">Set a filter (using stopRow and startRow) so the result set only contains rows where the
  rowKey starts with the specified prefix.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setScanMetricsEnabled-boolean-">setScanMetricsEnabled</a></span>(boolean&nbsp;enabled)</code>
 <div class="block">Enable collection of <a href="../../../../../../org/apache/hadoop/hbase/client/metrics/ScanMetrics.html" title="class in org.apache.hadoop.hbase.client.metrics"><code>ScanMetrics</code></a>.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setSmall-boolean-">setSmall</a></span>(boolean&nbsp;small)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -550,7 +541,7 @@ service.</div>
 </div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setStopRow-byte:A-">setStopRow</a></span>(byte[]&nbsp;stopRow)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -560,7 +551,7 @@ service.</div>
 </div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setTimeRange-long-long-">setTimeRange</a></span>(long&nbsp;minStamp,
             long&nbsp;maxStamp)</code>
@@ -568,13 +559,13 @@ service.</div>
  [minStamp, maxStamp).</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setTimestamp-long-">setTimestamp</a></span>(long&nbsp;timestamp)</code>
 <div class="block">Get versions of columns with the specified timestamp.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#setTimeStamp-long-">setTimeStamp</a></span>(long&nbsp;timestamp)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -583,26 +574,26 @@ service.</div>
 </div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#withStartRow-byte:A-">withStartRow</a></span>(byte[]&nbsp;startRow)</code>
 <div class="block">Set the start row of the scan.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#withStartRow-byte:A-boolean-">withStartRow</a></span>(byte[]&nbsp;startRow,
             boolean&nbsp;inclusive)</code>
 <div class="block">Set the start row of the scan.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#withStopRow-byte:A-">withStopRow</a></span>(byte[]&nbsp;stopRow)</code>
 <div class="block">Set the stop row of the scan.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Scan.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html#withStopRow-byte:A-boolean-">withStopRow</a></span>(byte[]&nbsp;stopRow,
            boolean&nbsp;inclusive)</code>
diff --git a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
index 9df28e6..34c2408 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -433,21 +433,21 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">IsolationLevel</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocateType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RegionLocateType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactionState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TableState.State.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">TableState.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Scan.ReadType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RequestController.ReturnCode.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RequestController.ReturnCode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MobCompactPartitionPolicy.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MobCompactPartitionPolicy</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TableState.State.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">TableState.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactionState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocateType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RegionLocateType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Consistency</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MobCompactPartitionPolicy.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MobCompactPartitionPolicy</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MasterSwitchType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Scan.ReadType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Durability</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">IsolationLevel</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MasterSwitchType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Consistency</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactType</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html b/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
index db38cd2..46638ef 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
@@ -197,8 +197,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/MetaTableMetrics.MetaTableOps.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">MetaTableMetrics.MetaTableOps</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.MutationType.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">RegionObserver.MutationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/MetaTableMetrics.MetaTableOps.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">MetaTableMetrics.MetaTableOps</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html b/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
index 880a54a..0192935 100644
--- a/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
@@ -104,8 +104,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/EventType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">EventType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/ExecutorType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">ExecutorType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/EventType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">EventType</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
index eebdaaf..1bcf186 100644
--- a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
@@ -190,13 +190,13 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/BitComparator.BitwiseOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">BitComparator.BitwiseOp</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">Filter.ReturnCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterWrapper.FilterRowRetCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterWrapper.FilterRowRetCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterList.Operator.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterList.Operator</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.Order.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.Order</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.SatisfiesCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.SatisfiesCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.Order.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.Order</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/RegexStringComparator.EngineType.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">RegexStringComparator.EngineType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterWrapper.FilterRowRetCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterWrapper.FilterRowRetCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/BitComparator.BitwiseOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">BitComparator.BitwiseOp</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/http/package-tree.html b/devapidocs/org/apache/hadoop/hbase/http/package-tree.html
index 54adced..64d9c15 100644
--- a/devapidocs/org/apache/hadoop/hbase/http/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/http/package-tree.html
@@ -140,9 +140,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
+<li type="circle">org.apache.hadoop.hbase.http.<a href="../../../../../org/apache/hadoop/hbase/http/ProfileServlet.Event.html" title="enum in org.apache.hadoop.hbase.http"><span class="typeNameLink">ProfileServlet.Event</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.http.<a href="../../../../../org/apache/hadoop/hbase/http/ProfileServlet.Output.html" title="enum in org.apache.hadoop.hbase.http"><span class="typeNameLink">ProfileServlet.Output</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.http.<a href="../../../../../org/apache/hadoop/hbase/http/HttpConfig.Policy.html" title="enum in org.apache.hadoop.hbase.http"><span class="typeNameLink">HttpConfig.Policy</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.http.<a href="../../../../../org/apache/hadoop/hbase/http/ProfileServlet.Event.html" title="enum in org.apache.hadoop.hbase.http"><span class="typeNameLink">ProfileServlet.Event</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
index 0d48c39..61a0ac7 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -306,11 +306,11 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.BlockCategory.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType.BlockCategory</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockPriority</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheFactory.ExternalBlockCaches.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockCacheFactory.ExternalBlockCaches</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/ReaderContext.ReaderType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">ReaderContext.ReaderType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.State.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">HFileBlock.Writer.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockPriority</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
index b15631a..c3f203e 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -296,10 +296,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/CellCounter.CellCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">CellCounter.CellCounterMapper.Counters</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">SyncTable.SyncMapper.Counter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/RowCounter.RowCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">RowCounter.RowCounterMapper.Counters</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSplit.Version.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TableSplit.Version</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">SyncTable.SyncMapper.Counter</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/CellCounter.CellCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">CellCounter.CellCounterMapper.Counters</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
index 8d98ce8..80ddfa2 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
@@ -199,8 +199,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.LocalityType.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.LocalityType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.Action.Type.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.Action.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.LocalityType.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.LocalityType</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
index e2b1a57..b5cb96c 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -357,10 +357,10 @@
 <ul>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.ResubmitDirective</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MetaRegionLocationCache.ZNodeOpType.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MetaRegionLocationCache.ZNodeOpType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">RegionState.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MetricsMasterSourceFactoryImpl.FactoryStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.ServerLiveState.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">ServerManager.ServerLiveState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MasterRpcServices.BalanceSwitchMode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">RegionState.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.TerminationStatus.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.TerminationStatus</span></a></li>
 </ul>
 </li>
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
index a3aa56f..a63176c 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
@@ -222,10 +222,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.ServerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">ServerProcedureInterface.ServerOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.PeerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">PeerProcedureInterface.PeerOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">MetaProcedureInterface.MetaOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TableProcedureInterface.TableOperationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.ServerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">ServerProcedureInterface.ServerOperationType</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
index 2b5bd29..3e65824 100644
--- a/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
@@ -127,8 +127,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.TaskFilter.TaskType.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">TaskMonitor.TaskFilter.TaskType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.State.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">MonitoredTask.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.TaskFilter.TaskType.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">TaskMonitor.TaskFilter.TaskType</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/package-tree.html b/devapidocs/org/apache/hadoop/hbase/package-tree.html
index 9f0229c..d818a3f 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -429,19 +429,19 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeepDeletedCells</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MemoryCompactionPolicy</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Coprocessor.State.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Coprocessor.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HConstants.OperationStatusCode.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HConstants.OperationStatusCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Size.Unit.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Size.Unit</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterMetrics.Option.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterMetrics.Option</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompareOperator</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HealthChecker.HealthCheckerExitStatus.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HealthChecker.HealthCheckerExitStatus</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MetaTableAccessor.QueryType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompareOperator</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompatibilitySingletonFactory.SingletonStorage.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompatibilitySingletonFactory.SingletonStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Cell.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Cell.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Coprocessor.State.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Coprocessor.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeyValue.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterMetrics.Option.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterMetrics.Option</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellBuilderType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CellBuilderType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Size.Unit.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Size.Unit</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MemoryCompactionPolicy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeepDeletedCells</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
index 83d70b1..586c2ee 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -216,11 +216,11 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">StateMachineProcedure.Flow</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">Procedure.LockState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockedResourceType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">RootProcedureState.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockedResourceType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">Procedure.LockState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">StateMachineProcedure.Flow</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
index ea1a7a2b..9c4abf2 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
@@ -240,12 +240,12 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/RpcThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">RpcThrottlingException.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottleType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottleType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaScope</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceViolationPolicy.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">SpaceViolationPolicy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottleType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottleType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/RpcThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">RpcThrottlingException.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">OperationQuota.OperationType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaScope</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/InternalScan.html b/devapidocs/org/apache/hadoop/hbase/regionserver/InternalScan.html
index 348a75c..8c44c43 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/InternalScan.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/InternalScan.html
@@ -272,7 +272,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title=
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#addColumn-byte:A-byte:A-">addColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#addFamily-byte:A-">addFamily</a>, <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#createScanFromCursor-org.apache.hadoop.hbase.client.Cursor-">createScanFromCursor</a>, <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#getAllowPartialResults--">getAllowPartialResults</a>, <a href=". [...]
+<code><a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#addColumn-byte:A-byte:A-">addColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#addFamily-byte:A-">addFamily</a>, <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#createScanFromCursor-org.apache.hadoop.hbase.client.Cursor-">createScanFromCursor</a>, <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html#getAllowPartialResults--">getAllowPartialResults</a>, <a href=". [...]
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.client.Query">
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index a25e741..cb65ebe 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -735,20 +735,20 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">FlushType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScanType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.TaskExecutor.Status.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">SplitLogWorker.TaskExecutor.Status</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ChunkCreator.ChunkType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultHeapMemoryTuner.StepDirection.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DefaultHeapMemoryTuner.StepDirection</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.Operation</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactionStrategy.Action</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">BloomType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HRegion.FlushResult.Result</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.IndexType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScanType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultHeapMemoryTuner.StepDirection.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DefaultHeapMemoryTuner.StepDirection</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.Operation</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TimeRangeTracker.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.NextState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HRegion.FlushResult.Result</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactionStrategy.Action</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ChunkCreator.ChunkType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.LimitScope.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.LimitScope</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">FlushType</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
index 7f09712..c2caa2f 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
@@ -130,8 +130,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/StripeCompactionScanQueryMatcher.DropDeletesInOutput.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">StripeCompactionScanQueryMatcher.DropDeletesInOutput</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/DeleteTracker.DeleteResult.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">DeleteTracker.DeleteResult</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/StripeCompactionScanQueryMatcher.DropDeletesInOutput.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">StripeCompactionScanQueryMatcher.DropDeletesInOutput</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">ScanQueryMatcher.MatchCode</span></a></li>
 </ul>
 </li>
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
index 2058d5f..63613cd 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
@@ -248,9 +248,9 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/ProtobufLogReader.WALHdrResult.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">ProtobufLogReader.WALHdrResult</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/CompressionContext.DictionaryIndex.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">CompressionContext.DictionaryIndex</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.RollRequestReason.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">WALActionsListener.RollRequestReason</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.Type.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">RingBufferTruck.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/CompressionContext.DictionaryIndex.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">CompressionContext.DictionaryIndex</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
index b7fea9b..b85b470 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
@@ -192,8 +192,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceFactoryImpl.SourceHolder.html" title="enum in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">MetricsReplicationSourceFactoryImpl.SourceHolder</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.WorkerState.html" title="enum in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationSourceShipper.WorkerState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceFactoryImpl.SourceHolder.html" title="enum in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">MetricsReplicationSourceFactoryImpl.SourceHolder</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
index 572071e..1ffb553 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
@@ -162,12 +162,12 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessControlFilter.Strategy.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessControlFilter.Strategy</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/SnapshotScannerHDFSAclHelper.HDFSAclOperation.AclType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">SnapshotScannerHDFSAclHelper.HDFSAclOperation.AclType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/SnapshotScannerHDFSAclHelper.HDFSAclOperation.OperationType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">SnapshotScannerHDFSAclHelper.HDFSAclOperation.OperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Action.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Action</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/SnapshotScannerHDFSAclHelper.HDFSAclOperation.OperationType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">SnapshotScannerHDFSAclHelper.HDFSAclOperation.OperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.OpType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessController.OpType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessControlFilter.Strategy.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessControlFilter.Strategy</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Scope.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Scope</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/SnapshotScannerHDFSAclHelper.HDFSAclOperation.AclType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">SnapshotScannerHDFSAclHelper.HDFSAclOperation.AclType</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
index 062071e..c793825 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
@@ -189,9 +189,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslStatus.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslStatus</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslUtil.QualityOfProtection</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/AuthMethod.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">AuthMethod</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslUtil.QualityOfProtection</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslStatus.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslStatus</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
index e069dc4..d07f5b8 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
@@ -211,9 +211,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">MetricsThriftServerSourceFactoryImpl.FactoryStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftMetrics.ThriftServerType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ImplType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">MetricsThriftServerSourceFactoryImpl.FactoryStorage</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
index cccf50b..13a0aea 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -558,14 +558,14 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/IdReadWriteLockWithObjectPool.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLockWithObjectPool.ReferenceType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Order</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PrettyPrinter.Unit</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">ChecksumType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/IdReadWriteLockWithObjectPool.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLockWithObjectPool.ReferenceType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">ChecksumType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/HbckErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HbckErrorReporter.ERROR_CODE</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Order</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/DNS.ServerType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">DNS.ServerType</span></a></li>
 </ul>
 </li>
diff --git a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
index f2c94bd..d78cc8b 100644
--- a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -199,8 +199,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/RegionGroupingProvider.Strategies.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">RegionGroupingProvider.Strategies</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/WALFactory.Providers.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">WALFactory.Providers</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/RegionGroupingProvider.Strategies.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">RegionGroupingProvider.Strategies</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
index 7668dd1..df97657 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -18,9 +18,9 @@
 <span class="sourceLineNo">010</span>  justification="Intentional; to be modified in test")<a name="line.10"></a>
 <span class="sourceLineNo">011</span>public class Version {<a name="line.11"></a>
 <span class="sourceLineNo">012</span>  public static final String version = new String("3.0.0-SNAPSHOT");<a name="line.12"></a>
-<span class="sourceLineNo">013</span>  public static final String revision = "3f2489467fe01bfa6a1970018c30687ba85b18be";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String revision = "aaae46c976dc7d99779f86bf2b7ec73730e20577";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String user = "jenkins";<a name="line.14"></a>
-<span class="sourceLineNo">015</span>  public static final String date = "Fri Mar 27 15:49:08 UTC 2020";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String date = "Sun Mar 29 14:36:54 UTC 2020";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>  public static final String url = "git://jenkins-websites-he-de.apache.org/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.16"></a>
 <span class="sourceLineNo">017</span>  public static final String srcChecksum = "(stdin)=";<a name="line.17"></a>
 <span class="sourceLineNo">018</span>}<a name="line.18"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html
index a3d844a..476aa00 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/Scan.ReadType.html
@@ -67,1124 +67,1110 @@
 <span class="sourceLineNo">059</span> * To only retrieve columns with a specific timestamp, call {@link #setTimestamp(long) setTimestamp}<a name="line.59"></a>
 <span class="sourceLineNo">060</span> * .<a name="line.60"></a>
 <span class="sourceLineNo">061</span> * &lt;p&gt;<a name="line.61"></a>
-<span class="sourceLineNo">062</span> * To limit the number of versions of each column to be returned, call {@link #setMaxVersions(int)<a name="line.62"></a>
-<span class="sourceLineNo">063</span> * setMaxVersions}.<a name="line.63"></a>
-<span class="sourceLineNo">064</span> * &lt;p&gt;<a name="line.64"></a>
-<span class="sourceLineNo">065</span> * To limit the maximum number of values returned for each call to next(), call<a name="line.65"></a>
-<span class="sourceLineNo">066</span> * {@link #setBatch(int) setBatch}.<a name="line.66"></a>
-<span class="sourceLineNo">067</span> * &lt;p&gt;<a name="line.67"></a>
-<span class="sourceLineNo">068</span> * To add a filter, call {@link #setFilter(org.apache.hadoop.hbase.filter.Filter) setFilter}.<a name="line.68"></a>
-<span class="sourceLineNo">069</span> * &lt;p&gt;<a name="line.69"></a>
-<span class="sourceLineNo">070</span> * For small scan, it is deprecated in 2.0.0. Now we have a {@link #setLimit(int)} method in Scan<a name="line.70"></a>
-<span class="sourceLineNo">071</span> * object which is used to tell RS how many rows we want. If the rows return reaches the limit, the<a name="line.71"></a>
-<span class="sourceLineNo">072</span> * RS will close the RegionScanner automatically. And we will also fetch data when openScanner in<a name="line.72"></a>
-<span class="sourceLineNo">073</span> * the new implementation, this means we can also finish a scan operation in one rpc call. And we<a name="line.73"></a>
-<span class="sourceLineNo">074</span> * have also introduced a {@link #setReadType(ReadType)} method. You can use this method to tell RS<a name="line.74"></a>
-<span class="sourceLineNo">075</span> * to use pread explicitly.<a name="line.75"></a>
-<span class="sourceLineNo">076</span> * &lt;p&gt;<a name="line.76"></a>
-<span class="sourceLineNo">077</span> * Expert: To explicitly disable server-side block caching for this scan, execute<a name="line.77"></a>
-<span class="sourceLineNo">078</span> * {@link #setCacheBlocks(boolean)}.<a name="line.78"></a>
-<span class="sourceLineNo">079</span> * &lt;p&gt;<a name="line.79"></a>
-<span class="sourceLineNo">080</span> * &lt;em&gt;Note:&lt;/em&gt; Usage alters Scan instances. Internally, attributes are updated as the Scan runs<a name="line.80"></a>
-<span class="sourceLineNo">081</span> * and if enabled, metrics accumulate in the Scan instance. Be aware this is the case when you go to<a name="line.81"></a>
-<span class="sourceLineNo">082</span> * clone a Scan instance or if you go to reuse a created Scan instance; safer is create a Scan<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * instance per usage.<a name="line.83"></a>
-<span class="sourceLineNo">084</span> */<a name="line.84"></a>
-<span class="sourceLineNo">085</span>@InterfaceAudience.Public<a name="line.85"></a>
-<span class="sourceLineNo">086</span>public class Scan extends Query {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  private static final Logger LOG = LoggerFactory.getLogger(Scan.class);<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  private static final String RAW_ATTR = "_raw_";<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private byte[] startRow = HConstants.EMPTY_START_ROW;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  private boolean includeStartRow = true;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private byte[] stopRow  = HConstants.EMPTY_END_ROW;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  private boolean includeStopRow = false;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  private int maxVersions = 1;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  private int batch = -1;<a name="line.96"></a>
-<span class="sourceLineNo">097</span><a name="line.97"></a>
-<span class="sourceLineNo">098</span>  /**<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * Partial {@link Result}s are {@link Result}s must be combined to form a complete {@link Result}.<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   * The {@link Result}s had to be returned in fragments (i.e. as partials) because the size of the<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * cells in the row exceeded max result size on the server. Typically partial results will be<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * combined client side into complete results before being delivered to the caller. However, if<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * this flag is set, the caller is indicating that they do not mind seeing partial results (i.e.<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * they understand that the results returned from the Scanner may only represent part of a<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   * particular row). In such a case, any attempt to combine the partials into a complete result on<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   * the client side will be skipped, and the caller will be able to see the exact results returned<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   * from the server.<a name="line.107"></a>
-<span class="sourceLineNo">108</span>   */<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  private boolean allowPartialResults = false;<a name="line.109"></a>
-<span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>  private int storeLimit = -1;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  private int storeOffset = 0;<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private static final String SCAN_ATTRIBUTES_METRICS_ENABLE = "scan.attributes.metrics.enable";<a name="line.114"></a>
-<span class="sourceLineNo">115</span><a name="line.115"></a>
-<span class="sourceLineNo">116</span>  // If an application wants to use multiple scans over different tables each scan must<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  // define this attribute with the appropriate table name by calling<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  // scan.setAttribute(Scan.SCAN_ATTRIBUTES_TABLE_NAME, Bytes.toBytes(tableName))<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  static public final String SCAN_ATTRIBUTES_TABLE_NAME = "scan.attributes.table.name";<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  /**<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   * -1 means no caching specified and the value of {@link HConstants#HBASE_CLIENT_SCANNER_CACHING}<a name="line.122"></a>
-<span class="sourceLineNo">123</span>   * (default to {@link HConstants#DEFAULT_HBASE_CLIENT_SCANNER_CACHING}) will be used<a name="line.123"></a>
-<span class="sourceLineNo">124</span>   */<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  private int caching = -1;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private long maxResultSize = -1;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  private boolean cacheBlocks = true;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  private boolean reversed = false;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  private TimeRange tr = TimeRange.allTime();<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private Map&lt;byte [], NavigableSet&lt;byte []&gt;&gt; familyMap =<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    new TreeMap&lt;byte [], NavigableSet&lt;byte []&gt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private Boolean asyncPrefetch = null;<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  /**<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   * Parameter name for client scanner sync/async prefetch toggle.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * When using async scanner, prefetching data from the server is done at the background.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * The parameter currently won't have any effect in the case that the user has set<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * Scan#setSmall or Scan#setReversed<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   */<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  public static final String HBASE_CLIENT_SCANNER_ASYNC_PREFETCH =<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      "hbase.client.scanner.async.prefetch";<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>  /**<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * Default value of {@link #HBASE_CLIENT_SCANNER_ASYNC_PREFETCH}.<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  public static final boolean DEFAULT_HBASE_CLIENT_SCANNER_ASYNC_PREFETCH = false;<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>  /**<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * Set it true for small scan to get better performance Small scan should use pread and big scan<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * can use seek + read seek + read is fast but can cause two problem (1) resource contention (2)<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * cause too much network io [89-fb] Using pread for non-compaction read request<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   * https://issues.apache.org/jira/browse/HBASE-7266 On the other hand, if setting it true, we<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   * would do openScanner,next,closeScanner in one RPC call. It means the better performance for<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * small scan. [HBASE-9488]. Generally, if the scan range is within one data block(64KB), it could<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   * be considered as a small scan.<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   */<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  private boolean small = false;<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  /**<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   * The mvcc read point to use when open a scanner. Remember to clear it after switching regions as<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   * the mvcc is only valid within region scope.<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   */<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  private long mvccReadPoint = -1L;<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>  /**<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * The number of rows we want for this scan. We will terminate the scan if the number of return<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * rows reaches this value.<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   */<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  private int limit = -1;<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>  /**<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * Control whether to use pread at server side.<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   */<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  private ReadType readType = ReadType.DEFAULT;<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>  private boolean needCursorResult = false;<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  /**<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   * Create a Scan operation across all rows.<a name="line.179"></a>
-<span class="sourceLineNo">180</span>   */<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  public Scan() {}<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>  /**<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * Create a Scan operation starting at the specified row.<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * &lt;p&gt;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * If the specified row does not exist, the Scanner will start from the next closest row after the<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * specified row.<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * @param startRow row to start scanner at or after<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   *   {@code new Scan().withStartRow(startRow)} instead.<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17320"&gt;HBASE-17320&lt;/a&gt;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   */<a name="line.192"></a>
-<span class="sourceLineNo">193</span>  @Deprecated<a name="line.193"></a>
-<span class="sourceLineNo">194</span>  public Scan(byte[] startRow) {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    withStartRow(startRow);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>  }<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>  /**<a name="line.198"></a>
-<span class="sourceLineNo">199</span>   * Create a Scan operation for the range of rows specified.<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   * @param startRow row to start scanner at or after (inclusive)<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   * @param stopRow row to stop scanner before (exclusive)<a name="line.201"></a>
-<span class="sourceLineNo">202</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use<a name="line.202"></a>
-<span class="sourceLineNo">203</span>   *   {@code new Scan().withStartRow(startRow).withStopRow(stopRow)} instead.<a name="line.203"></a>
-<span class="sourceLineNo">204</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17320"&gt;HBASE-17320&lt;/a&gt;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>   */<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  @Deprecated<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  public Scan(byte[] startRow, byte[] stopRow) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    withStartRow(startRow);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    setStopRow(stopRow);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  }<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>  /**<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * Creates a new instance of this class while copying all values.<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   *<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * @param scan  The scan instance to copy from.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @throws IOException When copying the values fails.<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   */<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public Scan(Scan scan) throws IOException {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    startRow = scan.getStartRow();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    includeStartRow = scan.includeStartRow();<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    stopRow  = scan.getStopRow();<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    includeStopRow = scan.includeStopRow();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    maxVersions = scan.getMaxVersions();<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    batch = scan.getBatch();<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    storeLimit = scan.getMaxResultsPerColumnFamily();<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    storeOffset = scan.getRowOffsetPerColumnFamily();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    caching = scan.getCaching();<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    maxResultSize = scan.getMaxResultSize();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    cacheBlocks = scan.getCacheBlocks();<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    filter = scan.getFilter(); // clone?<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    loadColumnFamiliesOnDemand = scan.getLoadColumnFamiliesOnDemandValue();<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    consistency = scan.getConsistency();<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    this.setIsolationLevel(scan.getIsolationLevel());<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    reversed = scan.isReversed();<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    asyncPrefetch = scan.isAsyncPrefetch();<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    small = scan.isSmall();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    allowPartialResults = scan.getAllowPartialResults();<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    tr = scan.getTimeRange(); // TimeRange is immutable<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    Map&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; fams = scan.getFamilyMap();<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    for (Map.Entry&lt;byte[],NavigableSet&lt;byte[]&gt;&gt; entry : fams.entrySet()) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      byte [] fam = entry.getKey();<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      NavigableSet&lt;byte[]&gt; cols = entry.getValue();<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      if (cols != null &amp;&amp; cols.size() &gt; 0) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        for (byte[] col : cols) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          addColumn(fam, col);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        }<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      } else {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        addFamily(fam);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    }<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    for (Map.Entry&lt;String, byte[]&gt; attr : scan.getAttributesMap().entrySet()) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      setAttribute(attr.getKey(), attr.getValue());<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    for (Map.Entry&lt;byte[], TimeRange&gt; entry : scan.getColumnFamilyTimeRange().entrySet()) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      TimeRange tr = entry.getValue();<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      setColumnFamilyTimeRange(entry.getKey(), tr.getMin(), tr.getMax());<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    this.mvccReadPoint = scan.getMvccReadPoint();<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    this.limit = scan.getLimit();<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    this.needCursorResult = scan.isNeedCursorResult();<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    setPriority(scan.getPriority());<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    readType = scan.getReadType();<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    super.setReplicaId(scan.getReplicaId());<a name="line.263"></a>
-<span class="sourceLineNo">264</span>  }<a name="line.264"></a>
-<span class="sourceLineNo">265</span><a name="line.265"></a>
-<span class="sourceLineNo">266</span>  /**<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   * Builds a scan object with the same specs as get.<a name="line.267"></a>
-<span class="sourceLineNo">268</span>   * @param get get to model scan after<a name="line.268"></a>
-<span class="sourceLineNo">269</span>   */<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  public Scan(Get get) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    this.startRow = get.getRow();<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    this.includeStartRow = true;<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    this.stopRow = get.getRow();<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    this.includeStopRow = true;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    this.filter = get.getFilter();<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    this.cacheBlocks = get.getCacheBlocks();<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    this.maxVersions = get.getMaxVersions();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    this.storeLimit = get.getMaxResultsPerColumnFamily();<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    this.storeOffset = get.getRowOffsetPerColumnFamily();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    this.tr = get.getTimeRange();<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    this.familyMap = get.getFamilyMap();<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    this.asyncPrefetch = false;<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    this.consistency = get.getConsistency();<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    this.setIsolationLevel(get.getIsolationLevel());<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    this.loadColumnFamiliesOnDemand = get.getLoadColumnFamiliesOnDemandValue();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    for (Map.Entry&lt;String, byte[]&gt; attr : get.getAttributesMap().entrySet()) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      setAttribute(attr.getKey(), attr.getValue());<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    for (Map.Entry&lt;byte[], TimeRange&gt; entry : get.getColumnFamilyTimeRange().entrySet()) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      TimeRange tr = entry.getValue();<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      setColumnFamilyTimeRange(entry.getKey(), tr.getMin(), tr.getMax());<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    this.mvccReadPoint = -1L;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    setPriority(get.getPriority());<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    super.setReplicaId(get.getReplicaId());<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  }<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>  public boolean isGetScan() {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    return includeStartRow &amp;&amp; includeStopRow<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        &amp;&amp; ClientUtil.areScanStartRowAndStopRowEqual(this.startRow, this.stopRow);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  }<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>  /**<a name="line.303"></a>
-<span class="sourceLineNo">304</span>   * Get all columns from the specified family.<a name="line.304"></a>
-<span class="sourceLineNo">305</span>   * &lt;p&gt;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>   * Overrides previous calls to addColumn for this family.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   * @param family family name<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * @return this<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   */<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  public Scan addFamily(byte [] family) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    familyMap.remove(family);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    familyMap.put(family, null);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    return this;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  /**<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * Get the column from the specified family with the specified qualifier.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * &lt;p&gt;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * Overrides previous calls to addFamily for this family.<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   * @param family family name<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * @param qualifier column qualifier<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   * @return this<a name="line.322"></a>
-<span class="sourceLineNo">323</span>   */<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  public Scan addColumn(byte [] family, byte [] qualifier) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    NavigableSet&lt;byte []&gt; set = familyMap.get(family);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    if(set == null) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      set = new TreeSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      familyMap.put(family, set);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    }<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    if (qualifier == null) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      qualifier = HConstants.EMPTY_BYTE_ARRAY;<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    set.add(qualifier);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    return this;<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  }<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>  /**<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   * Get versions of columns only within the specified timestamp range,<a name="line.338"></a>
-<span class="sourceLineNo">339</span>   * [minStamp, maxStamp).  Note, default maximum versions to return is 1.  If<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   * your time range spans more than one version and you want all versions<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * returned, up the number of versions beyond the default.<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * @param minStamp minimum timestamp value, inclusive<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   * @param maxStamp maximum timestamp value, exclusive<a name="line.343"></a>
-<span class="sourceLineNo">344</span>   * @see #setMaxVersions()<a name="line.344"></a>
-<span class="sourceLineNo">345</span>   * @see #setMaxVersions(int)<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   * @return this<a name="line.346"></a>
-<span class="sourceLineNo">347</span>   */<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  public Scan setTimeRange(long minStamp, long maxStamp) throws IOException {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    tr = new TimeRange(minStamp, maxStamp);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    return this;<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /**<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * Get versions of columns with the specified timestamp. Note, default maximum<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * versions to return is 1.  If your time range spans more than one version<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * and you want all versions returned, up the number of versions beyond the<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   * defaut.<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * @param timestamp version timestamp<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * @see #setMaxVersions()<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   * @see #setMaxVersions(int)<a name="line.360"></a>
-<span class="sourceLineNo">361</span>   * @return this<a name="line.361"></a>
-<span class="sourceLineNo">362</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   *             Use {@link #setTimestamp(long)} instead<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   */<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  @Deprecated<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  public Scan setTimeStamp(long timestamp)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  throws IOException {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    return this.setTimestamp(timestamp);<a name="line.368"></a>
-<span class="sourceLineNo">369</span>  }<a name="line.369"></a>
-<span class="sourceLineNo">370</span><a name="line.370"></a>
-<span class="sourceLineNo">371</span>  /**<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * Get versions of columns with the specified timestamp. Note, default maximum<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * versions to return is 1.  If your time range spans more than one version<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * and you want all versions returned, up the number of versions beyond the<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   * defaut.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * @param timestamp version timestamp<a name="line.376"></a>
-<span class="sourceLineNo">377</span>   * @see #setMaxVersions()<a name="line.377"></a>
-<span class="sourceLineNo">378</span>   * @see #setMaxVersions(int)<a name="line.378"></a>
-<span class="sourceLineNo">379</span>   * @return this<a name="line.379"></a>
-<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  public Scan setTimestamp(long timestamp) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    try {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      tr = new TimeRange(timestamp, timestamp + 1);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    } catch(Exception e) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      // This should never happen, unless integer overflow or something extremely wrong...<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      LOG.error("TimeRange failed, likely caused by integer overflow. ", e);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      throw e;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    }<a name="line.388"></a>
-<span class="sourceLineNo">389</span><a name="line.389"></a>
-<span class="sourceLineNo">390</span>    return this;<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  }<a name="line.391"></a>
-<span class="sourceLineNo">392</span><a name="line.392"></a>
-<span class="sourceLineNo">393</span>  @Override public Scan setColumnFamilyTimeRange(byte[] cf, long minStamp, long maxStamp) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    return (Scan) super.setColumnFamilyTimeRange(cf, minStamp, maxStamp);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>  /**<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * Set the start row of the scan.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * &lt;p&gt;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * If the specified row does not exist, the Scanner will start from the next closest row after the<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * specified row.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param startRow row to start scanner at or after<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @return this<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @throws IllegalArgumentException if startRow does not meet criteria for a row key (when length<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.405"></a>
-<span class="sourceLineNo">406</span>   */<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  public Scan withStartRow(byte[] startRow) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    return withStartRow(startRow, true);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>  }<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>  /**<a name="line.411"></a>
-<span class="sourceLineNo">412</span>   * Set the start row of the scan.<a name="line.412"></a>
-<span class="sourceLineNo">413</span>   * &lt;p&gt;<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * If the specified row does not exist, or the {@code inclusive} is {@code false}, the Scanner<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * will start from the next closest row after the specified row.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * @param startRow row to start scanner at or after<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param inclusive whether we should include the start row when scan<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @return this<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * @throws IllegalArgumentException if startRow does not meet criteria for a row key (when length<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   */<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  public Scan withStartRow(byte[] startRow, boolean inclusive) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    if (Bytes.len(startRow) &gt; HConstants.MAX_ROW_LENGTH) {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      throw new IllegalArgumentException("startRow's length must be less than or equal to "<a name="line.424"></a>
-<span class="sourceLineNo">425</span>          + HConstants.MAX_ROW_LENGTH + " to meet the criteria" + " for a row key.");<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    }<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    this.startRow = startRow;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    this.includeStartRow = inclusive;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    return this;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>  }<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>  /**<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * Set the stop row of the scan.<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   * &lt;p&gt;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>   * The scan will include rows that are lexicographically less than the provided stopRow.<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   * &lt;p&gt;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * &lt;b&gt;Note:&lt;/b&gt; When doing a filter for a rowKey &lt;u&gt;Prefix&lt;/u&gt; use<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   * {@link #setRowPrefixFilter(byte[])}. The 'trailing 0' will not yield the desired result.<a name="line.438"></a>
-<span class="sourceLineNo">439</span>   * &lt;/p&gt;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>   * @param stopRow row to end at (exclusive)<a name="line.440"></a>
-<span class="sourceLineNo">441</span>   * @return this<a name="line.441"></a>
-<span class="sourceLineNo">442</span>   * @throws IllegalArgumentException if stopRow does not meet criteria for a row key (when length<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use {@link #withStopRow(byte[])} instead.<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   *   This method may change the inclusive of the stop row to keep compatible with the old<a name="line.445"></a>
-<span class="sourceLineNo">446</span>   *   behavior.<a name="line.446"></a>
-<span class="sourceLineNo">447</span>   * @see #withStopRow(byte[])<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17320"&gt;HBASE-17320&lt;/a&gt;<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   */<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  @Deprecated<a name="line.450"></a>
-<span class="sourceLineNo">451</span>  public Scan setStopRow(byte[] stopRow) {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    withStopRow(stopRow);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    if (ClientUtil.areScanStartRowAndStopRowEqual(this.startRow, this.stopRow)) {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      // for keeping the old behavior that a scan with the same start and stop row is a get scan.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      this.includeStopRow = true;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    return this;<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
-<span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>  /**<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * Set the stop row of the scan.<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * &lt;p&gt;<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * The scan will include rows that are lexicographically less than the provided stopRow.<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * &lt;p&gt;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   * &lt;b&gt;Note:&lt;/b&gt; When doing a filter for a rowKey &lt;u&gt;Prefix&lt;/u&gt; use<a name="line.465"></a>
-<span class="sourceLineNo">466</span>   * {@link #setRowPrefixFilter(byte[])}. The 'trailing 0' will not yield the desired result.<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   * &lt;/p&gt;<a name="line.467"></a>
-<span class="sourceLineNo">468</span>   * @param stopRow row to end at (exclusive)<a name="line.468"></a>
-<span class="sourceLineNo">469</span>   * @return this<a name="line.469"></a>
-<span class="sourceLineNo">470</span>   * @throws IllegalArgumentException if stopRow does not meet criteria for a row key (when length<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   */<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  public Scan withStopRow(byte[] stopRow) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    return withStopRow(stopRow, false);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>  }<a name="line.475"></a>
-<span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span>  /**<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * Set the stop row of the scan.<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * &lt;p&gt;<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * The scan will include rows that are lexicographically less than (or equal to if<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * {@code inclusive} is {@code true}) the provided stopRow.<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * @param stopRow row to end at<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * @param inclusive whether we should include the stop row when scan<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   * @return this<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * @throws IllegalArgumentException if stopRow does not meet criteria for a row key (when length<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   */<a name="line.487"></a>
-<span class="sourceLineNo">488</span>  public Scan withStopRow(byte[] stopRow, boolean inclusive) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    if (Bytes.len(stopRow) &gt; HConstants.MAX_ROW_LENGTH) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      throw new IllegalArgumentException("stopRow's length must be less than or equal to "<a name="line.490"></a>
-<span class="sourceLineNo">491</span>          + HConstants.MAX_ROW_LENGTH + " to meet the criteria" + " for a row key.");<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    this.stopRow = stopRow;<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    this.includeStopRow = inclusive;<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    return this;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>  }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>  /**<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * &lt;p&gt;Set a filter (using stopRow and startRow) so the result set only contains rows where the<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   * rowKey starts with the specified prefix.&lt;/p&gt;<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * &lt;p&gt;This is a utility method that converts the desired rowPrefix into the appropriate values<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   * for the startRow and stopRow to achieve the desired result.&lt;/p&gt;<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * &lt;p&gt;This can safely be used in combination with setFilter.&lt;/p&gt;<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * &lt;p&gt;&lt;b&gt;NOTE: Doing a {@link #withStartRow(byte[])} and/or {@link #setStopRow(byte[])}<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * after this method will yield undefined results.&lt;/b&gt;&lt;/p&gt;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @param rowPrefix the prefix all rows must start with. (Set &lt;i&gt;null&lt;/i&gt; to remove the filter.)<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * @return this<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   */<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  public Scan setRowPrefixFilter(byte[] rowPrefix) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    if (rowPrefix == null) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      withStartRow(HConstants.EMPTY_START_ROW);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      setStopRow(HConstants.EMPTY_END_ROW);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    } else {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      this.withStartRow(rowPrefix);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      this.setStopRow(ClientUtil.calculateTheClosestNextRowKeyForPrefix(rowPrefix));<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    return this;<a name="line.517"></a>
-<span class="sourceLineNo">518</span>  }<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>  /**<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * Get all available versions.<a name="line.521"></a>
+<span class="sourceLineNo">062</span> * To limit the number of versions of each column to be returned, call {@link #setMaxVersions(int)}.<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * &lt;p&gt;<a name="line.63"></a>
+<span class="sourceLineNo">064</span> * To limit the maximum number of values returned for each call to next(), call<a name="line.64"></a>
+<span class="sourceLineNo">065</span> * {@link #setBatch(int) setBatch}.<a name="line.65"></a>
+<span class="sourceLineNo">066</span> * &lt;p&gt;<a name="line.66"></a>
+<span class="sourceLineNo">067</span> * To add a filter, call {@link #setFilter(org.apache.hadoop.hbase.filter.Filter) setFilter}.<a name="line.67"></a>
+<span class="sourceLineNo">068</span> * &lt;p&gt;<a name="line.68"></a>
+<span class="sourceLineNo">069</span> * For small scan, it is deprecated in 2.0.0. Now we have a {@link #setLimit(int)} method in Scan<a name="line.69"></a>
+<span class="sourceLineNo">070</span> * object which is used to tell RS how many rows we want. If the rows return reaches the limit, the<a name="line.70"></a>
+<span class="sourceLineNo">071</span> * RS will close the RegionScanner automatically. And we will also fetch data when openScanner in<a name="line.71"></a>
+<span class="sourceLineNo">072</span> * the new implementation, this means we can also finish a scan operation in one rpc call. And we<a name="line.72"></a>
+<span class="sourceLineNo">073</span> * have also introduced a {@link #setReadType(ReadType)} method. You can use this method to tell RS<a name="line.73"></a>
+<span class="sourceLineNo">074</span> * to use pread explicitly.<a name="line.74"></a>
+<span class="sourceLineNo">075</span> * &lt;p&gt;<a name="line.75"></a>
+<span class="sourceLineNo">076</span> * Expert: To explicitly disable server-side block caching for this scan, execute<a name="line.76"></a>
+<span class="sourceLineNo">077</span> * {@link #setCacheBlocks(boolean)}.<a name="line.77"></a>
+<span class="sourceLineNo">078</span> * &lt;p&gt;<a name="line.78"></a>
+<span class="sourceLineNo">079</span> * &lt;em&gt;Note:&lt;/em&gt; Usage alters Scan instances. Internally, attributes are updated as the Scan runs<a name="line.79"></a>
+<span class="sourceLineNo">080</span> * and if enabled, metrics accumulate in the Scan instance. Be aware this is the case when you go to<a name="line.80"></a>
+<span class="sourceLineNo">081</span> * clone a Scan instance or if you go to reuse a created Scan instance; safer is create a Scan<a name="line.81"></a>
+<span class="sourceLineNo">082</span> * instance per usage.<a name="line.82"></a>
+<span class="sourceLineNo">083</span> */<a name="line.83"></a>
+<span class="sourceLineNo">084</span>@InterfaceAudience.Public<a name="line.84"></a>
+<span class="sourceLineNo">085</span>public class Scan extends Query {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private static final Logger LOG = LoggerFactory.getLogger(Scan.class);<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>  private static final String RAW_ATTR = "_raw_";<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  private byte[] startRow = HConstants.EMPTY_START_ROW;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  private boolean includeStartRow = true;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private byte[] stopRow  = HConstants.EMPTY_END_ROW;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  private boolean includeStopRow = false;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  private int maxVersions = 1;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private int batch = -1;<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>  /**<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   * Partial {@link Result}s are {@link Result}s must be combined to form a complete {@link Result}.<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   * The {@link Result}s had to be returned in fragments (i.e. as partials) because the size of the<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   * cells in the row exceeded max result size on the server. Typically partial results will be<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * combined client side into complete results before being delivered to the caller. However, if<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * this flag is set, the caller is indicating that they do not mind seeing partial results (i.e.<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * they understand that the results returned from the Scanner may only represent part of a<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   * particular row). In such a case, any attempt to combine the partials into a complete result on<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   * the client side will be skipped, and the caller will be able to see the exact results returned<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   * from the server.<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   */<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private boolean allowPartialResults = false;<a name="line.108"></a>
+<span class="sourceLineNo">109</span><a name="line.109"></a>
+<span class="sourceLineNo">110</span>  private int storeLimit = -1;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private int storeOffset = 0;<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  private static final String SCAN_ATTRIBUTES_METRICS_ENABLE = "scan.attributes.metrics.enable";<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  // If an application wants to use multiple scans over different tables each scan must<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  // define this attribute with the appropriate table name by calling<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  // scan.setAttribute(Scan.SCAN_ATTRIBUTES_TABLE_NAME, Bytes.toBytes(tableName))<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  static public final String SCAN_ATTRIBUTES_TABLE_NAME = "scan.attributes.table.name";<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  /**<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   * -1 means no caching specified and the value of {@link HConstants#HBASE_CLIENT_SCANNER_CACHING}<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   * (default to {@link HConstants#DEFAULT_HBASE_CLIENT_SCANNER_CACHING}) will be used<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   */<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  private int caching = -1;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  private long maxResultSize = -1;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  private boolean cacheBlocks = true;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  private boolean reversed = false;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private TimeRange tr = TimeRange.allTime();<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  private Map&lt;byte [], NavigableSet&lt;byte []&gt;&gt; familyMap =<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    new TreeMap&lt;byte [], NavigableSet&lt;byte []&gt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  private Boolean asyncPrefetch = null;<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  /**<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   * Parameter name for client scanner sync/async prefetch toggle.<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   * When using async scanner, prefetching data from the server is done at the background.<a name="line.135"></a>
+<span class="sourceLineNo">136</span>   * The parameter currently won't have any effect in the case that the user has set<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   * Scan#setSmall or Scan#setReversed<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   */<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  public static final String HBASE_CLIENT_SCANNER_ASYNC_PREFETCH =<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      "hbase.client.scanner.async.prefetch";<a name="line.140"></a>
+<span class="sourceLineNo">141</span><a name="line.141"></a>
+<span class="sourceLineNo">142</span>  /**<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   * Default value of {@link #HBASE_CLIENT_SCANNER_ASYNC_PREFETCH}.<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   */<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  public static final boolean DEFAULT_HBASE_CLIENT_SCANNER_ASYNC_PREFETCH = false;<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  /**<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * Set it true for small scan to get better performance Small scan should use pread and big scan<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * can use seek + read seek + read is fast but can cause two problem (1) resource contention (2)<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   * cause too much network io [89-fb] Using pread for non-compaction read request<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * https://issues.apache.org/jira/browse/HBASE-7266 On the other hand, if setting it true, we<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   * would do openScanner,next,closeScanner in one RPC call. It means the better performance for<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * small scan. [HBASE-9488]. Generally, if the scan range is within one data block(64KB), it could<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * be considered as a small scan.<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   */<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  private boolean small = false;<a name="line.156"></a>
+<span class="sourceLineNo">157</span><a name="line.157"></a>
+<span class="sourceLineNo">158</span>  /**<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   * The mvcc read point to use when open a scanner. Remember to clear it after switching regions as<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   * the mvcc is only valid within region scope.<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   */<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  private long mvccReadPoint = -1L;<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>  /**<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * The number of rows we want for this scan. We will terminate the scan if the number of return<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * rows reaches this value.<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   */<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  private int limit = -1;<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>  /**<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * Control whether to use pread at server side.<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   */<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  private ReadType readType = ReadType.DEFAULT;<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>  private boolean needCursorResult = false;<a name="line.175"></a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span>  /**<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   * Create a Scan operation across all rows.<a name="line.178"></a>
+<span class="sourceLineNo">179</span>   */<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  public Scan() {}<a name="line.180"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span>  /**<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   * Create a Scan operation starting at the specified row.<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * &lt;p&gt;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   * If the specified row does not exist, the Scanner will start from the next closest row after the<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   * specified row.<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * @param startRow row to start scanner at or after<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   *   {@code new Scan().withStartRow(startRow)} instead.<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17320"&gt;HBASE-17320&lt;/a&gt;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   */<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  @Deprecated<a name="line.192"></a>
+<span class="sourceLineNo">193</span>  public Scan(byte[] startRow) {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    withStartRow(startRow);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>  }<a name="line.195"></a>
+<span class="sourceLineNo">196</span><a name="line.196"></a>
+<span class="sourceLineNo">197</span>  /**<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * Create a Scan operation for the range of rows specified.<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * @param startRow row to start scanner at or after (inclusive)<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * @param stopRow row to stop scanner before (exclusive)<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use<a name="line.201"></a>
+<span class="sourceLineNo">202</span>   *   {@code new Scan().withStartRow(startRow).withStopRow(stopRow)} instead.<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17320"&gt;HBASE-17320&lt;/a&gt;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>   */<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  @Deprecated<a name="line.205"></a>
+<span class="sourceLineNo">206</span>  public Scan(byte[] startRow, byte[] stopRow) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    withStartRow(startRow);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    setStopRow(stopRow);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>  /**<a name="line.211"></a>
+<span class="sourceLineNo">212</span>   * Creates a new instance of this class while copying all values.<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   *<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   * @param scan  The scan instance to copy from.<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   * @throws IOException When copying the values fails.<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   */<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  public Scan(Scan scan) throws IOException {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    startRow = scan.getStartRow();<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    includeStartRow = scan.includeStartRow();<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    stopRow  = scan.getStopRow();<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    includeStopRow = scan.includeStopRow();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    maxVersions = scan.getMaxVersions();<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    batch = scan.getBatch();<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    storeLimit = scan.getMaxResultsPerColumnFamily();<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    storeOffset = scan.getRowOffsetPerColumnFamily();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    caching = scan.getCaching();<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    maxResultSize = scan.getMaxResultSize();<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    cacheBlocks = scan.getCacheBlocks();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    filter = scan.getFilter(); // clone?<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    loadColumnFamiliesOnDemand = scan.getLoadColumnFamiliesOnDemandValue();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    consistency = scan.getConsistency();<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    this.setIsolationLevel(scan.getIsolationLevel());<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    reversed = scan.isReversed();<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    asyncPrefetch = scan.isAsyncPrefetch();<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    small = scan.isSmall();<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    allowPartialResults = scan.getAllowPartialResults();<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    tr = scan.getTimeRange(); // TimeRange is immutable<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    Map&lt;byte[], NavigableSet&lt;byte[]&gt;&gt; fams = scan.getFamilyMap();<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    for (Map.Entry&lt;byte[],NavigableSet&lt;byte[]&gt;&gt; entry : fams.entrySet()) {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      byte [] fam = entry.getKey();<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      NavigableSet&lt;byte[]&gt; cols = entry.getValue();<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      if (cols != null &amp;&amp; cols.size() &gt; 0) {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        for (byte[] col : cols) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          addColumn(fam, col);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        }<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      } else {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        addFamily(fam);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      }<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    for (Map.Entry&lt;String, byte[]&gt; attr : scan.getAttributesMap().entrySet()) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      setAttribute(attr.getKey(), attr.getValue());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    }<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    for (Map.Entry&lt;byte[], TimeRange&gt; entry : scan.getColumnFamilyTimeRange().entrySet()) {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      TimeRange tr = entry.getValue();<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      setColumnFamilyTimeRange(entry.getKey(), tr.getMin(), tr.getMax());<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    }<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    this.mvccReadPoint = scan.getMvccReadPoint();<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    this.limit = scan.getLimit();<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    this.needCursorResult = scan.isNeedCursorResult();<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    setPriority(scan.getPriority());<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    readType = scan.getReadType();<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    super.setReplicaId(scan.getReplicaId());<a name="line.262"></a>
+<span class="sourceLineNo">263</span>  }<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>  /**<a name="line.265"></a>
+<span class="sourceLineNo">266</span>   * Builds a scan object with the same specs as get.<a name="line.266"></a>
+<span class="sourceLineNo">267</span>   * @param get get to model scan after<a name="line.267"></a>
+<span class="sourceLineNo">268</span>   */<a name="line.268"></a>
+<span class="sourceLineNo">269</span>  public Scan(Get get) {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    this.startRow = get.getRow();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    this.includeStartRow = true;<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    this.stopRow = get.getRow();<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    this.includeStopRow = true;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    this.filter = get.getFilter();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    this.cacheBlocks = get.getCacheBlocks();<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    this.maxVersions = get.getMaxVersions();<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    this.storeLimit = get.getMaxResultsPerColumnFamily();<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    this.storeOffset = get.getRowOffsetPerColumnFamily();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    this.tr = get.getTimeRange();<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    this.familyMap = get.getFamilyMap();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    this.asyncPrefetch = false;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    this.consistency = get.getConsistency();<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    this.setIsolationLevel(get.getIsolationLevel());<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    this.loadColumnFamiliesOnDemand = get.getLoadColumnFamiliesOnDemandValue();<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    for (Map.Entry&lt;String, byte[]&gt; attr : get.getAttributesMap().entrySet()) {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      setAttribute(attr.getKey(), attr.getValue());<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    }<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    for (Map.Entry&lt;byte[], TimeRange&gt; entry : get.getColumnFamilyTimeRange().entrySet()) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      TimeRange tr = entry.getValue();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      setColumnFamilyTimeRange(entry.getKey(), tr.getMin(), tr.getMax());<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    this.mvccReadPoint = -1L;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    setPriority(get.getPriority());<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    super.setReplicaId(get.getReplicaId());<a name="line.294"></a>
+<span class="sourceLineNo">295</span>  }<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public boolean isGetScan() {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    return includeStartRow &amp;&amp; includeStopRow<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        &amp;&amp; ClientUtil.areScanStartRowAndStopRowEqual(this.startRow, this.stopRow);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  }<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>  /**<a name="line.302"></a>
+<span class="sourceLineNo">303</span>   * Get all columns from the specified family.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>   * &lt;p&gt;<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   * Overrides previous calls to addColumn for this family.<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   * @param family family name<a name="line.306"></a>
+<span class="sourceLineNo">307</span>   * @return this<a name="line.307"></a>
+<span class="sourceLineNo">308</span>   */<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  public Scan addFamily(byte [] family) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    familyMap.remove(family);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    familyMap.put(family, null);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    return this;<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>  /**<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   * Get the column from the specified family with the specified qualifier.<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * &lt;p&gt;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * Overrides previous calls to addFamily for this family.<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @param family family name<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   * @param qualifier column qualifier<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   * @return this<a name="line.321"></a>
+<span class="sourceLineNo">322</span>   */<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public Scan addColumn(byte [] family, byte [] qualifier) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    NavigableSet&lt;byte []&gt; set = familyMap.get(family);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    if(set == null) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      set = new TreeSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      familyMap.put(family, set);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    if (qualifier == null) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      qualifier = HConstants.EMPTY_BYTE_ARRAY;<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    }<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    set.add(qualifier);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    return this;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  /**<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   * Get versions of columns only within the specified timestamp range,<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * [minStamp, maxStamp).  Note, default maximum versions to return is 1.  If<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * your time range spans more than one version and you want all versions<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * returned, up the number of versions beyond the default.<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * @param minStamp minimum timestamp value, inclusive<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   * @param maxStamp maximum timestamp value, exclusive<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   * @see #readAllVersions()<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   * @see #setMaxVersions(int)<a name="line.344"></a>
+<span class="sourceLineNo">345</span>   * @return this<a name="line.345"></a>
+<span class="sourceLineNo">346</span>   */<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  public Scan setTimeRange(long minStamp, long maxStamp) throws IOException {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    tr = new TimeRange(minStamp, maxStamp);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    return this;<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  }<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span>  /**<a name="line.352"></a>
+<span class="sourceLineNo">353</span>   * Get versions of columns with the specified timestamp. Note, default maximum<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   * versions to return is 1.  If your time range spans more than one version<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * and you want all versions returned, up the number of versions beyond the<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * defaut.<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * @param timestamp version timestamp<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   * @see #readAllVersions()<a name="line.358"></a>
+<span class="sourceLineNo">359</span>   * @see #setMaxVersions(int)<a name="line.359"></a>
+<span class="sourceLineNo">360</span>   * @return this<a name="line.360"></a>
+<span class="sourceLineNo">361</span>   * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0.<a name="line.361"></a>
+<span class="sourceLineNo">362</span>   *             Use {@link #setTimestamp(long)} instead<a name="line.362"></a>
+<span class="sourceLineNo">363</span>   */<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  @Deprecated<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  public Scan setTimeStamp(long timestamp)<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  throws IOException {<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    return this.setTimestamp(timestamp);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>  /**<a name="line.370"></a>
+<span class="sourceLineNo">371</span>   * Get versions of columns with the specified timestamp. Note, default maximum<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * versions to return is 1.  If your time range spans more than one version<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * and you want all versions returned, up the number of versions beyond the<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * defaut.<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * @param timestamp version timestamp<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @see #readAllVersions()<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * @see #setMaxVersions(int)<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * @return this<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   */<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  public Scan setTimestamp(long timestamp) {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    try {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      tr = new TimeRange(timestamp, timestamp + 1);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    } catch(Exception e) {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      // This should never happen, unless integer overflow or something extremely wrong...<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      LOG.error("TimeRange failed, likely caused by integer overflow. ", e);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      throw e;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    }<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>    return this;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  }<a name="line.390"></a>
+<span class="sourceLineNo">391</span><a name="line.391"></a>
+<span class="sourceLineNo">392</span>  @Override public Scan setColumnFamilyTimeRange(byte[] cf, long minStamp, long maxStamp) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    return (Scan) super.setColumnFamilyTimeRange(cf, minStamp, maxStamp);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  }<a name="line.394"></a>
+<span class="sourceLineNo">395</span><a name="line.395"></a>
+<span class="sourceLineNo">396</span>  /**<a name="line.396"></a>
+<span class="sourceLineNo">397</span>   * Set the start row of the scan.<a name="line.397"></a>
+<span class="sourceLineNo">398</span>   * &lt;p&gt;<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   * If the specified row does not exist, the Scanner will start from the next closest row after the<a name="line.399"></a>
+<span class="sourceLineNo">400</span>   * specified row.<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   * @param startRow row to start scanner at or after<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   * @return this<a name="line.402"></a>
+<span class="sourceLineNo">403</span>   * @throws IllegalArgumentException if startRow does not meet criteria for a row key (when length<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   */<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  public Scan withStartRow(byte[] startRow) {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    return withStartRow(startRow, true);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>  }<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>  /**<a name="line.410"></a>
+<span class="sourceLineNo">411</span>   * Set the start row of the scan.<a name="line.411"></a>
+<span class="sourceLineNo">412</span>   * &lt;p&gt;<a name="line.412"></a>
+<span class="sourceLineNo">413</span>   * If the specified row does not exist, or the {@code inclusive} is {@code false}, the Scanner<a name="line.413"></a>
+<span class="sourceLineNo">414</span>   * will start from the next closest row after the specified row.<a name="line.414"></a>
+<span class="sourceLineNo">415</span>   * @param startRow row to start scanner at or after<a name="line.415"></a>
+<span class="sourceLineNo">416</span>   * @param inclusive whether we should include the start row when scan<a name="line.416"></a>
+<span class="sourceLineNo">417</span>   * @return this<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   * @throws IllegalArgumentException if startRow does not meet criteria for a row key (when length<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   */<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  public Scan withStartRow(byte[] startRow, boolean inclusive) {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    if (Bytes.len(startRow) &gt; HConstants.MAX_ROW_LENGTH) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      throw new IllegalArgumentException("startRow's length must be less than or equal to "<a name="line.423"></a>
+<span class="sourceLineNo">424</span>          + HConstants.MAX_ROW_LENGTH + " to meet the criteria" + " for a row key.");<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    }<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    this.startRow = startRow;<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    this.includeStartRow = inclusive;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    return this;<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  }<a name="line.429"></a>
+<span class="sourceLineNo">430</span><a name="line.430"></a>
+<span class="sourceLineNo">431</span>  /**<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   * Set the stop row of the scan.<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * &lt;p&gt;<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   * The scan will include rows that are lexicographically less than the provided stopRow.<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * &lt;p&gt;<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   * &lt;b&gt;Note:&lt;/b&gt; When doing a filter for a rowKey &lt;u&gt;Prefix&lt;/u&gt; use<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * {@link #setRowPrefixFilter(byte[])}. The 'trailing 0' will not yield the desired result.<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   * &lt;/p&gt;<a name="line.438"></a>
+<span class="sourceLineNo">439</span>   * @param stopRow row to end at (exclusive)<a name="line.439"></a>
+<span class="sourceLineNo">440</span>   * @return this<a name="line.440"></a>
+<span class="sourceLineNo">441</span>   * @throws IllegalArgumentException if stopRow does not meet criteria for a row key (when length<a name="line.441"></a>
+<span class="sourceLineNo">442</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.442"></a>
+<span class="sourceLineNo">443</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use {@link #withStopRow(byte[])} instead.<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   *   This method may change the inclusive of the stop row to keep compatible with the old<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   *   behavior.<a name="line.445"></a>
+<span class="sourceLineNo">446</span>   * @see #withStopRow(byte[])<a name="line.446"></a>
+<span class="sourceLineNo">447</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17320"&gt;HBASE-17320&lt;/a&gt;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>   */<a name="line.448"></a>
+<span class="sourceLineNo">449</span>  @Deprecated<a name="line.449"></a>
+<span class="sourceLineNo">450</span>  public Scan setStopRow(byte[] stopRow) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    withStopRow(stopRow);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    if (ClientUtil.areScanStartRowAndStopRowEqual(this.startRow, this.stopRow)) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      // for keeping the old behavior that a scan with the same start and stop row is a get scan.<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      this.includeStopRow = true;<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    return this;<a name="line.456"></a>
+<span class="sourceLineNo">457</span>  }<a name="line.457"></a>
+<span class="sourceLineNo">458</span><a name="line.458"></a>
+<span class="sourceLineNo">459</span>  /**<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   * Set the stop row of the scan.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>   * &lt;p&gt;<a name="line.461"></a>
+<span class="sourceLineNo">462</span>   * The scan will include rows that are lexicographically less than the provided stopRow.<a name="line.462"></a>
+<span class="sourceLineNo">463</span>   * &lt;p&gt;<a name="line.463"></a>
+<span class="sourceLineNo">464</span>   * &lt;b&gt;Note:&lt;/b&gt; When doing a filter for a rowKey &lt;u&gt;Prefix&lt;/u&gt; use<a name="line.464"></a>
+<span class="sourceLineNo">465</span>   * {@link #setRowPrefixFilter(byte[])}. The 'trailing 0' will not yield the desired result.<a name="line.465"></a>
+<span class="sourceLineNo">466</span>   * &lt;/p&gt;<a name="line.466"></a>
+<span class="sourceLineNo">467</span>   * @param stopRow row to end at (exclusive)<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   * @return this<a name="line.468"></a>
+<span class="sourceLineNo">469</span>   * @throws IllegalArgumentException if stopRow does not meet criteria for a row key (when length<a name="line.469"></a>
+<span class="sourceLineNo">470</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.470"></a>
+<span class="sourceLineNo">471</span>   */<a name="line.471"></a>
+<span class="sourceLineNo">472</span>  public Scan withStopRow(byte[] stopRow) {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    return withStopRow(stopRow, false);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>  }<a name="line.474"></a>
+<span class="sourceLineNo">475</span><a name="line.475"></a>
+<span class="sourceLineNo">476</span>  /**<a name="line.476"></a>
+<span class="sourceLineNo">477</span>   * Set the stop row of the scan.<a name="line.477"></a>
+<span class="sourceLineNo">478</span>   * &lt;p&gt;<a name="line.478"></a>
+<span class="sourceLineNo">479</span>   * The scan will include rows that are lexicographically less than (or equal to if<a name="line.479"></a>
+<span class="sourceLineNo">480</span>   * {@code inclusive} is {@code true}) the provided stopRow.<a name="line.480"></a>
+<span class="sourceLineNo">481</span>   * @param stopRow row to end at<a name="line.481"></a>
+<span class="sourceLineNo">482</span>   * @param inclusive whether we should include the stop row when scan<a name="line.482"></a>
+<span class="sourceLineNo">483</span>   * @return this<a name="line.483"></a>
+<span class="sourceLineNo">484</span>   * @throws IllegalArgumentException if stopRow does not meet criteria for a row key (when length<a name="line.484"></a>
+<span class="sourceLineNo">485</span>   *           exceeds {@link HConstants#MAX_ROW_LENGTH})<a name="line.485"></a>
+<span class="sourceLineNo">486</span>   */<a name="line.486"></a>
+<span class="sourceLineNo">487</span>  public Scan withStopRow(byte[] stopRow, boolean inclusive) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    if (Bytes.len(stopRow) &gt; HConstants.MAX_ROW_LENGTH) {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      throw new IllegalArgumentException("stopRow's length must be less than or equal to "<a name="line.489"></a>
+<span class="sourceLineNo">490</span>          + HConstants.MAX_ROW_LENGTH + " to meet the criteria" + " for a row key.");<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    }<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    this.stopRow = stopRow;<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    this.includeStopRow = inclusive;<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    return this;<a name="line.494"></a>
+<span class="sourceLineNo">495</span>  }<a name="line.495"></a>
+<span class="sourceLineNo">496</span><a name="line.496"></a>
+<span class="sourceLineNo">497</span>  /**<a name="line.497"></a>
+<span class="sourceLineNo">498</span>   * &lt;p&gt;Set a filter (using stopRow and startRow) so the result set only contains rows where the<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   * rowKey starts with the specified prefix.&lt;/p&gt;<a name="line.499"></a>
+<span class="sourceLineNo">500</span>   * &lt;p&gt;This is a utility method that converts the desired rowPrefix into the appropriate values<a name="line.500"></a>
+<span class="sourceLineNo">501</span>   * for the startRow and stopRow to achieve the desired result.&lt;/p&gt;<a name="line.501"></a>
+<span class="sourceLineNo">502</span>   * &lt;p&gt;This can safely be used in combination with setFilter.&lt;/p&gt;<a name="line.502"></a>
+<span class="sourceLineNo">503</span>   * &lt;p&gt;&lt;b&gt;NOTE: Doing a {@link #withStartRow(byte[])} and/or {@link #setStopRow(byte[])}<a name="line.503"></a>
+<span class="sourceLineNo">504</span>   * after this method will yield undefined results.&lt;/b&gt;&lt;/p&gt;<a name="line.504"></a>
+<span class="sourceLineNo">505</span>   * @param rowPrefix the prefix all rows must start with. (Set &lt;i&gt;null&lt;/i&gt; to remove the filter.)<a name="line.505"></a>
+<span class="sourceLineNo">506</span>   * @return this<a name="line.506"></a>
+<span class="sourceLineNo">507</span>   */<a name="line.507"></a>
+<span class="sourceLineNo">508</span>  public Scan setRowPrefixFilter(byte[] rowPrefix) {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    if (rowPrefix == null) {<a name="line.509"></a>
+<span class="sourceLineNo">510</span>      withStartRow(HConstants.EMPTY_START_ROW);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>      setStopRow(HConstants.EMPTY_END_ROW);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    } else {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>      this.withStartRow(rowPrefix);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>      this.setStopRow(ClientUtil.calculateTheClosestNextRowKeyForPrefix(rowPrefix));<a name="line.514"></a>
+<span class="sourceLineNo">515</span>    }<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    return this;<a name="line.516"></a>
+<span class="sourceLineNo">517</span>  }<a name="line.517"></a>
+<span class="sourceLineNo">518</span><a name="line.518"></a>
+<span class="sourceLineNo">519</span>  /**<a name="line.519"></a>
+<span class="sourceLineNo">520</span>   * Get up to the specified number of versions of each column.<a name="line.520"></a>
+<span class="sourceLineNo">521</span>   * @param maxVersions maximum versions for each column<a name="line.521"></a>
 <span class="sourceLineNo">522</span>   * @return this<a name="line.522"></a>
 <span class="sourceLineNo">523</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   *   family's max versions, so use {@link #readAllVersions()} instead.<a name="line.524"></a>
-<span class="sourceLineNo">525</span>   * @see #readAllVersions()<a name="line.525"></a>
+<span class="sourceLineNo">524</span>   *   family's max versions, so use {@link #readVersions(int)} instead.<a name="line.524"></a>
+<span class="sourceLineNo">525</span>   * @see #readVersions(int)<a name="line.525"></a>
 <span class="sourceLineNo">526</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17125"&gt;HBASE-17125&lt;/a&gt;<a name="line.526"></a>
 <span class="sourceLineNo">527</span>   */<a name="line.527"></a>
 <span class="sourceLineNo">528</span>  @Deprecated<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  public Scan setMaxVersions() {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    return readAllVersions();<a name="line.530"></a>
+<span class="sourceLineNo">529</span>  public Scan setMaxVersions(int maxVersions) {<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    return readVersions(maxVersions);<a name="line.530"></a>
 <span class="sourceLineNo">531</span>  }<a name="line.531"></a>
 <span class="sourceLineNo">532</span><a name="line.532"></a>
 <span class="sourceLineNo">533</span>  /**<a name="line.533"></a>
-<span class="sourceLineNo">534</span>   * Get up to the specified number of versions of each column.<a name="line.534"></a>
-<span class="sourceLineNo">535</span>   * @param maxVersions maximum versions for each column<a name="line.535"></a>
-<span class="sourceLineNo">536</span>   * @return this<a name="line.536"></a>
-<span class="sourceLineNo">537</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. It is easy to misunderstand with column<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   *   family's max versions, so use {@link #readVersions(int)} instead.<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @see #readVersions(int)<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17125"&gt;HBASE-17125&lt;/a&gt;<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   */<a name="line.541"></a>
-<span class="sourceLineNo">542</span>  @Deprecated<a name="line.542"></a>
-<span class="sourceLineNo">543</span>  public Scan setMaxVersions(int maxVersions) {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    return readVersions(maxVersions);<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span>  /**<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * Get all available versions.<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * @return this<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   */<a name="line.550"></a>
-<span class="sourceLineNo">551</span>  public Scan readAllVersions() {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    this.maxVersions = Integer.MAX_VALUE;<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    return this;<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  }<a name="line.554"></a>
-<span class="sourceLineNo">555</span><a name="line.555"></a>
-<span class="sourceLineNo">556</span>  /**<a name="line.556"></a>
-<span class="sourceLineNo">557</span>   * Get up to the specified number of versions of each column.<a name="line.557"></a>
-<span class="sourceLineNo">558</span>   * @param versions specified number of versions for each column<a name="line.558"></a>
-<span class="sourceLineNo">559</span>   * @return this<a name="line.559"></a>
+<span class="sourceLineNo">534</span>   * Get all available versions.<a name="line.534"></a>
+<span class="sourceLineNo">535</span>   * @return this<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   */<a name="line.536"></a>
+<span class="sourceLineNo">537</span>  public Scan readAllVersions() {<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    this.maxVersions = Integer.MAX_VALUE;<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    return this;<a name="line.539"></a>
+<span class="sourceLineNo">540</span>  }<a name="line.540"></a>
+<span class="sourceLineNo">541</span><a name="line.541"></a>
+<span class="sourceLineNo">542</span>  /**<a name="line.542"></a>
+<span class="sourceLineNo">543</span>   * Get up to the specified number of versions of each column.<a name="line.543"></a>
+<span class="sourceLineNo">544</span>   * @param versions specified number of versions for each column<a name="line.544"></a>
+<span class="sourceLineNo">545</span>   * @return this<a name="line.545"></a>
+<span class="sourceLineNo">546</span>   */<a name="line.546"></a>
+<span class="sourceLineNo">547</span>  public Scan readVersions(int versions) {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    this.maxVersions = versions;<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    return this;<a name="line.549"></a>
+<span class="sourceLineNo">550</span>  }<a name="line.550"></a>
+<span class="sourceLineNo">551</span><a name="line.551"></a>
+<span class="sourceLineNo">552</span>  /**<a name="line.552"></a>
+<span class="sourceLineNo">553</span>   * Set the maximum number of cells to return for each call to next(). Callers should be aware<a name="line.553"></a>
+<span class="sourceLineNo">554</span>   * that this is not equivalent to calling {@link #setAllowPartialResults(boolean)}.<a name="line.554"></a>
+<span class="sourceLineNo">555</span>   * If you don't allow partial results, the number of cells in each Result must equal to your<a name="line.555"></a>
+<span class="sourceLineNo">556</span>   * batch setting unless it is the last Result for current row. So this method is helpful in paging<a name="line.556"></a>
+<span class="sourceLineNo">557</span>   * queries. If you just want to prevent OOM at client, use setAllowPartialResults(true) is better.<a name="line.557"></a>
+<span class="sourceLineNo">558</span>   * @param batch the maximum number of values<a name="line.558"></a>
+<span class="sourceLineNo">559</span>   * @see Result#mayHaveMoreCellsInRow()<a name="line.559"></a>
 <span class="sourceLineNo">560</span>   */<a name="line.560"></a>
-<span class="sourceLineNo">561</span>  public Scan readVersions(int versions) {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    this.maxVersions = versions;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    return this;<a name="line.563"></a>
-<span class="sourceLineNo">564</span>  }<a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>  /**<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   * Set the maximum number of cells to return for each call to next(). Callers should be aware<a name="line.567"></a>
-<span class="sourceLineNo">568</span>   * that this is not equivalent to calling {@link #setAllowPartialResults(boolean)}.<a name="line.568"></a>
-<span class="sourceLineNo">569</span>   * If you don't allow partial results, the number of cells in each Result must equal to your<a name="line.569"></a>
-<span class="sourceLineNo">570</span>   * batch setting unless it is the last Result for current row. So this method is helpful in paging<a name="line.570"></a>
-<span class="sourceLineNo">571</span>   * queries. If you just want to prevent OOM at client, use setAllowPartialResults(true) is better.<a name="line.571"></a>
-<span class="sourceLineNo">572</span>   * @param batch the maximum number of values<a name="line.572"></a>
-<span class="sourceLineNo">573</span>   * @see Result#mayHaveMoreCellsInRow()<a name="line.573"></a>
+<span class="sourceLineNo">561</span>  public Scan setBatch(int batch) {<a name="line.561"></a>
+<span class="sourceLineNo">562</span>    if (this.hasFilter() &amp;&amp; this.filter.hasFilterRow()) {<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      throw new IncompatibleFilterException(<a name="line.563"></a>
+<span class="sourceLineNo">564</span>        "Cannot set batch on a scan using a filter" +<a name="line.564"></a>
+<span class="sourceLineNo">565</span>        " that returns true for filter.hasFilterRow");<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    }<a name="line.566"></a>
+<span class="sourceLineNo">567</span>    this.batch = batch;<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    return this;<a name="line.568"></a>
+<span class="sourceLineNo">569</span>  }<a name="line.569"></a>
+<span class="sourceLineNo">570</span><a name="line.570"></a>
+<span class="sourceLineNo">571</span>  /**<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   * Set the maximum number of values to return per row per Column Family<a name="line.572"></a>
+<span class="sourceLineNo">573</span>   * @param limit the maximum number of values returned / row / CF<a name="line.573"></a>
 <span class="sourceLineNo">574</span>   */<a name="line.574"></a>
-<span class="sourceLineNo">575</span>  public Scan setBatch(int batch) {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    if (this.hasFilter() &amp;&amp; this.filter.hasFilterRow()) {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      throw new IncompatibleFilterException(<a name="line.577"></a>
-<span class="sourceLineNo">578</span>        "Cannot set batch on a scan using a filter" +<a name="line.578"></a>
-<span class="sourceLineNo">579</span>        " that returns true for filter.hasFilterRow");<a name="line.579"></a>
-<span class="sourceLineNo">580</span>    }<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    this.batch = batch;<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    return this;<a name="line.582"></a>
-<span class="sourceLineNo">583</span>  }<a name="line.583"></a>
-<span class="sourceLineNo">584</span><a name="line.584"></a>
-<span class="sourceLineNo">585</span>  /**<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * Set the maximum number of values to return per row per Column Family<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   * @param limit the maximum number of values returned / row / CF<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   */<a name="line.588"></a>
-<span class="sourceLineNo">589</span>  public Scan setMaxResultsPerColumnFamily(int limit) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    this.storeLimit = limit;<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    return this;<a name="line.591"></a>
-<span class="sourceLineNo">592</span>  }<a name="line.592"></a>
-<span class="sourceLineNo">593</span><a name="line.593"></a>
-<span class="sourceLineNo">594</span>  /**<a name="line.594"></a>
-<span class="sourceLineNo">595</span>   * Set offset for the row per Column Family.<a name="line.595"></a>
-<span class="sourceLineNo">596</span>   * @param offset is the number of kvs that will be skipped.<a name="line.596"></a>
-<span class="sourceLineNo">597</span>   */<a name="line.597"></a>
-<span class="sourceLineNo">598</span>  public Scan setRowOffsetPerColumnFamily(int offset) {<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    this.storeOffset = offset;<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    return this;<a name="line.600"></a>
-<span class="sourceLineNo">601</span>  }<a name="line.601"></a>
-<span class="sourceLineNo">602</span><a name="line.602"></a>
-<span class="sourceLineNo">603</span>  /**<a name="line.603"></a>
-<span class="sourceLineNo">604</span>   * Set the number of rows for caching that will be passed to scanners.<a name="line.604"></a>
-<span class="sourceLineNo">605</span>   * If not set, the Configuration setting {@link HConstants#HBASE_CLIENT_SCANNER_CACHING} will<a name="line.605"></a>
-<span class="sourceLineNo">606</span>   * apply.<a name="line.606"></a>
-<span class="sourceLineNo">607</span>   * Higher caching values will enable faster scanners but will use more memory.<a name="line.607"></a>
-<span class="sourceLineNo">608</span>   * @param caching the number of rows for caching<a name="line.608"></a>
-<span class="sourceLineNo">609</span>   */<a name="line.609"></a>
-<span class="sourceLineNo">610</span>  public Scan setCaching(int caching) {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    this.caching = caching;<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    return this;<a name="line.612"></a>
-<span class="sourceLineNo">613</span>  }<a name="line.613"></a>
-<span class="sourceLineNo">614</span><a name="line.614"></a>
-<span class="sourceLineNo">615</span>  /**<a name="line.615"></a>
-<span class="sourceLineNo">616</span>   * @return the maximum result size in bytes. See {@link #setMaxResultSize(long)}<a name="line.616"></a>
-<span class="sourceLineNo">617</span>   */<a name="line.617"></a>
-<span class="sourceLineNo">618</span>  public long getMaxResultSize() {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    return maxResultSize;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>  }<a name="line.620"></a>
-<span class="sourceLineNo">621</span><a name="line.621"></a>
-<span class="sourceLineNo">622</span>  /**<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   * Set the maximum result size. The default is -1; this means that no specific<a name="line.623"></a>
-<span class="sourceLineNo">624</span>   * maximum result size will be set for this scan, and the global configured<a name="line.624"></a>
-<span class="sourceLineNo">625</span>   * value will be used instead. (Defaults to unlimited).<a name="line.625"></a>
-<span class="sourceLineNo">626</span>   *<a name="line.626"></a>
-<span class="sourceLineNo">627</span>   * @param maxResultSize The maximum result size in bytes.<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   */<a name="line.628"></a>
-<span class="sourceLineNo">629</span>  public Scan setMaxResultSize(long maxResultSize) {<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    this.maxResultSize = maxResultSize;<a name="line.630"></a>
-<span class="sourceLineNo">631</span>    return this;<a name="line.631"></a>
-<span class="sourceLineNo">632</span>  }<a name="line.632"></a>
-<span class="sourceLineNo">633</span><a name="line.633"></a>
-<span class="sourceLineNo">634</span>  @Override<a name="line.634"></a>
-<span class="sourceLineNo">635</span>  public Scan setFilter(Filter filter) {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    super.setFilter(filter);<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    return this;<a name="line.637"></a>
-<span class="sourceLineNo">638</span>  }<a name="line.638"></a>
-<span class="sourceLineNo">639</span><a name="line.639"></a>
-<span class="sourceLineNo">640</span>  /**<a name="line.640"></a>
-<span class="sourceLineNo">641</span>   * Setting the familyMap<a name="line.641"></a>
-<span class="sourceLineNo">642</span>   * @param familyMap map of family to qualifier<a name="line.642"></a>
-<span class="sourceLineNo">643</span>   * @return this<a name="line.643"></a>
-<span class="sourceLineNo">644</span>   */<a name="line.644"></a>
-<span class="sourceLineNo">645</span>  public Scan setFamilyMap(Map&lt;byte [], NavigableSet&lt;byte []&gt;&gt; familyMap) {<a name="line.645"></a>
-<span class="sourceLineNo">646</span>    this.familyMap = familyMap;<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    return this;<a name="line.647"></a>
-<span class="sourceLineNo">648</span>  }<a name="line.648"></a>
-<span class="sourceLineNo">649</span><a name="line.649"></a>
-<span class="sourceLineNo">650</span>  /**<a name="line.650"></a>
-<span class="sourceLineNo">651</span>   * Getting the familyMap<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   * @return familyMap<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   */<a name="line.653"></a>
-<span class="sourceLineNo">654</span>  public Map&lt;byte [], NavigableSet&lt;byte []&gt;&gt; getFamilyMap() {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    return this.familyMap;<a name="line.655"></a>
-<span class="sourceLineNo">656</span>  }<a name="line.656"></a>
-<span class="sourceLineNo">657</span><a name="line.657"></a>
-<span class="sourceLineNo">658</span>  /**<a name="line.658"></a>
-<span class="sourceLineNo">659</span>   * @return the number of families in familyMap<a name="line.659"></a>
-<span class="sourceLineNo">660</span>   */<a name="line.660"></a>
-<span class="sourceLineNo">661</span>  public int numFamilies() {<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    if(hasFamilies()) {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      return this.familyMap.size();<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    }<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    return 0;<a name="line.665"></a>
-<span class="sourceLineNo">666</span>  }<a name="line.666"></a>
-<span class="sourceLineNo">667</span><a name="line.667"></a>
-<span class="sourceLineNo">668</span>  /**<a name="line.668"></a>
-<span class="sourceLineNo">669</span>   * @return true if familyMap is non empty, false otherwise<a name="line.669"></a>
-<span class="sourceLineNo">670</span>   */<a name="line.670"></a>
-<span class="sourceLineNo">671</span>  public boolean hasFamilies() {<a name="line.671"></a>
-<span class="sourceLineNo">672</span>    return !this.familyMap.isEmpty();<a name="line.672"></a>
-<span class="sourceLineNo">673</span>  }<a name="line.673"></a>
-<span class="sourceLineNo">674</span><a name="line.674"></a>
-<span class="sourceLineNo">675</span>  /**<a name="line.675"></a>
-<span class="sourceLineNo">676</span>   * @return the keys of the familyMap<a name="line.676"></a>
-<span class="sourceLineNo">677</span>   */<a name="line.677"></a>
-<span class="sourceLineNo">678</span>  public byte[][] getFamilies() {<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    if(hasFamilies()) {<a name="line.679"></a>
-<span class="sourceLineNo">680</span>      return this.familyMap.keySet().toArray(new byte[0][0]);<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    }<a name="line.681"></a>
-<span class="sourceLineNo">682</span>    return null;<a name="line.682"></a>
+<span class="sourceLineNo">575</span>  public Scan setMaxResultsPerColumnFamily(int limit) {<a name="line.575"></a>
+<span class="sourceLineNo">576</span>    this.storeLimit = limit;<a name="line.576"></a>
+<span class="sourceLineNo">577</span>    return this;<a name="line.577"></a>
+<span class="sourceLineNo">578</span>  }<a name="line.578"></a>
+<span class="sourceLineNo">579</span><a name="line.579"></a>
+<span class="sourceLineNo">580</span>  /**<a name="line.580"></a>
+<span class="sourceLineNo">581</span>   * Set offset for the row per Column Family.<a name="line.581"></a>
+<span class="sourceLineNo">582</span>   * @param offset is the number of kvs that will be skipped.<a name="line.582"></a>
+<span class="sourceLineNo">583</span>   */<a name="line.583"></a>
+<span class="sourceLineNo">584</span>  public Scan setRowOffsetPerColumnFamily(int offset) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>    this.storeOffset = offset;<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    return this;<a name="line.586"></a>
+<span class="sourceLineNo">587</span>  }<a name="line.587"></a>
+<span class="sourceLineNo">588</span><a name="line.588"></a>
+<span class="sourceLineNo">589</span>  /**<a name="line.589"></a>
+<span class="sourceLineNo">590</span>   * Set the number of rows for caching that will be passed to scanners.<a name="line.590"></a>
+<span class="sourceLineNo">591</span>   * If not set, the Configuration setting {@link HConstants#HBASE_CLIENT_SCANNER_CACHING} will<a name="line.591"></a>
+<span class="sourceLineNo">592</span>   * apply.<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * Higher caching values will enable faster scanners but will use more memory.<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   * @param caching the number of rows for caching<a name="line.594"></a>
+<span class="sourceLineNo">595</span>   */<a name="line.595"></a>
+<span class="sourceLineNo">596</span>  public Scan setCaching(int caching) {<a name="line.596"></a>
+<span class="sourceLineNo">597</span>    this.caching = caching;<a name="line.597"></a>
+<span class="sourceLineNo">598</span>    return this;<a name="line.598"></a>
+<span class="sourceLineNo">599</span>  }<a name="line.599"></a>
+<span class="sourceLineNo">600</span><a name="line.600"></a>
+<span class="sourceLineNo">601</span>  /**<a name="line.601"></a>
+<span class="sourceLineNo">602</span>   * @return the maximum result size in bytes. See {@link #setMaxResultSize(long)}<a name="line.602"></a>
+<span class="sourceLineNo">603</span>   */<a name="line.603"></a>
+<span class="sourceLineNo">604</span>  public long getMaxResultSize() {<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    return maxResultSize;<a name="line.605"></a>
+<span class="sourceLineNo">606</span>  }<a name="line.606"></a>
+<span class="sourceLineNo">607</span><a name="line.607"></a>
+<span class="sourceLineNo">608</span>  /**<a name="line.608"></a>
+<span class="sourceLineNo">609</span>   * Set the maximum result size. The default is -1; this means that no specific<a name="line.609"></a>
+<span class="sourceLineNo">610</span>   * maximum result size will be set for this scan, and the global configured<a name="line.610"></a>
+<span class="sourceLineNo">611</span>   * value will be used instead. (Defaults to unlimited).<a name="line.611"></a>
+<span class="sourceLineNo">612</span>   *<a name="line.612"></a>
+<span class="sourceLineNo">613</span>   * @param maxResultSize The maximum result size in bytes.<a name="line.613"></a>
+<span class="sourceLineNo">614</span>   */<a name="line.614"></a>
+<span class="sourceLineNo">615</span>  public Scan setMaxResultSize(long maxResultSize) {<a name="line.615"></a>
+<span class="sourceLineNo">616</span>    this.maxResultSize = maxResultSize;<a name="line.616"></a>
+<span class="sourceLineNo">617</span>    return this;<a name="line.617"></a>
+<span class="sourceLineNo">618</span>  }<a name="line.618"></a>
+<span class="sourceLineNo">619</span><a name="line.619"></a>
+<span class="sourceLineNo">620</span>  @Override<a name="line.620"></a>
+<span class="sourceLineNo">621</span>  public Scan setFilter(Filter filter) {<a name="line.621"></a>
+<span class="sourceLineNo">622</span>    super.setFilter(filter);<a name="line.622"></a>
+<span class="sourceLineNo">623</span>    return this;<a name="line.623"></a>
+<span class="sourceLineNo">624</span>  }<a name="line.624"></a>
+<span class="sourceLineNo">625</span><a name="line.625"></a>
+<span class="sourceLineNo">626</span>  /**<a name="line.626"></a>
+<span class="sourceLineNo">627</span>   * Setting the familyMap<a name="line.627"></a>
+<span class="sourceLineNo">628</span>   * @param familyMap map of family to qualifier<a name="line.628"></a>
+<span class="sourceLineNo">629</span>   * @return this<a name="line.629"></a>
+<span class="sourceLineNo">630</span>   */<a name="line.630"></a>
+<span class="sourceLineNo">631</span>  public Scan setFamilyMap(Map&lt;byte [], NavigableSet&lt;byte []&gt;&gt; familyMap) {<a name="line.631"></a>
+<span class="sourceLineNo">632</span>    this.familyMap = familyMap;<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    return this;<a name="line.633"></a>
+<span class="sourceLineNo">634</span>  }<a name="line.634"></a>
+<span class="sourceLineNo">635</span><a name="line.635"></a>
+<span class="sourceLineNo">636</span>  /**<a name="line.636"></a>
+<span class="sourceLineNo">637</span>   * Getting the familyMap<a name="line.637"></a>
+<span class="sourceLineNo">638</span>   * @return familyMap<a name="line.638"></a>
+<span class="sourceLineNo">639</span>   */<a name="line.639"></a>
+<span class="sourceLineNo">640</span>  public Map&lt;byte [], NavigableSet&lt;byte []&gt;&gt; getFamilyMap() {<a name="line.640"></a>
+<span class="sourceLineNo">641</span>    return this.familyMap;<a name="line.641"></a>
+<span class="sourceLineNo">642</span>  }<a name="line.642"></a>
+<span class="sourceLineNo">643</span><a name="line.643"></a>
+<span class="sourceLineNo">644</span>  /**<a name="line.644"></a>
+<span class="sourceLineNo">645</span>   * @return the number of families in familyMap<a name="line.645"></a>
+<span class="sourceLineNo">646</span>   */<a name="line.646"></a>
+<span class="sourceLineNo">647</span>  public int numFamilies() {<a name="line.647"></a>
+<span class="sourceLineNo">648</span>    if(hasFamilies()) {<a name="line.648"></a>
+<span class="sourceLineNo">649</span>      return this.familyMap.size();<a name="line.649"></a>
+<span class="sourceLineNo">650</span>    }<a name="line.650"></a>
+<span class="sourceLineNo">651</span>    return 0;<a name="line.651"></a>
+<span class="sourceLineNo">652</span>  }<a name="line.652"></a>
+<span class="sourceLineNo">653</span><a name="line.653"></a>
+<span class="sourceLineNo">654</span>  /**<a name="line.654"></a>
+<span class="sourceLineNo">655</span>   * @return true if familyMap is non empty, false otherwise<a name="line.655"></a>
+<span class="sourceLineNo">656</span>   */<a name="line.656"></a>
+<span class="sourceLineNo">657</span>  public boolean hasFamilies() {<a name="line.657"></a>
+<span class="sourceLineNo">658</span>    return !this.familyMap.isEmpty();<a name="line.658"></a>
+<span class="sourceLineNo">659</span>  }<a name="line.659"></a>
+<span class="sourceLineNo">660</span><a name="line.660"></a>
+<span class="sourceLineNo">661</span>  /**<a name="line.661"></a>
+<span class="sourceLineNo">662</span>   * @return the keys of the familyMap<a name="line.662"></a>
+<span class="sourceLineNo">663</span>   */<a name="line.663"></a>
+<span class="sourceLineNo">664</span>  public byte[][] getFamilies() {<a name="line.664"></a>
+<span class="sourceLineNo">665</span>    if(hasFamilies()) {<a name="line.665"></a>
+<span class="sourceLineNo">666</span>      return this.familyMap.keySet().toArray(new byte[0][0]);<a name="line.666"></a>
+<span class="sourceLineNo">667</span>    }<a name="line.667"></a>
+<span class="sourceLineNo">668</span>    return null;<a name="line.668"></a>
+<span class="sourceLineNo">669</span>  }<a name="line.669"></a>
+<span class="sourceLineNo">670</span><a name="line.670"></a>
+<span class="sourceLineNo">671</span>  /**<a name="line.671"></a>
+<span class="sourceLineNo">672</span>   * @return the startrow<a name="line.672"></a>
+<span class="sourceLineNo">673</span>   */<a name="line.673"></a>
+<span class="sourceLineNo">674</span>  public byte [] getStartRow() {<a name="line.674"></a>
+<span class="sourceLineNo">675</span>    return this.startRow;<a name="line.675"></a>
+<span class="sourceLineNo">676</span>  }<a name="line.676"></a>
+<span class="sourceLineNo">677</span><a name="line.677"></a>
+<span class="sourceLineNo">678</span>  /**<a name="line.678"></a>
+<span class="sourceLineNo">679</span>   * @return if we should include start row when scan<a name="line.679"></a>
+<span class="sourceLineNo">680</span>   */<a name="line.680"></a>
+<span class="sourceLineNo">681</span>  public boolean includeStartRow() {<a name="line.681"></a>
+<span class="sourceLineNo">682</span>    return includeStartRow;<a name="line.682"></a>
 <span class="sourceLineNo">683</span>  }<a name="line.683"></a>
 <span class="sourceLineNo">684</span><a name="line.684"></a>
 <span class="sourceLineNo">685</span>  /**<a name="line.685"></a>
-<span class="sourceLineNo">686</span>   * @return the startrow<a name="line.686"></a>
+<span class="sourceLineNo">686</span>   * @return the stoprow<a name="line.686"></a>
 <span class="sourceLineNo">687</span>   */<a name="line.687"></a>
-<span class="sourceLineNo">688</span>  public byte [] getStartRow() {<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    return this.startRow;<a name="line.689"></a>
+<span class="sourceLineNo">688</span>  public byte[] getStopRow() {<a name="line.688"></a>
+<span class="sourceLineNo">689</span>    return this.stopRow;<a name="line.689"></a>
 <span class="sourceLineNo">690</span>  }<a name="line.690"></a>
 <span class="sourceLineNo">691</span><a name="line.691"></a>
 <span class="sourceLineNo">692</span>  /**<a name="line.692"></a>
-<span class="sourceLineNo">693</span>   * @return if we should include start row when scan<a name="line.693"></a>
+<span class="sourceLineNo">693</span>   * @return if we should include stop row when scan<a name="line.693"></a>
 <span class="sourceLineNo">694</span>   */<a name="line.694"></a>
-<span class="sourceLineNo">695</span>  public boolean includeStartRow() {<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    return includeStartRow;<a name="line.696"></a>
+<span class="sourceLineNo">695</span>  public boolean includeStopRow() {<a name="line.695"></a>
+<span class="sourceLineNo">696</span>    return includeStopRow;<a name="line.696"></a>
 <span class="sourceLineNo">697</span>  }<a name="line.697"></a>
 <span class="sourceLineNo">698</span><a name="line.698"></a>
 <span class="sourceLineNo">699</span>  /**<a name="line.699"></a>
-<span class="sourceLineNo">700</span>   * @return the stoprow<a name="line.700"></a>
+<span class="sourceLineNo">700</span>   * @return the max number of versions to fetch<a name="line.700"></a>
 <span class="sourceLineNo">701</span>   */<a name="line.701"></a>
-<span class="sourceLineNo">702</span>  public byte[] getStopRow() {<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    return this.stopRow;<a name="line.703"></a>
+<span class="sourceLineNo">702</span>  public int getMaxVersions() {<a name="line.702"></a>
+<span class="sourceLineNo">703</span>    return this.maxVersions;<a name="line.703"></a>
 <span class="sourceLineNo">704</span>  }<a name="line.704"></a>
 <span class="sourceLineNo">705</span><a name="line.705"></a>
 <span class="sourceLineNo">706</span>  /**<a name="line.706"></a>
-<span class="sourceLineNo">707</span>   * @return if we should include stop row when scan<a name="line.707"></a>
+<span class="sourceLineNo">707</span>   * @return maximum number of values to return for a single call to next()<a name="line.707"></a>
 <span class="sourceLineNo">708</span>   */<a name="line.708"></a>
-<span class="sourceLineNo">709</span>  public boolean includeStopRow() {<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    return includeStopRow;<a name="line.710"></a>
+<span class="sourceLineNo">709</span>  public int getBatch() {<a name="line.709"></a>
+<span class="sourceLineNo">710</span>    return this.batch;<a name="line.710"></a>
 <span class="sourceLineNo">711</span>  }<a name="line.711"></a>
 <span class="sourceLineNo">712</span><a name="line.712"></a>
 <span class="sourceLineNo">713</span>  /**<a name="line.713"></a>
-<span class="sourceLineNo">714</span>   * @return the max number of versions to fetch<a name="line.714"></a>
+<span class="sourceLineNo">714</span>   * @return maximum number of values to return per row per CF<a name="line.714"></a>
 <span class="sourceLineNo">715</span>   */<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  public int getMaxVersions() {<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    return this.maxVersions;<a name="line.717"></a>
+<span class="sourceLineNo">716</span>  public int getMaxResultsPerColumnFamily() {<a name="line.716"></a>
+<span class="sourceLineNo">717</span>    return this.storeLimit;<a name="line.717"></a>
 <span class="sourceLineNo">718</span>  }<a name="line.718"></a>
 <span class="sourceLineNo">719</span><a name="line.719"></a>
 <span class="sourceLineNo">720</span>  /**<a name="line.720"></a>
-<span class="sourceLineNo">721</span>   * @return maximum number of values to return for a single call to next()<a name="line.721"></a>
-<span class="sourceLineNo">722</span>   */<a name="line.722"></a>
-<span class="sourceLineNo">723</span>  public int getBatch() {<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    return this.batch;<a name="line.724"></a>
-<span class="sourceLineNo">725</span>  }<a name="line.725"></a>
-<span class="sourceLineNo">726</span><a name="line.726"></a>
-<span class="sourceLineNo">727</span>  /**<a name="line.727"></a>
-<span class="sourceLineNo">728</span>   * @return maximum number of values to return per row per CF<a name="line.728"></a>
-<span class="sourceLineNo">729</span>   */<a name="line.729"></a>
-<span class="sourceLineNo">730</span>  public int getMaxResultsPerColumnFamily() {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    return this.storeLimit;<a name="line.731"></a>
-<span class="sourceLineNo">732</span>  }<a name="line.732"></a>
-<span class="sourceLineNo">733</span><a name="line.733"></a>
-<span class="sourceLineNo">734</span>  /**<a name="line.734"></a>
-<span class="sourceLineNo">735</span>   * Method for retrieving the scan's offset per row per column<a name="line.735"></a>
-<span class="sourceLineNo">736</span>   * family (#kvs to be skipped)<a name="line.736"></a>
-<span class="sourceLineNo">737</span>   * @return row offset<a name="line.737"></a>
+<span class="sourceLineNo">721</span>   * Method for retrieving the scan's offset per row per column<a name="line.721"></a>
+<span class="sourceLineNo">722</span>   * family (#kvs to be skipped)<a name="line.722"></a>
+<span class="sourceLineNo">723</span>   * @return row offset<a name="line.723"></a>
+<span class="sourceLineNo">724</span>   */<a name="line.724"></a>
+<span class="sourceLineNo">725</span>  public int getRowOffsetPerColumnFamily() {<a name="line.725"></a>
+<span class="sourceLineNo">726</span>    return this.storeOffset;<a name="line.726"></a>
+<span class="sourceLineNo">727</span>  }<a name="line.727"></a>
+<span class="sourceLineNo">728</span><a name="line.728"></a>
+<span class="sourceLineNo">729</span>  /**<a name="line.729"></a>
+<span class="sourceLineNo">730</span>   * @return caching the number of rows fetched when calling next on a scanner<a name="line.730"></a>
+<span class="sourceLineNo">731</span>   */<a name="line.731"></a>
+<span class="sourceLineNo">732</span>  public int getCaching() {<a name="line.732"></a>
+<span class="sourceLineNo">733</span>    return this.caching;<a name="line.733"></a>
+<span class="sourceLineNo">734</span>  }<a name="line.734"></a>
+<span class="sourceLineNo">735</span><a name="line.735"></a>
+<span class="sourceLineNo">736</span>  /**<a name="line.736"></a>
+<span class="sourceLineNo">737</span>   * @return TimeRange<a name="line.737"></a>
 <span class="sourceLineNo">738</span>   */<a name="line.738"></a>
-<span class="sourceLineNo">739</span>  public int getRowOffsetPerColumnFamily() {<a name="line.739"></a>
-<span class="sourceLineNo">740</span>    return this.storeOffset;<a name="line.740"></a>
+<span class="sourceLineNo">739</span>  public TimeRange getTimeRange() {<a name="line.739"></a>
+<span class="sourceLineNo">740</span>    return this.tr;<a name="line.740"></a>
 <span class="sourceLineNo">741</span>  }<a name="line.741"></a>
 <span class="sourceLineNo">742</span><a name="line.742"></a>
 <span class="sourceLineNo">743</span>  /**<a name="line.743"></a>
-<span class="sourceLineNo">744</span>   * @return caching the number of rows fetched when calling next on a scanner<a name="line.744"></a>
+<span class="sourceLineNo">744</span>   * @return RowFilter<a name="line.744"></a>
 <span class="sourceLineNo">745</span>   */<a name="line.745"></a>
-<span class="sourceLineNo">746</span>  public int getCaching() {<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    return this.caching;<a name="line.747"></a>
-<span class="sourceLineNo">748</span>  }<a name="line.748"></a>
-<span class="sourceLineNo">749</span><a name="line.749"></a>
-<span class="sourceLineNo">750</span>  /**<a name="line.750"></a>
-<span class="sourceLineNo">751</span>   * @return TimeRange<a name="line.751"></a>
-<span class="sourceLineNo">752</span>   */<a name="line.752"></a>
-<span class="sourceLineNo">753</span>  public TimeRange getTimeRange() {<a name="line.753"></a>
-<span class="sourceLineNo">754</span>    return this.tr;<a name="line.754"></a>
-<span class="sourceLineNo">755</span>  }<a name="line.755"></a>
-<span class="sourceLineNo">756</span><a name="line.756"></a>
-<span class="sourceLineNo">757</span>  /**<a name="line.757"></a>
-<span class="sourceLineNo">758</span>   * @return RowFilter<a name="line.758"></a>
-<span class="sourceLineNo">759</span>   */<a name="line.759"></a>
-<span class="sourceLineNo">760</span>  @Override<a name="line.760"></a>
-<span class="sourceLineNo">761</span>  public Filter getFilter() {<a name="line.761"></a>
-<span class="sourceLineNo">762</span>    return filter;<a name="line.762"></a>
-<span class="sourceLineNo">763</span>  }<a name="line.763"></a>
-<span class="sourceLineNo">764</span><a name="line.764"></a>
-<span class="sourceLineNo">765</span>  /**<a name="line.765"></a>
-<span class="sourceLineNo">766</span>   * @return true is a filter has been specified, false if not<a name="line.766"></a>
+<span class="sourceLineNo">746</span>  @Override<a name="line.746"></a>
+<span class="sourceLineNo">747</span>  public Filter getFilter() {<a name="line.747"></a>
+<span class="sourceLineNo">748</span>    return filter;<a name="line.748"></a>
+<span class="sourceLineNo">749</span>  }<a name="line.749"></a>
+<span class="sourceLineNo">750</span><a name="line.750"></a>
+<span class="sourceLineNo">751</span>  /**<a name="line.751"></a>
+<span class="sourceLineNo">752</span>   * @return true is a filter has been specified, false if not<a name="line.752"></a>
+<span class="sourceLineNo">753</span>   */<a name="line.753"></a>
+<span class="sourceLineNo">754</span>  public boolean hasFilter() {<a name="line.754"></a>
+<span class="sourceLineNo">755</span>    return filter != null;<a name="line.755"></a>
+<span class="sourceLineNo">756</span>  }<a name="line.756"></a>
+<span class="sourceLineNo">757</span><a name="line.757"></a>
+<span class="sourceLineNo">758</span>  /**<a name="line.758"></a>
+<span class="sourceLineNo">759</span>   * Set whether blocks should be cached for this Scan.<a name="line.759"></a>
+<span class="sourceLineNo">760</span>   * &lt;p&gt;<a name="line.760"></a>
+<span class="sourceLineNo">761</span>   * This is true by default.  When true, default settings of the table and<a name="line.761"></a>
+<span class="sourceLineNo">762</span>   * family are used (this will never override caching blocks if the block<a name="line.762"></a>
+<span class="sourceLineNo">763</span>   * cache is disabled for that family or entirely).<a name="line.763"></a>
+<span class="sourceLineNo">764</span>   *<a name="line.764"></a>
+<span class="sourceLineNo">765</span>   * @param cacheBlocks if false, default settings are overridden and blocks<a name="line.765"></a>
+<span class="sourceLineNo">766</span>   * will not be cached<a name="line.766"></a>
 <span class="sourceLineNo">767</span>   */<a name="line.767"></a>
-<span class="sourceLineNo">768</span>  public boolean hasFilter() {<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    return filter != null;<a name="line.769"></a>
-<span class="sourceLineNo">770</span>  }<a name="line.770"></a>
-<span class="sourceLineNo">771</span><a name="line.771"></a>
-<span class="sourceLineNo">772</span>  /**<a name="line.772"></a>
-<span class="sourceLineNo">773</span>   * Set whether blocks should be cached for this Scan.<a name="line.773"></a>
-<span class="sourceLineNo">774</span>   * &lt;p&gt;<a name="line.774"></a>
-<span class="sourceLineNo">775</span>   * This is true by default.  When true, default settings of the table and<a name="line.775"></a>
-<span class="sourceLineNo">776</span>   * family are used (this will never override caching blocks if the block<a name="line.776"></a>
-<span class="sourceLineNo">777</span>   * cache is disabled for that family or entirely).<a name="line.777"></a>
-<span class="sourceLineNo">778</span>   *<a name="line.778"></a>
-<span class="sourceLineNo">779</span>   * @param cacheBlocks if false, default settings are overridden and blocks<a name="line.779"></a>
-<span class="sourceLineNo">780</span>   * will not be cached<a name="line.780"></a>
-<span class="sourceLineNo">781</span>   */<a name="line.781"></a>
-<span class="sourceLineNo">782</span>  public Scan setCacheBlocks(boolean cacheBlocks) {<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    this.cacheBlocks = cacheBlocks;<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    return this;<a name="line.784"></a>
-<span class="sourceLineNo">785</span>  }<a name="line.785"></a>
-<span class="sourceLineNo">786</span><a name="line.786"></a>
-<span class="sourceLineNo">787</span>  /**<a name="line.787"></a>
-<span class="sourceLineNo">788</span>   * Get whether blocks should be cached for this Scan.<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * @return true if default caching should be used, false if blocks should not<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   * be cached<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   */<a name="line.791"></a>
-<span class="sourceLineNo">792</span>  public boolean getCacheBlocks() {<a name="line.792"></a>
-<span class="sourceLineNo">793</span>    return cacheBlocks;<a name="line.793"></a>
-<span class="sourceLineNo">794</span>  }<a name="line.794"></a>
-<span class="sourceLineNo">795</span><a name="line.795"></a>
-<span class="sourceLineNo">796</span>  /**<a name="line.796"></a>
-<span class="sourceLineNo">797</span>   * Set whether this scan is a reversed one<a name="line.797"></a>
-<span class="sourceLineNo">798</span>   * &lt;p&gt;<a name="line.798"></a>
-<span class="sourceLineNo">799</span>   * This is false by default which means forward(normal) scan.<a name="line.799"></a>
-<span class="sourceLineNo">800</span>   *<a name="line.800"></a>
-<span class="sourceLineNo">801</span>   * @param reversed if true, scan will be backward order<a name="line.801"></a>
-<span class="sourceLineNo">802</span>   * @return this<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   */<a name="line.803"></a>
-<span class="sourceLineNo">804</span>  public Scan setReversed(boolean reversed) {<a name="line.804"></a>
-<span class="sourceLineNo">805</span>    this.reversed = reversed;<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    return this;<a name="line.806"></a>
-<span class="sourceLineNo">807</span>  }<a name="line.807"></a>
-<span class="sourceLineNo">808</span><a name="line.808"></a>
-<span class="sourceLineNo">809</span>  /**<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   * Get whether this scan is a reversed one.<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   * @return true if backward scan, false if forward(default) scan<a name="line.811"></a>
+<span class="sourceLineNo">768</span>  public Scan setCacheBlocks(boolean cacheBlocks) {<a name="line.768"></a>
+<span class="sourceLineNo">769</span>    this.cacheBlocks = cacheBlocks;<a name="line.769"></a>
+<span class="sourceLineNo">770</span>    return this;<a name="line.770"></a>
+<span class="sourceLineNo">771</span>  }<a name="line.771"></a>
+<span class="sourceLineNo">772</span><a name="line.772"></a>
+<span class="sourceLineNo">773</span>  /**<a name="line.773"></a>
+<span class="sourceLineNo">774</span>   * Get whether blocks should be cached for this Scan.<a name="line.774"></a>
+<span class="sourceLineNo">775</span>   * @return true if default caching should be used, false if blocks should not<a name="line.775"></a>
+<span class="sourceLineNo">776</span>   * be cached<a name="line.776"></a>
+<span class="sourceLineNo">777</span>   */<a name="line.777"></a>
+<span class="sourceLineNo">778</span>  public boolean getCacheBlocks() {<a name="line.778"></a>
+<span class="sourceLineNo">779</span>    return cacheBlocks;<a name="line.779"></a>
+<span class="sourceLineNo">780</span>  }<a name="line.780"></a>
+<span class="sourceLineNo">781</span><a name="line.781"></a>
+<span class="sourceLineNo">782</span>  /**<a name="line.782"></a>
+<span class="sourceLineNo">783</span>   * Set whether this scan is a reversed one<a name="line.783"></a>
+<span class="sourceLineNo">784</span>   * &lt;p&gt;<a name="line.784"></a>
+<span class="sourceLineNo">785</span>   * This is false by default which means forward(normal) scan.<a name="line.785"></a>
+<span class="sourceLineNo">786</span>   *<a name="line.786"></a>
+<span class="sourceLineNo">787</span>   * @param reversed if true, scan will be backward order<a name="line.787"></a>
+<span class="sourceLineNo">788</span>   * @return this<a name="line.788"></a>
+<span class="sourceLineNo">789</span>   */<a name="line.789"></a>
+<span class="sourceLineNo">790</span>  public Scan setReversed(boolean reversed) {<a name="line.790"></a>
+<span class="sourceLineNo">791</span>    this.reversed = reversed;<a name="line.791"></a>
+<span class="sourceLineNo">792</span>    return this;<a name="line.792"></a>
+<span class="sourceLineNo">793</span>  }<a name="line.793"></a>
+<span class="sourceLineNo">794</span><a name="line.794"></a>
+<span class="sourceLineNo">795</span>  /**<a name="line.795"></a>
+<span class="sourceLineNo">796</span>   * Get whether this scan is a reversed one.<a name="line.796"></a>
+<span class="sourceLineNo">797</span>   * @return true if backward scan, false if forward(default) scan<a name="line.797"></a>
+<span class="sourceLineNo">798</span>   */<a name="line.798"></a>
+<span class="sourceLineNo">799</span>  public boolean isReversed() {<a name="line.799"></a>
+<span class="sourceLineNo">800</span>    return reversed;<a name="line.800"></a>
+<span class="sourceLineNo">801</span>  }<a name="line.801"></a>
+<span class="sourceLineNo">802</span><a name="line.802"></a>
+<span class="sourceLineNo">803</span>  /**<a name="line.803"></a>
+<span class="sourceLineNo">804</span>   * Setting whether the caller wants to see the partial results when server returns<a name="line.804"></a>
+<span class="sourceLineNo">805</span>   * less-than-expected cells. It is helpful while scanning a huge row to prevent OOM at client.<a name="line.805"></a>
+<span class="sourceLineNo">806</span>   * By default this value is false and the complete results will be assembled client side<a name="line.806"></a>
+<span class="sourceLineNo">807</span>   * before being delivered to the caller.<a name="line.807"></a>
+<span class="sourceLineNo">808</span>   * @param allowPartialResults<a name="line.808"></a>
+<span class="sourceLineNo">809</span>   * @return this<a name="line.809"></a>
+<span class="sourceLineNo">810</span>   * @see Result#mayHaveMoreCellsInRow()<a name="line.810"></a>
+<span class="sourceLineNo">811</span>   * @see #setBatch(int)<a name="line.811"></a>
 <span class="sourceLineNo">812</span>   */<a name="line.812"></a>
-<span class="sourceLineNo">813</span>  public boolean isReversed() {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    return reversed;<a name="line.814"></a>
-<span class="sourceLineNo">815</span>  }<a name="line.815"></a>
-<span class="sourceLineNo">816</span><a name="line.816"></a>
-<span class="sourceLineNo">817</span>  /**<a name="line.817"></a>
-<span class="sourceLineNo">818</span>   * Setting whether the caller wants to see the partial results when server returns<a name="line.818"></a>
-<span class="sourceLineNo">819</span>   * less-than-expected cells. It is helpful while scanning a huge row to prevent OOM at client.<a name="line.819"></a>
-<span class="sourceLineNo">820</span>   * By default this value is false and the complete results will be assembled client side<a name="line.820"></a>
-<span class="sourceLineNo">821</span>   * before being delivered to the caller.<a name="line.821"></a>
-<span class="sourceLineNo">822</span>   * @param allowPartialResults<a name="line.822"></a>
-<span class="sourceLineNo">823</span>   * @return this<a name="line.823"></a>
-<span class="sourceLineNo">824</span>   * @see Result#mayHaveMoreCellsInRow()<a name="line.824"></a>
-<span class="sourceLineNo">825</span>   * @see #setBatch(int)<a name="line.825"></a>
-<span class="sourceLineNo">826</span>   */<a name="line.826"></a>
-<span class="sourceLineNo">827</span>  public Scan setAllowPartialResults(final boolean allowPartialResults) {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>    this.allowPartialResults = allowPartialResults;<a name="line.828"></a>
-<span class="sourceLineNo">829</span>    return this;<a name="line.829"></a>
+<span class="sourceLineNo">813</span>  public Scan setAllowPartialResults(final boolean allowPartialResults) {<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    this.allowPartialResults = allowPartialResults;<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    return this;<a name="line.815"></a>
+<span class="sourceLineNo">816</span>  }<a name="line.816"></a>
+<span class="sourceLineNo">817</span><a name="line.817"></a>
+<span class="sourceLineNo">818</span>  /**<a name="line.818"></a>
+<span class="sourceLineNo">819</span>   * @return true when the constructor of this scan understands that the results they will see may<a name="line.819"></a>
+<span class="sourceLineNo">820</span>   *         only represent a partial portion of a row. The entire row would be retrieved by<a name="line.820"></a>
+<span class="sourceLineNo">821</span>   *         subsequent calls to {@link ResultScanner#next()}<a name="line.821"></a>
+<span class="sourceLineNo">822</span>   */<a name="line.822"></a>
+<span class="sourceLineNo">823</span>  public boolean getAllowPartialResults() {<a name="line.823"></a>
+<span class="sourceLineNo">824</span>    return allowPartialResults;<a name="line.824"></a>
+<span class="sourceLineNo">825</span>  }<a name="line.825"></a>
+<span class="sourceLineNo">826</span><a name="line.826"></a>
+<span class="sourceLineNo">827</span>  @Override<a name="line.827"></a>
+<span class="sourceLineNo">828</span>  public Scan setLoadColumnFamiliesOnDemand(boolean value) {<a name="line.828"></a>
+<span class="sourceLineNo">829</span>    return (Scan) super.setLoadColumnFamiliesOnDemand(value);<a name="line.829"></a>
 <span class="sourceLineNo">830</span>  }<a name="line.830"></a>
 <span class="sourceLineNo">831</span><a name="line.831"></a>
 <span class="sourceLineNo">832</span>  /**<a name="line.832"></a>
-<span class="sourceLineNo">833</span>   * @return true when the constructor of this scan understands that the results they will see may<a name="line.833"></a>
-<span class="sourceLineNo">834</span>   *         only represent a partial portion of a row. The entire row would be retrieved by<a name="line.834"></a>
-<span class="sourceLineNo">835</span>   *         subsequent calls to {@link ResultScanner#next()}<a name="line.835"></a>
-<span class="sourceLineNo">836</span>   */<a name="line.836"></a>
-<span class="sourceLineNo">837</span>  public boolean getAllowPartialResults() {<a name="line.837"></a>
-<span class="sourceLineNo">838</span>    return allowPartialResults;<a name="line.838"></a>
-<span class="sourceLineNo">839</span>  }<a name="line.839"></a>
-<span class="sourceLineNo">840</span><a name="line.840"></a>
-<span class="sourceLineNo">841</span>  @Override<a name="line.841"></a>
-<span class="sourceLineNo">842</span>  public Scan setLoadColumnFamiliesOnDemand(boolean value) {<a name="line.842"></a>
-<span class="sourceLineNo">843</span>    return (Scan) super.setLoadColumnFamiliesOnDemand(value);<a name="line.843"></a>
-<span class="sourceLineNo">844</span>  }<a name="line.844"></a>
-<span class="sourceLineNo">845</span><a name="line.845"></a>
-<span class="sourceLineNo">846</span>  /**<a name="line.846"></a>
-<span class="sourceLineNo">847</span>   * Compile the table and column family (i.e. schema) information<a name="line.847"></a>
-<span class="sourceLineNo">848</span>   * into a String. Useful for parsing and aggregation by debugging,<a name="line.848"></a>
-<span class="sourceLineNo">849</span>   * logging, and administration tools.<a name="line.849"></a>
-<span class="sourceLineNo">850</span>   * @return Map<a name="line.850"></a>
-<span class="sourceLineNo">851</span>   */<a name="line.851"></a>
-<span class="sourceLineNo">852</span>  @Override<a name="line.852"></a>
-<span class="sourceLineNo">853</span>  public Map&lt;String, Object&gt; getFingerprint() {<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    Map&lt;String, Object&gt; map = new HashMap&lt;&gt;();<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    List&lt;String&gt; families = new ArrayList&lt;&gt;();<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    if(this.familyMap.isEmpty()) {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      map.put("families", "ALL");<a name="line.857"></a>
-<span class="sourceLineNo">858</span>      return map;<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    } else {<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      map.put("families", families);<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    }<a name="line.861"></a>
-<span class="sourceLineNo">862</span>    for (Map.Entry&lt;byte [], NavigableSet&lt;byte[]&gt;&gt; entry :<a name="line.862"></a>
-<span class="sourceLineNo">863</span>        this.familyMap.entrySet()) {<a name="line.863"></a>
-<span class="sourceLineNo">864</span>      families.add(Bytes.toStringBinary(entry.getKey()));<a name="line.864"></a>
-<span class="sourceLineNo">865</span>    }<a name="line.865"></a>
-<span class="sourceLineNo">866</span>    return map;<a name="line.866"></a>
-<span class="sourceLineNo">867</span>  }<a name="line.867"></a>
-<span class="sourceLineNo">868</span><a name="line.868"></a>
-<span class="sourceLineNo">869</span>  /**<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   * Compile the details beyond the scope of getFingerprint (row, columns,<a name="line.870"></a>
-<span class="sourceLineNo">871</span>   * timestamps, etc.) into a Map along with the fingerprinted information.<a name="line.871"></a>
-<span class="sourceLineNo">872</span>   * Useful for debugging, logging, and administration tools.<a name="line.872"></a>
-<span class="sourceLineNo">873</span>   * @param maxCols a limit on the number of columns output prior to truncation<a name="line.873"></a>
-<span class="sourceLineNo">874</span>   * @return Map<a name="line.874"></a>
-<span class="sourceLineNo">875</span>   */<a name="line.875"></a>
-<span class="sourceLineNo">876</span>  @Override<a name="line.876"></a>
-<span class="sourceLineNo">877</span>  public Map&lt;String, Object&gt; toMap(int maxCols) {<a name="line.877"></a>
-<span class="sourceLineNo">878</span>    // start with the fingerpring map and build on top of it<a name="line.878"></a>
-<span class="sourceLineNo">879</span>    Map&lt;String, Object&gt; map = getFingerprint();<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    // map from families to column list replaces fingerprint's list of families<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    Map&lt;String, List&lt;String&gt;&gt; familyColumns = new HashMap&lt;&gt;();<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    map.put("families", familyColumns);<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    // add scalar information first<a name="line.883"></a>
-<span class="sourceLineNo">884</span>    map.put("startRow", Bytes.toStringBinary(this.startRow));<a name="line.884"></a>
-<span class="sourceLineNo">885</span>    map.put("stopRow", Bytes.toStringBinary(this.stopRow));<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    map.put("maxVersions", this.maxVersions);<a name="line.886"></a>
-<span class="sourceLineNo">887</span>    map.put("batch", this.batch);<a name="line.887"></a>
-<span class="sourceLineNo">888</span>    map.put("caching", this.caching);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    map.put("maxResultSize", this.maxResultSize);<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    map.put("cacheBlocks", this.cacheBlocks);<a name="line.890"></a>
-<span class="sourceLineNo">891</span>    map.put("loadColumnFamiliesOnDemand", this.loadColumnFamiliesOnDemand);<a name="line.891"></a>
-<span class="sourceLineNo">892</span>    List&lt;Long&gt; timeRange = new ArrayList&lt;&gt;(2);<a name="line.892"></a>
-<span class="sourceLineNo">893</span>    timeRange.add(this.tr.getMin());<a name="line.893"></a>
-<span class="sourceLineNo">894</span>    timeRange.add(this.tr.getMax());<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    map.put("timeRange", timeRange);<a name="line.895"></a>
-<span class="sourceLineNo">896</span>    int colCount = 0;<a name="line.896"></a>
-<span class="sourceLineNo">897</span>    // iterate through affected families and list out up to maxCols columns<a name="line.897"></a>
-<span class="sourceLineNo">898</span>    for (Map.Entry&lt;byte [], NavigableSet&lt;byte[]&gt;&gt; entry :<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      this.familyMap.entrySet()) {<a name="line.899"></a>
-<span class="sourceLineNo">900</span>      List&lt;String&gt; columns = new ArrayList&lt;&gt;();<a name="line.900"></a>
-<span class="sourceLineNo">901</span>      familyColumns.put(Bytes.toStringBinary(entry.getKey()), columns);<a name="line.901"></a>
-<span class="sourceLineNo">902</span>      if(entry.getValue() == null) {<a name="line.902"></a>
-<span class="sourceLineNo">903</span>        colCount++;<a name="line.903"></a>
-<span class="sourceLineNo">904</span>        --maxCols;<a name="line.904"></a>
-<span class="sourceLineNo">905</span>        columns.add("ALL");<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      } else {<a name="line.906"></a>
-<span class="sourceLineNo">907</span>        colCount += entry.getValue().size();<a name="line.907"></a>
-<span class="sourceLineNo">908</span>        if (maxCols &lt;= 0) {<a name="line.908"></a>
-<span class="sourceLineNo">909</span>          continue;<a name="line.909"></a>
-<span class="sourceLineNo">910</span>        }<a name="line.910"></a>
-<span class="sourceLineNo">911</span>        for (byte [] column : entry.getValue()) {<a name="line.911"></a>
-<span class="sourceLineNo">912</span>          if (--maxCols &lt;= 0) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>            continue;<a name="line.913"></a>
-<span class="sourceLineNo">914</span>          }<a name="line.914"></a>
-<span class="sourceLineNo">915</span>          columns.add(Bytes.toStringBinary(column));<a name="line.915"></a>
-<span class="sourceLineNo">916</span>        }<a name="line.916"></a>
-<span class="sourceLineNo">917</span>      }<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    }<a name="line.918"></a>
-<span class="sourceLineNo">919</span>    map.put("totalColumns", colCount);<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    if (this.filter != null) {<a name="line.920"></a>
-<span class="sourceLineNo">921</span>      map.put("filter", this.filter.toString());<a name="line.921"></a>
-<span class="sourceLineNo">922</span>    }<a name="line.922"></a>
-<span class="sourceLineNo">923</span>    // add the id if set<a name="line.923"></a>
-<span class="sourceLineNo">924</span>    if (getId() != null) {<a name="line.924"></a>
-<span class="sourceLineNo">925</span>      map.put("id", getId());<a name="line.925"></a>
-<span class="sourceLineNo">926</span>    }<a name="line.926"></a>
-<span class="sourceLineNo">927</span>    return map;<a name="line.927"></a>
-<span class="sourceLineNo">928</span>  }<a name="line.928"></a>
-<span class="sourceLineNo">929</span><a name="line.929"></a>
-<span class="sourceLineNo">930</span>  /**<a name="line.930"></a>
-<span class="sourceLineNo">931</span>   * Enable/disable "raw" mode for this scan.<a name="line.931"></a>
-<span class="sourceLineNo">932</span>   * If "raw" is enabled the scan will return all<a name="line.932"></a>
-<span class="sourceLineNo">933</span>   * delete marker and deleted rows that have not<a name="line.933"></a>
-<span class="sourceLineNo">934</span>   * been collected, yet.<a name="line.934"></a>
-<span class="sourceLineNo">935</span>   * This is mostly useful for Scan on column families<a name="line.935"></a>
-<span class="sourceLineNo">936</span>   * that have KEEP_DELETED_ROWS enabled.<a name="line.936"></a>
-<span class="sourceLineNo">937</span>   * It is an error to specify any column when "raw" is set.<a name="line.937"></a>
-<span class="sourceLineNo">938</span>   * @param raw True/False to enable/disable "raw" mode.<a name="line.938"></a>
-<span class="sourceLineNo">939</span>   */<a name="line.939"></a>
-<span class="sourceLineNo">940</span>  public Scan setRaw(boolean raw) {<a name="line.940"></a>
-<span class="sourceLineNo">941</span>    setAttribute(RAW_ATTR, Bytes.toBytes(raw));<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    return this;<a name="line.942"></a>
-<span class="sourceLineNo">943</span>  }<a name="line.943"></a>
-<span class="sourceLineNo">944</span><a name="line.944"></a>
-<span class="sourceLineNo">945</span>  /**<a name="line.945"></a>
-<span class="sourceLineNo">946</span>   * @return True if this Scan is in "raw" mode.<a name="line.946"></a>
-<span class="sourceLineNo">947</span>   */<a name="line.947"></a>
-<span class="sourceLineNo">948</span>  public boolean isRaw() {<a name="line.948"></a>
-<span class="sourceLineNo">949</span>    byte[] attr = getAttribute(RAW_ATTR);<a name="line.949"></a>
-<span class="sourceLineNo">950</span>    return attr == null ? false : Bytes.toBoolean(attr);<a name="line.950"></a>
-<span class="sourceLineNo">951</span>  }<a name="line.951"></a>
-<span class="sourceLineNo">952</span><a name="line.952"></a>
-<span class="sourceLineNo">953</span>  /**<a name="line.953"></a>
-<span class="sourceLineNo">954</span>   * Set whether this scan is a small scan<a name="line.954"></a>
-<span class="sourceLineNo">955</span>   * &lt;p&gt;<a name="line.955"></a>
-<span class="sourceLineNo">956</span>   * Small scan should use pread and big scan can use seek + read seek + read is fast but can cause<a name="line.956"></a>
-<span class="sourceLineNo">957</span>   * two problem (1) resource contention (2) cause too much network io [89-fb] Using pread for<a name="line.957"></a>
-<span class="sourceLineNo">958</span>   * non-compaction read request https://issues.apache.org/jira/browse/HBASE-7266 On the other hand,<a name="line.958"></a>
-<span class="sourceLineNo">959</span>   * if setting it true, we would do openScanner,next,closeScanner in one RPC call. It means the<a name="line.959"></a>
-<span class="sourceLineNo">960</span>   * better performance for small scan. [HBASE-9488]. Generally, if the scan range is within one<a name="line.960"></a>
-<span class="sourceLineNo">961</span>   * data block(64KB), it could be considered as a small scan.<a name="line.961"></a>
-<span class="sourceLineNo">962</span>   * @param small<a name="line.962"></a>
-<span class="sourceLineNo">963</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use {@link #setLimit(int)} and<a name="line.963"></a>
-<span class="sourceLineNo">964</span>   *   {@link #setReadType(ReadType)} instead. And for the one rpc optimization, now we will also<a name="line.964"></a>
-<span class="sourceLineNo">965</span>   *   fetch data when openScanner, and if the number of rows reaches the limit then we will close<a name="line.965"></a>
-<span class="sourceLineNo">966</span>   *   the scanner automatically which means we will fall back to one rpc.<a name="line.966"></a>
-<span class="sourceLineNo">967</span>   * @see #setLimit(int)<a name="line.967"></a>
-<span class="sourceLineNo">968</span>   * @see #setReadType(ReadType)<a name="line.968"></a>
+<span class="sourceLineNo">833</span>   * Compile the table and column family (i.e. schema) information<a name="line.833"></a>
+<span class="sourceLineNo">834</span>   * into a String. Useful for parsing and aggregation by debugging,<a name="line.834"></a>
+<span class="sourceLineNo">835</span>   * logging, and administration tools.<a name="line.835"></a>
+<span class="sourceLineNo">836</span>   * @return Map<a name="line.836"></a>
+<span class="sourceLineNo">837</span>   */<a name="line.837"></a>
+<span class="sourceLineNo">838</span>  @Override<a name="line.838"></a>
+<span class="sourceLineNo">839</span>  public Map&lt;String, Object&gt; getFingerprint() {<a name="line.839"></a>
+<span class="sourceLineNo">840</span>    Map&lt;String, Object&gt; map = new HashMap&lt;&gt;();<a name="line.840"></a>
+<span class="sourceLineNo">841</span>    List&lt;String&gt; families = new ArrayList&lt;&gt;();<a name="line.841"></a>
+<span class="sourceLineNo">842</span>    if(this.familyMap.isEmpty()) {<a name="line.842"></a>
+<span class="sourceLineNo">843</span>      map.put("families", "ALL");<a name="line.843"></a>
+<span class="sourceLineNo">844</span>      return map;<a name="line.844"></a>
+<span class="sourceLineNo">845</span>    } else {<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      map.put("families", families);<a name="line.846"></a>
+<span class="sourceLineNo">847</span>    }<a name="line.847"></a>
+<span class="sourceLineNo">848</span>    for (Map.Entry&lt;byte [], NavigableSet&lt;byte[]&gt;&gt; entry :<a name="line.848"></a>
+<span class="sourceLineNo">849</span>        this.familyMap.entrySet()) {<a name="line.849"></a>
+<span class="sourceLineNo">850</span>      families.add(Bytes.toStringBinary(entry.getKey()));<a name="line.850"></a>
+<span class="sourceLineNo">851</span>    }<a name="line.851"></a>
+<span class="sourceLineNo">852</span>    return map;<a name="line.852"></a>
+<span class="sourceLineNo">853</span>  }<a name="line.853"></a>
+<span class="sourceLineNo">854</span><a name="line.854"></a>
+<span class="sourceLineNo">855</span>  /**<a name="line.855"></a>
+<span class="sourceLineNo">856</span>   * Compile the details beyond the scope of getFingerprint (row, columns,<a name="line.856"></a>
+<span class="sourceLineNo">857</span>   * timestamps, etc.) into a Map along with the fingerprinted information.<a name="line.857"></a>
+<span class="sourceLineNo">858</span>   * Useful for debugging, logging, and administration tools.<a name="line.858"></a>
+<span class="sourceLineNo">859</span>   * @param maxCols a limit on the number of columns output prior to truncation<a name="line.859"></a>
+<span class="sourceLineNo">860</span>   * @return Map<a name="line.860"></a>
+<span class="sourceLineNo">861</span>   */<a name="line.861"></a>
+<span class="sourceLineNo">862</span>  @Override<a name="line.862"></a>
+<span class="sourceLineNo">863</span>  public Map&lt;String, Object&gt; toMap(int maxCols) {<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    // start with the fingerpring map and build on top of it<a name="line.864"></a>
+<span class="sourceLineNo">865</span>    Map&lt;String, Object&gt; map = getFingerprint();<a name="line.865"></a>
+<span class="sourceLineNo">866</span>    // map from families to column list replaces fingerprint's list of families<a name="line.866"></a>
+<span class="sourceLineNo">867</span>    Map&lt;String, List&lt;String&gt;&gt; familyColumns = new HashMap&lt;&gt;();<a name="line.867"></a>
+<span class="sourceLineNo">868</span>    map.put("families", familyColumns);<a name="line.868"></a>
+<span class="sourceLineNo">869</span>    // add scalar information first<a name="line.869"></a>
+<span class="sourceLineNo">870</span>    map.put("startRow", Bytes.toStringBinary(this.startRow));<a name="line.870"></a>
+<span class="sourceLineNo">871</span>    map.put("stopRow", Bytes.toStringBinary(this.stopRow));<a name="line.871"></a>
+<span class="sourceLineNo">872</span>    map.put("maxVersions", this.maxVersions);<a name="line.872"></a>
+<span class="sourceLineNo">873</span>    map.put("batch", this.batch);<a name="line.873"></a>
+<span class="sourceLineNo">874</span>    map.put("caching", this.caching);<a name="line.874"></a>
+<span class="sourceLineNo">875</span>    map.put("maxResultSize", this.maxResultSize);<a name="line.875"></a>
+<span class="sourceLineNo">876</span>    map.put("cacheBlocks", this.cacheBlocks);<a name="line.876"></a>
+<span class="sourceLineNo">877</span>    map.put("loadColumnFamiliesOnDemand", this.loadColumnFamiliesOnDemand);<a name="line.877"></a>
+<span class="sourceLineNo">878</span>    List&lt;Long&gt; timeRange = new ArrayList&lt;&gt;(2);<a name="line.878"></a>
+<span class="sourceLineNo">879</span>    timeRange.add(this.tr.getMin());<a name="line.879"></a>
+<span class="sourceLineNo">880</span>    timeRange.add(this.tr.getMax());<a name="line.880"></a>
+<span class="sourceLineNo">881</span>    map.put("timeRange", timeRange);<a name="line.881"></a>
+<span class="sourceLineNo">882</span>    int colCount = 0;<a name="line.882"></a>
+<span class="sourceLineNo">883</span>    // iterate through affected families and list out up to maxCols columns<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    for (Map.Entry&lt;byte [], NavigableSet&lt;byte[]&gt;&gt; entry :<a name="line.884"></a>
+<span class="sourceLineNo">885</span>      this.familyMap.entrySet()) {<a name="line.885"></a>
+<span class="sourceLineNo">886</span>      List&lt;String&gt; columns = new ArrayList&lt;&gt;();<a name="line.886"></a>
+<span class="sourceLineNo">887</span>      familyColumns.put(Bytes.toStringBinary(entry.getKey()), columns);<a name="line.887"></a>
+<span class="sourceLineNo">888</span>      if(entry.getValue() == null) {<a name="line.888"></a>
+<span class="sourceLineNo">889</span>        colCount++;<a name="line.889"></a>
+<span class="sourceLineNo">890</span>        --maxCols;<a name="line.890"></a>
+<span class="sourceLineNo">891</span>        columns.add("ALL");<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      } else {<a name="line.892"></a>
+<span class="sourceLineNo">893</span>        colCount += entry.getValue().size();<a name="line.893"></a>
+<span class="sourceLineNo">894</span>        if (maxCols &lt;= 0) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>          continue;<a name="line.895"></a>
+<span class="sourceLineNo">896</span>        }<a name="line.896"></a>
+<span class="sourceLineNo">897</span>        for (byte [] column : entry.getValue()) {<a name="line.897"></a>
+<span class="sourceLineNo">898</span>          if (--maxCols &lt;= 0) {<a name="line.898"></a>
+<span class="sourceLineNo">899</span>            continue;<a name="line.899"></a>
+<span class="sourceLineNo">900</span>          }<a name="line.900"></a>
+<span class="sourceLineNo">901</span>          columns.add(Bytes.toStringBinary(column));<a name="line.901"></a>
+<span class="sourceLineNo">902</span>        }<a name="line.902"></a>
+<span class="sourceLineNo">903</span>      }<a name="line.903"></a>
+<span class="sourceLineNo">904</span>    }<a name="line.904"></a>
+<span class="sourceLineNo">905</span>    map.put("totalColumns", colCount);<a name="line.905"></a>
+<span class="sourceLineNo">906</span>    if (this.filter != null) {<a name="line.906"></a>
+<span class="sourceLineNo">907</span>      map.put("filter", this.filter.toString());<a name="line.907"></a>
+<span class="sourceLineNo">908</span>    }<a name="line.908"></a>
+<span class="sourceLineNo">909</span>    // add the id if set<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    if (getId() != null) {<a name="line.910"></a>
+<span class="sourceLineNo">911</span>      map.put("id", getId());<a name="line.911"></a>
+<span class="sourceLineNo">912</span>    }<a name="line.912"></a>
+<span class="sourceLineNo">913</span>    return map;<a name="line.913"></a>
+<span class="sourceLineNo">914</span>  }<a name="line.914"></a>
+<span class="sourceLineNo">915</span><a name="line.915"></a>
+<span class="sourceLineNo">916</span>  /**<a name="line.916"></a>
+<span class="sourceLineNo">917</span>   * Enable/disable "raw" mode for this scan.<a name="line.917"></a>
+<span class="sourceLineNo">918</span>   * If "raw" is enabled the scan will return all<a name="line.918"></a>
+<span class="sourceLineNo">919</span>   * delete marker and deleted rows that have not<a name="line.919"></a>
+<span class="sourceLineNo">920</span>   * been collected, yet.<a name="line.920"></a>
+<span class="sourceLineNo">921</span>   * This is mostly useful for Scan on column families<a name="line.921"></a>
+<span class="sourceLineNo">922</span>   * that have KEEP_DELETED_ROWS enabled.<a name="line.922"></a>
+<span class="sourceLineNo">923</span>   * It is an error to specify any column when "raw" is set.<a name="line.923"></a>
+<span class="sourceLineNo">924</span>   * @param raw True/False to enable/disable "raw" mode.<a name="line.924"></a>
+<span class="sourceLineNo">925</span>   */<a name="line.925"></a>
+<span class="sourceLineNo">926</span>  public Scan setRaw(boolean raw) {<a name="line.926"></a>
+<span class="sourceLineNo">927</span>    setAttribute(RAW_ATTR, Bytes.toBytes(raw));<a name="line.927"></a>
+<span class="sourceLineNo">928</span>    return this;<a name="line.928"></a>
+<span class="sourceLineNo">929</span>  }<a name="line.929"></a>
+<span class="sourceLineNo">930</span><a name="line.930"></a>
+<span class="sourceLineNo">931</span>  /**<a name="line.931"></a>
+<span class="sourceLineNo">932</span>   * @return True if this Scan is in "raw" mode.<a name="line.932"></a>
+<span class="sourceLineNo">933</span>   */<a name="line.933"></a>
+<span class="sourceLineNo">934</span>  public boolean isRaw() {<a name="line.934"></a>
+<span class="sourceLineNo">935</span>    byte[] attr = getAttribute(RAW_ATTR);<a name="line.935"></a>
+<span class="sourceLineNo">936</span>    return attr == null ? false : Bytes.toBoolean(attr);<a name="line.936"></a>
+<span class="sourceLineNo">937</span>  }<a name="line.937"></a>
+<span class="sourceLineNo">938</span><a name="line.938"></a>
+<span class="sourceLineNo">939</span>  /**<a name="line.939"></a>
+<span class="sourceLineNo">940</span>   * Set whether this scan is a small scan<a name="line.940"></a>
+<span class="sourceLineNo">941</span>   * &lt;p&gt;<a name="line.941"></a>
+<span class="sourceLineNo">942</span>   * Small scan should use pread and big scan can use seek + read seek + read is fast but can cause<a name="line.942"></a>
+<span class="sourceLineNo">943</span>   * two problem (1) resource contention (2) cause too much network io [89-fb] Using pread for<a name="line.943"></a>
+<span class="sourceLineNo">944</span>   * non-compaction read request https://issues.apache.org/jira/browse/HBASE-7266 On the other hand,<a name="line.944"></a>
+<span class="sourceLineNo">945</span>   * if setting it true, we would do openScanner,next,closeScanner in one RPC call. It means the<a name="line.945"></a>
+<span class="sourceLineNo">946</span>   * better performance for small scan. [HBASE-9488]. Generally, if the scan range is within one<a name="line.946"></a>
+<span class="sourceLineNo">947</span>   * data block(64KB), it could be considered as a small scan.<a name="line.947"></a>
+<span class="sourceLineNo">948</span>   * @param small<a name="line.948"></a>
+<span class="sourceLineNo">949</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. Use {@link #setLimit(int)} and<a name="line.949"></a>
+<span class="sourceLineNo">950</span>   *   {@link #setReadType(ReadType)} instead. And for the one rpc optimization, now we will also<a name="line.950"></a>
+<span class="sourceLineNo">951</span>   *   fetch data when openScanner, and if the number of rows reaches the limit then we will close<a name="line.951"></a>
+<span class="sourceLineNo">952</span>   *   the scanner automatically which means we will fall back to one rpc.<a name="line.952"></a>
+<span class="sourceLineNo">953</span>   * @see #setLimit(int)<a name="line.953"></a>
+<span class="sourceLineNo">954</span>   * @see #setReadType(ReadType)<a name="line.954"></a>
+<span class="sourceLineNo">955</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17045"&gt;HBASE-17045&lt;/a&gt;<a name="line.955"></a>
+<span class="sourceLineNo">956</span>   */<a name="line.956"></a>
+<span class="sourceLineNo">957</span>  @Deprecated<a name="line.957"></a>
+<span class="sourceLineNo">958</span>  public Scan setSmall(boolean small) {<a name="line.958"></a>
+<span class="sourceLineNo">959</span>    this.small = small;<a name="line.959"></a>
+<span class="sourceLineNo">960</span>    this.readType = ReadType.PREAD;<a name="line.960"></a>
+<span class="sourceLineNo">961</span>    return this;<a name="line.961"></a>
+<span class="sourceLineNo">962</span>  }<a name="line.962"></a>
+<span class="sourceLineNo">963</span><a name="line.963"></a>
+<span class="sourceLineNo">964</span>  /**<a name="line.964"></a>
+<span class="sourceLineNo">965</span>   * Get whether this scan is a small scan<a name="line.965"></a>
+<span class="sourceLineNo">966</span>   * @return true if small scan<a name="line.966"></a>
+<span class="sourceLineNo">967</span>   * @deprecated since 2.0.0 and will be removed in 3.0.0. See the comment of<a name="line.967"></a>
+<span class="sourceLineNo">968</span>   *   {@link #setSmall(boolean)}<a name="line.968"></a>
 <span class="sourceLineNo">969</span>   * @see &lt;a href="https://issues.apache.org/jira/browse/HBASE-17045"&gt;HBASE-17045&lt;/a&gt;<a name="line.969"></a>
 <span class="sourceLineNo">970</span>   */<a name="line.970"></a>
 <span class="sourceLineNo">971</span>  @Deprecated<a name="line.971"></a>
-<span class="sourceLineNo">972</span>  public Scan setSmall(boolean small) {<a name="line.972"></a>
-<span class="sourceLineNo">973</span>    this.small = small;<a name="line.973"></a>
-<span class="sourceLineNo">974</span>    this.readType = ReadType.PREAD;<a name="line.974"></a>
-<span class="sourceLineNo">975</span>    return this;<a name="line.975"></a>
-<span class="sourceLineNo">976</span>  }<a name="line.976"></a>
-<span class="sourceLineNo">977</span><a name="line.977"></a>
-<span class="sourceLineNo">978</span>  /**<a name="line.978"></a>
-<span class="sourceLineNo">979</span>   * Get whether this scan is a small scan<a name="line.979"></a>
... 3389 lines suppressed ...