[ASTERIXDB-3504][STO] Error in calculating if Page 0 is full for Column Datasets

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

Details:
While checking if page 0 is full we were considering the split key from
the previous tuple and not the current tuple. In case the split key from
the current tuple is considerably larger, we might mark the page as not
full even when adding the current tuple to the page will overflow it.

Ext-ref: MB-63590
Change-Id: I5c53e573e8d2333161601a82af16f00120122579
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18925
Reviewed-by: Wail Alkowaileet <wael.y.k@gmail.com>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/btree/ColumnBTreeBulkloader.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/btree/ColumnBTreeBulkloader.java
index 1b1fad0..d9aec0c 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/btree/ColumnBTreeBulkloader.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/btree/ColumnBTreeBulkloader.java
@@ -112,7 +112,7 @@
         //Occupied space from previous writes
         requiredFreeSpace += columnWriter.getOccupiedSpace();
         //min and max tuples' sizes
-        requiredFreeSpace += lowKey.getTuple().getTupleSize() + splitKey.getTuple().getTupleSize();
+        requiredFreeSpace += lowKey.getTuple().getTupleSize() + getSplitKeySize(tuple);
         //New tuple required space
         requiredFreeSpace += columnWriter.bytesRequired(tuple);
         return bufferCache.getPageSize() <= requiredFreeSpace;
@@ -232,12 +232,16 @@
     }
 
     private void setSplitKey(ISplitKey splitKey, ITupleReference tuple) {
-        int splitKeySize = tupleWriter.bytesRequired(tuple, 0, cmp.getKeyFieldCount());
+        int splitKeySize = getSplitKeySize(tuple);
         splitKey.initData(splitKeySize);
         tupleWriter.writeTupleFields(tuple, 0, cmp.getKeyFieldCount(), splitKey.getBuffer().array(), 0);
         splitKey.getTuple().resetByTupleOffset(splitKey.getBuffer().array(), 0);
     }
 
+    private int getSplitKeySize(ITupleReference tuple) {
+        return tupleWriter.bytesRequired(tuple, 0, cmp.getKeyFieldCount());
+    }
+
     private void log(String status, int numberOfTempConfiscatedPages) {
         if (!LOGGER.isDebugEnabled()) {
             return;