Repository: asterixdb
Updated Branches:
  refs/heads/master a8af14319 -> fb6468cc3


http://git-wip-us.apache.org/repos/asf/asterixdb/blob/fb6468cc/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeFilterMergeTestDriver.java
----------------------------------------------------------------------
diff --git 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeFilterMergeTestDriver.java
 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeFilterMergeTestDriver.java
new file mode 100644
index 0000000..96a9589
--- /dev/null
+++ 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeFilterMergeTestDriver.java
@@ -0,0 +1,172 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.hyracks.storage.am.lsm.btree;
+
+import junit.framework.Assert;
+import org.apache.commons.lang3.tuple.MutablePair;
+import org.apache.commons.lang3.tuple.Pair;
+import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
+import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
+import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleReference;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+import 
org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
+import 
org.apache.hyracks.dataflow.common.data.marshalling.UTF8StringSerializerDeserializer;
+import org.apache.hyracks.storage.am.btree.OrderedIndexTestContext;
+import org.apache.hyracks.storage.am.btree.OrderedIndexTestDriver;
+import org.apache.hyracks.storage.am.btree.OrderedIndexTestUtils;
+import org.apache.hyracks.storage.am.btree.frames.BTreeLeafFrameType;
+import org.apache.hyracks.storage.am.common.TreeIndexTestUtils;
+import org.apache.hyracks.storage.am.config.AccessMethodTestsConfig;
+import org.apache.hyracks.storage.am.lsm.btree.impls.LSMBTree;
+import org.apache.hyracks.storage.am.lsm.common.api.*;
+import 
org.apache.hyracks.storage.am.lsm.common.impls.BlockingIOOperationCallbackWrapper;
+import org.apache.hyracks.storage.am.lsm.common.impls.NoOpIOOperationCallback;
+import org.apache.hyracks.storage.am.lsm.common.impls.StubIOOperationCallback;
+
+import java.util.List;
+
+/**
+ * This test is the LSMBTreeMergeTest but using a filter, and at each step of 
the filter's lifecycle its value is
+ * checked against computed min/maxes from the check tuples.
+ */
+
+@SuppressWarnings("rawtypes")
+public abstract class LSMBTreeFilterMergeTestDriver extends 
OrderedIndexTestDriver {
+
+    private final OrderedIndexTestUtils orderedIndexTestUtils;
+
+    public LSMBTreeFilterMergeTestDriver(BTreeLeafFrameType[] 
leafFrameTypesToTest) {
+        super(leafFrameTypesToTest);
+        this.orderedIndexTestUtils = new OrderedIndexTestUtils();
+    }
+
+    private Pair<ITupleReference, ITupleReference> 
filterToMinMax(ILSMComponentFilter f) throws HyracksDataException {
+        ArrayTupleBuilder builder = new ArrayTupleBuilder(1);
+        builder.addField(f.getMinTuple().getFieldData(0), 
f.getMinTuple().getFieldStart(0),
+                f.getMinTuple().getFieldLength(0));
+        ArrayTupleReference minCopy = new ArrayTupleReference();
+        minCopy.reset(builder.getFieldEndOffsets(), builder.getByteArray());
+        builder = new ArrayTupleBuilder(1);
+        builder.addField(f.getMaxTuple().getFieldData(0), 
f.getMaxTuple().getFieldStart(0),
+                f.getMaxTuple().getFieldLength(0));
+        ArrayTupleReference maxCopy = new ArrayTupleReference();
+        maxCopy.reset(builder.getFieldEndOffsets(), builder.getByteArray());
+        builder.reset();
+        return Pair.of(minCopy, maxCopy);
+    }
+
+    @Override
+    protected void runTest(ISerializerDeserializer[] fieldSerdes, int numKeys, 
BTreeLeafFrameType leafType,
+            ITupleReference lowKey, ITupleReference highKey, ITupleReference 
prefixLowKey,
+            ITupleReference prefixHighKey) throws Exception {
+        OrderedIndexTestContext ctx = createTestContext(fieldSerdes, numKeys, 
leafType, true);
+        ctx.getIndex().create();
+        ctx.getIndex().activate();
+        // Start off with one tree bulk loaded.
+        // We assume all fieldSerdes are of the same type. Check the first one
+        // to determine which field types to generate.
+        if (fieldSerdes[0] instanceof IntegerSerializerDeserializer) {
+            orderedIndexTestUtils.bulkLoadIntTuples(ctx, numTuplesToInsert, 
true, getRandom());
+        } else if (fieldSerdes[0] instanceof UTF8StringSerializerDeserializer) 
{
+            orderedIndexTestUtils.bulkLoadStringTuples(ctx, numTuplesToInsert, 
true, getRandom());
+        }
+
+        int maxTreesToMerge = 
AccessMethodTestsConfig.LSM_BTREE_MAX_TREES_TO_MERGE;
+        ILSMIndexAccessor accessor = (ILSMIndexAccessor) 
ctx.getIndexAccessor();
+        IBinaryComparator comp = 
ctx.getComparatorFactories()[0].createBinaryComparator();
+        for (int i = 0; i < maxTreesToMerge; i++) {
+            int flushed = 0;
+            for (; flushed < i; flushed++) {
+                Pair<ITupleReference, ITupleReference> minMax = null;
+                if (fieldSerdes[0] instanceof IntegerSerializerDeserializer) {
+                    minMax = orderedIndexTestUtils.insertIntTuples(ctx, 
numTuplesToInsert, true, getRandom());
+                } else {
+                    minMax = orderedIndexTestUtils.insertStringTuples(ctx, 
numTuplesToInsert, true, getRandom());
+                }
+                if (minMax != null) {
+                    ILSMComponentFilter f = ((LSMBTree) 
ctx.getIndex()).getCurrentMemoryComponent()
+                            .getLSMComponentFilter();
+                    Pair<ITupleReference, ITupleReference> obsMinMax = 
filterToMinMax(f);
+                    Assert.assertEquals(0,
+                            
TreeIndexTestUtils.compareFilterTuples(obsMinMax.getLeft(), minMax.getLeft(), 
comp));
+                    Assert.assertEquals(0,
+                            
TreeIndexTestUtils.compareFilterTuples(obsMinMax.getRight(), minMax.getRight(), 
comp));
+                }
+
+                StubIOOperationCallback stub = new StubIOOperationCallback();
+                BlockingIOOperationCallbackWrapper waiter = new 
BlockingIOOperationCallbackWrapper(stub);
+                accessor.scheduleFlush(waiter);
+                waiter.waitForIO();
+                if (minMax != null) {
+                    Pair<ITupleReference, ITupleReference> obsMinMax = 
filterToMinMax(
+                            
stub.getLastNewComponent().getLSMComponentFilter());
+                    Assert.assertEquals(0,
+                            
TreeIndexTestUtils.compareFilterTuples(obsMinMax.getLeft(), minMax.getLeft(), 
comp));
+                    Assert.assertEquals(0,
+                            
TreeIndexTestUtils.compareFilterTuples(obsMinMax.getRight(), minMax.getRight(), 
comp));
+                }
+            }
+
+            List<ILSMDiskComponent> flushedComponents = ((LSMBTree) 
ctx.getIndex()).getImmutableComponents();
+            MutablePair<ITupleReference, ITupleReference> expectedMergeMinMax 
= null;
+            for (ILSMDiskComponent f : flushedComponents) {
+                Pair<ITupleReference, ITupleReference> componentMinMax = 
filterToMinMax(f.getLSMComponentFilter());
+                if (expectedMergeMinMax == null) {
+                    expectedMergeMinMax = 
MutablePair.of(componentMinMax.getLeft(), componentMinMax.getRight());
+                }
+                if 
(TreeIndexTestUtils.compareFilterTuples(expectedMergeMinMax.getLeft(), 
componentMinMax.getLeft(),
+                        comp) > 0) {
+                    expectedMergeMinMax.setLeft(componentMinMax.getLeft());
+                }
+                if 
(TreeIndexTestUtils.compareFilterTuples(expectedMergeMinMax.getRight(), 
componentMinMax.getRight(),
+                        comp) < 0) {
+                    expectedMergeMinMax.setRight(componentMinMax.getRight());
+                }
+            }
+            accessor.scheduleMerge(NoOpIOOperationCallback.INSTANCE,
+                    ((LSMBTree) ctx.getIndex()).getImmutableComponents());
+
+            flushedComponents = ((LSMBTree) 
ctx.getIndex()).getImmutableComponents();
+            Pair<ITupleReference, ITupleReference> mergedMinMax = 
filterToMinMax(
+                    flushedComponents.get(0).getLSMComponentFilter());
+            Assert.assertEquals(0, 
TreeIndexTestUtils.compareFilterTuples(expectedMergeMinMax.getLeft(),
+                    mergedMinMax.getLeft(), comp));
+            Assert.assertEquals(0, 
TreeIndexTestUtils.compareFilterTuples(expectedMergeMinMax.getRight(),
+                    mergedMinMax.getRight(), comp));
+
+            orderedIndexTestUtils.checkPointSearches(ctx);
+            orderedIndexTestUtils.checkScan(ctx);
+            orderedIndexTestUtils.checkDiskOrderScan(ctx);
+            orderedIndexTestUtils.checkRangeSearch(ctx, lowKey, highKey, true, 
true);
+            if (prefixLowKey != null && prefixHighKey != null) {
+                orderedIndexTestUtils.checkRangeSearch(ctx, prefixLowKey, 
prefixHighKey, true, true);
+            }
+        }
+        ctx.getIndex().deactivate();
+        ctx.getIndex().destroy();
+    }
+
+    @Override
+    protected String getTestOpName() {
+        return "LSM Merge";
+    }
+}

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/fb6468cc/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeInsertTest.java
----------------------------------------------------------------------
diff --git 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeInsertTest.java
 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeInsertTest.java
