virajjasani commented on code in PR #1736:
URL: https://github.com/apache/phoenix/pull/1736#discussion_r1450799726


##########
phoenix-core-client/src/main/java/org/apache/phoenix/iterate/OffsetResultIterator.java:
##########
@@ -32,32 +34,49 @@
  */
 public class OffsetResultIterator extends DelegateResultIterator {
     private int rowCount;
-    private int offset;
+    private final int offset;
+    private Tuple lastScannedTuple;
     private long pageSizeMs = Long.MAX_VALUE;
+    private boolean isIncompatibleClient = false;
 
     public OffsetResultIterator(ResultIterator delegate, Integer offset) {
         super(delegate);
         this.offset = offset == null ? -1 : offset;
+        this.lastScannedTuple = null;
     }
 
-    public OffsetResultIterator(ResultIterator delegate, Integer offset, long 
pageSizeMs) {
+    public OffsetResultIterator(ResultIterator delegate, Integer offset, long 
pageSizeMs,
+                                boolean isIncompatibleClient) {
         this(delegate, offset);
         this.pageSizeMs = pageSizeMs;
+        this.isIncompatibleClient = isIncompatibleClient;
     }
+
     @Override
     public Tuple next() throws SQLException {
+        long startTime = EnvironmentEdgeManager.currentTimeMillis();
         while (rowCount < offset) {
             Tuple tuple = super.next();
-            if (tuple == null) { return null; }
+            if (tuple == null) {
+                return null;
+            }
             if (tuple.size() == 0 || isDummy(tuple)) {
                 // while rowCount < offset absorb the dummy and call next on 
the underlying scanner
                 continue;
             }
             rowCount++;
-            // no page timeout check at this level because we cannot correctly 
resume
-            // scans for OFFSET queries until the offset is reached
+            lastScannedTuple = tuple;
+            if (!isIncompatibleClient) {

Review Comment:
   Incompatible client means that the client that does not understand new 
format of cells returned by this particular change and hence we expect server 
to return same old format of cells so that old (incompatible) client can 
continue to work.
   
   > in which cases will you have scenario where currentTime - startTime is 
more than LONG_MAX?
   
   LONG_MAX is only if paging size is not set. If it is set, then page timeout 
value will be used.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to