[ASTERIXDB-3421][STO] Fix column offset and length on read

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
Because we read the length of a column (4-bytes),
the remaining number of bytes should account for
those four bytes before reading the remaining pages

Change-Id: I035311613d950bcc73332f82730464cc362b7728
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18360
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Wail Alkowaileet <wael.y.k@gmail.com>
Reviewed-by: Wail Alkowaileet <wael.y.k@gmail.com>
Reviewed-by: Murtadha Hubail <mhubail@apache.org>
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/buffercache/read/CloudColumnReadContext.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/buffercache/read/CloudColumnReadContext.java
index 7623698..fb3019f 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/buffercache/read/CloudColumnReadContext.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/buffercache/read/CloudColumnReadContext.java
@@ -154,12 +154,12 @@
         // TODO What if every other page is requested. That would do N/2 request, where N is the number of pages.
         // TODO This should be optimized in a way that minimizes the number of requests
 
-        int[] columnsOrders = columnRanges.getColumnsOrder();
+        int[] columnsOrder = columnRanges.getColumnsOrder();
         int i = 0;
-        int columnIndex = columnsOrders[i];
+        int columnIndex = columnsOrder[i];
         while (columnIndex > -1) {
             if (columnIndex < columnRanges.getNumberOfPrimaryKeys()) {
-                columnIndex = columnsOrders[++i];
+                columnIndex = columnsOrder[++i];
                 continue;
             }
 
@@ -168,7 +168,7 @@
             int lastPageIdx = firstPageIdx + columnRanges.getColumnNumberOfPages(columnIndex) - 1;
 
             // Advance to the next column to check if it has contiguous pages
-            columnIndex = columnsOrders[++i];
+            columnIndex = columnsOrder[++i];
             while (columnIndex > -1) {
                 int sharedPageCount = 0;
                 // Get the next column's start page ID
@@ -183,7 +183,7 @@
 
                 lastPageIdx += columnRanges.getColumnNumberOfPages(columnIndex) - sharedPageCount;
                 // Advance to the next column
-                columnIndex = columnsOrders[++i];
+                columnIndex = columnsOrder[++i];
             }
 
             if (lastPageIdx >= columnRanges.getTotalNumberOfPages()) {
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/buffercache/read/CloudMegaPageReadContext.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/buffercache/read/CloudMegaPageReadContext.java
index 21d5ce7..f28b2fd 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/buffercache/read/CloudMegaPageReadContext.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/buffercache/read/CloudMegaPageReadContext.java
@@ -116,7 +116,7 @@
              * - The operation is not a merge operation (the component will be deleted anyway)
              * - The disk has space
              *
-             * Note: 'emtpy' can be false while 'cloudOnly is true'. We cannot read from disk as the page can be
+             * Note: 'empty' can be false while 'cloudOnly is true'. We cannot read from disk as the page can be
              * evicted at any moment. In other words, the sweeper told us that it is going to evict this page; hence
              * 'cloudOnly' is true.
              */
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/lsm/tuples/ColumnMultiBufferProvider.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/lsm/tuples/ColumnMultiBufferProvider.java
index d7b0764..2a2926f 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/lsm/tuples/ColumnMultiBufferProvider.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/lsm/tuples/ColumnMultiBufferProvider.java
@@ -68,14 +68,14 @@
         ByteBuffer firstPage = readNext().duplicate();
         // Read the column's length
         length = ColumnUtil.readColumnLength(firstPage, startOffset, pageSize);
+        // +4-bytes after reading the length
+        startOffset += Integer.BYTES;
+        // -4-bytes after reading the length
+        length -= Integer.BYTES;
         // Get the remaining length of the column
         int remainingLength = length - firstPage.remaining();
         // Get the number of remaining pages this column occupies
         numberOfRemainingPages = getNumberOfRemainingPages(remainingLength, pageSize);
-        //+4-bytes after reading the length
-        startOffset += Integer.BYTES;
-        //-4-bytes after reading the length
-        length -= Integer.BYTES;
     }
 
     @Override