index 0b42910..fe1082f 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeInsertTest.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeInsertTest.java
@@ -52,12 +52,12 @@ public class LSMBTreeInsertTest extends 
OrderedIndexInsertTest {
 
     @Override
     protected OrderedIndexTestContext 
createTestContext(ISerializerDeserializer[] fieldSerdes, int numKeys,
-            BTreeLeafFrameType leafType) throws Exception {
+                                                        BTreeLeafFrameType 
leafType, boolean filtered) throws Exception {
         return LSMBTreeTestContext.create(harness.getIOManager(), 
harness.getVirtualBufferCaches(), harness
                 .getFileReference(), harness.getDiskBufferCache(), 
harness.getDiskFileMapProvider(), fieldSerdes,
                 numKeys, harness.getBoomFilterFalsePositiveRate(), 
harness.getMergePolicy(), harness
                         .getOperationTracker(), harness.getIOScheduler(), 
harness.getIOOperationCallback(), harness
-                                .getMetadataPageManagerFactory());
+                                .getMetadataPageManagerFactory(), false);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/fb6468cc/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeLifecycleTest.java
----------------------------------------------------------------------
diff --git 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeLifecycleTest.java
 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeLifecycleTest.java
index 96bd462..adeb67d 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeLifecycleTest.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeLifecycleTest.java
@@ -60,7 +60,7 @@ public class LSMBTreeLifecycleTest extends 
AbstractIndexLifecycleTest {
                 .getFileReference(),
                 harness.getDiskBufferCache(), 
harness.getDiskFileMapProvider(), fieldSerdes, fieldSerdes.length,
                 harness.getBoomFilterFalsePositiveRate(), 
harness.getMergePolicy(), harness.getOperationTracker(),
-                harness.getIOScheduler(), harness.getIOOperationCallback(), 
harness.getMetadataPageManagerFactory());
+                harness.getIOScheduler(), harness.getIOOperationCallback(), 
harness.getMetadataPageManagerFactory(), false);
         index = testCtx.getIndex();
     }
 

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/fb6468cc/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeMergeTest.java
----------------------------------------------------------------------
diff --git 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeMergeTest.java
 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeMergeTest.java
