>From Wail Alkowaileet <[email protected]>:

Wail Alkowaileet has uploaded this change for review. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17542 )


Change subject: [WIP] Fixes for columnar datasets
......................................................................

[WIP] Fixes for columnar datasets

Change-Id: I3cad84ea748eedc8b376c6701dbc4e8fa911b733
---
M 
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/FlushColumnTupleWriter.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatasetTupleTranslator.java
M 
asterixdb/asterix-om/src/main/java/org/apache/asterix/object/base/AdmObjectNode.java
M 
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/FlushColumnTupleWithMetaWriter.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/dataset/DatasetFormatInfo.java
M 
asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/StorageProperties.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/pushdown/OperatorValueAccessPushdownVisitor.java
M 
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/writer/ColumnBatchWriter.java
M 
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/ColumnManagerFactory.java
M 
hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/btree/ColumnBTreeRangeSearchCursor.java
M 
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/merge/MergeColumnTupleReaderWriterFactory.java
M 
hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/api/AbstractColumnTupleReaderWriterFactory.java
M asterixdb/asterix-app/src/test/resources/cc.conf
M 
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/load/LoadColumnTupleReaderWriterFactory.java
M 
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/merge/MergeColumnTupleWriter.java
M 
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/load/LoadColumnTupleWriter.java
M 
asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/DatasetDecl.java
M 
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/FlushColumnTupleReaderWriterFactory.java
18 files changed, 43 insertions(+), 28 deletions(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/42/17542/1

diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/pushdown/OperatorValueAccessPushdownVisitor.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/pushdown/OperatorValueAccessPushdownVisitor.java
index ce1fe68..9eb25d0 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/pushdown/OperatorValueAccessPushdownVisitor.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/pushdown/OperatorValueAccessPushdownVisitor.java
@@ -295,7 +295,7 @@
             return null;
         }

-        DataSourceId dsid = new 
DataSourceId(DataverseName.createBuiltinDataverseName(dataverse), dataset);
+        DataSourceId dsid = new 
DataSourceId(DataverseName.createFromCanonicalForm(dataverse), dataset);
         MetadataProvider metadataProvider = (MetadataProvider) 
context.getMetadataProvider();
         return metadataProvider.findDataSource(dsid);
     }
diff --git a/asterixdb/asterix-app/src/test/resources/cc.conf 
b/asterixdb/asterix-app/src/test/resources/cc.conf
index 624455c..4dc71f0 100644
--- a/asterixdb/asterix-app/src/test/resources/cc.conf
+++ b/asterixdb/asterix-app/src/test/resources/cc.conf
@@ -61,3 +61,4 @@
 messaging.frame.size=4096
 messaging.frame.count=512
 storage.buffercache.pagesize=32KB
+storage.format=column
diff --git 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/ColumnManagerFactory.java
 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/ColumnManagerFactory.java
index 0b76216..359c3e1 100644
--- 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/ColumnManagerFactory.java
+++ 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/ColumnManagerFactory.java
@@ -45,10 +45,10 @@
     private final List<Integer> keySourceIndicator;
     private final int pageSize;
     private final int maxTupleCount;
