Reorganizing lsm-btree code into meaningful packages.
git-svn-id: https://hyracks.googlecode.com/svn/branches/hyracks_lsm_tree@1031 123451ca-8445-de46-9d55-352943316053
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/FreePageManagerFactory.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/freepage/FreePageManagerFactory.java
similarity index 93%
rename from hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/FreePageManagerFactory.java
rename to hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/freepage/FreePageManagerFactory.java
index b88cc88..4285490 100644
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/FreePageManagerFactory.java
+++ b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/freepage/FreePageManagerFactory.java
@@ -1,4 +1,4 @@
-package edu.uci.ics.hyracks.storage.am.lsmtree.impls;
+package edu.uci.ics.hyracks.storage.am.lsmtree.freepage;
import edu.uci.ics.hyracks.storage.am.common.api.IFreePageManager;
import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexMetaDataFrameFactory;
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/InMemoryBufferCache.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/freepage/InMemoryBufferCache.java
similarity index 98%
rename from hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/InMemoryBufferCache.java
rename to hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/freepage/InMemoryBufferCache.java
index 1849f06..c523440 100644
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/InMemoryBufferCache.java
+++ b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/freepage/InMemoryBufferCache.java
@@ -1,4 +1,4 @@
-package edu.uci.ics.hyracks.storage.am.lsmtree.impls;
+package edu.uci.ics.hyracks.storage.am.lsmtree.freepage;
import java.nio.ByteBuffer;
import java.util.concurrent.locks.ReadWriteLock;
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/InMemoryBufferCacheFactory.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/freepage/InMemoryBufferCacheFactory.java
similarity index 93%
rename from hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/InMemoryBufferCacheFactory.java
rename to hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/freepage/InMemoryBufferCacheFactory.java
index 21ec0da..07e1c15 100644
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/InMemoryBufferCacheFactory.java
+++ b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/freepage/InMemoryBufferCacheFactory.java
@@ -1,4 +1,4 @@
-package edu.uci.ics.hyracks.storage.am.lsmtree.impls;
+package edu.uci.ics.hyracks.storage.am.lsmtree.freepage;
import edu.uci.ics.hyracks.storage.common.buffercache.HeapBufferAllocator;
import edu.uci.ics.hyracks.storage.common.buffercache.IBufferCache;
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/InMemoryBufferCacheTest.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/freepage/InMemoryBufferCacheTest.java
similarity index 98%
rename from hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/InMemoryBufferCacheTest.java
rename to hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/freepage/InMemoryBufferCacheTest.java
index 5b1a409..418ed5c 100644
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/InMemoryBufferCacheTest.java
+++ b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/freepage/InMemoryBufferCacheTest.java
@@ -1,4 +1,4 @@
-package edu.uci.ics.hyracks.storage.am.lsmtree.impls;
+package edu.uci.ics.hyracks.storage.am.lsmtree.freepage;
import static org.junit.Assert.fail;
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/InMemoryFreePageManager.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/freepage/InMemoryFreePageManager.java
similarity index 97%
rename from hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/InMemoryFreePageManager.java
rename to hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/freepage/InMemoryFreePageManager.java
index 42c4bf3..9331c04 100644
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/InMemoryFreePageManager.java
+++ b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/freepage/InMemoryFreePageManager.java
@@ -1,4 +1,4 @@
-package edu.uci.ics.hyracks.storage.am.lsmtree.impls;
+package edu.uci.ics.hyracks.storage.am.lsmtree.freepage;
import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
import edu.uci.ics.hyracks.storage.am.common.api.IFreePageManager;
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/InMemoryFreePageManagerTest.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/freepage/InMemoryFreePageManagerTest.java
similarity index 96%
rename from hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/InMemoryFreePageManagerTest.java
rename to hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/freepage/InMemoryFreePageManagerTest.java
index d61735f..71a781c 100644
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/InMemoryFreePageManagerTest.java
+++ b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/freepage/InMemoryFreePageManagerTest.java
@@ -1,4 +1,4 @@
-package edu.uci.ics.hyracks.storage.am.lsmtree.impls;
+package edu.uci.ics.hyracks.storage.am.lsmtree.freepage;
import static org.junit.Assert.fail;
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/AbstractLSMTreeTest.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/AbstractLSMTreeTest.java
deleted file mode 100644
index 17de58c..0000000
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/AbstractLSMTreeTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package edu.uci.ics.hyracks.storage.am.lsmtree.impls;
-
-import java.io.File;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Random;
-import java.util.logging.Logger;
-
-import org.junit.After;
-import org.junit.Before;
-
-import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
-import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
-import edu.uci.ics.hyracks.api.io.FileReference;
-import edu.uci.ics.hyracks.storage.common.buffercache.IBufferCache;
-import edu.uci.ics.hyracks.storage.common.file.IFileMapProvider;
-import edu.uci.ics.hyracks.test.support.TestStorageManagerComponentHolder;
-import edu.uci.ics.hyracks.test.support.TestUtils;
-
-public abstract class AbstractLSMTreeTest {
- protected static final Logger LOGGER = Logger.getLogger(AbstractLSMTreeTest.class.getName());
- public static final long RANDOM_SEED = 50;
-
- private static final int PAGE_SIZE = 256;
- private static final int NUM_PAGES = 10;
- private static final int MAX_OPEN_FILES = 10;
- private static final int HYRACKS_FRAME_SIZE = 128;
-
- protected IHyracksTaskContext ctx;
- protected IBufferCache bufferCache;
- protected int btreeFileId;
-
- protected final Random rnd = new Random();
- protected final static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("ddMMyy-hhmmssSS");
- protected final static String tmpDir = System.getProperty("java.io.tmpdir");
- protected final static String sep = System.getProperty("file.separator");
- protected String fileName;
-
- @Before
- public void setUp() throws HyracksDataException {
- fileName = tmpDir + sep + simpleDateFormat.format(new Date());
- ctx = TestUtils.create(getHyracksFrameSize());
- TestStorageManagerComponentHolder.init(getPageSize(), getNumPages(), getMaxOpenFiles());
- bufferCache = TestStorageManagerComponentHolder.getBufferCache(ctx);
- IFileMapProvider fmp = TestStorageManagerComponentHolder.getFileMapProvider(ctx);
- FileReference file = new FileReference(new File(fileName));
- bufferCache.createFile(file);
- btreeFileId = fmp.lookupFileId(file);
- bufferCache.openFile(btreeFileId);
- rnd.setSeed(RANDOM_SEED);
- }
-
- @After
- public void tearDown() throws HyracksDataException {
- bufferCache.closeFile(btreeFileId);
- bufferCache.close();
- File f = new File(fileName);
- f.deleteOnExit();
- }
-
- public int getPageSize() {
- return PAGE_SIZE;
- }
-
- public int getNumPages() {
- return NUM_PAGES;
- }
-
- public int getHyracksFrameSize() {
- return HYRACKS_FRAME_SIZE;
- }
-
- public int getMaxOpenFiles() {
- return MAX_OPEN_FILES;
- }
-}
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/BTreeFactory.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/BTreeFactory.java
index 1584f2c..f5bfaec 100644
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/BTreeFactory.java
+++ b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/BTreeFactory.java
@@ -3,6 +3,7 @@
import edu.uci.ics.hyracks.storage.am.btree.impls.BTree;
import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
import edu.uci.ics.hyracks.storage.am.common.ophelpers.MultiComparator;
+import edu.uci.ics.hyracks.storage.am.lsmtree.freepage.FreePageManagerFactory;
import edu.uci.ics.hyracks.storage.common.buffercache.IBufferCache;
public class BTreeFactory {
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTree.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTree.java
index fb5d741..de6b524 100644
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTree.java
+++ b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTree.java
@@ -30,6 +30,8 @@
import edu.uci.ics.hyracks.storage.am.common.api.TreeIndexException;
import edu.uci.ics.hyracks.storage.am.common.ophelpers.IndexOp;
import edu.uci.ics.hyracks.storage.am.common.ophelpers.MultiComparator;
+import edu.uci.ics.hyracks.storage.am.lsmtree.freepage.InMemoryFreePageManager;
+import edu.uci.ics.hyracks.storage.am.lsmtree.tuples.LSMTypeAwareTupleReference;
import edu.uci.ics.hyracks.storage.common.buffercache.IBufferCache;
import edu.uci.ics.hyracks.storage.common.file.IFileMapManager;
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTreeDeleteTest.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTreeDeleteTest.java
deleted file mode 100644
index 3375918..0000000
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTreeDeleteTest.java
+++ /dev/null
@@ -1,1095 +0,0 @@
-package edu.uci.ics.hyracks.storage.am.lsmtree.impls;
-
-import static org.junit.Assert.fail;
-
-import java.io.ByteArrayInputStream;
-import java.io.DataInput;
-import java.io.DataInputStream;
-import java.io.DataOutput;
-import java.io.File;
-import java.nio.ByteBuffer;
-
-import org.junit.Test;
-
-import edu.uci.ics.hyracks.api.comm.IFrameTupleAccessor;
-import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.ISerializerDeserializer;
-import edu.uci.ics.hyracks.api.dataflow.value.ITypeTraits;
-import edu.uci.ics.hyracks.api.dataflow.value.RecordDescriptor;
-import edu.uci.ics.hyracks.api.io.FileReference;
-import edu.uci.ics.hyracks.data.std.accessors.PointableBinaryComparatorFactory;
-import edu.uci.ics.hyracks.data.std.primitive.IntegerPointable;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.ArrayTupleReference;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.FrameTupleAppender;
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.FrameTupleReference;
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.ITupleReference;
-import edu.uci.ics.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
-import edu.uci.ics.hyracks.storage.am.btree.frames.BTreeNSMInteriorFrameFactory;
-import edu.uci.ics.hyracks.storage.am.btree.frames.BTreeNSMLeafFrameFactory;
-import edu.uci.ics.hyracks.storage.am.btree.impls.RangePredicate;
-import edu.uci.ics.hyracks.storage.am.common.api.IFreePageManager;
-import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexAccessor;
-import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexCursor;
-import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
-import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexMetaDataFrameFactory;
-import edu.uci.ics.hyracks.storage.am.common.api.TreeIndexException;
-import edu.uci.ics.hyracks.storage.am.common.frames.LIFOMetaDataFrameFactory;
-import edu.uci.ics.hyracks.storage.am.common.ophelpers.MultiComparator;
-import edu.uci.ics.hyracks.storage.common.buffercache.IBufferCache;
-import edu.uci.ics.hyracks.storage.common.file.IFileMapManager;
-import edu.uci.ics.hyracks.storage.common.file.IFileMapProvider;
-import edu.uci.ics.hyracks.test.support.TestStorageManagerComponentHolder;
-import edu.uci.ics.hyracks.test.support.TestUtils;
-
-public class LSMTreeDeleteTest extends AbstractLSMTreeTest {
-
- private static final int PAGE_SIZE = 256;
- private static final int NUM_PAGES = 100;
- private static final int MAX_OPEN_FILES = 100;
- private static final int HYRACKS_FRAME_SIZE = 128;
- private IHyracksTaskContext ctx = TestUtils.create(HYRACKS_FRAME_SIZE);
-
- // BASIC DELETE TEST
- // create a fix-length lsm tree, and do 100 deletes. That is insert 100
- // delete nodes into the in-memory tree.
- @Test
- public void Test1() throws Exception {
- // in disk
- TestStorageManagerComponentHolder.init(PAGE_SIZE, NUM_PAGES, MAX_OPEN_FILES);
- IBufferCache bufferCache = TestStorageManagerComponentHolder.getBufferCache(ctx);
- IFileMapProvider fmp = TestStorageManagerComponentHolder.getFileMapProvider(ctx);
- FileReference file = new FileReference(new File(fileName));
- bufferCache.createFile(file);
- int fileId = fmp.lookupFileId(file);
- bufferCache.openFile(fileId);
-
- // in memory
- InMemoryBufferCacheFactory InMemBufferCacheFactory = new InMemoryBufferCacheFactory(PAGE_SIZE, NUM_PAGES);
- IBufferCache memBufferCache = InMemBufferCacheFactory.createInMemoryBufferCache();
-
- // declare fields
- int fieldCount = 2;
- ITypeTraits[] typeTraits = new ITypeTraits[fieldCount];
- typeTraits[0] = IntegerPointable.TYPE_TRAITS;
- typeTraits[1] = IntegerPointable.TYPE_TRAITS;
-
- // declare keys
- int keyFieldCount = 1;
- IBinaryComparator[] cmps = new IBinaryComparator[keyFieldCount];
- cmps[0] = PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY).createBinaryComparator();
-
- MultiComparator cmp = new MultiComparator(cmps);
-
- LSMTypeAwareTupleWriterFactory insertTupleWriterFactory = new LSMTypeAwareTupleWriterFactory(typeTraits, false);
- LSMTypeAwareTupleWriterFactory deleteTupleWriterFactory = new LSMTypeAwareTupleWriterFactory(typeTraits, true);
-
- ITreeIndexFrameFactory insertLeafFrameFactory = new BTreeNSMLeafFrameFactory(insertTupleWriterFactory);
- ITreeIndexFrameFactory deleteLeafFrameFactory = new BTreeNSMLeafFrameFactory(deleteTupleWriterFactory);
- ITreeIndexFrameFactory interiorFrameFactory = new BTreeNSMInteriorFrameFactory(insertTupleWriterFactory);
- ITreeIndexMetaDataFrameFactory metaFrameFactory = new LIFOMetaDataFrameFactory();
-
- IFreePageManager memFreePageManager = new InMemoryFreePageManager(100, metaFrameFactory);
-
- FreePageManagerFactory freePageManagerFactory = new FreePageManagerFactory(bufferCache, metaFrameFactory);
- BTreeFactory bTreeFactory = new BTreeFactory(bufferCache, freePageManagerFactory, cmp, fieldCount,
- interiorFrameFactory, insertLeafFrameFactory);
-
- LSMTree lsmtree = new LSMTree(memBufferCache, bufferCache, fieldCount, cmp, memFreePageManager,
- interiorFrameFactory, insertLeafFrameFactory, deleteLeafFrameFactory, bTreeFactory,
- (IFileMapManager) fmp);
-
- lsmtree.create(fileId);
- lsmtree.open(fileId);
-
- ByteBuffer frame = ctx.allocateFrame();
- FrameTupleAppender appender = new FrameTupleAppender(ctx.getFrameSize());
-
- ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount);
- DataOutput dos = tb.getDataOutput();
-
- ISerializerDeserializer[] recDescSers = { IntegerSerializerDeserializer.INSTANCE,
- IntegerSerializerDeserializer.INSTANCE };
- RecordDescriptor recDesc = new RecordDescriptor(recDescSers);
-
- IFrameTupleAccessor accessor = new FrameTupleAccessor(ctx.getFrameSize(), recDesc);
- accessor.reset(frame);
-
- FrameTupleReference tuple = new FrameTupleReference();
-
- ITreeIndexAccessor lsmTreeAccessor = lsmtree.createAccessor();
-
- int resultSize = 50;
- int[][] resultArray = new int[resultSize][3];
-
- for (int i = 0; i < resultSize; i++) {
- resultArray[i][0] = i;
- resultArray[i][1] = i + 1;
- resultArray[i][2] = 1;
- }
-
- // delete
- for (int i = 0; i < resultSize; i++) {
-
- int f0 = resultArray[i][0];
- int f1 = resultArray[i][1];
-
- tb.reset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- tb.addFieldEndOffset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- tb.addFieldEndOffset();
-
- appender.reset(frame, true);
- appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
-
- tuple.reset(accessor, 0);
-
- ArrayTupleReference t = new ArrayTupleReference();
- t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
-
- try {
- lsmTreeAccessor.delete(t);
- } catch (TreeIndexException e) {
- System.out.println("test01:" + e);
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- // scan
- ITreeIndexCursor scanCursor = new LSMTreeRangeSearchCursor();
- RangePredicate nullPred = new RangePredicate(true, null, null, true, true, null, null);
- lsmTreeAccessor.search(scanCursor, nullPred);
-
- try {
- int scanTupleIndex = 0;
- int arrayIndex = 0;
- Object o = null;
- while (scanCursor.hasNext()) {
- scanCursor.next();
- ITupleReference frameTuple = scanCursor.getTuple();
- int numPrintFields = Math.min(frameTuple.getFieldCount(), recDescSers.length);
-
- for (int i = 0; i < numPrintFields; i++) {
- ByteArrayInputStream inStream = new ByteArrayInputStream(frameTuple.getFieldData(i),
- frameTuple.getFieldStart(i), frameTuple.getFieldLength(i));
- DataInput dataIn = new DataInputStream(inStream);
- o = recDescSers[i].deserialize(dataIn);
-
- }
- while (resultArray[arrayIndex][2] != 0) {
- arrayIndex++;
- }
- if (Integer.parseInt(o.toString()) != resultArray[arrayIndex][1]) {
- fail("Input value and Output value doesn't match on the " + scanTupleIndex + " tuple\n");
- }
- scanTupleIndex++;
- arrayIndex++;
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- scanCursor.close();
- }
-
- lsmtree.close();
- bufferCache.closeFile(fileId);
- memBufferCache.close();
- }
-
- // INSERT-DELETE TEST
- // create a fix-length lsm tree. First, do 100 insertions,
- // and then do 50 deletions which has the same 50 keys which are part of the
- // insertions.
- @Test
- public void Test2() throws Exception {
- // in disk
- TestStorageManagerComponentHolder.init(PAGE_SIZE, NUM_PAGES, MAX_OPEN_FILES);
- IBufferCache bufferCache = TestStorageManagerComponentHolder.getBufferCache(ctx);
- IFileMapProvider fmp = TestStorageManagerComponentHolder.getFileMapProvider(ctx);
- FileReference file = new FileReference(new File(fileName));
- bufferCache.createFile(file);
- int fileId = fmp.lookupFileId(file);
- bufferCache.openFile(fileId);
-
- // in memory
- InMemoryBufferCacheFactory InMemBufferCacheFactory = new InMemoryBufferCacheFactory(PAGE_SIZE, NUM_PAGES);
- IBufferCache memBufferCache = InMemBufferCacheFactory.createInMemoryBufferCache();
-
- // declare fields
- int fieldCount = 2;
- ITypeTraits[] typeTraits = new ITypeTraits[fieldCount];
- typeTraits[0] = IntegerPointable.TYPE_TRAITS;
- typeTraits[1] = IntegerPointable.TYPE_TRAITS;
-
- // declare keys
- int keyFieldCount = 1;
- IBinaryComparator[] cmps = new IBinaryComparator[keyFieldCount];
- cmps[0] = PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY).createBinaryComparator();
-
- MultiComparator cmp = new MultiComparator(cmps);
-
- LSMTypeAwareTupleWriterFactory insertTupleWriterFactory = new LSMTypeAwareTupleWriterFactory(typeTraits, false);
- LSMTypeAwareTupleWriterFactory deleteTupleWriterFactory = new LSMTypeAwareTupleWriterFactory(typeTraits, true);
-
- ITreeIndexFrameFactory insertLeafFrameFactory = new BTreeNSMLeafFrameFactory(insertTupleWriterFactory);
- ITreeIndexFrameFactory deleteLeafFrameFactory = new BTreeNSMLeafFrameFactory(deleteTupleWriterFactory);
- ITreeIndexFrameFactory interiorFrameFactory = new BTreeNSMInteriorFrameFactory(insertTupleWriterFactory);
- ITreeIndexMetaDataFrameFactory metaFrameFactory = new LIFOMetaDataFrameFactory();
-
- IFreePageManager memFreePageManager = new InMemoryFreePageManager(100, metaFrameFactory);
-
- FreePageManagerFactory freePageManagerFactory = new FreePageManagerFactory(bufferCache, metaFrameFactory);
- BTreeFactory bTreeFactory = new BTreeFactory(bufferCache, freePageManagerFactory, cmp, fieldCount,
- interiorFrameFactory, insertLeafFrameFactory);
-
- LSMTree lsmtree = new LSMTree(memBufferCache, bufferCache, fieldCount, cmp, memFreePageManager,
- interiorFrameFactory, insertLeafFrameFactory, deleteLeafFrameFactory, bTreeFactory,
- (IFileMapManager) fmp);
-
- lsmtree.create(fileId);
- lsmtree.open(fileId);
-
- ByteBuffer frame = ctx.allocateFrame();
- FrameTupleAppender appender = new FrameTupleAppender(ctx.getFrameSize());
-
- ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount);
- DataOutput dos = tb.getDataOutput();
-
- ISerializerDeserializer[] recDescSers = { IntegerSerializerDeserializer.INSTANCE,
- IntegerSerializerDeserializer.INSTANCE };
- RecordDescriptor recDesc = new RecordDescriptor(recDescSers);
-
- IFrameTupleAccessor accessor = new FrameTupleAccessor(ctx.getFrameSize(), recDesc);
- accessor.reset(frame);
-
- FrameTupleReference tuple = new FrameTupleReference();
-
- int resultSize = 100;
- int deleteStartPosition = 50;
- int[][] resultArray = new int[resultSize][3];
-
- for (int i = 0; i < resultSize; i++) {
- resultArray[i][0] = i;
- resultArray[i][1] = i + 1;
- resultArray[i][2] = 0;
- }
-
- // insert
- ITreeIndexAccessor lsmTreeAccessor = lsmtree.createAccessor();
- for (int i = 0; i < resultSize; i++) {
-
- int f0 = resultArray[i][0];
- int f1 = resultArray[i][1];
-
- tb.reset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- tb.addFieldEndOffset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- tb.addFieldEndOffset();
-
- appender.reset(frame, true);
- appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
-
- tuple.reset(accessor, 0);
-
- ArrayTupleReference t = new ArrayTupleReference();
- t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
-
- try {
- lsmTreeAccessor.insert(t);
- } catch (TreeIndexException e) {
- System.out.println("test02:" + e);
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- // delete
- for (int i = deleteStartPosition; i < resultSize; i++) {
-
- int f0 = resultArray[i][0];
- int f1 = ++resultArray[i][1];
- resultArray[i][2] = 1;
-
- tb.reset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- tb.addFieldEndOffset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- tb.addFieldEndOffset();
-
- appender.reset(frame, true);
- appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
-
- tuple.reset(accessor, 0);
-
- ArrayTupleReference t = new ArrayTupleReference();
- t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
-
- try {
- lsmTreeAccessor.delete(t);
- } catch (TreeIndexException e) {
- System.out.println("test02:" + e);
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- // scan
- ITreeIndexCursor scanCursor = new LSMTreeRangeSearchCursor();
- RangePredicate nullPred = new RangePredicate(true, null, null, true, true, null, null);
- lsmTreeAccessor.search(scanCursor, nullPred);
-
- try {
- int scanTupleIndex = 0;
- int arrayIndex = 0;
- Object o = null;
- while (scanCursor.hasNext()) {
- scanCursor.next();
- ITupleReference frameTuple = scanCursor.getTuple();
- int numPrintFields = Math.min(frameTuple.getFieldCount(), recDescSers.length);
-
- for (int i = 0; i < numPrintFields; i++) {
- ByteArrayInputStream inStream = new ByteArrayInputStream(frameTuple.getFieldData(i),
- frameTuple.getFieldStart(i), frameTuple.getFieldLength(i));
- DataInput dataIn = new DataInputStream(inStream);
- o = recDescSers[i].deserialize(dataIn);
-
- }
- while (resultArray[arrayIndex][2] != 0) {
- arrayIndex++;
- }
- if (Integer.parseInt(o.toString()) != resultArray[arrayIndex][1]) {
- fail("Input value and Output value doesn't match on the " + scanTupleIndex + " tuple\n");
- }
-
- scanTupleIndex++;
- arrayIndex++;
-
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- scanCursor.close();
- }
-
- lsmtree.close();
- bufferCache.closeFile(fileId);
- memBufferCache.close();
- }
-
- // DELETE->INSERT TEST
- // create a fix-length lsm tree. First, do 100 deletions,
- // and then do 50 insertions which has the same 50 keys which are part of
- // the deletions.
- @Test
- public void Test3() throws Exception {
- System.out.println("TEST3");
- // in disk
- TestStorageManagerComponentHolder.init(PAGE_SIZE, NUM_PAGES, MAX_OPEN_FILES);
- IBufferCache bufferCache = TestStorageManagerComponentHolder.getBufferCache(ctx);
- IFileMapProvider fmp = TestStorageManagerComponentHolder.getFileMapProvider(ctx);
- FileReference file = new FileReference(new File(fileName));
- bufferCache.createFile(file);
- int fileId = fmp.lookupFileId(file);
- bufferCache.openFile(fileId);
-
- // in mem
- InMemoryBufferCacheFactory InMemBufferCacheFactory = new InMemoryBufferCacheFactory(PAGE_SIZE, NUM_PAGES);
- IBufferCache memBufferCache = InMemBufferCacheFactory.createInMemoryBufferCache();
-
- // declare fields
- int fieldCount = 2;
- ITypeTraits[] typeTraits = new ITypeTraits[fieldCount];
- typeTraits[0] = IntegerPointable.TYPE_TRAITS;
- typeTraits[1] = IntegerPointable.TYPE_TRAITS;
-
- // declare keys
- int keyFieldCount = 1;
- IBinaryComparator[] cmps = new IBinaryComparator[keyFieldCount];
- cmps[0] = PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY).createBinaryComparator();
-
- MultiComparator cmp = new MultiComparator(cmps);
-
- LSMTypeAwareTupleWriterFactory insertTupleWriterFactory = new LSMTypeAwareTupleWriterFactory(typeTraits, false);
- LSMTypeAwareTupleWriterFactory deleteTupleWriterFactory = new LSMTypeAwareTupleWriterFactory(typeTraits, true);
-
- ITreeIndexFrameFactory insertLeafFrameFactory = new BTreeNSMLeafFrameFactory(insertTupleWriterFactory);
- ITreeIndexFrameFactory deleteLeafFrameFactory = new BTreeNSMLeafFrameFactory(deleteTupleWriterFactory);
- // change
- ITreeIndexFrameFactory interiorFrameFactory = new BTreeNSMInteriorFrameFactory(insertTupleWriterFactory);
- ITreeIndexMetaDataFrameFactory metaFrameFactory = new LIFOMetaDataFrameFactory();
-
- IFreePageManager memFreePageManager = new InMemoryFreePageManager(100, metaFrameFactory);
-
- FreePageManagerFactory freePageManagerFactory = new FreePageManagerFactory(bufferCache, metaFrameFactory);
- BTreeFactory bTreeFactory = new BTreeFactory(bufferCache, freePageManagerFactory, cmp, fieldCount,
- interiorFrameFactory, insertLeafFrameFactory);
-
- LSMTree lsmtree = new LSMTree(memBufferCache, bufferCache, fieldCount, cmp, memFreePageManager,
- interiorFrameFactory, insertLeafFrameFactory, deleteLeafFrameFactory, bTreeFactory,
- (IFileMapManager) fmp);
-
- lsmtree.create(fileId);
- lsmtree.open(fileId);
-
- ByteBuffer frame = ctx.allocateFrame();
- FrameTupleAppender appender = new FrameTupleAppender(ctx.getFrameSize());
-
- ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount);
- DataOutput dos = tb.getDataOutput();
-
- ISerializerDeserializer[] recDescSers = { IntegerSerializerDeserializer.INSTANCE,
- IntegerSerializerDeserializer.INSTANCE };
- RecordDescriptor recDesc = new RecordDescriptor(recDescSers);
-
- IFrameTupleAccessor accessor = new FrameTupleAccessor(ctx.getFrameSize(), recDesc);
- accessor.reset(frame);
-
- FrameTupleReference tuple = new FrameTupleReference();
-
- int resultSize = 100;
- int insertStartPosition = 50;
- int[][] resultArray = new int[resultSize][3];
-
- for (int i = 0; i < resultSize; i++) {
- resultArray[i][0] = i;
- resultArray[i][1] = i + 1;
- resultArray[i][2] = 1;
- }
-
- // delete
- ITreeIndexAccessor lsmTreeAccessor = lsmtree.createAccessor();
- for (int i = 0; i < resultSize; i++) {
-
- int f0 = resultArray[i][0];
- int f1 = resultArray[i][1];
-
- tb.reset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- tb.addFieldEndOffset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- tb.addFieldEndOffset();
-
- appender.reset(frame, true);
- appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
-
- tuple.reset(accessor, 0);
-
- ArrayTupleReference t = new ArrayTupleReference();
- t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
-
- try {
- lsmTreeAccessor.delete(t);
- } catch (TreeIndexException e) {
- System.out.println("test03:" + e);
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- // insert
- for (int i = insertStartPosition; i < resultSize; i++) {
-
- int f0 = resultArray[i][0];
- int f1 = ++resultArray[i][1];
- resultArray[i][2] = 0;
-
- tb.reset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- tb.addFieldEndOffset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- tb.addFieldEndOffset();
-
- appender.reset(frame, true);
- appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
-
- tuple.reset(accessor, 0);
-
- ArrayTupleReference t = new ArrayTupleReference();
- t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
-
- try {
- lsmTreeAccessor.insert(t);
- } catch (TreeIndexException e) {
- System.out.println("test03:" + e);
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- // scan
- ITreeIndexCursor scanCursor = new LSMTreeRangeSearchCursor();
- RangePredicate nullPred = new RangePredicate(true, null, null, true, true, null, null);
- lsmTreeAccessor.search(scanCursor, nullPred);
-
- try {
- int scanTupleIndex = 0;
- int arrayIndex = 0;
- Object o = null;
- while (scanCursor.hasNext()) {
- scanCursor.next();
- ITupleReference frameTuple = scanCursor.getTuple();
- int numPrintFields = Math.min(frameTuple.getFieldCount(), recDescSers.length);
-
- for (int i = 0; i < numPrintFields; i++) {
- ByteArrayInputStream inStream = new ByteArrayInputStream(frameTuple.getFieldData(i),
- frameTuple.getFieldStart(i), frameTuple.getFieldLength(i));
- DataInput dataIn = new DataInputStream(inStream);
- o = recDescSers[i].deserialize(dataIn);
- }
- while (resultArray[arrayIndex][2] != 0) {
- arrayIndex++;
- }
- if (Integer.parseInt(o.toString()) != resultArray[arrayIndex][1]) {
- fail("Input value and Output value doesn't match on the " + scanTupleIndex + " tuple\n");
- }
-
- scanTupleIndex++;
- arrayIndex++;
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- scanCursor.close();
- }
-
- lsmtree.close();
- bufferCache.closeFile(fileId);
- memBufferCache.close();
- }
-
- // TEST DELETION and PageAllocationException
- // create a fix-length lsm tree. First, do 811 deletions,
- // the page will be run out on the 810th deletions, if there is any
- // exception returns, the test case fails.
- @Test
- public void Test4() throws Exception {
- // in disk
- TestStorageManagerComponentHolder.init(PAGE_SIZE, NUM_PAGES, MAX_OPEN_FILES);
- IBufferCache bufferCache = TestStorageManagerComponentHolder.getBufferCache(ctx);
- IFileMapProvider fmp = TestStorageManagerComponentHolder.getFileMapProvider(ctx);
- FileReference file = new FileReference(new File(fileName));
- bufferCache.createFile(file);
- int fileId = fmp.lookupFileId(file);
- bufferCache.openFile(fileId);
-
- // in memory
- InMemoryBufferCacheFactory InMemBufferCacheFactory = new InMemoryBufferCacheFactory(PAGE_SIZE, NUM_PAGES);
- IBufferCache memBufferCache = InMemBufferCacheFactory.createInMemoryBufferCache();
-
- // declare fields
- int fieldCount = 2;
- ITypeTraits[] typeTraits = new ITypeTraits[fieldCount];
- typeTraits[0] = IntegerPointable.TYPE_TRAITS;
- typeTraits[1] = IntegerPointable.TYPE_TRAITS;
-
- // declare keys
- int keyFieldCount = 1;
- IBinaryComparator[] cmps = new IBinaryComparator[keyFieldCount];
- cmps[0] = PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY).createBinaryComparator();
-
- MultiComparator cmp = new MultiComparator(cmps);
-
- LSMTypeAwareTupleWriterFactory insertTupleWriterFactory = new LSMTypeAwareTupleWriterFactory(typeTraits, false);
- LSMTypeAwareTupleWriterFactory deleteTupleWriterFactory = new LSMTypeAwareTupleWriterFactory(typeTraits, true);
-
- ITreeIndexFrameFactory insertLeafFrameFactory = new BTreeNSMLeafFrameFactory(insertTupleWriterFactory);
- ITreeIndexFrameFactory deleteLeafFrameFactory = new BTreeNSMLeafFrameFactory(deleteTupleWriterFactory);
- ITreeIndexFrameFactory interiorFrameFactory = new BTreeNSMInteriorFrameFactory(insertTupleWriterFactory);
- ITreeIndexMetaDataFrameFactory metaFrameFactory = new LIFOMetaDataFrameFactory();
-
- IFreePageManager memFreePageManager = new InMemoryFreePageManager(100, metaFrameFactory);
-
- FreePageManagerFactory freePageManagerFactory = new FreePageManagerFactory(bufferCache, metaFrameFactory);
- BTreeFactory bTreeFactory = new BTreeFactory(bufferCache, freePageManagerFactory, cmp, fieldCount,
- interiorFrameFactory, insertLeafFrameFactory);
-
- // For the Flush Mechanism
- LSMTree lsmtree = new LSMTree(memBufferCache, bufferCache, fieldCount, cmp, memFreePageManager,
- interiorFrameFactory, insertLeafFrameFactory, deleteLeafFrameFactory, bTreeFactory,
- (IFileMapManager) fmp);
-
- lsmtree.create(fileId);
- lsmtree.open(fileId);
-
- ByteBuffer frame = ctx.allocateFrame();
- FrameTupleAppender appender = new FrameTupleAppender(ctx.getFrameSize());
-
- ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount);
- DataOutput dos = tb.getDataOutput();
-
- ISerializerDeserializer[] recDescSers = { IntegerSerializerDeserializer.INSTANCE,
- IntegerSerializerDeserializer.INSTANCE };
- RecordDescriptor recDesc = new RecordDescriptor(recDescSers);
-
- IFrameTupleAccessor accessor = new FrameTupleAccessor(ctx.getFrameSize(), recDesc);
- accessor.reset(frame);
-
- FrameTupleReference tuple = new FrameTupleReference();
-
- int resultSize = 811;
- int[][] resultArray = new int[resultSize][2];
-
- for (int i = 0; i < resultSize; i++) {
- resultArray[i][0] = i;
- resultArray[i][1] = i + 1;
- }
-
- // delete
- ITreeIndexAccessor lsmTreeAccessor = lsmtree.createAccessor();
- for (int i = 0; i < resultSize; i++) {
-
- int f0 = resultArray[i][0];
- int f1 = resultArray[i][1];
-
- tb.reset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- tb.addFieldEndOffset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- tb.addFieldEndOffset();
-
- appender.reset(frame, true);
- appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
-
- tuple.reset(accessor, 0);
-
- ArrayTupleReference t = new ArrayTupleReference();
- t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
-
- try {
- lsmTreeAccessor.delete(t);
- } catch (TreeIndexException e) {
- System.out.println("test04:" + e);
- e.printStackTrace();
- fail("test04: Catch TreeIndexException" + e);
- } catch (Exception e) {
- e.printStackTrace();
- fail("test04: Catch Other Exceptions" + e);
- }
- }
- }
-
- // DELETE -> DELETE
- // create a fix-length lsm tree. First, do 100 deletions,
- // and then do 50 deletions which has the same 50 keys which are part of the
- // first deletions.
- @Test
- public void Test5() throws Exception {
- // in disk
- TestStorageManagerComponentHolder.init(PAGE_SIZE, NUM_PAGES, MAX_OPEN_FILES);
- IBufferCache bufferCache = TestStorageManagerComponentHolder.getBufferCache(ctx);
- IFileMapProvider fmp = TestStorageManagerComponentHolder.getFileMapProvider(ctx);
- FileReference file = new FileReference(new File(fileName));
- bufferCache.createFile(file);
- int fileId = fmp.lookupFileId(file);
- bufferCache.openFile(fileId);
-
- // in memory
- InMemoryBufferCacheFactory InMemBufferCacheFactory = new InMemoryBufferCacheFactory(PAGE_SIZE, NUM_PAGES);
- IBufferCache memBufferCache = InMemBufferCacheFactory.createInMemoryBufferCache();
-
- // declare fields
- int fieldCount = 2;
- ITypeTraits[] typeTraits = new ITypeTraits[fieldCount];
- typeTraits[0] = IntegerPointable.TYPE_TRAITS;
- typeTraits[1] = IntegerPointable.TYPE_TRAITS;
-
- // declare keys
- int keyFieldCount = 1;
- IBinaryComparator[] cmps = new IBinaryComparator[keyFieldCount];
- cmps[0] = PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY).createBinaryComparator();
-
- MultiComparator cmp = new MultiComparator(cmps);
-
- LSMTypeAwareTupleWriterFactory insertTupleWriterFactory = new LSMTypeAwareTupleWriterFactory(typeTraits, false);
- LSMTypeAwareTupleWriterFactory deleteTupleWriterFactory = new LSMTypeAwareTupleWriterFactory(typeTraits, true);
-
- ITreeIndexFrameFactory insertLeafFrameFactory = new BTreeNSMLeafFrameFactory(insertTupleWriterFactory);
- ITreeIndexFrameFactory deleteLeafFrameFactory = new BTreeNSMLeafFrameFactory(deleteTupleWriterFactory);
- ITreeIndexFrameFactory interiorFrameFactory = new BTreeNSMInteriorFrameFactory(insertTupleWriterFactory);
- ITreeIndexMetaDataFrameFactory metaFrameFactory = new LIFOMetaDataFrameFactory();
-
- IFreePageManager memFreePageManager = new InMemoryFreePageManager(100, metaFrameFactory);
-
- FreePageManagerFactory freePageManagerFactory = new FreePageManagerFactory(bufferCache, metaFrameFactory);
- BTreeFactory bTreeFactory = new BTreeFactory(bufferCache, freePageManagerFactory, cmp, fieldCount,
- interiorFrameFactory, insertLeafFrameFactory);
-
- LSMTree lsmtree = new LSMTree(memBufferCache, bufferCache, fieldCount, cmp, memFreePageManager,
- interiorFrameFactory, insertLeafFrameFactory, deleteLeafFrameFactory, bTreeFactory,
- (IFileMapManager) fmp);
-
- lsmtree.create(fileId);
- lsmtree.open(fileId);
-
- ByteBuffer frame = ctx.allocateFrame();
- FrameTupleAppender appender = new FrameTupleAppender(ctx.getFrameSize());
-
- ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount);
- DataOutput dos = tb.getDataOutput();
-
- ISerializerDeserializer[] recDescSers = { IntegerSerializerDeserializer.INSTANCE,
- IntegerSerializerDeserializer.INSTANCE };
- RecordDescriptor recDesc = new RecordDescriptor(recDescSers);
-
- IFrameTupleAccessor accessor = new FrameTupleAccessor(ctx.getFrameSize(), recDesc);
- accessor.reset(frame);
-
- FrameTupleReference tuple = new FrameTupleReference();
-
- int resultSize = 100;
- int insertStartPosition = 50;
- int[][] resultArray = new int[resultSize][3];
-
- for (int i = 0; i < resultSize; i++) {
- resultArray[i][0] = i;
- resultArray[i][1] = i + 1;
- resultArray[i][2] = 1;
- }
-
- // First deletion part
- ITreeIndexAccessor lsmTreeAccessor = lsmtree.createAccessor();
- for (int i = 0; i < resultSize; i++) {
-
- int f0 = resultArray[i][0];
- int f1 = resultArray[i][1];
-
- tb.reset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- tb.addFieldEndOffset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- tb.addFieldEndOffset();
-
- appender.reset(frame, true);
- appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
-
- tuple.reset(accessor, 0);
-
- ArrayTupleReference t = new ArrayTupleReference();
- t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
-
- try {
- lsmTreeAccessor.delete(t);
- } catch (TreeIndexException e) {
- System.out.println("test05:" + e);
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- // Second delete part
- for (int i = insertStartPosition; i < resultSize; i++) {
-
- int f0 = resultArray[i][0];
- int f1 = ++resultArray[i][1];
- resultArray[i][2] = 1;
-
- tb.reset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- tb.addFieldEndOffset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- tb.addFieldEndOffset();
-
- appender.reset(frame, true);
- appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
-
- tuple.reset(accessor, 0);
-
- ArrayTupleReference t = new ArrayTupleReference();
- t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
-
- try {
- lsmTreeAccessor.insert(t);
- } catch (TreeIndexException e) {
- System.out.println("test05:" + e);
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- // scan
- ITreeIndexCursor scanCursor = new LSMTreeRangeSearchCursor();
- RangePredicate nullPred = new RangePredicate(true, null, null, true, true, null, null);
- lsmTreeAccessor.search(scanCursor, nullPred);
-
- try {
- int scanTupleIndex = 0;
- int arrayIndex = 0;
- Object o = null;
- while (scanCursor.hasNext()) {
- scanCursor.next();
- ITupleReference frameTuple = scanCursor.getTuple();
- int numPrintFields = Math.min(frameTuple.getFieldCount(), recDescSers.length);
-
- for (int i = 0; i < numPrintFields; i++) {
- ByteArrayInputStream inStream = new ByteArrayInputStream(frameTuple.getFieldData(i),
- frameTuple.getFieldStart(i), frameTuple.getFieldLength(i));
- DataInput dataIn = new DataInputStream(inStream);
- o = recDescSers[i].deserialize(dataIn);
-
- }
- while (resultArray[arrayIndex][2] != 0) {
- arrayIndex++;
- }
- if (Integer.parseInt(o.toString()) != resultArray[arrayIndex][1]) {
- fail("Input value and Output value doesn't match on the " + scanTupleIndex + " tuple\n");
- }
-
- scanTupleIndex++;
- arrayIndex++;
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- scanCursor.close();
- }
-
- lsmtree.close();
- bufferCache.closeFile(fileId);
- memBufferCache.close();
- }
-
- // INSERT -> DELETE -> INSERT
- // create a fix-length lsm tree. Do the insertion, deletion and insertion.
- // the final result will be
- // | 0~9 | 10~19 | 20~39 | 40~59 | 60~79 | 80~99 |
- // | f1=10 | f1=9 | f1=8 | f1=7 | f1=6 | f1=5 |
- // | Insert| Insert| Delete| Delete| Insert| Insert|
- @Test
- public void Test6() throws Exception {
-
- // in disk
- TestStorageManagerComponentHolder.init(PAGE_SIZE, NUM_PAGES, MAX_OPEN_FILES);
- IBufferCache bufferCache = TestStorageManagerComponentHolder.getBufferCache(ctx);
- IFileMapProvider fmp = TestStorageManagerComponentHolder.getFileMapProvider(ctx);
- FileReference file = new FileReference(new File(fileName));
- bufferCache.createFile(file);
- int fileId = fmp.lookupFileId(file);
- bufferCache.openFile(fileId);
-
- // in mem
- InMemoryBufferCacheFactory InMemBufferCacheFactory = new InMemoryBufferCacheFactory(PAGE_SIZE, NUM_PAGES);
- IBufferCache memBufferCache = InMemBufferCacheFactory.createInMemoryBufferCache();
-
- // declare fields
- int fieldCount = 2;
- ITypeTraits[] typeTraits = new ITypeTraits[fieldCount];
- typeTraits[0] = IntegerPointable.TYPE_TRAITS;
- typeTraits[1] = IntegerPointable.TYPE_TRAITS;
-
- // declare keys
- int keyFieldCount = 1;
- IBinaryComparator[] cmps = new IBinaryComparator[keyFieldCount];
- cmps[0] = PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY).createBinaryComparator();
-
- MultiComparator cmp = new MultiComparator(cmps);
-
- LSMTypeAwareTupleWriterFactory insertTupleWriterFactory = new LSMTypeAwareTupleWriterFactory(typeTraits, false);
- LSMTypeAwareTupleWriterFactory deleteTupleWriterFactory = new LSMTypeAwareTupleWriterFactory(typeTraits, true);
-
- ITreeIndexFrameFactory insertLeafFrameFactory = new BTreeNSMLeafFrameFactory(insertTupleWriterFactory);
- ITreeIndexFrameFactory deleteLeafFrameFactory = new BTreeNSMLeafFrameFactory(deleteTupleWriterFactory);
- ITreeIndexFrameFactory interiorFrameFactory = new BTreeNSMInteriorFrameFactory(insertTupleWriterFactory);
- ITreeIndexMetaDataFrameFactory metaFrameFactory = new LIFOMetaDataFrameFactory();
-
- IFreePageManager memFreePageManager = new InMemoryFreePageManager(100, metaFrameFactory);
-
- FreePageManagerFactory freePageManagerFactory = new FreePageManagerFactory(bufferCache, metaFrameFactory);
- BTreeFactory bTreeFactory = new BTreeFactory(bufferCache, freePageManagerFactory, cmp, fieldCount,
- interiorFrameFactory, insertLeafFrameFactory);
-
- LSMTree lsmtree = new LSMTree(memBufferCache, bufferCache, fieldCount, cmp, memFreePageManager,
- interiorFrameFactory, insertLeafFrameFactory, deleteLeafFrameFactory, bTreeFactory,
- (IFileMapManager) fmp);
-
- lsmtree.create(fileId);
- lsmtree.open(fileId);
-
- ByteBuffer frame = ctx.allocateFrame();
- FrameTupleAppender appender = new FrameTupleAppender(ctx.getFrameSize());
-
- ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount);
- DataOutput dos = tb.getDataOutput();
-
- ISerializerDeserializer[] recDescSers = { IntegerSerializerDeserializer.INSTANCE,
- IntegerSerializerDeserializer.INSTANCE };
- RecordDescriptor recDesc = new RecordDescriptor(recDescSers);
-
- IFrameTupleAccessor accessor = new FrameTupleAccessor(ctx.getFrameSize(), recDesc);
- accessor.reset(frame);
-
- FrameTupleReference tuple = new FrameTupleReference();
-
- ITreeIndexAccessor lsmTreeAccessor = lsmtree.createAccessor();
-
- int resultSize = 180;
- int[][] resultArray = new int[resultSize][3];
-
- // insert
- for (int i = 0; i < 180; i++) {
- int f0 = i % 100;
- int f1;
- if (i >= 100) {
- f1 = 6;
- } else {
- f1 = 5;
- }
-
- resultArray[f0][0] = f0;
- resultArray[f0][1] = f1;
- resultArray[f0][2] = 0;
-
- tb.reset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- tb.addFieldEndOffset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- tb.addFieldEndOffset();
-
- appender.reset(frame, true);
- appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
-
- tuple.reset(accessor, 0);
-
- ArrayTupleReference t = new ArrayTupleReference();
- t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
-
- try {
- lsmTreeAccessor.insert(t);
- } catch (TreeIndexException e) {
- System.out.println("test06:" + e);
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- // delete
- for (int i = 0; i < 100; i++) {
- int f0 = i % 60;
- int f1;
- if (i >= 60) {
- f1 = 8;
- } else {
- f1 = 7;
- }
-
- resultArray[f0][0] = f0;
- resultArray[f0][1] = f1;
- resultArray[f0][2] = 1;
-
- tb.reset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- tb.addFieldEndOffset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- tb.addFieldEndOffset();
-
- appender.reset(frame, true);
- appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
-
- tuple.reset(accessor, 0);
-
- ArrayTupleReference t = new ArrayTupleReference();
- t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
-
- try {
- lsmTreeAccessor.delete(t);
- } catch (TreeIndexException e) {
- System.out.println("test06:" + e);
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- }
-
- // reinsert
- for (int i = 0; i < 30; i++) {
- int f0 = i % 20;
- int f1;
- if (i >= 20) {
- f1 = 10;
- } else {
- f1 = 9;
- }
-
- resultArray[f0][0] = f0;
- resultArray[f0][1] = f1;
- resultArray[f0][2] = 0;
-
- tb.reset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- tb.addFieldEndOffset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- tb.addFieldEndOffset();
-
- appender.reset(frame, true);
- appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
-
- tuple.reset(accessor, 0);
-
- ArrayTupleReference t = new ArrayTupleReference();
- t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
-
- try {
- lsmTreeAccessor.insert(t);
- } catch (TreeIndexException e) {
- System.out.println("test06:" + e);
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- // scan
- ITreeIndexCursor scanCursor = new LSMTreeRangeSearchCursor();
- RangePredicate nullPred = new RangePredicate(true, null, null, true, true, null, null);
- lsmTreeAccessor.search(scanCursor, nullPred);
-
- try {
- int scanTupleIndex = 0;
- int arrayIndex = 0;
- Object o = null;
- while (scanCursor.hasNext()) {
- scanCursor.next();
- ITupleReference frameTuple = scanCursor.getTuple();
- int numPrintFields = Math.min(frameTuple.getFieldCount(), recDescSers.length);
-
- for (int i = 0; i < numPrintFields; i++) {
- ByteArrayInputStream inStream = new ByteArrayInputStream(frameTuple.getFieldData(i),
- frameTuple.getFieldStart(i), frameTuple.getFieldLength(i));
- DataInput dataIn = new DataInputStream(inStream);
- o = recDescSers[i].deserialize(dataIn);
- }
- while (resultArray[arrayIndex][2] != 0) {
- arrayIndex++;
- }
- if (Integer.parseInt(o.toString()) != resultArray[arrayIndex][1]) {
- fail("Input value and Output value doesn't match on the " + scanTupleIndex + " tuple\n");
- }
-
- scanTupleIndex++;
- arrayIndex++;
- }
-
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- scanCursor.close();
- }
-
- lsmtree.close();
- bufferCache.closeFile(fileId);
- memBufferCache.close();
- }
-}
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTreeFlushTest.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTreeFlushTest.java
deleted file mode 100644
index c0f67b1..0000000
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTreeFlushTest.java
+++ /dev/null
@@ -1,748 +0,0 @@
-package edu.uci.ics.hyracks.storage.am.lsmtree.impls;
-
-import java.io.DataOutput;
-import java.io.File;
-import java.nio.ByteBuffer;
-
-import org.junit.Test;
-
-import edu.uci.ics.hyracks.api.comm.IFrameTupleAccessor;
-import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.ISerializerDeserializer;
-import edu.uci.ics.hyracks.api.dataflow.value.ITypeTraits;
-import edu.uci.ics.hyracks.api.dataflow.value.RecordDescriptor;
-import edu.uci.ics.hyracks.api.io.FileReference;
-import edu.uci.ics.hyracks.data.std.accessors.PointableBinaryComparatorFactory;
-import edu.uci.ics.hyracks.data.std.primitive.IntegerPointable;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.ArrayTupleReference;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.FrameTupleAppender;
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.FrameTupleReference;
-import edu.uci.ics.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
-import edu.uci.ics.hyracks.storage.am.btree.api.IBTreeLeafFrame;
-import edu.uci.ics.hyracks.storage.am.btree.frames.BTreeNSMInteriorFrameFactory;
-import edu.uci.ics.hyracks.storage.am.btree.frames.BTreeNSMLeafFrameFactory;
-import edu.uci.ics.hyracks.storage.am.common.api.IFreePageManager;
-import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexAccessor;
-import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
-import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexMetaDataFrameFactory;
-import edu.uci.ics.hyracks.storage.am.common.api.TreeIndexException;
-import edu.uci.ics.hyracks.storage.am.common.frames.LIFOMetaDataFrameFactory;
-import edu.uci.ics.hyracks.storage.am.common.freepage.LinkedListFreePageManager;
-import edu.uci.ics.hyracks.storage.am.common.ophelpers.MultiComparator;
-import edu.uci.ics.hyracks.storage.common.buffercache.IBufferCache;
-import edu.uci.ics.hyracks.storage.common.file.IFileMapManager;
-import edu.uci.ics.hyracks.storage.common.file.IFileMapProvider;
-import edu.uci.ics.hyracks.test.support.TestStorageManagerComponentHolder;
-import edu.uci.ics.hyracks.test.support.TestUtils;
-
-public class LSMTreeFlushTest extends AbstractLSMTreeTest {
- private static final int PAGE_SIZE = 256;
- private static final int NUM_PAGES = 100;
- private static final int MAX_OPEN_FILES = 10000;
- private static final int HYRACKS_FRAME_SIZE = 128;
- private IHyracksTaskContext ctx = TestUtils.create(HYRACKS_FRAME_SIZE);
-
- // BASIC TEST
- // @Test
- // public void Test1() throws Exception {
- // System.out.printf("TEST1 START\n");
- // //in disk
- // TestStorageManagerComponentHolder.init(PAGE_SIZE, NUM_PAGES,
- // MAX_OPEN_FILES);
- // IBufferCache bufferCache =
- // TestStorageManagerComponentHolder.getBufferCache(ctx);
- // IFileMapProvider fmp =
- // TestStorageManagerComponentHolder.getFileMapProvider(ctx);
- // FileReference file = new FileReference(new File(fileName));
- // bufferCache.createFile(file);
- // int fileId = fmp.lookupFileId(file);
- // bufferCache.openFile(fileId);
- //
- // //in memory
- // InMemoryBufferCacheFactory InMemBufferCacheFactory = new
- // InMemoryBufferCacheFactory(PAGE_SIZE, NUM_PAGES);
- // IBufferCache memBufferCache =
- // InMemBufferCacheFactory.createInMemoryBufferCache();
- //
- // // declare fields
- // int fieldCount = 2;
- // ITypeTrait[] typeTraits = new ITypeTrait[fieldCount];
- // typeTraits[0] = new TypeTrait(4);
- // typeTraits[1] = new TypeTrait(4);
- //
- // // declare keys
- // int keyFieldCount = 1;
- // IBinaryComparatorFactory[] cmpFactories = new
- // IBinaryComparatorFactory[keyFieldCount];
- // cmpFactories[0] = IntegerBinaryComparatorFactory.INSTANCE;
- //
- // MultiComparator cmp = BTreeUtils.createMultiComparator(cmpFactories);
- //
- // LSMTypeAwareTupleWriterFactory insertTupleWriterFactory = new
- // LSMTypeAwareTupleWriterFactory(typeTraits, false);
- // LSMTypeAwareTupleWriterFactory deleteTupleWriterFactory = new
- // LSMTypeAwareTupleWriterFactory(typeTraits, true);
- //
- // ITreeIndexFrameFactory insertLeafFrameFactory = new
- // BTreeNSMLeafFrameFactory(insertTupleWriterFactory);
- // ITreeIndexFrameFactory deleteLeafFrameFactory = new
- // BTreeNSMLeafFrameFactory(deleteTupleWriterFactory);
- // ITreeIndexFrameFactory interiorFrameFactory = new
- // BTreeNSMInteriorFrameFactory(insertTupleWriterFactory);
- // ITreeIndexMetaDataFrameFactory metaFrameFactory = new
- // LIFOMetaDataFrameFactory();
- //
- // IBTreeLeafFrame insertLeafFrame = (IBTreeLeafFrame)
- // insertLeafFrameFactory.createFrame();
- //
- // IFreePageManager freePageManager = new
- // LinkedListFreePageManager(bufferCache, fileId, 0, metaFrameFactory);
- // IFreePageManager memFreePageManager = new InMemoryFreePageManager(100,
- // metaFrameFactory);
- //
- // // For the Flush Mechanism
- // LSMEntireTupleWriterFactory flushTupleWriterFactory = new
- // LSMEntireTupleWriterFactory(typeTraits);
- // ITreeIndexFrameFactory flushLeafFrameFactory = new
- // BTreeNSMLeafFrameFactory(flushTupleWriterFactory);
- // FreePageManagerFactory freePageManagerFactory = new
- // FreePageManagerFactory(bufferCache, metaFrameFactory);
- // BTreeFactory bTreeFactory = new BTreeFactory(bufferCache,
- // freePageManagerFactory, cmp, fieldCount, interiorFrameFactory,
- // flushLeafFrameFactory);
- //
- //
- //
- // // LSMTree lsmtree = new LSMTree(3, 100, 2, memBufferCache, bufferCache,
- // fieldCount, cmp, memFreePageManager,
- // // freePageManager, interiorFrameFactory, insertLeafFrameFactory,
- // deleteLeafFrameFactory, bTreeFactory, flushLeafFrameFactory,
- // (IFileMapManager)fmp);
- // //
- // LSMTree lsmtree = LSMTreeUtils.createLSMTree(memBufferCache, bufferCache,
- // fileId, typeTraits, cmp.getComparators(), BTreeLeafFrameType.REGULAR_NSM,
- // (IFileMapManager)fmp);
- // lsmtree.create(fileId);
- // lsmtree.open(fileId);
- //
- // ByteBuffer frame = ctx.allocateFrame();
- // FrameTupleAppender appender = new FrameTupleAppender(ctx.getFrameSize());
- //
- // ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount);
- // DataOutput dos = tb.getDataOutput();
- //
- // ISerializerDeserializer[] recDescSers = {
- // IntegerSerializerDeserializer.INSTANCE,
- // IntegerSerializerDeserializer.INSTANCE };
- // RecordDescriptor recDesc = new RecordDescriptor(recDescSers);
- //
- // IFrameTupleAccessor accessor = new FrameTupleAccessor(ctx.getFrameSize(),
- // recDesc);
- // accessor.reset(frame);
- //
- // FrameTupleReference tuple = new FrameTupleReference();
- //
- // int resultSize = 100;
- // int[][] resultArray = new int[resultSize][2];
- //
- //
- // //insert 100 tuples
- // for (int i = 0; i < resultSize; i++){
- // resultArray[i][0] = i;
- // resultArray[i][1] = 1;
- // }
- //
- //
- // LSMTreeOpContext insertOpCtx = lsmtree.createOpContext(IndexOp.INSERT);
- // for (int i = 0; i < resultSize; i++) {
- //
- // int f0 = resultArray[i][0];
- // int f1 = resultArray[i][1];
- //
- // tb.reset();
- // IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- // tb.addFieldEndOffset();
- // IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- // tb.addFieldEndOffset();
- //
- // appender.reset(frame, true);
- // appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0,
- // tb.getSize());
- //
- // tuple.reset(accessor, 0);
- //
- // ArrayTupleReference t = new ArrayTupleReference();
- // t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
- //
- // try {
- // lsmtree.insert(t, insertOpCtx);
- // } catch (TreeIndexException e) {
- // System.out.println("test01:" + e);
- // e.printStackTrace();
- // } catch (Exception e) {
- // e.printStackTrace();
- // }
- // }
- // // Delete the first 50 keys in the in-memory tree
- // insertOpCtx = lsmtree.createOpContext(IndexOp.DELETE);
- // for (int i = 0; i < 50; i++){
- // resultArray[i][0] = i;
- // resultArray[i][1] = 1;
- // }
- //
- // for (int i = 0; i < 50; i++) {
- //
- // int f0 = resultArray[i][0];
- // int f1 = resultArray[i][1];
- //
- // tb.reset();
- // IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- // tb.addFieldEndOffset();
- // IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- // tb.addFieldEndOffset();
- //
- // appender.reset(frame, true);
- // appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0,
- // tb.getSize());
- //
- // tuple.reset(accessor, 0);
- //
- // ArrayTupleReference t = new ArrayTupleReference();
- // t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
- //
- // try {
- // lsmtree.delete(t, insertOpCtx);
- // } catch (TreeIndexException e) {
- // System.out.println("test01:" + e);
- // e.printStackTrace();
- // } catch (Exception e) {
- // e.printStackTrace();
- // }
- // }
- //
- //
- // //Flush the tree into the first in Disk tree
- // lsmtree.flushInMemoryBtree();
- //
- // //insert 50 delete nodes
- // insertOpCtx = lsmtree.createOpContext(IndexOp.DELETE);
- // for (int i = 0; i < 50; i++){
- // resultArray[i][0] = i;
- // resultArray[i][1] = 2;
- // }
- //
- // for (int i = 0; i < 50; i++) {
- //
- // int f0 = resultArray[i][0];
- // int f1 = resultArray[i][1];
- //
- // tb.reset();
- // IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- // tb.addFieldEndOffset();
- // IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- // tb.addFieldEndOffset();
- //
- // appender.reset(frame, true);
- // appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0,
- // tb.getSize());
- //
- // tuple.reset(accessor, 0);
- //
- // ArrayTupleReference t = new ArrayTupleReference();
- // t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
- //
- // try {
- // lsmtree.delete(t, insertOpCtx);
- // } catch (TreeIndexException e) {
- // System.out.println("test01:" + e);
- // e.printStackTrace();
- // } catch (Exception e) {
- // e.printStackTrace();
- // }
- // }
- //
- // // insert 25 nodes
- // insertOpCtx = lsmtree.createOpContext(IndexOp.INSERT);
- // for (int i = 0; i < resultSize; i++){
- // resultArray[i][0] = i;
- // resultArray[i][1] = 2;
- // }
- // for (int i = 0; i < 25; i++) {
- //
- // int f0 = resultArray[i][0];
- // int f1 = resultArray[i][1];
- //
- // tb.reset();
- // IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- // tb.addFieldEndOffset();
- // IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- // tb.addFieldEndOffset();
- //
- // appender.reset(frame, true);
- // appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0,
- // tb.getSize());
- //
- // tuple.reset(accessor, 0);
- //
- // ArrayTupleReference t = new ArrayTupleReference();
- // t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
- //
- // try {
- // lsmtree.insert(t, insertOpCtx);
- // } catch (TreeIndexException e) {
- // System.out.println("test01:" + e);
- // e.printStackTrace();
- // } catch (Exception e) {
- // e.printStackTrace();
- // }
- // }
- //
- // //Flush the tree into the fist in Disk tree, which have fieldId as "1"
- // lsmtree.flushInMemoryBtree();
- //
- // //Print out the first in Disk Btree
- // System.out.println("LSMTreeFlushTest: start print the first tree");
- // lsmtree.scanDiskTree(0);
- // //Print out the second in Disk Btree
- // System.out.println("LSMTreeFlushTest: start print the second tree");
- // lsmtree.scanDiskTree(1);
- //
- //
- // lsmtree.close();
- // bufferCache.closeFile(fileId);
- // memBufferCache.close();
- //
- // System.out.printf("End of TEST1()\n");
- //
- // }
- // TEST auto Flush
- @Test
- public void Test2() throws Exception {
- System.out.printf("TEST2 START\n");
- // in disk
- TestStorageManagerComponentHolder.init(PAGE_SIZE, NUM_PAGES, MAX_OPEN_FILES);
- IBufferCache bufferCache = TestStorageManagerComponentHolder.getBufferCache(ctx);
- IFileMapProvider fmp = TestStorageManagerComponentHolder.getFileMapProvider(ctx);
- FileReference file = new FileReference(new File(fileName));
- bufferCache.createFile(file);
- int fileId = fmp.lookupFileId(file);
- bufferCache.openFile(fileId);
-
- // in memory
- InMemoryBufferCacheFactory InMemBufferCacheFactory = new InMemoryBufferCacheFactory(PAGE_SIZE, NUM_PAGES);
- IBufferCache memBufferCache = InMemBufferCacheFactory.createInMemoryBufferCache();
-
- // declare fields
- int fieldCount = 2;
- ITypeTraits[] typeTraits = new ITypeTraits[fieldCount];
- typeTraits[0] = IntegerPointable.TYPE_TRAITS;
- typeTraits[1] = IntegerPointable.TYPE_TRAITS;
-
- // declare keys
- int keyFieldCount = 1;
- IBinaryComparator[] cmps = new IBinaryComparator[keyFieldCount];
- cmps[0] = PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY).createBinaryComparator();
-
- MultiComparator cmp = new MultiComparator(cmps);
-
- LSMTypeAwareTupleWriterFactory insertTupleWriterFactory = new LSMTypeAwareTupleWriterFactory(typeTraits, false);
- LSMTypeAwareTupleWriterFactory deleteTupleWriterFactory = new LSMTypeAwareTupleWriterFactory(typeTraits, true);
-
- ITreeIndexFrameFactory insertLeafFrameFactory = new BTreeNSMLeafFrameFactory(insertTupleWriterFactory);
- ITreeIndexFrameFactory deleteLeafFrameFactory = new BTreeNSMLeafFrameFactory(deleteTupleWriterFactory);
- ITreeIndexFrameFactory interiorFrameFactory = new BTreeNSMInteriorFrameFactory(insertTupleWriterFactory);
- ITreeIndexMetaDataFrameFactory metaFrameFactory = new LIFOMetaDataFrameFactory();
-
- IBTreeLeafFrame insertLeafFrame = (IBTreeLeafFrame) insertLeafFrameFactory.createFrame();
-
- IFreePageManager freePageManager = new LinkedListFreePageManager(bufferCache, fileId, 0, metaFrameFactory);
- IFreePageManager memFreePageManager = new InMemoryFreePageManager(NUM_PAGES, metaFrameFactory);
-
- // For the Flush Mechanism
- LSMEntireTupleWriterFactory flushTupleWriterFactory = new LSMEntireTupleWriterFactory(typeTraits);
- ITreeIndexFrameFactory flushLeafFrameFactory = new BTreeNSMLeafFrameFactory(flushTupleWriterFactory);
- FreePageManagerFactory freePageManagerFactory = new FreePageManagerFactory(bufferCache, metaFrameFactory);
- BTreeFactory bTreeFactory = new BTreeFactory(bufferCache, freePageManagerFactory, cmp, fieldCount,
- interiorFrameFactory, flushLeafFrameFactory);
-
- LSMTree lsmtree = new LSMTree(memBufferCache, bufferCache, fieldCount, cmp, memFreePageManager,
- interiorFrameFactory, insertLeafFrameFactory, deleteLeafFrameFactory, bTreeFactory,
- (IFileMapManager) fmp);
-
- lsmtree.create(fileId);
- lsmtree.open(fileId);
-
- ByteBuffer frame = ctx.allocateFrame();
- FrameTupleAppender appender = new FrameTupleAppender(ctx.getFrameSize());
-
- ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount);
- DataOutput dos = tb.getDataOutput();
-
- ISerializerDeserializer[] recDescSers = { IntegerSerializerDeserializer.INSTANCE,
- IntegerSerializerDeserializer.INSTANCE };
- RecordDescriptor recDesc = new RecordDescriptor(recDescSers);
-
- IFrameTupleAccessor accessor = new FrameTupleAccessor(ctx.getFrameSize(), recDesc);
- accessor.reset(frame);
-
- FrameTupleReference tuple = new FrameTupleReference();
-
- int resultSize = 820;
- int[][] resultArray = new int[resultSize][2];
-
- // insert 820 tuples
- for (int i = 0; i < resultSize; i++) {
- resultArray[i][0] = i;
- resultArray[i][1] = i;
- }
-
- ITreeIndexAccessor lsmTreeAccessor = lsmtree.createAccessor();
- for (int i = 0; i < resultSize; i++) {
-
- int f0 = resultArray[i][0];
- int f1 = resultArray[i][1];
-
- tb.reset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- tb.addFieldEndOffset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- tb.addFieldEndOffset();
-
- appender.reset(frame, true);
- appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
-
- tuple.reset(accessor, 0);
-
- ArrayTupleReference t = new ArrayTupleReference();
- t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
-
- try {
- lsmTreeAccessor.insert(t);
- } catch (TreeIndexException e) {
- System.out.println("test02:" + e);
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- // Print out the third in Disk Btree
- System.out.println("LSMTreeFlushTest: start print the first tree");
- // lsmtree.scanDiskTree(2);
- // Print out the second in Disk Btree
- System.out.println("LSMTreeFlushTest: start print the first tree");
- // lsmtree.scanDiskTree(1);
- // Print out the first in Disk Btree
- System.out.println("LSMTreeFlushTest: start print the first tree");
- lsmtree.scanDiskTree(0);
-
- lsmtree.close();
- bufferCache.closeFile(fileId);
- memBufferCache.close();
-
- System.out.printf("End of TEST2()\n");
-
- }
-
- // @Test
- // public void Test3() throws Exception {
- // System.out.printf("TEST3 START\n");
- // //in disk
- // TestStorageManagerComponentHolder.init(PAGE_SIZE, NUM_PAGES,
- // MAX_OPEN_FILES);
- // IBufferCache bufferCache =
- // TestStorageManagerComponentHolder.getBufferCache(ctx);
- // IFileMapProvider fmp =
- // TestStorageManagerComponentHolder.getFileMapProvider(ctx);
- // FileReference file = new FileReference(new File(fileName));
- // bufferCache.createFile(file);
- // int fileId = fmp.lookupFileId(file);
- // bufferCache.openFile(fileId);
- //
- // //in memory
- // InMemoryBufferCacheFactory InMemBufferCacheFactory = new
- // InMemoryBufferCacheFactory(PAGE_SIZE, NUM_PAGES);
- // IBufferCache memBufferCache =
- // InMemBufferCacheFactory.createInMemoryBufferCache();
- //
- // // declare fields
- // int fieldCount = 2;
- // ITypeTrait[] typeTraits = new ITypeTrait[fieldCount];
- // typeTraits[0] = new TypeTrait(4);
- // typeTraits[1] = new TypeTrait(4);
- //
- // // declare keys
- // int keyFieldCount = 1;
- // IBinaryComparatorFactory[] cmpFactories = new
- // IBinaryComparatorFactory[keyFieldCount];
- // cmpFactories[0] = IntegerBinaryComparatorFactory.INSTANCE;
- //
- // MultiComparator cmp = BTreeUtils.createMultiComparator(cmpFactories);
- //
- // LSMTypeAwareTupleWriterFactory insertTupleWriterFactory = new
- // LSMTypeAwareTupleWriterFactory(typeTraits, false);
- // LSMTypeAwareTupleWriterFactory deleteTupleWriterFactory = new
- // LSMTypeAwareTupleWriterFactory(typeTraits, true);
- //
- // ITreeIndexFrameFactory insertLeafFrameFactory = new
- // BTreeNSMLeafFrameFactory(insertTupleWriterFactory);
- // ITreeIndexFrameFactory deleteLeafFrameFactory = new
- // BTreeNSMLeafFrameFactory(deleteTupleWriterFactory);
- // ITreeIndexFrameFactory interiorFrameFactory = new
- // BTreeNSMInteriorFrameFactory(insertTupleWriterFactory);
- // ITreeIndexMetaDataFrameFactory metaFrameFactory = new
- // LIFOMetaDataFrameFactory();
- //
- // IBTreeLeafFrame insertLeafFrame = (IBTreeLeafFrame)
- // insertLeafFrameFactory.createFrame();
- //
- // IFreePageManager freePageManager = new
- // LinkedListFreePageManager(bufferCache, fileId, 0, metaFrameFactory);
- // IFreePageManager memFreePageManager = new InMemoryFreePageManager(30,
- // metaFrameFactory);
- //
- // // For the Flush Mechanism
- // LSMEntireTupleWriterFactory flushTupleWriterFactory = new
- // LSMEntireTupleWriterFactory(typeTraits);
- // ITreeIndexFrameFactory flushLeafFrameFactory = new
- // BTreeNSMLeafFrameFactory(flushTupleWriterFactory);
- // FreePageManagerFactory freePageManagerFactory = new
- // FreePageManagerFactory(bufferCache, metaFrameFactory);
- // BTreeFactory bTreeFactory = new BTreeFactory(bufferCache,
- // freePageManagerFactory, cmp, fieldCount, interiorFrameFactory,
- // flushLeafFrameFactory);
- //
- //
- //
- // LSMTree lsmtree = new LSMTree(memBufferCache, bufferCache, fieldCount,
- // cmp, memFreePageManager, interiorFrameFactory, insertLeafFrameFactory,
- // deleteLeafFrameFactory, bTreeFactory, (IFileMapManager)fmp);
- //
- // lsmtree.create(fileId);
- // lsmtree.open(fileId);
- //
- // ByteBuffer frame = ctx.allocateFrame();
- // FrameTupleAppender appender = new FrameTupleAppender(ctx.getFrameSize());
- //
- // ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount);
- // DataOutput dos = tb.getDataOutput();
- //
- // ISerializerDeserializer[] recDescSers = {
- // IntegerSerializerDeserializer.INSTANCE,
- // IntegerSerializerDeserializer.INSTANCE };
- // RecordDescriptor recDesc = new RecordDescriptor(recDescSers);
- //
- // IFrameTupleAccessor accessor = new FrameTupleAccessor(ctx.getFrameSize(),
- // recDesc);
- // accessor.reset(frame);
- //
- // FrameTupleReference tuple = new FrameTupleReference();
- //
- // int resultSize = 500;
- // int[][] resultArray = new int[resultSize][2];
- //
- //
- // //insert 250 tuples
- // System.out.printf("Start for 1st Insert\n");
- // LSMTreeOpContext insertOpCtx = lsmtree.createOpContext(IndexOp.INSERT);
- // for (int i = 0; i < 252; i++){
- // resultArray[i][0] = i;
- // resultArray[i][1] = i;
- // }
- // for (int i = 0; i < 252; i++) {
- //
- // int f0 = resultArray[i][0];
- // int f1 = resultArray[i][1];
- //
- // tb.reset();
- // IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- // tb.addFieldEndOffset();
- // IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- // tb.addFieldEndOffset();
- //
- // appender.reset(frame, true);
- // appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0,
- // tb.getSize());
- //
- // tuple.reset(accessor, 0);
- //
- // ArrayTupleReference t = new ArrayTupleReference();
- // t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
- //
- // try {
- // lsmtree.insert(t, insertOpCtx);
- // } catch (TreeIndexException e) {
- // System.out.println("test03:" + e);
- // e.printStackTrace();
- // } catch (Exception e) {
- // e.printStackTrace();
- // }
- // }
- // System.out.printf("Start for 2nd Insert\n");
- // //delete 126~251. Deletion of 251 cause the flush
- // insertOpCtx.reset(IndexOp.DELETE);
- // // LSMTreeOpContext insertOpCtx =
- // lsmtree.createOpContext(IndexOp.DELETE);
- // for (int i = 125; i < 253; i++){
- // resultArray[i][0] = i;
- // resultArray[i][1] = i;
- // }
- // for (int i = 126; i < 253; i++) {
- // int f0 = resultArray[i][0];
- // int f1 = resultArray[i][1];
- //
- // tb.reset();
- // IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- // tb.addFieldEndOffset();
- // IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- // tb.addFieldEndOffset();
- //
- // appender.reset(frame, true);
- // appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0,
- // tb.getSize());
- //
- // tuple.reset(accessor, 0);
- //
- // ArrayTupleReference t = new ArrayTupleReference();
- // t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
- //
- // try {
- // lsmtree.delete(t, insertOpCtx);
- // } catch (TreeIndexException e) {
- // System.out.println("test03:" + e);
- // e.printStackTrace();
- // } catch (Exception e) {
- // e.printStackTrace();
- // }
- // }
- // //delete 0~250
- // insertOpCtx = lsmtree.createOpContext(IndexOp.INSERT);
- // for (int i = 130; i > 0; i--){
- // resultArray[i][0] = i;
- // resultArray[i][1] = i;
- // }
- // for (int i = 130; i > 0; i--) {
- //
- // int f0 = resultArray[i][0];
- // int f1 = resultArray[i][1];
- //
- // tb.reset();
- // IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- // tb.addFieldEndOffset();
- // IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- // tb.addFieldEndOffset();
- //
- // appender.reset(frame, true);
- // appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0,
- // tb.getSize());
- //
- // tuple.reset(accessor, 0);
- //
- // ArrayTupleReference t = new ArrayTupleReference();
- // t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
- //
- // try {
- // lsmtree.insert(t, insertOpCtx);
- // } catch (TreeIndexException e) {
- // System.out.println("test03:" + e);
- // e.printStackTrace();
- // } catch (Exception e) {
- // e.printStackTrace();
- // }
- // }
- //
- // //
- // //
- // //
- // // //Print out the second in Disk Btree
- // // System.out.println("LSMTreeFlushTest: start print the second tree");
- // // lsmtree.scanDiskTree(1);
- // // //Print out the first in Disk Btree
- // // System.out.println("LSMTreeFlushTest: start print the first tree");
- // // lsmtree.scanDiskTree(0);
- // //
- // // //Print out the In-memory Tree
- // //
- // System.out.println("LSMTreeFlushTest: start print the In-memory tree");
- // // lsmtree.scanInMemoryTree();
- // // //TODO: scan whole tree
- //
- // LOGGER.info("RANGE SEARCH:");
- //
- // BTreeOpContext searchOpCtx = lsmtree.createOpContext(IndexOp.SEARCH);
- // ITreeIndexCursor rangeCursor = new LSMTreeRangeSearchCursor();
- //
- // // build low and high keys
- // ArrayTupleBuilder ktb = new ArrayTupleBuilder(cmp.getKeyFieldCount());
- // DataOutput kdos = ktb.getDataOutput();
- //
- // ISerializerDeserializer[] keyDescSers = {
- // IntegerSerializerDeserializer.INSTANCE };
- // RecordDescriptor keyDesc = new RecordDescriptor(keyDescSers);
- // IFrameTupleAccessor keyAccessor = new
- // FrameTupleAccessor(ctx.getFrameSize(), keyDesc);
- // keyAccessor.reset(frame);
- //
- // appender.reset(frame, true);
- //
- // // build and append low key
- // ktb.reset();
- // IntegerSerializerDeserializer.INSTANCE.serialize(-1, kdos);
- // ktb.addFieldEndOffset();
- // appender.append(ktb.getFieldEndOffsets(), ktb.getByteArray(), 0,
- // ktb.getSize());
- //
- // // build and append high key
- // ktb.reset();
- // IntegerSerializerDeserializer.INSTANCE.serialize(300, kdos);
- // ktb.addFieldEndOffset();
- // appender.append(ktb.getFieldEndOffsets(), ktb.getByteArray(), 0,
- // ktb.getSize());
- //
- // // create tuplereferences for search keys
- // FrameTupleReference lowKey = new FrameTupleReference();
- // lowKey.reset(keyAccessor, 0);
- //
- // FrameTupleReference highKey = new FrameTupleReference();
- // highKey.reset(keyAccessor, 1);
- //
- // IBinaryComparator[] searchCmps = new IBinaryComparator[1];
- // searchCmps[0] =
- // IntegerBinaryComparatorFactory.INSTANCE.createBinaryComparator();
- // MultiComparator searchCmp = new MultiComparator(searchCmps);
- //
- // RangePredicate rangePred = new RangePredicate(true, lowKey, highKey,
- // true, true, searchCmp, searchCmp);
- // lsmtree.search(rangeCursor, rangePred, searchOpCtx);
- //
- // try {
- // while (rangeCursor.hasNext()) {
- // rangeCursor.next();
- // ITupleReference frameTuple = rangeCursor.getTuple();
- // String rec = TupleUtils.printTuple(frameTuple, recDescSers);
- // if(((LSMTypeAwareTupleReference)frameTuple).isDelete()) {
- // System.out.println("del " + rec);
- // }
- // else {
- // System.out.println("ins " + rec);
- // }
- // // System.out.println("------------------");
- // }
- // } catch (Exception e) {
- // e.printStackTrace();
- // } finally {
- // rangeCursor.close();
- // }
- //
- // lsmtree.close();
- // bufferCache.closeFile(fileId);
- // memBufferCache.close();
- //
- // System.out.printf("End of TEST3()\n");
- //
- // }
-
-}
\ No newline at end of file
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTreeMergeTest.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTreeMergeTest.java
deleted file mode 100644
index 75d6ce1..0000000
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTreeMergeTest.java
+++ /dev/null
@@ -1,371 +0,0 @@
-package edu.uci.ics.hyracks.storage.am.lsmtree.impls;
-
-import java.io.DataOutput;
-import java.io.File;
-import java.nio.ByteBuffer;
-
-import org.junit.Test;
-
-import edu.uci.ics.hyracks.api.comm.IFrameTupleAccessor;
-import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.ISerializerDeserializer;
-import edu.uci.ics.hyracks.api.dataflow.value.ITypeTraits;
-import edu.uci.ics.hyracks.api.dataflow.value.RecordDescriptor;
-import edu.uci.ics.hyracks.api.io.FileReference;
-import edu.uci.ics.hyracks.data.std.accessors.PointableBinaryComparatorFactory;
-import edu.uci.ics.hyracks.data.std.primitive.IntegerPointable;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.ArrayTupleReference;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.FrameTupleAppender;
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.FrameTupleReference;
-import edu.uci.ics.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
-import edu.uci.ics.hyracks.storage.am.btree.api.IBTreeLeafFrame;
-import edu.uci.ics.hyracks.storage.am.btree.frames.BTreeNSMInteriorFrameFactory;
-import edu.uci.ics.hyracks.storage.am.btree.frames.BTreeNSMLeafFrameFactory;
-import edu.uci.ics.hyracks.storage.am.common.api.IFreePageManager;
-import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexAccessor;
-import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
-import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexMetaDataFrameFactory;
-import edu.uci.ics.hyracks.storage.am.common.api.TreeIndexException;
-import edu.uci.ics.hyracks.storage.am.common.frames.LIFOMetaDataFrameFactory;
-import edu.uci.ics.hyracks.storage.am.common.freepage.LinkedListFreePageManager;
-import edu.uci.ics.hyracks.storage.am.common.ophelpers.MultiComparator;
-import edu.uci.ics.hyracks.storage.common.buffercache.IBufferCache;
-import edu.uci.ics.hyracks.storage.common.file.IFileMapManager;
-import edu.uci.ics.hyracks.storage.common.file.IFileMapProvider;
-import edu.uci.ics.hyracks.test.support.TestStorageManagerComponentHolder;
-import edu.uci.ics.hyracks.test.support.TestUtils;
-
-public class LSMTreeMergeTest extends AbstractLSMTreeTest {
- private static final int PAGE_SIZE = 256;
- private static final int NUM_PAGES = 30;
- private static final int MAX_OPEN_FILES = 100;
- private static final int HYRACKS_FRAME_SIZE = 128;
- private IHyracksTaskContext ctx = TestUtils.create(HYRACKS_FRAME_SIZE);
-
- @Test
- public void Test1() throws Exception {
- System.out.printf("TEST1 START\n");
- // in disk
- TestStorageManagerComponentHolder.init(PAGE_SIZE, NUM_PAGES, MAX_OPEN_FILES);
- IBufferCache bufferCache = TestStorageManagerComponentHolder.getBufferCache(ctx);
- IFileMapProvider fmp = TestStorageManagerComponentHolder.getFileMapProvider(ctx);
- FileReference file = new FileReference(new File(fileName));
- bufferCache.createFile(file);
- int fileId = fmp.lookupFileId(file);
- bufferCache.openFile(fileId);
-
- // in memory
- InMemoryBufferCacheFactory InMemBufferCacheFactory = new InMemoryBufferCacheFactory(PAGE_SIZE, NUM_PAGES);
- IBufferCache memBufferCache = InMemBufferCacheFactory.createInMemoryBufferCache();
-
- // declare fields
- int fieldCount = 2;
- ITypeTraits[] typeTraits = new ITypeTraits[fieldCount];
- typeTraits[0] = IntegerPointable.TYPE_TRAITS;
- typeTraits[1] = IntegerPointable.TYPE_TRAITS;
-
- // declare keys
- int keyFieldCount = 1;
- IBinaryComparator[] cmps = new IBinaryComparator[keyFieldCount];
- cmps[0] = PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY).createBinaryComparator();
-
- MultiComparator cmp = new MultiComparator(cmps);
-
- LSMTypeAwareTupleWriterFactory insertTupleWriterFactory = new LSMTypeAwareTupleWriterFactory(typeTraits, false);
- LSMTypeAwareTupleWriterFactory deleteTupleWriterFactory = new LSMTypeAwareTupleWriterFactory(typeTraits, true);
-
- ITreeIndexFrameFactory insertLeafFrameFactory = new BTreeNSMLeafFrameFactory(insertTupleWriterFactory);
- ITreeIndexFrameFactory deleteLeafFrameFactory = new BTreeNSMLeafFrameFactory(deleteTupleWriterFactory);
- ITreeIndexFrameFactory interiorFrameFactory = new BTreeNSMInteriorFrameFactory(insertTupleWriterFactory);
- ITreeIndexMetaDataFrameFactory metaFrameFactory = new LIFOMetaDataFrameFactory();
-
- IBTreeLeafFrame insertLeafFrame = (IBTreeLeafFrame) insertLeafFrameFactory.createFrame();
-
- IFreePageManager freePageManager = new LinkedListFreePageManager(bufferCache, fileId, 0, metaFrameFactory);
- IFreePageManager memFreePageManager = new InMemoryFreePageManager(NUM_PAGES, metaFrameFactory);
-
- // For the Flush Mechanism
- LSMEntireTupleWriterFactory flushTupleWriterFactory = new LSMEntireTupleWriterFactory(typeTraits);
- ITreeIndexFrameFactory flushLeafFrameFactory = new BTreeNSMLeafFrameFactory(flushTupleWriterFactory);
- FreePageManagerFactory freePageManagerFactory = new FreePageManagerFactory(bufferCache, metaFrameFactory);
- BTreeFactory bTreeFactory = new BTreeFactory(bufferCache, freePageManagerFactory, cmp, fieldCount,
- interiorFrameFactory, flushLeafFrameFactory);
-
- LSMTree lsmtree = new LSMTree(memBufferCache, bufferCache, fieldCount, cmp, memFreePageManager,
- interiorFrameFactory, insertLeafFrameFactory, deleteLeafFrameFactory, bTreeFactory,
- (IFileMapManager) fmp);
-
- // LSMTree lsmtree = LSMTreeUtils.createLSMTree(10, 30, 2,
- // memBufferCache, bufferCache, fileId, typeTraits,
- // cmp.getComparators(), BTreeLeafFrameType.REGULAR_NSM,
- // (IFileMapManager)fmp);
-
- lsmtree.create(fileId);
- lsmtree.open(fileId);
-
- ByteBuffer frame = ctx.allocateFrame();
- FrameTupleAppender appender = new FrameTupleAppender(ctx.getFrameSize());
-
- ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount);
- DataOutput dos = tb.getDataOutput();
-
- ISerializerDeserializer[] recDescSers = { IntegerSerializerDeserializer.INSTANCE,
- IntegerSerializerDeserializer.INSTANCE };
- RecordDescriptor recDesc = new RecordDescriptor(recDescSers);
-
- IFrameTupleAccessor accessor = new FrameTupleAccessor(ctx.getFrameSize(), recDesc);
- accessor.reset(frame);
-
- FrameTupleReference tuple = new FrameTupleReference();
-
- int resultSize = 100000;
- int[][] resultArray = new int[resultSize][2];
-
- // insert 0~250 tuples
- System.out.printf("Start for 1st Insert\n");
- ITreeIndexAccessor lsmTreeAccessor = lsmtree.createAccessor();
- for (int i = 0; i < 251; i++) {
- resultArray[i][0] = i;
- resultArray[i][1] = i;
- }
- for (int i = 0; i < 251; i++) {
-
- int f0 = resultArray[i][0];
- int f1 = resultArray[i][1];
-
- tb.reset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- tb.addFieldEndOffset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- tb.addFieldEndOffset();
-
- appender.reset(frame, true);
- appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
-
- tuple.reset(accessor, 0);
-
- ArrayTupleReference t = new ArrayTupleReference();
- t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
-
- try {
- lsmTreeAccessor.insert(t);
- } catch (TreeIndexException e) {
- System.out.println("test03:" + e);
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- System.out.printf("Start for 2nd Insert\n");
- // delete 126~250.
- for (int i = 126; i < 251; i++) {
- resultArray[i][0] = i;
- resultArray[i][1] = i;
- }
- for (int i = 126; i < 251; i++) {
- int f0 = resultArray[i][0];
- int f1 = resultArray[i][1];
-
- tb.reset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- tb.addFieldEndOffset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- tb.addFieldEndOffset();
-
- appender.reset(frame, true);
- appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
-
- tuple.reset(accessor, 0);
-
- ArrayTupleReference t = new ArrayTupleReference();
- t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
-
- try {
- lsmTreeAccessor.delete(t);
- } catch (TreeIndexException e) {
- System.out.println("test03:" + e);
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- // insert 251~1
- for (int i = 251; i > 0; i--) {
- resultArray[i][0] = i;
- resultArray[i][1] = i;
- }
- for (int i = 251; i > 0; i--) {
-
- int f0 = resultArray[i][0];
- int f1 = resultArray[i][1];
-
- tb.reset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- tb.addFieldEndOffset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- tb.addFieldEndOffset();
-
- appender.reset(frame, true);
- appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
-
- tuple.reset(accessor, 0);
-
- ArrayTupleReference t = new ArrayTupleReference();
- t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
-
- try {
- lsmTreeAccessor.insert(t);
- } catch (TreeIndexException e) {
- System.out.println("test03:" + e);
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- // delete 100~0
- for (int i = 100; i >= 0; i--) {
- resultArray[i][0] = i;
- resultArray[i][1] = i;
- }
- for (int i = 100; i >= 0; i--) {
-
- int f0 = resultArray[i][0];
- int f1 = resultArray[i][1];
-
- tb.reset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- tb.addFieldEndOffset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- tb.addFieldEndOffset();
-
- appender.reset(frame, true);
- appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
-
- tuple.reset(accessor, 0);
-
- ArrayTupleReference t = new ArrayTupleReference();
- t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
-
- try {
- lsmTreeAccessor.delete(t);
- } catch (TreeIndexException e) {
- System.out.println("test03:" + e);
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- // insert 1~50
- for (int i = 1; i < 51; i++) {
- resultArray[i][0] = i;
- resultArray[i][1] = i;
- }
- for (int i = 1; i < 51; i++) {
-
- int f0 = resultArray[i][0];
- int f1 = resultArray[i][1];
-
- tb.reset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- tb.addFieldEndOffset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- tb.addFieldEndOffset();
-
- appender.reset(frame, true);
- appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
-
- tuple.reset(accessor, 0);
-
- ArrayTupleReference t = new ArrayTupleReference();
- t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
-
- try {
- lsmTreeAccessor.insert(t);
- } catch (TreeIndexException e) {
- System.out.println("test03:" + e);
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- lsmtree.merge();
-
- // Output should be:
- // In memory tree = 0->del, 1~50 ins
- // MergedTree = 0->ins, 1~100->del, 101~251->ins
- // Whole search = 1~50,101~251
-
- // System.out.println("LSMTreeFlushTest: start print the first tree");
- // lsmtree.scanDiskTree(1);
- //
- // Print out the first in Disk Btree
- // System.out.println("LSMTreeFlushTest: start print the first tree");
- // lsmtree.scanDiskTree(0);
- // Print out the In-memory Tree
- System.out.println("LSMTreeFlushTest: start print the In-memory tree");
- lsmtree.scanInMemoryTree();
- // TODO: scan whole tree
- /*
- * System.out.println("Range SEARCH:");
- *
- * BTreeOpContext searchOpCtx = lsmtree.createOpContext(IndexOp.SEARCH);
- * ITreeIndexCursor rangeCursor = new LSMTreeRangeSearchCursor();
- *
- * // build low and high keys ArrayTupleBuilder ktb = new
- * ArrayTupleBuilder(cmp.getKeyFieldCount()); DataOutput kdos =
- * ktb.getDataOutput();
- *
- * ISerializerDeserializer[] keyDescSers = {
- * IntegerSerializerDeserializer.INSTANCE }; RecordDescriptor keyDesc =
- * new RecordDescriptor(keyDescSers); IFrameTupleAccessor keyAccessor =
- * new FrameTupleAccessor( ctx.getFrameSize(), keyDesc);
- * keyAccessor.reset(frame);
- *
- * appender.reset(frame, true);
- *
- * // build and append low key ktb.reset();
- * IntegerSerializerDeserializer.INSTANCE.serialize(-1, kdos);
- * ktb.addFieldEndOffset(); appender.append(ktb.getFieldEndOffsets(),
- * ktb.getByteArray(), 0, ktb.getSize());
- *
- * // build and append high key ktb.reset();
- * IntegerSerializerDeserializer.INSTANCE.serialize(300, kdos);
- * ktb.addFieldEndOffset(); appender.append(ktb.getFieldEndOffsets(),
- * ktb.getByteArray(), 0, ktb.getSize());
- *
- * // create tuplereferences for search keys FrameTupleReference lowKey
- * = new FrameTupleReference(); lowKey.reset(keyAccessor, 0);
- *
- * FrameTupleReference highKey = new FrameTupleReference();
- * highKey.reset(keyAccessor, 1);
- *
- * IBinaryComparator[] searchCmps = new IBinaryComparator[1];
- * searchCmps[0] = IntegerBinaryComparatorFactory.INSTANCE
- * .createBinaryComparator(); MultiComparator searchCmp = new
- * MultiComparator(searchCmps);
- *
- * RangePredicate rangePred = new RangePredicate(true, lowKey, highKey,
- * true, true, searchCmp, searchCmp); lsmtree.search(rangeCursor,
- * rangePred, searchOpCtx);
- *
- * try { while (rangeCursor.hasNext()) { rangeCursor.next();
- * ITupleReference frameTuple = rangeCursor.getTuple(); String rec =
- * TupleUtils.printTuple(frameTuple, recDescSers); if
- * (((LSMTypeAwareTupleReference) frameTuple).isDelete()) {
- * System.out.println("del " + rec); } else { System.out.println("ins "
- * + rec); } // System.out.println("------------------"); } } catch
- * (Exception e) { e.printStackTrace(); } finally { rangeCursor.close();
- * }
- */
- lsmtree.close();
- bufferCache.closeFile(fileId);
- memBufferCache.close();
-
- System.out.printf("End of TEST1()\n");
-
- }
-}
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTreeRangeSearchCursor.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTreeRangeSearchCursor.java
index eaa99ac..079dada 100644
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTreeRangeSearchCursor.java
+++ b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTreeRangeSearchCursor.java
@@ -10,6 +10,7 @@
import edu.uci.ics.hyracks.storage.am.common.api.ISearchPredicate;
import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexCursor;
import edu.uci.ics.hyracks.storage.am.common.ophelpers.MultiComparator;
+import edu.uci.ics.hyracks.storage.am.lsmtree.tuples.LSMTypeAwareTupleReference;
import edu.uci.ics.hyracks.storage.common.buffercache.IBufferCache;
import edu.uci.ics.hyracks.storage.common.buffercache.ICachedPage;
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTreeSearchTest.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTreeSearchTest.java
deleted file mode 100644
index d26ba3f..0000000
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTreeSearchTest.java
+++ /dev/null
@@ -1,409 +0,0 @@
-package edu.uci.ics.hyracks.storage.am.lsmtree.impls;
-
-import java.io.DataOutput;
-import java.io.File;
-import java.nio.ByteBuffer;
-import java.util.Date;
-import java.util.Random;
-
-import org.junit.Test;
-
-import edu.uci.ics.hyracks.api.comm.IFrameTupleAccessor;
-import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
-import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.ISerializerDeserializer;
-import edu.uci.ics.hyracks.api.dataflow.value.ITypeTraits;
-import edu.uci.ics.hyracks.api.dataflow.value.RecordDescriptor;
-import edu.uci.ics.hyracks.api.io.FileReference;
-import edu.uci.ics.hyracks.data.std.accessors.PointableBinaryComparatorFactory;
-import edu.uci.ics.hyracks.data.std.primitive.IntegerPointable;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.ArrayTupleReference;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.FrameTupleAccessor;
-import edu.uci.ics.hyracks.dataflow.common.comm.io.FrameTupleAppender;
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.FrameTupleReference;
-import edu.uci.ics.hyracks.dataflow.common.data.accessors.ITupleReference;
-import edu.uci.ics.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
-import edu.uci.ics.hyracks.dataflow.common.util.TupleUtils;
-import edu.uci.ics.hyracks.storage.am.btree.api.IBTreeInteriorFrame;
-import edu.uci.ics.hyracks.storage.am.btree.api.IBTreeLeafFrame;
-import edu.uci.ics.hyracks.storage.am.btree.frames.BTreeNSMInteriorFrameFactory;
-import edu.uci.ics.hyracks.storage.am.btree.frames.BTreeNSMLeafFrameFactory;
-import edu.uci.ics.hyracks.storage.am.btree.impls.BTree;
-import edu.uci.ics.hyracks.storage.am.btree.impls.RangePredicate;
-import edu.uci.ics.hyracks.storage.am.common.api.IFreePageManager;
-import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexAccessor;
-import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexCursor;
-import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexFrameFactory;
-import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexMetaDataFrame;
-import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexMetaDataFrameFactory;
-import edu.uci.ics.hyracks.storage.am.common.api.TreeIndexException;
-import edu.uci.ics.hyracks.storage.am.common.frames.LIFOMetaDataFrameFactory;
-import edu.uci.ics.hyracks.storage.am.common.freepage.LinkedListFreePageManager;
-import edu.uci.ics.hyracks.storage.am.common.ophelpers.MultiComparator;
-import edu.uci.ics.hyracks.storage.am.common.tuples.TypeAwareTupleWriterFactory;
-import edu.uci.ics.hyracks.storage.common.buffercache.IBufferCache;
-import edu.uci.ics.hyracks.storage.common.file.IFileMapManager;
-import edu.uci.ics.hyracks.storage.common.file.IFileMapProvider;
-import edu.uci.ics.hyracks.test.support.TestStorageManagerComponentHolder;
-import edu.uci.ics.hyracks.test.support.TestUtils;
-
-// TODO: needs a big cleanup phase.
-public class LSMTreeSearchTest extends AbstractLSMTreeTest {
-
- private static final int PAGE_SIZE = 256;
- private static final int NUM_PAGES = 10;
- private static final int MAX_OPEN_FILES = 100;
- private static final int HYRACKS_FRAME_SIZE = 128;
- private IHyracksTaskContext ctx = TestUtils.create(HYRACKS_FRAME_SIZE);
-
- @Test
- public void Test1() throws Exception {
- // in disk
- TestStorageManagerComponentHolder.init(PAGE_SIZE, NUM_PAGES, MAX_OPEN_FILES);
- IBufferCache bufferCache = TestStorageManagerComponentHolder.getBufferCache(ctx);
- IFileMapProvider fmp = TestStorageManagerComponentHolder.getFileMapProvider(ctx);
- FileReference file = new FileReference(new File(fileName));
- bufferCache.createFile(file);
- int fileId = fmp.lookupFileId(file);
- bufferCache.openFile(fileId);
-
- // in memory
- InMemoryBufferCacheFactory InMemBufferCacheFactory = new InMemoryBufferCacheFactory(PAGE_SIZE, NUM_PAGES);
- IBufferCache memBufferCache = InMemBufferCacheFactory.createInMemoryBufferCache();
-
- // declare fields
- int fieldCount = 2;
- ITypeTraits[] typeTraits = new ITypeTraits[fieldCount];
- typeTraits[0] = IntegerPointable.TYPE_TRAITS;
- typeTraits[1] = IntegerPointable.TYPE_TRAITS;
-
- // declare keys
- int keyFieldCount = 1;
- IBinaryComparator[] cmps = new IBinaryComparator[keyFieldCount];
- cmps[0] = PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY).createBinaryComparator();
-
- MultiComparator cmp = new MultiComparator(cmps);
-
- LSMTypeAwareTupleWriterFactory insertTupleWriterFactory = new LSMTypeAwareTupleWriterFactory(typeTraits, false);
- LSMTypeAwareTupleWriterFactory deleteTupleWriterFactory = new LSMTypeAwareTupleWriterFactory(typeTraits, true);
-
- ITreeIndexFrameFactory insertLeafFrameFactory = new BTreeNSMLeafFrameFactory(insertTupleWriterFactory);
- ITreeIndexFrameFactory deleteLeafFrameFactory = new BTreeNSMLeafFrameFactory(deleteTupleWriterFactory);
- ITreeIndexFrameFactory interiorFrameFactory = new BTreeNSMInteriorFrameFactory(insertTupleWriterFactory);
- ITreeIndexMetaDataFrameFactory metaFrameFactory = new LIFOMetaDataFrameFactory();
-
- IBTreeLeafFrame insertLeafFrame = (IBTreeLeafFrame) insertLeafFrameFactory.createFrame();
-
- IFreePageManager freePageManager = new LinkedListFreePageManager(bufferCache, fileId, 0, metaFrameFactory);
- IFreePageManager memFreePageManager = new InMemoryFreePageManager(100, metaFrameFactory);
-
- LSMEntireTupleWriterFactory flushTupleWriterFactory = new LSMEntireTupleWriterFactory(typeTraits);
- ITreeIndexFrameFactory flushLeafFrameFactory = new BTreeNSMLeafFrameFactory(flushTupleWriterFactory);
- FreePageManagerFactory freePageManagerFactory = new FreePageManagerFactory(bufferCache, metaFrameFactory);
- BTreeFactory bTreeFactory = new BTreeFactory(bufferCache, freePageManagerFactory, cmp, fieldCount,
- interiorFrameFactory, flushLeafFrameFactory);
-
- LSMTree lsmtree = new LSMTree(memBufferCache, bufferCache, fieldCount, cmp, memFreePageManager,
- interiorFrameFactory, insertLeafFrameFactory, deleteLeafFrameFactory, bTreeFactory,
- (IFileMapManager) fmp);
-
- lsmtree.create(fileId);
- lsmtree.open(fileId);
-
- ByteBuffer frame = ctx.allocateFrame();
- FrameTupleAppender appender = new FrameTupleAppender(ctx.getFrameSize());
-
- ArrayTupleBuilder tb = new ArrayTupleBuilder(fieldCount);
- DataOutput dos = tb.getDataOutput();
-
- ISerializerDeserializer[] recDescSers = { IntegerSerializerDeserializer.INSTANCE,
- IntegerSerializerDeserializer.INSTANCE };
- RecordDescriptor recDesc = new RecordDescriptor(recDescSers);
-
- IFrameTupleAccessor accessor = new FrameTupleAccessor(ctx.getFrameSize(), recDesc);
- accessor.reset(frame);
-
- FrameTupleReference tuple = new FrameTupleReference();
-
- ITreeIndexAccessor lsmTreeAccessor = lsmtree.createAccessor();
-
- // delete
- for (int i = 26; i < 36; i++) {
-
- int f0 = i;
- int f1 = -1;
-
- tb.reset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- tb.addFieldEndOffset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- tb.addFieldEndOffset();
-
- appender.reset(frame, true);
- appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
-
- tuple.reset(accessor, 0);
-
- ArrayTupleReference t = new ArrayTupleReference();
- t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
-
- try {
- lsmTreeAccessor.delete(t);
- } catch (TreeIndexException e) {
- System.out.println("test01:" + e);
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- for (int i = 21; i < 31; i++) {
- int f0 = i;
- int f1 = 0;
-
- tb.reset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- tb.addFieldEndOffset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- tb.addFieldEndOffset();
-
- appender.reset(frame, true);
- appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
-
- tuple.reset(accessor, 0);
-
- ArrayTupleReference t = new ArrayTupleReference();
- t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
-
- try {
- lsmTreeAccessor.insert(t);
- } catch (TreeIndexException e) {
- System.out.println("test01:" + e);
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- // In disk insertions 1
-
- LOGGER.info("Start in-disk insertions");
-
- fileName = tmpDir + sep + simpleDateFormat.format(new Date());
- FileReference file_1 = new FileReference(new File(fileName));
- bufferCache.createFile(file_1);
- int fileId_1 = fmp.lookupFileId(file_1);
- bufferCache.openFile(fileId_1);
-
- TypeAwareTupleWriterFactory tupleWriterFactory = new TypeAwareTupleWriterFactory(typeTraits);
- ITreeIndexFrameFactory leafFrameFactory = new BTreeNSMLeafFrameFactory(tupleWriterFactory);
-
- IBTreeLeafFrame leafFrame = (IBTreeLeafFrame) leafFrameFactory.createFrame();
- IBTreeInteriorFrame interiorFrame = (IBTreeInteriorFrame) interiorFrameFactory.createFrame();
- ITreeIndexMetaDataFrame metaFrame = metaFrameFactory.createFrame();
-
- IFreePageManager freePageManager_1 = new LinkedListFreePageManager(bufferCache, fileId_1, 0, metaFrameFactory);
-
- BTree btree_1 = new BTree(bufferCache, fieldCount, cmp, freePageManager_1, interiorFrameFactory,
- leafFrameFactory);
- btree_1.create(fileId_1);
- btree_1.open(fileId_1);
-
- // TODO: rename this one.
- InDiskTreeInfo info_1 = new InDiskTreeInfo(btree_1);
- lsmtree.inDiskTreeInfoList.add(info_1);
-
- Random rnd = new Random();
- rnd.setSeed(50);
-
- LOGGER.info("INSERTING INTO TREE");
-
- // ByteBuffer
- frame = ctx.allocateFrame();
- // FrameTupleAppender
- appender = new FrameTupleAppender(ctx.getFrameSize());
- // ArrayTupleBuilder
- tb = new ArrayTupleBuilder(fieldCount);
- // DataOutput
- dos = tb.getDataOutput();
-
- recDesc = new RecordDescriptor(recDescSers);
-
- accessor.reset(frame);
-
- tuple = new FrameTupleReference();
-
- ITreeIndexAccessor indexAccessor_1 = btree_1.createAccessor();
-
- // 10000
- for (int i = 16; i < 41; i++) {
-
- int f0 = i;
- int f1 = 1;
-
- tb.reset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- tb.addFieldEndOffset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- tb.addFieldEndOffset();
-
- appender.reset(frame, true);
- appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
-
- tuple.reset(accessor, 0);
-
- ArrayTupleReference t = new ArrayTupleReference();
- t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
-
- if (i % 10 == 0) {
- System.out.println("INSERTING " + i + " : " + f0 + " " + f1);
- }
-
- try {
- indexAccessor_1.insert(t);
- } catch (TreeIndexException e) {
- e.printStackTrace();
- System.out.println("Error: " + e);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- // btree_1.close();
-
- // In disk insertions 2
-
- LOGGER.info("Start in-disk insertions");
-
- fileName = tmpDir + sep + simpleDateFormat.format(new Date());
- FileReference file_2 = new FileReference(new File(fileName));
- bufferCache.createFile(file_2);
- int fileId_2 = fmp.lookupFileId(file_2);
- bufferCache.openFile(fileId_2);
-
- IFreePageManager freePageManager_2 = new LinkedListFreePageManager(bufferCache, fileId_2, 0, metaFrameFactory);
- BTree btree_2 = new BTree(bufferCache, fieldCount, cmp, freePageManager_2, interiorFrameFactory,
- leafFrameFactory);
- btree_2.create(fileId_2);
- btree_2.open(fileId_2);
-
- InDiskTreeInfo info_2 = new InDiskTreeInfo(btree_2);
- lsmtree.inDiskTreeInfoList.add(info_2);
-
- LOGGER.info("INSERTING INTO TREE");
-
- // ByteBuffer
- frame = ctx.allocateFrame();
- // FrameTupleAppender
- appender = new FrameTupleAppender(ctx.getFrameSize());
- // ArrayTupleBuilder
- tb = new ArrayTupleBuilder(fieldCount);
- // DataOutput
- dos = tb.getDataOutput();
-
- recDesc = new RecordDescriptor(recDescSers);
-
- accessor.reset(frame);
-
- tuple = new FrameTupleReference();
-
- ITreeIndexAccessor indexAccessor_2 = btree_2.createAccessor();
-
- // 10000
- for (int i = 11; i < 51; i++) {
-
- int f0 = i;
- int f1 = 2;
-
- tb.reset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f0, dos);
- tb.addFieldEndOffset();
- IntegerSerializerDeserializer.INSTANCE.serialize(f1, dos);
- tb.addFieldEndOffset();
-
- appender.reset(frame, true);
- appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
-
- tuple.reset(accessor, 0);
-
- ArrayTupleReference t = new ArrayTupleReference();
- t.reset(tb.getFieldEndOffsets(), tb.getByteArray());
-
- if (i % 10 == 0) {
- System.out.println("INSERTING " + i + " : " + f0 + " " + f1);
- }
-
- try {
- indexAccessor_2.insert(t);
- } catch (TreeIndexException e) {
- e.printStackTrace();
- System.out.println("Error: " + e);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- // btree_2.close();
-
- // range search in [-1000, 1000]
- LOGGER.info("RANGE SEARCH:");
-
- ITreeIndexCursor rangeCursor = new LSMTreeRangeSearchCursor();
-
- // build low and high keys
- ArrayTupleBuilder ktb = new ArrayTupleBuilder(cmp.getKeyFieldCount());
- DataOutput kdos = ktb.getDataOutput();
-
- ISerializerDeserializer[] keyDescSers = { IntegerSerializerDeserializer.INSTANCE };
- RecordDescriptor keyDesc = new RecordDescriptor(keyDescSers);
- IFrameTupleAccessor keyAccessor = new FrameTupleAccessor(ctx.getFrameSize(), keyDesc);
- keyAccessor.reset(frame);
-
- appender.reset(frame, true);
-
- // build and append low key
- ktb.reset();
- IntegerSerializerDeserializer.INSTANCE.serialize(-100, kdos);
- ktb.addFieldEndOffset();
- appender.append(ktb.getFieldEndOffsets(), ktb.getByteArray(), 0, ktb.getSize());
-
- // build and append high key
- ktb.reset();
- IntegerSerializerDeserializer.INSTANCE.serialize(100, kdos);
- ktb.addFieldEndOffset();
- appender.append(ktb.getFieldEndOffsets(), ktb.getByteArray(), 0, ktb.getSize());
-
- // create tuplereferences for search keys
- FrameTupleReference lowKey = new FrameTupleReference();
- lowKey.reset(keyAccessor, 0);
-
- FrameTupleReference highKey = new FrameTupleReference();
- highKey.reset(keyAccessor, 1);
-
- IBinaryComparator[] searchCmps = cmps;
- MultiComparator searchCmp = new MultiComparator(searchCmps);
-
- RangePredicate rangePred = new RangePredicate(true, lowKey, highKey, true, true, searchCmp, searchCmp);
- lsmTreeAccessor.search(rangeCursor, rangePred);
-
- try {
- while (rangeCursor.hasNext()) {
- rangeCursor.next();
- ITupleReference frameTuple = rangeCursor.getTuple();
- String rec = TupleUtils.printTuple(frameTuple, recDescSers);
- if (((LSMTypeAwareTupleReference) frameTuple).isDelete()) {
- System.out.println("del " + rec);
- } else {
- System.out.println("ins " + rec);
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- rangeCursor.close();
- }
-
- lsmtree.close();
- bufferCache.closeFile(fileId);
- memBufferCache.close();
- }
-}
\ No newline at end of file
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/perf/InMemoryBTreeRunner.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/perf/InMemoryBTreeRunner.java
index b6a5170..e411856 100644
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/perf/InMemoryBTreeRunner.java
+++ b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/perf/InMemoryBTreeRunner.java
@@ -19,8 +19,8 @@
import edu.uci.ics.hyracks.storage.am.common.tuples.TypeAwareTupleWriterFactory;
import edu.uci.ics.hyracks.storage.am.lsmtree.datagen.DataGenThread;
import edu.uci.ics.hyracks.storage.am.lsmtree.datagen.TupleBatch;
-import edu.uci.ics.hyracks.storage.am.lsmtree.impls.InMemoryBufferCache;
-import edu.uci.ics.hyracks.storage.am.lsmtree.impls.InMemoryFreePageManager;
+import edu.uci.ics.hyracks.storage.am.lsmtree.freepage.InMemoryBufferCache;
+import edu.uci.ics.hyracks.storage.am.lsmtree.freepage.InMemoryFreePageManager;
import edu.uci.ics.hyracks.storage.common.buffercache.HeapBufferAllocator;
import edu.uci.ics.hyracks.storage.common.buffercache.IBufferCache;
import edu.uci.ics.hyracks.storage.common.buffercache.ICacheMemoryAllocator;
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/perf/LSMTreeRunner.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/perf/LSMTreeRunner.java
index 0d537b6..b9175ad 100644
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/perf/LSMTreeRunner.java
+++ b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/perf/LSMTreeRunner.java
@@ -15,7 +15,7 @@
import edu.uci.ics.hyracks.storage.am.common.ophelpers.MultiComparator;
import edu.uci.ics.hyracks.storage.am.lsmtree.datagen.DataGenThread;
import edu.uci.ics.hyracks.storage.am.lsmtree.datagen.TupleBatch;
-import edu.uci.ics.hyracks.storage.am.lsmtree.impls.InMemoryBufferCacheFactory;
+import edu.uci.ics.hyracks.storage.am.lsmtree.freepage.InMemoryBufferCacheFactory;
import edu.uci.ics.hyracks.storage.am.lsmtree.impls.LSMTree;
import edu.uci.ics.hyracks.storage.common.buffercache.IBufferCache;
import edu.uci.ics.hyracks.storage.common.file.IFileMapManager;
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/perf/LSMTreeUtils.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/perf/LSMTreeUtils.java
index 22d006c..853f658 100644
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/perf/LSMTreeUtils.java
+++ b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/perf/LSMTreeUtils.java
@@ -11,12 +11,12 @@
import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexMetaDataFrameFactory;
import edu.uci.ics.hyracks.storage.am.common.frames.LIFOMetaDataFrameFactory;
import edu.uci.ics.hyracks.storage.am.common.ophelpers.MultiComparator;
+import edu.uci.ics.hyracks.storage.am.lsmtree.freepage.FreePageManagerFactory;
+import edu.uci.ics.hyracks.storage.am.lsmtree.freepage.InMemoryFreePageManager;
import edu.uci.ics.hyracks.storage.am.lsmtree.impls.BTreeFactory;
-import edu.uci.ics.hyracks.storage.am.lsmtree.impls.FreePageManagerFactory;
-import edu.uci.ics.hyracks.storage.am.lsmtree.impls.InMemoryFreePageManager;
-import edu.uci.ics.hyracks.storage.am.lsmtree.impls.LSMEntireTupleWriterFactory;
import edu.uci.ics.hyracks.storage.am.lsmtree.impls.LSMTree;
-import edu.uci.ics.hyracks.storage.am.lsmtree.impls.LSMTypeAwareTupleWriterFactory;
+import edu.uci.ics.hyracks.storage.am.lsmtree.tuples.LSMEntireTupleWriterFactory;
+import edu.uci.ics.hyracks.storage.am.lsmtree.tuples.LSMTypeAwareTupleWriterFactory;
import edu.uci.ics.hyracks.storage.common.buffercache.IBufferCache;
import edu.uci.ics.hyracks.storage.common.file.IFileMapManager;
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/ILSMTreeTupleReference.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/ILSMTreeTupleReference.java
similarity index 76%
rename from hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/ILSMTreeTupleReference.java
rename to hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/ILSMTreeTupleReference.java
index 09ca355..68f2672 100644
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/ILSMTreeTupleReference.java
+++ b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/ILSMTreeTupleReference.java
@@ -1,4 +1,4 @@
-package edu.uci.ics.hyracks.storage.am.lsmtree.impls;
+package edu.uci.ics.hyracks.storage.am.lsmtree.tuples;
import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexTupleReference;
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMEntireTupleWriter.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMEntireTupleWriter.java
similarity index 94%
rename from hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMEntireTupleWriter.java
rename to hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMEntireTupleWriter.java
index 793ec04..e94ef1f 100644
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMEntireTupleWriter.java
+++ b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMEntireTupleWriter.java
@@ -1,4 +1,4 @@
-package edu.uci.ics.hyracks.storage.am.lsmtree.impls;
+package edu.uci.ics.hyracks.storage.am.lsmtree.tuples;
import edu.uci.ics.hyracks.api.dataflow.value.ITypeTraits;
import edu.uci.ics.hyracks.dataflow.common.data.accessors.ITupleReference;
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMEntireTupleWriterFactory.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMEntireTupleWriterFactory.java
similarity index 91%
rename from hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMEntireTupleWriterFactory.java
rename to hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMEntireTupleWriterFactory.java
index de7befa..6bbc7a6 100644
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMEntireTupleWriterFactory.java
+++ b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMEntireTupleWriterFactory.java
@@ -1,4 +1,4 @@
-package edu.uci.ics.hyracks.storage.am.lsmtree.impls;
+package edu.uci.ics.hyracks.storage.am.lsmtree.tuples;
import edu.uci.ics.hyracks.api.dataflow.value.ITypeTraits;
import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexTupleWriter;
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTypeAwareTupleReference.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMTypeAwareTupleReference.java
similarity index 93%
rename from hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTypeAwareTupleReference.java
rename to hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMTypeAwareTupleReference.java
index 90b564f..a5a3ee4 100644
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTypeAwareTupleReference.java
+++ b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMTypeAwareTupleReference.java
@@ -1,4 +1,4 @@
-package edu.uci.ics.hyracks.storage.am.lsmtree.impls;
+package edu.uci.ics.hyracks.storage.am.lsmtree.tuples;
import edu.uci.ics.hyracks.api.dataflow.value.ITypeTraits;
import edu.uci.ics.hyracks.storage.am.common.tuples.TypeAwareTupleReference;
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTypeAwareTupleReferenceTest.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMTypeAwareTupleReferenceTest.java
similarity index 97%
rename from hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTypeAwareTupleReferenceTest.java
rename to hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMTypeAwareTupleReferenceTest.java
index 815187e..77fe2f3 100644
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTypeAwareTupleReferenceTest.java
+++ b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMTypeAwareTupleReferenceTest.java
@@ -1,4 +1,4 @@
-package edu.uci.ics.hyracks.storage.am.lsmtree.impls;
+package edu.uci.ics.hyracks.storage.am.lsmtree.tuples;
import static org.junit.Assert.fail;
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTypeAwareTupleWriter.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMTypeAwareTupleWriter.java
similarity index 96%
rename from hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTypeAwareTupleWriter.java
rename to hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMTypeAwareTupleWriter.java
index 25411a0..d4dd104 100644
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTypeAwareTupleWriter.java
+++ b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMTypeAwareTupleWriter.java
@@ -1,4 +1,4 @@
-package edu.uci.ics.hyracks.storage.am.lsmtree.impls;
+package edu.uci.ics.hyracks.storage.am.lsmtree.tuples;
import edu.uci.ics.hyracks.api.dataflow.value.ITypeTraits;
import edu.uci.ics.hyracks.dataflow.common.data.accessors.ITupleReference;
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTypeAwareTupleWriterFactory.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMTypeAwareTupleWriterFactory.java
similarity index 92%
rename from hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTypeAwareTupleWriterFactory.java
rename to hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMTypeAwareTupleWriterFactory.java
index c2eb30e..d424a61 100644
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTypeAwareTupleWriterFactory.java
+++ b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMTypeAwareTupleWriterFactory.java
@@ -1,4 +1,4 @@
-package edu.uci.ics.hyracks.storage.am.lsmtree.impls;
+package edu.uci.ics.hyracks.storage.am.lsmtree.tuples;
import edu.uci.ics.hyracks.api.dataflow.value.ITypeTraits;
import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexTupleWriter;
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTypeAwareTupleWriterFactoryTest.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMTypeAwareTupleWriterFactoryTest.java
similarity index 94%
rename from hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTypeAwareTupleWriterFactoryTest.java
rename to hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMTypeAwareTupleWriterFactoryTest.java
index 43879c0..a9cab04 100644
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTypeAwareTupleWriterFactoryTest.java
+++ b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMTypeAwareTupleWriterFactoryTest.java
@@ -1,4 +1,4 @@
-package edu.uci.ics.hyracks.storage.am.lsmtree.impls;
+package edu.uci.ics.hyracks.storage.am.lsmtree.tuples;
import static org.junit.Assert.fail;
diff --git a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTypeAwareTupleWriterTest.java b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMTypeAwareTupleWriterTest.java
similarity index 98%
rename from hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTypeAwareTupleWriterTest.java
rename to hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMTypeAwareTupleWriterTest.java
index 91bb6e1..75e76bb 100644
--- a/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/impls/LSMTypeAwareTupleWriterTest.java
+++ b/hyracks-storage-am-lsmtree-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsmtree/tuples/LSMTypeAwareTupleWriterTest.java
@@ -1,4 +1,4 @@
-package edu.uci.ics.hyracks.storage.am.lsmtree.impls;
+package edu.uci.ics.hyracks.storage.am.lsmtree.tuples;
import static org.junit.Assert.fail;