index 40e23be..76ff003 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeMergeTest.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeMergeTest.java
@@ -51,12 +51,12 @@ public class LSMBTreeMergeTest extends 
LSMBTreeMergeTestDriver {
 
     @Override
     protected OrderedIndexTestContext 
createTestContext(ISerializerDeserializer[] fieldSerdes, int numKeys,
-            BTreeLeafFrameType leafType) throws Exception {
+                                                        BTreeLeafFrameType 
leafType, boolean filtered) throws Exception {
         return LSMBTreeTestContext.create(harness.getIOManager(), 
harness.getVirtualBufferCaches(), harness
                 .getFileReference(),
                 harness.getDiskBufferCache(), 
harness.getDiskFileMapProvider(), fieldSerdes, numKeys,
                 harness.getBoomFilterFalsePositiveRate(), 
harness.getMergePolicy(), harness.getOperationTracker(),
-                harness.getIOScheduler(), harness.getIOOperationCallback(), 
harness.getMetadataPageManagerFactory());
+                harness.getIOScheduler(), harness.getIOOperationCallback(), 
harness.getMetadataPageManagerFactory(), filtered);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/fb6468cc/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeMergeTestDriver.java
----------------------------------------------------------------------
diff --git 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeMergeTestDriver.java
 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeMergeTestDriver.java
index d41d5d8..685215a 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeMergeTestDriver.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeMergeTestDriver.java
@@ -46,7 +46,7 @@ public abstract class LSMBTreeMergeTestDriver extends 
OrderedIndexTestDriver {
     protected void runTest(ISerializerDeserializer[] fieldSerdes, int numKeys, 
BTreeLeafFrameType leafType,
             ITupleReference lowKey, ITupleReference highKey, ITupleReference 
prefixLowKey, ITupleReference prefixHighKey)
             throws Exception {
-        OrderedIndexTestContext ctx = createTestContext(fieldSerdes, numKeys, 
leafType);
+        OrderedIndexTestContext ctx = createTestContext(fieldSerdes, numKeys, 
leafType, false);
         ctx.getIndex().create();
         ctx.getIndex().activate();
         // Start off with one tree bulk loaded.

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/fb6468cc/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeMultiBulkLoadTest.java
----------------------------------------------------------------------
diff --git 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeMultiBulkLoadTest.java
 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeMultiBulkLoadTest.java
index 9b6c4ae..ea16368 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeMultiBulkLoadTest.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeMultiBulkLoadTest.java
@@ -53,12 +53,12 @@ public class LSMBTreeMultiBulkLoadTest extends 
OrderedIndexBulkLoadTest {
 
     @Override
     protected OrderedIndexTestContext 
createTestContext(ISerializerDeserializer[] fieldSerdes, int numKeys,
-            BTreeLeafFrameType leafType) throws Exception {
+                                                        BTreeLeafFrameType 
leafType, boolean filtered) throws Exception {
         return LSMBTreeTestContext.create(harness.getIOManager(), 
harness.getVirtualBufferCaches(), harness
                 .getFileReference(),
                 harness.getDiskBufferCache(), 
harness.getDiskFileMapProvider(), fieldSerdes, numKeys,
                 harness.getBoomFilterFalsePositiveRate(), 
harness.getMergePolicy(), harness.getOperationTracker(),
-                harness.getIOScheduler(), harness.getIOOperationCallback(), 
harness.getMetadataPageManagerFactory());
+                harness.getIOScheduler(), harness.getIOOperationCallback(), 
harness.getMetadataPageManagerFactory(), false);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/fb6468cc/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeUpdateTest.java
----------------------------------------------------------------------
diff --git 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeUpdateTest.java
 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeUpdateTest.java
index cf20ddb..fdd1ec3 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeUpdateTest.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/LSMBTreeUpdateTest.java
@@ -52,12 +52,12 @@ public class LSMBTreeUpdateTest extends 
OrderedIndexUpdateTest {
 
     @Override
     protected OrderedIndexTestContext 
createTestContext(ISerializerDeserializer[] fieldSerdes, int numKeys,
-            BTreeLeafFrameType leafType) throws Exception {
+                                                        BTreeLeafFrameType 
leafType, boolean filtered) throws Exception {
         return LSMBTreeTestContext.create(harness.getIOManager(), 
harness.getVirtualBufferCaches(), harness
                 .getFileReference(), harness.getDiskBufferCache(), 
harness.getDiskFileMapProvider(), fieldSerdes,
                 numKeys, harness.getBoomFilterFalsePositiveRate(), 
harness.getMergePolicy(), harness
                         .getOperationTracker(), harness.getIOScheduler(), 
harness.getIOOperationCallback(), harness
-                                .getMetadataPageManagerFactory());
+                                .getMetadataPageManagerFactory(), false);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/fb6468cc/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/util/LSMBTreeTestContext.java
----------------------------------------------------------------------
diff --git 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/util/LSMBTreeTestContext.java
 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/util/LSMBTreeTestContext.java
index d474c02..d8d6e5c 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/util/LSMBTreeTestContext.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/util/LSMBTreeTestContext.java
@@ -46,8 +46,8 @@ import 
org.apache.hyracks.storage.common.file.IFileMapProvider;
 @SuppressWarnings("rawtypes")
 public final class LSMBTreeTestContext extends OrderedIndexTestContext {
 
-    public LSMBTreeTestContext(ISerializerDeserializer[] fieldSerdes, 
ITreeIndex treeIndex) throws HyracksDataException {
-        super(fieldSerdes, treeIndex);
+    public LSMBTreeTestContext(ISerializerDeserializer[] fieldSerdes, 
ITreeIndex treeIndex, boolean filtered) throws HyracksDataException {
+        super(fieldSerdes, treeIndex, filtered);
     }
 
     @Override
@@ -71,11 +71,11 @@ public final class LSMBTreeTestContext extends 
OrderedIndexTestContext {
     }
 
     public static LSMBTreeTestContext create(IIOManager ioManager, 
List<IVirtualBufferCache> virtualBufferCaches,
-            FileReference file, IBufferCache diskBufferCache, IFileMapProvider 
diskFileMapProvider,
-            ISerializerDeserializer[] fieldSerdes,
-            int numKeyFields, double bloomFilterFalsePositiveRate, 
ILSMMergePolicy mergePolicy,
-            ILSMOperationTracker opTracker, ILSMIOOperationScheduler 
ioScheduler, ILSMIOOperationCallback ioOpCallback,
-            IMetadataPageManagerFactory metadataPageManagerFactory)
+                                             FileReference file, IBufferCache 
diskBufferCache, IFileMapProvider diskFileMapProvider,
+                                             ISerializerDeserializer[] 
fieldSerdes,
+                                             int numKeyFields, double 
bloomFilterFalsePositiveRate, ILSMMergePolicy mergePolicy,
+                                             ILSMOperationTracker opTracker, 
ILSMIOOperationScheduler ioScheduler, ILSMIOOperationCallback ioOpCallback,
+                                             IMetadataPageManagerFactory 
metadataPageManagerFactory, boolean filtered)
             throws Exception {
         ITypeTraits[] typeTraits = SerdeUtils.serdesToTypeTraits(fieldSerdes);
         IBinaryComparatorFactory[] cmpFactories = 
SerdeUtils.serdesToComparatorFactories(fieldSerdes, numKeyFields);
@@ -83,11 +83,28 @@ public final class LSMBTreeTestContext extends 
OrderedIndexTestContext {
         for (int i = 0; i < numKeyFields; ++i) {
             bloomFilterKeyFields[i] = i;
         }
-        LSMBTree lsmTree = LSMBTreeUtil.createLSMTree(ioManager, 
virtualBufferCaches, file, diskBufferCache,
-                diskFileMapProvider, typeTraits, cmpFactories, 
bloomFilterKeyFields, bloomFilterFalsePositiveRate,
-                mergePolicy, opTracker, ioScheduler, ioOpCallback, true, null, 
null, null, null, true,
-                metadataPageManagerFactory);
-        LSMBTreeTestContext testCtx = new LSMBTreeTestContext(fieldSerdes, 
lsmTree);
+        LSMBTree lsmTree;
+        if(filtered) {
+            ITypeTraits[] filterTypeTraits = new ITypeTraits[1];
+            filterTypeTraits[0] = typeTraits[0];
+            int[] btreefields = new int[typeTraits.length];
+            for (int i = 0; i < btreefields.length; i++) {
+                btreefields[i] = i;
+            }
+            int[] filterfields = {btreefields.length};
+            IBinaryComparatorFactory[] filterCmp = {cmpFactories[0]};
+            lsmTree = LSMBTreeUtil.createLSMTree(ioManager, 
virtualBufferCaches, file, diskBufferCache,
+                    diskFileMapProvider, typeTraits, cmpFactories, 
bloomFilterKeyFields, bloomFilterFalsePositiveRate,
+                    mergePolicy, opTracker, ioScheduler, ioOpCallback, true, 
filterTypeTraits, filterCmp, btreefields, filterfields, true,
+                    metadataPageManagerFactory);
+        }
+        else{
+            lsmTree = LSMBTreeUtil.createLSMTree(ioManager, 
virtualBufferCaches, file, diskBufferCache,
+                    diskFileMapProvider, typeTraits, cmpFactories, 
bloomFilterKeyFields, bloomFilterFalsePositiveRate,
+                    mergePolicy, opTracker, ioScheduler, ioOpCallback, true, 
null,null,null,null, true,
+                    metadataPageManagerFactory);
+        }
+        LSMBTreeTestContext testCtx = new LSMBTreeTestContext(fieldSerdes, 
lsmTree, filtered);
         return testCtx;
     }
 }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/fb6468cc/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-common-test/src/test/java/org/apache/hyracks/storage/am/lsm/common/LSMComponentFilterReferenceTest.java
----------------------------------------------------------------------
diff --git 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-common-test/src/test/java/org/apache/hyracks/storage/am/lsm/common/LSMComponentFilterReferenceTest.java
 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-common-test/src/test/java/org/apache/hyracks/storage/am/lsm/common/LSMComponentFilterReferenceTest.java
index fcc0a48..0257bad 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-common-test/src/test/java/org/apache/hyracks/storage/am/lsm/common/LSMComponentFilterReferenceTest.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-common-test/src/test/java/org/apache/hyracks/storage/am/lsm/common/LSMComponentFilterReferenceTest.java
@@ -39,11 +39,11 @@ public class LSMComponentFilterReferenceTest {
                 new TypeAwareTupleWriter(new ITypeTraits[] { 
IntegerPointable.TYPE_TRAITS }));
         Assert.assertEquals(filter.getLength(), 0);
         Assert.assertFalse(filter.isMaxTupleSet() || filter.isMinTupleSet());
-        filter.writeMaxTuple(TupleUtils.createIntegerTuple(Integer.MAX_VALUE));
+        filter.writeMaxTuple(TupleUtils.createIntegerTuple(false, 
Integer.MAX_VALUE));
         Assert.assertFalse(filter.isMinTupleSet());
         Assert.assertTrue(filter.isMaxTupleSet());
         Assert.assertTrue(filter.getLength() == 11);
-        filter.writeMinTuple(TupleUtils.createIntegerTuple(Integer.MIN_VALUE));
+        filter.writeMinTuple(TupleUtils.createIntegerTuple(false, 
Integer.MIN_VALUE));
         Assert.assertTrue(filter.isMinTupleSet() && filter.isMaxTupleSet());
         Assert.assertTrue(filter.getLength() == 20);
         byte[] serFilter = filter.getByteArray();

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/fb6468cc/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestContext.java
----------------------------------------------------------------------
diff --git 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestContext.java
 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestContext.java
index 6e17fff..8181309 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestContext.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestContext.java
@@ -67,7 +67,7 @@ public class LSMInvertedIndexTestContext extends 
OrderedIndexTestContext {
     public LSMInvertedIndexTestContext(ISerializerDeserializer[] fieldSerdes, 
IIndex index,
             IBinaryTokenizerFactory tokenizerFactory, InvertedIndexType 
invIndexType,
             InvertedIndexTokenizingTupleIterator indexTupleIter) throws 
HyracksDataException {
-        super(fieldSerdes, index);
+        super(fieldSerdes, index, false);
         invIndex = (IInvertedIndex) index;
         this.tokenizerFactory = tokenizerFactory;
         this.invIndexType = invIndexType;

Reply via email to