-    private final float tolerance;
+    private final double tolerance;

     public ColumnManagerFactory(ARecordType datasetType, ARecordType metaType, 
List<List<String>> primaryKeys,
-            List<Integer> keySourceIndicator, int pageSize, int maxTupleCount, 
float tolerance) {
+            List<Integer> keySourceIndicator, int pageSize, int maxTupleCount, 
double tolerance) {
         this.pageSize = pageSize;
         this.maxTupleCount = maxTupleCount;
         this.tolerance = tolerance;
diff --git 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/FlushColumnTupleReaderWriterFactory.java
 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/FlushColumnTupleReaderWriterFactory.java
index 9b1b0a2..7107333 100644
--- 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/FlushColumnTupleReaderWriterFactory.java
+++ 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/FlushColumnTupleReaderWriterFactory.java
@@ -28,7 +28,7 @@
 public class FlushColumnTupleReaderWriterFactory extends 
AbstractColumnTupleReaderWriterFactory {
     private static final long serialVersionUID = -9197679192729634493L;

-    public FlushColumnTupleReaderWriterFactory(int pageSize, int 
maxNumberOfTuples, float tolerance) {
+    public FlushColumnTupleReaderWriterFactory(int pageSize, int 
maxNumberOfTuples, double tolerance) {
         super(pageSize, maxNumberOfTuples, tolerance);
     }

diff --git 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/FlushColumnTupleWithMetaWriter.java
 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/FlushColumnTupleWithMetaWriter.java
index 9c527da..9b2b7b8 100644
--- 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/FlushColumnTupleWithMetaWriter.java
+++ 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/FlushColumnTupleWithMetaWriter.java
@@ -28,7 +28,7 @@
     private final RecordLazyVisitablePointable metaPointable;

     public FlushColumnTupleWithMetaWriter(FlushColumnMetadata columnMetadata, 
int pageSize, int maxNumberOfTuples,
-            float tolerance) {
+            double tolerance) {
         super(columnMetadata, pageSize, maxNumberOfTuples, tolerance);
         metaColumnTransformer = new ColumnTransformer(columnMetadata, 
columnMetadata.getMetaRoot());
         metaPointable = new 
TypedRecordLazyVisitablePointable(columnMetadata.getMetaType());
diff --git 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/FlushColumnTupleWriter.java
 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/FlushColumnTupleWriter.java
index 1af043f..d0b228f 100644
--- 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/FlushColumnTupleWriter.java
+++ 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/flush/FlushColumnTupleWriter.java
@@ -42,7 +42,7 @@
     protected int primaryKeysEstimatedSize;

     public FlushColumnTupleWriter(FlushColumnMetadata columnMetadata, int 
pageSize, int maxNumberOfTuples,
-            float tolerance) {
+            double tolerance) {
         this.columnMetadata = columnMetadata;
         transformer = new ColumnTransformer(columnMetadata, 
columnMetadata.getRoot());
         finalizer = new BatchFinalizerVisitor(columnMetadata);
diff --git 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/load/LoadColumnTupleReaderWriterFactory.java
 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/load/LoadColumnTupleReaderWriterFactory.java
index 0c1990f..5ac41fa 100644
--- 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/load/LoadColumnTupleReaderWriterFactory.java
+++ 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/load/LoadColumnTupleReaderWriterFactory.java
@@ -26,7 +26,7 @@
 public class LoadColumnTupleReaderWriterFactory extends 
FlushColumnTupleReaderWriterFactory {
     private static final long serialVersionUID = -7583574057314353873L;

-    public LoadColumnTupleReaderWriterFactory(int pageSize, int 
maxNumberOfTuples, float tolerance) {
+    public LoadColumnTupleReaderWriterFactory(int pageSize, int 
maxNumberOfTuples, double tolerance) {
         super(pageSize, maxNumberOfTuples, tolerance);
     }

diff --git 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/load/LoadColumnTupleWriter.java
 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/load/LoadColumnTupleWriter.java
index e4604da..6b840df 100644
--- 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/load/LoadColumnTupleWriter.java
+++ 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/load/LoadColumnTupleWriter.java
@@ -25,7 +25,7 @@

 public class LoadColumnTupleWriter extends FlushColumnTupleWriter {
     public LoadColumnTupleWriter(FlushColumnMetadata columnMetadata, int 
pageSize, int maxNumberOfTuples,
-            float tolerance) {
+            double tolerance) {
         super(columnMetadata, pageSize, maxNumberOfTuples, tolerance);
     }

diff --git 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/merge/MergeColumnTupleReaderWriterFactory.java
 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/merge/MergeColumnTupleReaderWriterFactory.java
index 1ac94fe..3d89933 100644
--- 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/merge/MergeColumnTupleReaderWriterFactory.java
+++ 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/merge/MergeColumnTupleReaderWriterFactory.java
@@ -28,7 +28,7 @@
 public class MergeColumnTupleReaderWriterFactory extends 
AbstractColumnTupleReaderWriterFactory {
     private static final long serialVersionUID = -2131401304338796428L;

-    public MergeColumnTupleReaderWriterFactory(int pageSize, int 
maxNumberOfTuples, float tolerance) {
+    public MergeColumnTupleReaderWriterFactory(int pageSize, int 
maxNumberOfTuples, double tolerance) {
         super(pageSize, maxNumberOfTuples, tolerance);
     }

diff --git 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/merge/MergeColumnTupleWriter.java
 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/merge/MergeColumnTupleWriter.java
index fbda6d0..41a8263 100644
--- 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/merge/MergeColumnTupleWriter.java
+++ 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/merge/MergeColumnTupleWriter.java
@@ -47,7 +47,7 @@
     private int primaryKeysEstimatedSize;

     public MergeColumnTupleWriter(MergeColumnWriteMetadata columnMetadata, int 
pageSize, int maxNumberOfTuples,
-            float tolerance) {
+            double tolerance) {
         this.columnMetadata = columnMetadata;
         List<IColumnTupleIterator> componentsTuplesList = 
columnMetadata.getComponentsTuples();
         this.componentsTuples = new 
MergeColumnTupleReference[componentsTuplesList.size()];
diff --git 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/writer/ColumnBatchWriter.java
 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/writer/ColumnBatchWriter.java
index 490afe7..6fbdc27 100644
--- 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/writer/ColumnBatchWriter.java
+++ 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/writer/ColumnBatchWriter.java
@@ -39,7 +39,7 @@
     private final ByteBufferOutputStream primaryKeys;
     private final MultiPersistentBufferBytesOutputStream columns;
     private final int pageSize;
-    private final float tolerance;
+    private final double tolerance;
     private final IReservedPointer columnLengthPointer;

     private ByteBuffer pageZero;
@@ -48,7 +48,7 @@
     private int primaryKeysOffset;
     private int nonKeyColumnStartOffset;

-    public ColumnBatchWriter(Mutable<IColumnWriteMultiPageOp> multiPageOpRef, 
int pageSize, float tolerance) {
+    public ColumnBatchWriter(Mutable<IColumnWriteMultiPageOp> multiPageOpRef, 
int pageSize, double tolerance) {
         this.pageSize = pageSize;
         this.tolerance = tolerance;
         primaryKeys = new ByteBufferOutputStream();
diff --git 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/StorageProperties.java
 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/StorageProperties.java
index aa90e7a..2e22a30 100644
--- 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/StorageProperties.java
+++ 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/StorageProperties.java
@@ -65,7 +65,7 @@
         STORAGE_GLOBAL_CLEANUP(BOOLEAN, true),
         STORAGE_GLOBAL_CLEANUP_TIMEOUT(POSITIVE_INTEGER, (int) 
TimeUnit.MINUTES.toSeconds(10)),
         STORAGE_COLUMN_MAX_TUPLE_COUNT(NONNEGATIVE_INTEGER, 15000),
-        STORAGE_COLUMN_FREE_SPACE_TOLERANCE(DOUBLE, 0.15),
+        STORAGE_COLUMN_FREE_SPACE_TOLERANCE(DOUBLE, 0.15d),
         STORAGE_FORMAT(STRING, "row"),
         STORAGE_PARTITIONING(STRING, "dynamic"),
         STORAGE_PARTITIONS_COUNT(INTEGER, 8);
@@ -296,8 +296,8 @@
         return accessor.getInt(Option.STORAGE_COLUMN_MAX_TUPLE_COUNT);
     }

-    public float getColumnFreeSpaceTolerance() {
-        return (float) 
accessor.getDouble(Option.STORAGE_COLUMN_FREE_SPACE_TOLERANCE);
+    public double getColumnFreeSpaceTolerance() {
+        return accessor.getDouble(Option.STORAGE_COLUMN_FREE_SPACE_TOLERANCE);
     }

     public String getStorageFormat() {
diff --git 
a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/DatasetDecl.java
 
b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/DatasetDecl.java
index 5454409..22fd3a7 100644
--- 
a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/DatasetDecl.java
+++ 
b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/statement/DatasetDecl.java
@@ -147,7 +147,7 @@
     }

     public DatasetFormatInfo getDatasetFormatInfo(String defaultFormat, int 
defaultMaxTupleCount,
-            float defaultFreeSpaceTolerance) {
+            double defaultFreeSpaceTolerance) {
         if (datasetType != DatasetType.INTERNAL) {
             return DatasetFormatInfo.SYSTEM_DEFAULT;
         }
@@ -163,7 +163,7 @@

         int maxTupleCount = datasetFormatNode.getOptionalInt(
                 
DatasetDeclParametersUtil.DATASET_FORMAT_MAX_TUPLE_COUNT_PARAMETER_NAME, 
defaultMaxTupleCount);
-        float freeSpaceTolerance = datasetFormatNode.getOptionalFloat(
+        double freeSpaceTolerance = datasetFormatNode.getOptionalDouble(
                 
DatasetDeclParametersUtil.DATASET_FORMAT_FREE_SPACE_TOLERANCE_PARAMETER_NAME,
                 defaultFreeSpaceTolerance);

diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/dataset/DatasetFormatInfo.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/dataset/DatasetFormatInfo.java
index 86d9233..23b90cd 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/dataset/DatasetFormatInfo.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/dataset/DatasetFormatInfo.java
@@ -31,13 +31,13 @@
     public static final DatasetFormatInfo SYSTEM_DEFAULT = new 
DatasetFormatInfo();
     private final DatasetFormat format;
     private final int maxTupleCount;
-    private final float freeSpaceTolerance;
+    private final double freeSpaceTolerance;

     private DatasetFormatInfo() {
-        this(DatasetFormat.ROW, -1, 0.0f);
+        this(DatasetFormat.ROW, -1, 0.0d);
     }

-    public DatasetFormatInfo(DatasetFormat format, int maxTupleCount, float 
freeSpaceTolerance) {
+    public DatasetFormatInfo(DatasetFormat format, int maxTupleCount, double 
freeSpaceTolerance) {
         this.format = format;
         this.maxTupleCount = maxTupleCount;
         this.freeSpaceTolerance = freeSpaceTolerance;
@@ -51,7 +51,7 @@
         return maxTupleCount;
     }

-    public float getFreeSpaceTolerance() {
+    public double getFreeSpaceTolerance() {
         return freeSpaceTolerance;
     }

diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatasetTupleTranslator.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatasetTupleTranslator.java
index af31c0d..5c3dfc8 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatasetTupleTranslator.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/DatasetTupleTranslator.java
@@ -468,7 +468,7 @@

         //FreeSpaceTolerance
         ADouble freeSpaceToleranceDouble = (ADouble) 
datasetFormatRecord.getValueByPos(freeSpaceToleranceIndex);
-        float freeSpaceTolerance = (float) 
freeSpaceToleranceDouble.getDoubleValue();
+        double freeSpaceTolerance = freeSpaceToleranceDouble.getDoubleValue();

         return new DatasetFormatInfo(format, maxTupleCount, 
freeSpaceTolerance);
     }
diff --git 
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/object/base/AdmObjectNode.java
 
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/object/base/AdmObjectNode.java
index bcabb18..8a3f388 100644
--- 
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/object/base/AdmObjectNode.java
+++ 
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/object/base/AdmObjectNode.java
@@ -184,12 +184,12 @@
         return (int) ((AdmBigIntNode) node).get();
     }

-    public float getOptionalFloat(String field, float defaultValue) {
+    public double getOptionalDouble(String field, double defaultValue) {
         final IAdmNode node = get(field);
         if (node == null) {
             return defaultValue;
         }
-        return (float) ((AdmDoubleNode) node).get();
+        return ((AdmDoubleNode) node).get();
     }

     public static String getString(AdmObjectNode openFields, String field) 
throws HyracksDataException {
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/api/AbstractColumnTupleReaderWriterFactory.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/api/AbstractColumnTupleReaderWriterFactory.java
index 774bbb9..79d902c 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/api/AbstractColumnTupleReaderWriterFactory.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/api/AbstractColumnTupleReaderWriterFactory.java
@@ -30,7 +30,7 @@
     private static final long serialVersionUID = -2377235465942457248L;
     protected final int pageSize;
     protected final int maxNumberOfTuples;
-    protected final float tolerance;
+    protected final double tolerance;

     /**
      * Tuple reader/writer factory
@@ -39,7 +39,7 @@
      * @param maxNumberOfTuples maximum number of tuples stored per a mega 
leaf page
      * @param tolerance         percentage of tolerated empty space
      */
-    protected AbstractColumnTupleReaderWriterFactory(int pageSize, int 
maxNumberOfTuples, float tolerance) {
+    protected AbstractColumnTupleReaderWriterFactory(int pageSize, int 
maxNumberOfTuples, double tolerance) {
         this.pageSize = pageSize;
         this.maxNumberOfTuples = maxNumberOfTuples;
         this.tolerance = tolerance;
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/ColumnBTreeRangeSearchCursor.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/btree/ColumnBTreeRangeSearchCursor.java
index e618aaa..77f161a 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/btree/ColumnBTreeRangeSearchCursor.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/btree/ColumnBTreeRangeSearchCursor.java
@@ -128,8 +128,13 @@
         pageId = ((BTreeCursorInitialState) initialState).getPageId();
         frame.setPage(page0);
         frame.setMultiComparator(originalKeyCmp);
-        frameTuple.newPage();
-        initCursorPosition(searchPred);
+        if (frame.getTupleCount() > 0) {
+            frameTuple.newPage();
+            initCursorPosition(searchPred);
+        } else {
+            yieldFirstCall = false;
+            frameTuple.consume();
+        }
     }

     protected void initCursorPosition(ISearchPredicate searchPred) throws 
HyracksDataException {

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17542
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I3cad84ea748eedc8b376c6701dbc4e8fa911b733
Gerrit-Change-Number: 17542
Gerrit-PatchSet: 1
Gerrit-Owner: Wail Alkowaileet <[email protected]>
Gerrit-MessageType: newchange

Reply via email to