http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleWriter.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleWriter.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleWriter.java index 502e43b..09ced10 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleWriter.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleWriter.java @@ -19,18 +19,22 @@ package org.apache.hyracks.storage.am.lsm.btree.tuples; +import static org.apache.hyracks.storage.am.btree.tuples.BTreeTypeAwareTupleReference.UPDATE_BIT_OFFSET; +import static org.apache.hyracks.storage.am.lsm.common.api.ILSMTreeTupleReference.ANTIMATTER_BIT_OFFSET; + import org.apache.hyracks.api.dataflow.value.ITypeTraits; import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference; -import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleReference; -import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriter; +import org.apache.hyracks.storage.am.btree.tuples.BTreeTypeAwareTupleWriter; +import org.apache.hyracks.storage.am.common.util.BitOperationUtils; import org.apache.hyracks.storage.am.lsm.common.api.ILSMTreeTupleWriter; -public class LSMBTreeTupleWriter extends TypeAwareTupleWriter implements ILSMTreeTupleWriter { +public class LSMBTreeTupleWriter extends BTreeTypeAwareTupleWriter implements ILSMTreeTupleWriter { + private boolean isAntimatter; private final int numKeyFields; - public LSMBTreeTupleWriter(ITypeTraits[] typeTraits, int numKeyFields, boolean isAntimatter) { - super(typeTraits); + public LSMBTreeTupleWriter(ITypeTraits[] typeTraits, int numKeyFields, boolean isAntimatter, boolean updateAware) { + super(typeTraits, updateAware); this.numKeyFields = numKeyFields; this.isAntimatter = isAntimatter; } @@ -51,20 +55,28 @@ public class LSMBTreeTupleWriter extends TypeAwareTupleWriter implements ILSMTre } @Override - public ITreeIndexTupleReference createTupleReference() { - return new LSMBTreeTupleReference(typeTraits, numKeyFields); + public LSMBTreeTupleReference createTupleReference() { + return new LSMBTreeTupleReference(typeTraits, numKeyFields, updateAware); } @Override protected int getNullFlagsBytes(int numFields) { - // +1.0 is for matter/antimatter bit. - return (int) Math.ceil((numFields + 1.0) / 8.0); + // numFields + matter/antimatter bit + updated bit (optional). + int numBits = numFields + 1; + if (updateAware) { + numBits++; + } + return BitOperationUtils.getFlagBytes(numBits); } @Override protected int getNullFlagsBytes(ITupleReference tuple) { - // +1.0 is for matter/antimatter bit. - return (int) Math.ceil((tuple.getFieldCount() + 1.0) / 8.0); + // # of fields + matter/antimatter bit + updated bit (optional). + int numBits = tuple.getFieldCount() + 1; + if (updateAware) { + numBits++; + } + return BitOperationUtils.getFlagBytes(numBits); } @Override @@ -72,18 +84,18 @@ public class LSMBTreeTupleWriter extends TypeAwareTupleWriter implements ILSMTre int bytesWritten = -1; if (isAntimatter) { bytesWritten = super.writeTupleFields(tuple, 0, numKeyFields, targetBuf, targetOff); - setAntimatterBit(targetBuf, targetOff); + // Set antimatter bit to 1. + BitOperationUtils.setBit(targetBuf, targetOff, ANTIMATTER_BIT_OFFSET); } else { bytesWritten = super.writeTuple(tuple, targetBuf, targetOff); } + if (updateAware && isUpdated) { + // Set update-in-place bit to 1. + BitOperationUtils.setBit(targetBuf, targetOff, UPDATE_BIT_OFFSET); + } return bytesWritten; } - private void setAntimatterBit(byte[] targetBuf, int targetOff) { - // Set leftmost bit to 1. - targetBuf[targetOff] = (byte) (targetBuf[targetOff] | (1 << 7)); - } - @Override public void setAntimatter(boolean isDelete) { this.isAntimatter = isDelete;
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleWriterFactory.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleWriterFactory.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleWriterFactory.java index 4ea501a..ad4f6eb 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleWriterFactory.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleWriterFactory.java @@ -20,24 +20,25 @@ package org.apache.hyracks.storage.am.lsm.btree.tuples; import org.apache.hyracks.api.dataflow.value.ITypeTraits; -import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriterFactory; -import org.apache.hyracks.storage.am.lsm.common.api.ILSMTreeTupleWriter; +import org.apache.hyracks.storage.am.btree.tuples.BTreeTypeAwareTupleWriter; +import org.apache.hyracks.storage.am.btree.tuples.BTreeTypeAwareTupleWriterFactory; -public class LSMBTreeTupleWriterFactory extends TypeAwareTupleWriterFactory { +public class LSMBTreeTupleWriterFactory extends BTreeTypeAwareTupleWriterFactory { private static final long serialVersionUID = 1L; private final int numKeyFields; private final boolean isAntimatter; - public LSMBTreeTupleWriterFactory(ITypeTraits[] typeTraits, int numKeyFields, boolean isAntimatter) { - super(typeTraits); + public LSMBTreeTupleWriterFactory(ITypeTraits[] typeTraits, int numKeyFields, boolean isAntimatter, + boolean updateAware) { + super(typeTraits, updateAware); this.numKeyFields = numKeyFields; this.isAntimatter = isAntimatter; } @Override - public ILSMTreeTupleWriter createTupleWriter() { - return new LSMBTreeTupleWriter(typeTraits, numKeyFields, isAntimatter); + public BTreeTypeAwareTupleWriter createTupleWriter() { + return new LSMBTreeTupleWriter(typeTraits, numKeyFields, isAntimatter, updateAware); } } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/utils/LSMBTreeUtil.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/utils/LSMBTreeUtil.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/utils/LSMBTreeUtil.java index 792b872..5e50eee 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/utils/LSMBTreeUtil.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/utils/LSMBTreeUtil.java @@ -30,6 +30,7 @@ import org.apache.hyracks.storage.am.bloomfilter.impls.BloomFilterFactory; import org.apache.hyracks.storage.am.btree.frames.BTreeNSMInteriorFrameFactory; import org.apache.hyracks.storage.am.btree.frames.BTreeNSMLeafFrameFactory; import org.apache.hyracks.storage.am.btree.impls.BTree; +import org.apache.hyracks.storage.am.btree.tuples.BTreeTypeAwareTupleWriterFactory; import org.apache.hyracks.storage.am.common.api.IMetadataPageManagerFactory; import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory; import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriterFactory; @@ -64,15 +65,16 @@ public class LSMBTreeUtil { ILSMMergePolicy mergePolicy, ILSMOperationTracker opTracker, ILSMIOOperationScheduler ioScheduler, ILSMIOOperationCallback ioOpCallback, boolean needKeyDupCheck, ITypeTraits[] filterTypeTraits, IBinaryComparatorFactory[] filterCmpFactories, int[] btreeFields, int[] filterFields, boolean durable, - IMetadataPageManagerFactory freePageManagerFactory) throws HyracksDataException { + IMetadataPageManagerFactory freePageManagerFactory, boolean updateAware) + throws HyracksDataException { LSMBTreeTupleWriterFactory insertTupleWriterFactory = - new LSMBTreeTupleWriterFactory(typeTraits, cmpFactories.length, false); + new LSMBTreeTupleWriterFactory(typeTraits, cmpFactories.length, false, updateAware); LSMBTreeTupleWriterFactory deleteTupleWriterFactory = - new LSMBTreeTupleWriterFactory(typeTraits, cmpFactories.length, true); + new LSMBTreeTupleWriterFactory(typeTraits, cmpFactories.length, true, updateAware); LSMBTreeCopyTupleWriterFactory copyTupleWriterFactory = - new LSMBTreeCopyTupleWriterFactory(typeTraits, cmpFactories.length); + new LSMBTreeCopyTupleWriterFactory(typeTraits, cmpFactories.length, updateAware); LSMBTreeTupleWriterFactory bulkLoadTupleWriterFactory = - new LSMBTreeTupleWriterFactory(typeTraits, cmpFactories.length, false); + new LSMBTreeTupleWriterFactory(typeTraits, cmpFactories.length, false, updateAware); ITreeIndexFrameFactory insertLeafFrameFactory = new BTreeNSMLeafFrameFactory(insertTupleWriterFactory); ITreeIndexFrameFactory copyTupleLeafFrameFactory = new BTreeNSMLeafFrameFactory(copyTupleWriterFactory); @@ -107,7 +109,7 @@ public class LSMBTreeUtil { deleteLeafFrameFactory, fileNameManager, diskBTreeFactory, bulkLoadBTreeFactory, bloomFilterFactory, filterHelper, filterFrameFactory, filterManager, bloomFilterFalsePositiveRate, typeTraits.length, cmpFactories, mergePolicy, opTracker, ioScheduler, ioOpCallback, needKeyDupCheck, btreeFields, - filterFields, durable); + filterFields, durable, updateAware); } public static ExternalBTree createExternalBTree(IIOManager ioManager, FileReference file, @@ -116,18 +118,18 @@ public class LSMBTreeUtil { ILSMOperationTracker opTracker, ILSMIOOperationScheduler ioScheduler, ILSMIOOperationCallback ioOpCallback, boolean durable, IMetadataPageManagerFactory freePageManagerFactory) { LSMBTreeTupleWriterFactory insertTupleWriterFactory = - new LSMBTreeTupleWriterFactory(typeTraits, cmpFactories.length, false); + new LSMBTreeTupleWriterFactory(typeTraits, cmpFactories.length, false, false); LSMBTreeTupleWriterFactory deleteTupleWriterFactory = - new LSMBTreeTupleWriterFactory(typeTraits, cmpFactories.length, true); + new LSMBTreeTupleWriterFactory(typeTraits, cmpFactories.length, true, false); LSMBTreeCopyTupleWriterFactory copyTupleWriterFactory = - new LSMBTreeCopyTupleWriterFactory(typeTraits, cmpFactories.length); + new LSMBTreeCopyTupleWriterFactory(typeTraits, cmpFactories.length, false); ITreeIndexFrameFactory insertLeafFrameFactory = new BTreeNSMLeafFrameFactory(insertTupleWriterFactory); ITreeIndexFrameFactory copyTupleLeafFrameFactory = new BTreeNSMLeafFrameFactory(copyTupleWriterFactory); ITreeIndexFrameFactory deleteLeafFrameFactory = new BTreeNSMLeafFrameFactory(deleteTupleWriterFactory); ITreeIndexFrameFactory interiorFrameFactory = new BTreeNSMInteriorFrameFactory(insertTupleWriterFactory); // This is the tuple writer that can do both inserts and deletes LSMBTreeTupleWriterFactory transactionTupleWriterFactory = - new LSMBTreeTupleWriterFactory(typeTraits, cmpFactories.length, false); + new LSMBTreeTupleWriterFactory(typeTraits, cmpFactories.length, false, false); // This is the leaf frame factory for transaction components since it // can be used for both inserts and deletes ITreeIndexFrameFactory transactionLeafFrameFactory = @@ -164,16 +166,16 @@ public class LSMBTreeUtil { buddyBtreeTypeTraits[i] = typeTraits[buddyBTreeFields[i]]; buddyBtreeCmpFactories[i] = cmpFactories[buddyBTreeFields[i]]; } - TypeAwareTupleWriterFactory buddyBtreeTupleWriterFactory = - new TypeAwareTupleWriterFactory(buddyBtreeTypeTraits); + BTreeTypeAwareTupleWriterFactory buddyBtreeTupleWriterFactory = + new BTreeTypeAwareTupleWriterFactory(buddyBtreeTypeTraits, false); ITreeIndexFrameFactory buddyBtreeInteriorFrameFactory = new BTreeNSMInteriorFrameFactory(buddyBtreeTupleWriterFactory); ITreeIndexFrameFactory buddyBtreeLeafFrameFactory = new BTreeNSMLeafFrameFactory(buddyBtreeTupleWriterFactory); LSMBTreeTupleWriterFactory insertTupleWriterFactory = - new LSMBTreeTupleWriterFactory(typeTraits, cmpFactories.length, false); + new LSMBTreeTupleWriterFactory(typeTraits, cmpFactories.length, false, false); LSMBTreeCopyTupleWriterFactory copyTupleWriterFactory = - new LSMBTreeCopyTupleWriterFactory(typeTraits, cmpFactories.length); + new LSMBTreeCopyTupleWriterFactory(typeTraits, cmpFactories.length, false); ITreeIndexFrameFactory insertLeafFrameFactory = new BTreeNSMLeafFrameFactory(insertTupleWriterFactory); ITreeIndexFrameFactory copyTupleLeafFrameFactory = new BTreeNSMLeafFrameFactory(copyTupleWriterFactory); ITreeIndexFrameFactory interiorFrameFactory = new BTreeNSMInteriorFrameFactory(insertTupleWriterFactory); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMTreeTupleReference.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMTreeTupleReference.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMTreeTupleReference.java index 4e7c874..cf5f7b5 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMTreeTupleReference.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMTreeTupleReference.java @@ -22,5 +22,8 @@ package org.apache.hyracks.storage.am.lsm.common.api; import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleReference; public interface ILSMTreeTupleReference extends ITreeIndexTupleReference { + + byte ANTIMATTER_BIT_OFFSET = 7; + public boolean isAntimatter(); } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndex.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndex.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndex.java index f611f93..1f2a810 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndex.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndex.java @@ -135,7 +135,7 @@ public class LSMInvertedIndex extends AbstractLSMIndex implements IInvertedIndex BTree deleteKeysBTree = BTreeUtils.createBTree(virtualBufferCache, new VirtualFreePageManager(virtualBufferCache), invListTypeTraits, invListCmpFactories, BTreeLeafFrameType.REGULAR_NSM, - ioManager.resolveAbsolutePath(fileManager.getBaseDir() + "_virtual_del_" + i)); + ioManager.resolveAbsolutePath(fileManager.getBaseDir() + "_virtual_del_" + i), false); LSMInvertedIndexMemoryComponent mutableComponent = new LSMInvertedIndexMemoryComponent(memInvIndex, deleteKeysBTree, virtualBufferCache, i == 0 ? true : false, filterHelper == null ? null : filterHelper.createFilter()); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndex.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndex.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndex.java index 498f6f5..54cae72 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndex.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndex.java @@ -74,7 +74,7 @@ public class InMemoryInvertedIndex implements IInPlaceInvertedIndex { btreeCmpFactories[tokenTypeTraits.length + i] = invListCmpFactories[i]; } this.btree = BTreeUtils.createBTree(virtualBufferCache, virtualFreePageManager, btreeTypeTraits, - btreeCmpFactories, BTreeLeafFrameType.REGULAR_NSM, btreeFileRef); + btreeCmpFactories, BTreeLeafFrameType.REGULAR_NSM, btreeFileRef, false); } @Override http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndex.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndex.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndex.java index 9332302..5d8cafb 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndex.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndex.java @@ -119,7 +119,7 @@ public class OnDiskInvertedIndex implements IInPlaceInvertedIndex { this.tokenTypeTraits = tokenTypeTraits; this.tokenCmpFactories = tokenCmpFactories; this.btree = BTreeUtils.createBTree(bufferCache, getBTreeTypeTraits(tokenTypeTraits), tokenCmpFactories, - BTreeLeafFrameType.REGULAR_NSM, btreeFile, pageManagerFactory.createPageManager(bufferCache)); + BTreeLeafFrameType.REGULAR_NSM, btreeFile, pageManagerFactory.createPageManager(bufferCache), false); this.numTokenFields = btree.getComparatorFactories().length; this.numInvListKeys = invListCmpFactories.length; this.invListsFile = invListsFile; http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/InvertedIndexUtils.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/InvertedIndexUtils.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/InvertedIndexUtils.java index 540e100..48afdbc3 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/InvertedIndexUtils.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/InvertedIndexUtils.java @@ -29,6 +29,7 @@ import org.apache.hyracks.api.io.IIOManager; import org.apache.hyracks.storage.am.bloomfilter.impls.BloomFilterFactory; import org.apache.hyracks.storage.am.btree.frames.BTreeLeafFrameType; import org.apache.hyracks.storage.am.btree.frames.BTreeNSMInteriorFrameFactory; +import org.apache.hyracks.storage.am.btree.tuples.BTreeTypeAwareTupleWriterFactory; import org.apache.hyracks.storage.am.btree.util.BTreeUtils; import org.apache.hyracks.storage.am.common.api.IMetadataPageManagerFactory; import org.apache.hyracks.storage.am.common.api.IPageManager; @@ -108,7 +109,8 @@ public class InvertedIndexUtils { public static BTreeFactory createDeletedKeysBTreeFactory(IIOManager ioManager, ITypeTraits[] invListTypeTraits, IBinaryComparatorFactory[] invListCmpFactories, IBufferCache diskBufferCache, IPageManagerFactory freePageManagerFactory) throws HyracksDataException { - TypeAwareTupleWriterFactory tupleWriterFactory = new TypeAwareTupleWriterFactory(invListTypeTraits); + BTreeTypeAwareTupleWriterFactory tupleWriterFactory = + new BTreeTypeAwareTupleWriterFactory(invListTypeTraits, false); ITreeIndexFrameFactory leafFrameFactory = BTreeUtils.getLeafFrameFactory(tupleWriterFactory, BTreeLeafFrameType.REGULAR_NSM); ITreeIndexFrameFactory interiorFrameFactory = new BTreeNSMInteriorFrameFactory(tupleWriterFactory); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java index 88a3285..6ca48b3 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java @@ -50,6 +50,7 @@ import org.apache.hyracks.storage.am.lsm.common.freepage.VirtualFreePageManager; import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndex; import org.apache.hyracks.storage.am.lsm.common.impls.LSMComponentFileReferences; import org.apache.hyracks.storage.am.lsm.common.impls.LSMComponentFilterManager; +import org.apache.hyracks.storage.am.rtree.frames.RTreeFrameFactory; import org.apache.hyracks.storage.am.rtree.impls.RTree; import org.apache.hyracks.storage.common.IIndexCursor; import org.apache.hyracks.storage.common.IModificationOperationCallback; @@ -78,7 +79,7 @@ public abstract class AbstractLSMRTree extends AbstractLSMIndex implements ITree protected final ITreeIndexFrameFactory btreeLeafFrameFactory; public AbstractLSMRTree(IIOManager ioManager, List<IVirtualBufferCache> virtualBufferCaches, - ITreeIndexFrameFactory rtreeInteriorFrameFactory, ITreeIndexFrameFactory rtreeLeafFrameFactory, + RTreeFrameFactory rtreeInteriorFrameFactory, RTreeFrameFactory rtreeLeafFrameFactory, ITreeIndexFrameFactory btreeInteriorFrameFactory, ITreeIndexFrameFactory btreeLeafFrameFactory, ILSMIndexFileManager fileManager, ILSMDiskComponentFactory componentFactory, int fieldCount, IBinaryComparatorFactory[] rtreeCmpFactories, IBinaryComparatorFactory[] btreeCmpFactories, http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java index 445b5b5..0a47aea 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java @@ -64,6 +64,7 @@ import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndexOperationC import org.apache.hyracks.storage.am.lsm.common.impls.LSMComponentFileReferences; import org.apache.hyracks.storage.am.lsm.common.impls.LSMComponentFilterManager; import org.apache.hyracks.storage.am.lsm.common.impls.TreeIndexFactory; +import org.apache.hyracks.storage.am.rtree.frames.RTreeFrameFactory; import org.apache.hyracks.storage.am.rtree.impls.RTree; import org.apache.hyracks.storage.am.rtree.impls.RTreeSearchCursor; import org.apache.hyracks.storage.am.rtree.impls.SearchPredicate; @@ -78,7 +79,7 @@ public class LSMRTree extends AbstractLSMRTree { protected final int[] buddyBTreeFields; public LSMRTree(IIOManager ioManager, List<IVirtualBufferCache> virtualBufferCaches, - ITreeIndexFrameFactory rtreeInteriorFrameFactory, ITreeIndexFrameFactory rtreeLeafFrameFactory, + RTreeFrameFactory rtreeInteriorFrameFactory, RTreeFrameFactory rtreeLeafFrameFactory, ITreeIndexFrameFactory btreeInteriorFrameFactory, ITreeIndexFrameFactory btreeLeafFrameFactory, ILSMIndexFileManager fileNameManager, TreeIndexFactory<RTree> diskRTreeFactory, TreeIndexFactory<BTree> diskBTreeFactory, BloomFilterFactory bloomFilterFactory, http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuples.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuples.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuples.java index 58d4421..94648fb 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuples.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuples.java @@ -60,6 +60,7 @@ import org.apache.hyracks.storage.am.lsm.common.impls.LSMTreeIndexAccessor; import org.apache.hyracks.storage.am.lsm.common.impls.LSMTreeIndexAccessor.ICursorFactory; import org.apache.hyracks.storage.am.lsm.common.impls.MergeOperation; import org.apache.hyracks.storage.am.lsm.common.impls.TreeIndexFactory; +import org.apache.hyracks.storage.am.rtree.frames.RTreeFrameFactory; import org.apache.hyracks.storage.am.rtree.impls.RTree; import org.apache.hyracks.storage.am.rtree.impls.RTreeSearchCursor; import org.apache.hyracks.storage.am.rtree.impls.SearchPredicate; @@ -78,7 +79,7 @@ public class LSMRTreeWithAntiMatterTuples extends AbstractLSMRTree { private final ILSMDiskComponentFactory bulkLoaComponentFactory; public LSMRTreeWithAntiMatterTuples(IIOManager ioManager, List<IVirtualBufferCache> virtualBufferCaches, - ITreeIndexFrameFactory rtreeInteriorFrameFactory, ITreeIndexFrameFactory rtreeLeafFrameFactory, + RTreeFrameFactory rtreeInteriorFrameFactory, RTreeFrameFactory rtreeLeafFrameFactory, ITreeIndexFrameFactory btreeInteriorFrameFactory, ITreeIndexFrameFactory btreeLeafFrameFactory, ILSMIndexFileManager fileManager, TreeIndexFactory<RTree> diskRTreeFactory, TreeIndexFactory<RTree> bulkLoadRTreeFactory, IComponentFilterHelper filterHelper, http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeCopyTupleWriterFactory.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeCopyTupleWriterFactory.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeCopyTupleWriterFactory.java index 1e36345..6585ffe 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeCopyTupleWriterFactory.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeCopyTupleWriterFactory.java @@ -20,20 +20,18 @@ package org.apache.hyracks.storage.am.lsm.rtree.tuples; import org.apache.hyracks.api.dataflow.value.ITypeTraits; -import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleWriter; -import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriterFactory; +import org.apache.hyracks.storage.am.rtree.tuples.RTreeTypeAwareTupleWriter; +import org.apache.hyracks.storage.am.rtree.tuples.RTreeTypeAwareTupleWriterFactory; -public class LSMRTreeCopyTupleWriterFactory extends TypeAwareTupleWriterFactory { +public class LSMRTreeCopyTupleWriterFactory extends RTreeTypeAwareTupleWriterFactory { private static final long serialVersionUID = 1L; - private final ITypeTraits[] typeTraits; public LSMRTreeCopyTupleWriterFactory(ITypeTraits[] typeTraits) { super(typeTraits); - this.typeTraits = typeTraits; } @Override - public ITreeIndexTupleWriter createTupleWriter() { + public RTreeTypeAwareTupleWriter createTupleWriter() { return new LSMRTreeCopyTupleWriter(typeTraits); } } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleReference.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleReference.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleReference.java index f49ecb0..86a6a39 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleReference.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleReference.java @@ -20,10 +20,11 @@ package org.apache.hyracks.storage.am.lsm.rtree.tuples; import org.apache.hyracks.api.dataflow.value.ITypeTraits; -import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleReference; +import org.apache.hyracks.storage.am.common.util.BitOperationUtils; import org.apache.hyracks.storage.am.lsm.common.api.ILSMTreeTupleReference; +import org.apache.hyracks.storage.am.rtree.tuples.RTreeTypeAwareTupleReference; -public class LSMRTreeTupleReference extends TypeAwareTupleReference implements ILSMTreeTupleReference { +public class LSMRTreeTupleReference extends RTreeTypeAwareTupleReference implements ILSMTreeTupleReference { public LSMRTreeTupleReference(ITypeTraits[] typeTraits) { super(typeTraits); @@ -32,17 +33,13 @@ public class LSMRTreeTupleReference extends TypeAwareTupleReference implements I @Override protected int getNullFlagsBytes() { // +1.0 is for matter/antimatter bit. - return (int) Math.ceil((fieldCount + 1.0) / 8.0); + return BitOperationUtils.getFlagBytes(fieldCount + 1); } @Override public boolean isAntimatter() { - // Check if the leftmost bit is 0 or 1. - final byte mask = (byte) (1 << 7); - if ((buf[tupleStartOff] & mask) != 0) { - return true; - } - return false; + // Check antimatter bit. + return BitOperationUtils.getBit(buf, tupleStartOff, ANTIMATTER_BIT_OFFSET); } public int getTupleStart() { http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleReferenceForPointMBR.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleReferenceForPointMBR.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleReferenceForPointMBR.java index 4ea10a3..1432aba 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleReferenceForPointMBR.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleReferenceForPointMBR.java @@ -21,34 +21,26 @@ package org.apache.hyracks.storage.am.lsm.rtree.tuples; import org.apache.hyracks.api.dataflow.value.ITypeTraits; import org.apache.hyracks.storage.am.common.api.ITreeIndexFrame; +import org.apache.hyracks.storage.am.common.util.BitOperationUtils; import org.apache.hyracks.storage.am.lsm.common.api.ILSMTreeTupleReference; -import org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder; -import org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder.VarLenIntDecoder; +import org.apache.hyracks.storage.am.rtree.tuples.RTreeTypeAwareTupleReference; -public class LSMRTreeTupleReferenceForPointMBR implements ILSMTreeTupleReference { +public class LSMRTreeTupleReferenceForPointMBR extends RTreeTypeAwareTupleReference implements ILSMTreeTupleReference { private final int inputKeyFieldCount; //double field count for mbr secondary key of an input tuple private final int inputTotalFieldCount; //total field count (key + value fields) of an input tuple. private final int storedKeyFieldCount; //double field count to be stored for the mbr secondary key - private final ITypeTraits[] typeTraits; - private final int nullFlagsBytes; - private final int[] decodedFieldSlots; - - private byte[] buf; - private int tupleStartOff; - private int dataStartOff; private final boolean antimatterAware; - private VarLenIntDecoder encDec = VarLenIntEncoderDecoder.createDecoder(); public LSMRTreeTupleReferenceForPointMBR(ITypeTraits[] typeTraits, int keyFieldCount, int valueFieldCount, boolean antimatterAware) { + super(typeTraits); this.inputKeyFieldCount = keyFieldCount; this.inputTotalFieldCount = keyFieldCount + valueFieldCount; this.storedKeyFieldCount = keyFieldCount / 2; - this.typeTraits = typeTraits; this.nullFlagsBytes = getNullFlagsBytes(); - decodedFieldSlots = new int[inputTotalFieldCount]; + this.decodedFieldSlots = new int[inputTotalFieldCount]; this.antimatterAware = antimatterAware; } @@ -109,11 +101,6 @@ public class LSMRTreeTupleReferenceForPointMBR implements ILSMTreeTupleReference } @Override - public byte[] getFieldData(int fIdx) { - return buf; - } - - @Override public int getFieldLength(int fIdx) { if (getInternalFieldIdx(fIdx) == 0) { return decodedFieldSlots[0]; @@ -139,8 +126,9 @@ public class LSMRTreeTupleReferenceForPointMBR implements ILSMTreeTupleReference } } - private int getNullFlagsBytes() { - return (int) Math.ceil((inputTotalFieldCount + (antimatterAware ? 1 : 0)) / 8.0); + @Override + protected int getNullFlagsBytes() { + return BitOperationUtils.getFlagBytes(inputTotalFieldCount + (antimatterAware ? 1 : 0)); } @Override @@ -150,11 +138,7 @@ public class LSMRTreeTupleReferenceForPointMBR implements ILSMTreeTupleReference @Override public boolean isAntimatter() { - // Check if the leftmost bit is 0 or 1. - final byte mask = (byte) (1 << 7); - if ((buf[tupleStartOff] & mask) != 0) { - return true; - } - return false; + // Check antimatter bit. + return BitOperationUtils.getBit(buf, tupleStartOff, ANTIMATTER_BIT_OFFSET); } } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleWriter.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleWriter.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleWriter.java index 83eda02..5650cbb 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleWriter.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleWriter.java @@ -19,9 +19,11 @@ package org.apache.hyracks.storage.am.lsm.rtree.tuples; +import static org.apache.hyracks.storage.am.lsm.common.api.ILSMTreeTupleReference.ANTIMATTER_BIT_OFFSET; + import org.apache.hyracks.api.dataflow.value.ITypeTraits; import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference; -import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleReference; +import org.apache.hyracks.storage.am.common.util.BitOperationUtils; import org.apache.hyracks.storage.am.lsm.common.api.ILSMTreeTupleWriter; import org.apache.hyracks.storage.am.rtree.tuples.RTreeTypeAwareTupleWriter; @@ -34,7 +36,7 @@ public class LSMRTreeTupleWriter extends RTreeTypeAwareTupleWriter implements IL } @Override - public ITreeIndexTupleReference createTupleReference() { + public LSMRTreeTupleReference createTupleReference() { return new LSMRTreeTupleReference(typeTraits); } @@ -47,7 +49,8 @@ public class LSMRTreeTupleWriter extends RTreeTypeAwareTupleWriter implements IL public int writeTuple(ITupleReference tuple, byte[] targetBuf, int targetOff) { int bytesWritten = super.writeTuple(tuple, targetBuf, targetOff); if (isAntimatter) { - setAntimatterBit(targetBuf, targetOff); + // Set antimatter bit to 1. + BitOperationUtils.setBit(targetBuf, targetOff, ANTIMATTER_BIT_OFFSET); } return bytesWritten; } @@ -55,18 +58,13 @@ public class LSMRTreeTupleWriter extends RTreeTypeAwareTupleWriter implements IL @Override protected int getNullFlagsBytes(int numFields) { // +1.0 is for matter/antimatter bit. - return (int) Math.ceil((numFields + 1.0) / 8.0); + return BitOperationUtils.getFlagBytes(numFields + 1); } @Override protected int getNullFlagsBytes(ITupleReference tuple) { // +1.0 is for matter/antimatter bit. - return (int) Math.ceil((tuple.getFieldCount() + 1.0) / 8.0); - } - - protected void setAntimatterBit(byte[] targetBuf, int targetOff) { - // Set leftmost bit to 1. - targetBuf[targetOff] = (byte) (targetBuf[targetOff] | (1 << 7)); + return BitOperationUtils.getFlagBytes(tuple.getFieldCount() + 1); } @Override http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleWriterFactory.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleWriterFactory.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleWriterFactory.java index 4d06d84..4ad5e3a 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleWriterFactory.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleWriterFactory.java @@ -20,23 +20,20 @@ package org.apache.hyracks.storage.am.lsm.rtree.tuples; import org.apache.hyracks.api.dataflow.value.ITypeTraits; -import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriterFactory; -import org.apache.hyracks.storage.am.lsm.common.api.ILSMTreeTupleWriter; +import org.apache.hyracks.storage.am.rtree.tuples.RTreeTypeAwareTupleWriterFactory; -public class LSMRTreeTupleWriterFactory extends TypeAwareTupleWriterFactory { +public class LSMRTreeTupleWriterFactory extends RTreeTypeAwareTupleWriterFactory { private static final long serialVersionUID = 1L; - private final ITypeTraits[] typeTraits; private final boolean isAntimatter; public LSMRTreeTupleWriterFactory(ITypeTraits[] typeTraits, boolean isAntimatter) { super(typeTraits); - this.typeTraits = typeTraits; this.isAntimatter = isAntimatter; } @Override - public ILSMTreeTupleWriter createTupleWriter() { + public LSMRTreeTupleWriter createTupleWriter() { return new LSMRTreeTupleWriter(typeTraits, isAntimatter); } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleWriterFactoryForPointMBR.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleWriterFactoryForPointMBR.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleWriterFactoryForPointMBR.java index eec6f3b..4df2512 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleWriterFactoryForPointMBR.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleWriterFactoryForPointMBR.java @@ -20,10 +20,10 @@ package org.apache.hyracks.storage.am.lsm.rtree.tuples; import org.apache.hyracks.api.dataflow.value.ITypeTraits; -import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriterFactory; -import org.apache.hyracks.storage.am.lsm.common.api.ILSMTreeTupleWriter; +import org.apache.hyracks.storage.am.rtree.tuples.RTreeTypeAwareTupleWriter; +import org.apache.hyracks.storage.am.rtree.tuples.RTreeTypeAwareTupleWriterFactory; -public class LSMRTreeTupleWriterFactoryForPointMBR extends TypeAwareTupleWriterFactory { +public class LSMRTreeTupleWriterFactoryForPointMBR extends RTreeTypeAwareTupleWriterFactory { private static final long serialVersionUID = 1L; private final int keyFieldCount; @@ -41,7 +41,7 @@ public class LSMRTreeTupleWriterFactoryForPointMBR extends TypeAwareTupleWriterF } @Override - public ILSMTreeTupleWriter createTupleWriter() { + public RTreeTypeAwareTupleWriter createTupleWriter() { return new LSMRTreeTupleWriterForPointMBR(typeTraits, keyFieldCount, valueFieldCount, antimatterAware, isAntimatter); } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleWriterForPointMBR.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleWriterForPointMBR.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleWriterForPointMBR.java index 4ccfd47..ce6bdeb 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleWriterForPointMBR.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMRTreeTupleWriterForPointMBR.java @@ -19,9 +19,11 @@ package org.apache.hyracks.storage.am.lsm.rtree.tuples; +import static org.apache.hyracks.storage.am.lsm.common.api.ILSMTreeTupleReference.ANTIMATTER_BIT_OFFSET; + import org.apache.hyracks.api.dataflow.value.ITypeTraits; import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference; -import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleReference; +import org.apache.hyracks.storage.am.common.util.BitOperationUtils; import org.apache.hyracks.storage.am.lsm.common.api.ILSMTreeTupleReference; import org.apache.hyracks.storage.am.lsm.common.api.ILSMTreeTupleWriter; import org.apache.hyracks.storage.am.rtree.tuples.RTreeTypeAwareTupleWriter; @@ -77,7 +79,7 @@ public class LSMRTreeTupleWriterForPointMBR extends RTreeTypeAwareTupleWriter im } @Override - public ITreeIndexTupleReference createTupleReference() { + public LSMRTreeTupleReferenceForPointMBR createTupleReference() { return new LSMRTreeTupleReferenceForPointMBR(typeTraits, inputKeyFieldCount, valueFieldCount, antimatterAware); } @@ -135,7 +137,7 @@ public class LSMRTreeTupleWriterForPointMBR extends RTreeTypeAwareTupleWriter im @Override protected int getNullFlagsBytes(ITupleReference tuple) { - return (int) Math.ceil((storedTotalFieldCount + (antimatterAware ? 1 : 0)) / 8.0); + return BitOperationUtils.getFlagBytes(storedTotalFieldCount + (antimatterAware ? 1 : 0)); } @Override @@ -155,8 +157,8 @@ public class LSMRTreeTupleWriterForPointMBR extends RTreeTypeAwareTupleWriter im } protected void setAntimatterBit(byte[] targetBuf, int targetOff) { - // Set leftmost bit to 1. - targetBuf[targetOff] = (byte) (targetBuf[targetOff] | (1 << 7)); + // Set antimatter bit to 1. + BitOperationUtils.setBit(targetBuf, targetOff, ANTIMATTER_BIT_OFFSET); } @Override http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMTypeAwareTupleWriterFactory.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMTypeAwareTupleWriterFactory.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMTypeAwareTupleWriterFactory.java deleted file mode 100644 index 31a9278..0000000 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMTypeAwareTupleWriterFactory.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.hyracks.storage.am.lsm.rtree.tuples; - -import org.apache.hyracks.api.dataflow.value.ITypeTraits; -import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleWriter; -import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriter; -import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriterFactory; -import org.apache.hyracks.storage.am.rtree.tuples.RTreeTypeAwareTupleWriter; - -public class LSMTypeAwareTupleWriterFactory extends TypeAwareTupleWriterFactory { - - private static final long serialVersionUID = 1L; - private ITypeTraits[] typeTraits; - private final boolean isAntimatter; - - public LSMTypeAwareTupleWriterFactory(ITypeTraits[] typeTraits, boolean isAntimatter) { - super(typeTraits); - this.typeTraits = typeTraits; - this.isAntimatter = isAntimatter; - } - - @Override - public ITreeIndexTupleWriter createTupleWriter() { - if (isAntimatter) { - return new TypeAwareTupleWriter(typeTraits); - } else { - return new RTreeTypeAwareTupleWriter(typeTraits); - } - } - -} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/utils/LSMRTreeUtils.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/utils/LSMRTreeUtils.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/utils/LSMRTreeUtils.java index 48cd589..5e3a198 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/utils/LSMRTreeUtils.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/utils/LSMRTreeUtils.java @@ -34,10 +34,10 @@ import org.apache.hyracks.storage.am.bloomfilter.impls.BloomFilterFactory; import org.apache.hyracks.storage.am.btree.frames.BTreeNSMInteriorFrameFactory; import org.apache.hyracks.storage.am.btree.frames.BTreeNSMLeafFrameFactory; import org.apache.hyracks.storage.am.btree.impls.BTree; +import org.apache.hyracks.storage.am.btree.tuples.BTreeTypeAwareTupleWriterFactory; import org.apache.hyracks.storage.am.common.api.IMetadataPageManagerFactory; import org.apache.hyracks.storage.am.common.api.IPrimitiveValueProviderFactory; import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory; -import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleWriterFactory; import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriterFactory; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallback; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationScheduler; @@ -59,7 +59,7 @@ import org.apache.hyracks.storage.am.lsm.rtree.impls.RTreeFactory; import org.apache.hyracks.storage.am.lsm.rtree.tuples.LSMRTreeCopyTupleWriterFactory; import org.apache.hyracks.storage.am.lsm.rtree.tuples.LSMRTreeTupleWriterFactory; import org.apache.hyracks.storage.am.lsm.rtree.tuples.LSMRTreeTupleWriterFactoryForPointMBR; -import org.apache.hyracks.storage.am.lsm.rtree.tuples.LSMTypeAwareTupleWriterFactory; +import org.apache.hyracks.storage.am.rtree.frames.RTreeFrameFactory; import org.apache.hyracks.storage.am.rtree.frames.RTreeNSMInteriorFrameFactory; import org.apache.hyracks.storage.am.rtree.frames.RTreeNSMLeafFrameFactory; import org.apache.hyracks.storage.am.rtree.frames.RTreePolicyType; @@ -67,6 +67,7 @@ import org.apache.hyracks.storage.am.rtree.impls.RTree; import org.apache.hyracks.storage.am.rtree.linearize.HilbertDoubleComparatorFactory; import org.apache.hyracks.storage.am.rtree.linearize.ZCurveDoubleComparatorFactory; import org.apache.hyracks.storage.am.rtree.linearize.ZCurveIntComparatorFactory; +import org.apache.hyracks.storage.am.rtree.tuples.RTreeTypeAwareTupleWriterFactory; import org.apache.hyracks.storage.common.buffercache.IBufferCache; public class LSMRTreeUtils { @@ -86,20 +87,20 @@ public class LSMRTreeUtils { for (int i = 0; i < valueFieldCount; i++) { btreeTypeTraits[i] = typeTraits[buddyBTreeFields[i]]; } - ITreeIndexTupleWriterFactory rtreeInteriorFrameTupleWriterFactory = - new LSMTypeAwareTupleWriterFactory(typeTraits, false); - ITreeIndexTupleWriterFactory rtreeLeafFrameTupleWriterFactory = null; + RTreeTypeAwareTupleWriterFactory rtreeInteriorFrameTupleWriterFactory = + new RTreeTypeAwareTupleWriterFactory(typeTraits); + RTreeTypeAwareTupleWriterFactory rtreeLeafFrameTupleWriterFactory = null; if (isPointMBR) { rtreeLeafFrameTupleWriterFactory = new LSMRTreeTupleWriterFactoryForPointMBR(typeTraits, keyFieldCount, valueFieldCount, false, false); } else { rtreeLeafFrameTupleWriterFactory = rtreeInteriorFrameTupleWriterFactory; } - ITreeIndexTupleWriterFactory btreeTupleWriterFactory = - new LSMTypeAwareTupleWriterFactory(btreeTypeTraits, true); - ITreeIndexFrameFactory rtreeInteriorFrameFactory = new RTreeNSMInteriorFrameFactory( + BTreeTypeAwareTupleWriterFactory btreeTupleWriterFactory = + new BTreeTypeAwareTupleWriterFactory(btreeTypeTraits, false); + RTreeFrameFactory rtreeInteriorFrameFactory = new RTreeNSMInteriorFrameFactory( rtreeInteriorFrameTupleWriterFactory, valueProviderFactories, rtreePolicyType, isPointMBR); - ITreeIndexFrameFactory rtreeLeafFrameFactory = new RTreeNSMLeafFrameFactory(rtreeLeafFrameTupleWriterFactory, + RTreeFrameFactory rtreeLeafFrameFactory = new RTreeNSMLeafFrameFactory(rtreeLeafFrameTupleWriterFactory, valueProviderFactories, rtreePolicyType, isPointMBR); ITreeIndexFrameFactory btreeInteriorFrameFactory = new BTreeNSMInteriorFrameFactory(btreeTupleWriterFactory); ITreeIndexFrameFactory btreeLeafFrameFactory = new BTreeNSMLeafFrameFactory(btreeTupleWriterFactory); @@ -146,11 +147,11 @@ public class LSMRTreeUtils { ITypeTraits[] filterTypeTraits, IBinaryComparatorFactory[] filterCmpFactories, int[] filterFields, boolean durable, boolean isPointMBR, IMetadataPageManagerFactory freePageManagerFactory) throws HyracksDataException { - ITreeIndexTupleWriterFactory rtreeInteriorFrameTupleWriterFactory = + RTreeTypeAwareTupleWriterFactory rtreeInteriorFrameTupleWriterFactory = new LSMRTreeTupleWriterFactory(typeTraits, false); - ITreeIndexTupleWriterFactory rtreeLeafFrameTupleWriterFactory; - ITreeIndexTupleWriterFactory rtreeLeafFrameCopyTupleWriterFactory; - ITreeIndexTupleWriterFactory rtreeLeafFrameBulkLoadWriterFactory; + RTreeTypeAwareTupleWriterFactory rtreeLeafFrameTupleWriterFactory; + RTreeTypeAwareTupleWriterFactory rtreeLeafFrameCopyTupleWriterFactory; + RTreeTypeAwareTupleWriterFactory rtreeLeafFrameBulkLoadWriterFactory; if (isPointMBR) { int keyFieldCount = rtreeCmpFactories.length; int valueFieldCount = btreeComparatorFactories.length - keyFieldCount; @@ -166,13 +167,13 @@ public class LSMRTreeUtils { rtreeLeafFrameBulkLoadWriterFactory = new LSMRTreeTupleWriterFactory(typeTraits, false); } - LSMRTreeTupleWriterFactory btreeTupleWriterFactory = new LSMRTreeTupleWriterFactory(typeTraits, true); + LSMRTreeTupleWriterFactory btreeTupleWriterFactory = new LSMRTreeTupleWriterFactory(typeTraits, false); - ITreeIndexFrameFactory rtreeInteriorFrameFactory = new RTreeNSMInteriorFrameFactory( + RTreeFrameFactory rtreeInteriorFrameFactory = new RTreeNSMInteriorFrameFactory( rtreeInteriorFrameTupleWriterFactory, valueProviderFactories, rtreePolicyType, isPointMBR); - ITreeIndexFrameFactory rtreeLeafFrameFactory = new RTreeNSMLeafFrameFactory(rtreeLeafFrameTupleWriterFactory, + RTreeFrameFactory rtreeLeafFrameFactory = new RTreeNSMLeafFrameFactory(rtreeLeafFrameTupleWriterFactory, valueProviderFactories, rtreePolicyType, isPointMBR); - ITreeIndexFrameFactory rtreeLeafFrameBulkLoadFactory = new RTreeNSMLeafFrameFactory( + RTreeFrameFactory rtreeLeafFrameBulkLoadFactory = new RTreeNSMLeafFrameFactory( rtreeLeafFrameBulkLoadWriterFactory, valueProviderFactories, rtreePolicyType, isPointMBR); ITreeIndexFrameFactory btreeInteriorFrameFactory = new BTreeNSMInteriorFrameFactory(btreeTupleWriterFactory); @@ -237,20 +238,20 @@ public class LSMRTreeUtils { for (int i = 0; i < buddyBTreeFields.length; i++) { btreeTypeTraits[i] = typeTraits[buddyBTreeFields[i]]; } - ITreeIndexTupleWriterFactory rtreeInteriorFrameTupleWriterFactory = - new LSMTypeAwareTupleWriterFactory(typeTraits, false); - ITreeIndexTupleWriterFactory rtreeLeafFrameTupleWriterFactory = null; + RTreeTypeAwareTupleWriterFactory rtreeInteriorFrameTupleWriterFactory = + new RTreeTypeAwareTupleWriterFactory(typeTraits); + RTreeTypeAwareTupleWriterFactory rtreeLeafFrameTupleWriterFactory = null; if (isPointMBR) { rtreeLeafFrameTupleWriterFactory = new LSMRTreeTupleWriterFactoryForPointMBR(typeTraits, keyFieldCount, valueFieldCount, false, false); } else { rtreeLeafFrameTupleWriterFactory = rtreeInteriorFrameTupleWriterFactory; } - ITreeIndexTupleWriterFactory btreeTupleWriterFactory = - new LSMTypeAwareTupleWriterFactory(btreeTypeTraits, true); - ITreeIndexFrameFactory rtreeInteriorFrameFactory = new RTreeNSMInteriorFrameFactory( + BTreeTypeAwareTupleWriterFactory btreeTupleWriterFactory = + new BTreeTypeAwareTupleWriterFactory(btreeTypeTraits, false); + RTreeFrameFactory rtreeInteriorFrameFactory = new RTreeNSMInteriorFrameFactory( rtreeInteriorFrameTupleWriterFactory, valueProviderFactories, rtreePolicyType, isPointMBR); - ITreeIndexFrameFactory rtreeLeafFrameFactory = new RTreeNSMLeafFrameFactory(rtreeLeafFrameTupleWriterFactory, + RTreeFrameFactory rtreeLeafFrameFactory = new RTreeNSMLeafFrameFactory(rtreeLeafFrameTupleWriterFactory, valueProviderFactories, rtreePolicyType, isPointMBR); ITreeIndexFrameFactory btreeInteriorFrameFactory = new BTreeNSMInteriorFrameFactory(btreeTupleWriterFactory); ITreeIndexFrameFactory btreeLeafFrameFactory = new BTreeNSMLeafFrameFactory(btreeTupleWriterFactory); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeFrameFactory.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeFrameFactory.java b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeFrameFactory.java new file mode 100644 index 0000000..a873172 --- /dev/null +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeFrameFactory.java @@ -0,0 +1,51 @@ +/* + + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + + */ +package org.apache.hyracks.storage.am.rtree.frames; + +import org.apache.hyracks.storage.am.common.api.IPrimitiveValueProviderFactory; +import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory; +import org.apache.hyracks.storage.am.rtree.tuples.RTreeTypeAwareTupleWriterFactory; + +public abstract class RTreeFrameFactory implements ITreeIndexFrameFactory { + private static final long serialVersionUID = 1L; + protected final RTreeTypeAwareTupleWriterFactory tupleWriterFactory; + protected final IPrimitiveValueProviderFactory[] keyValueProviderFactories; + protected final RTreePolicyType rtreePolicyType; + protected final boolean isPointMBR; + + public RTreeFrameFactory(RTreeTypeAwareTupleWriterFactory tupleWriterFactory, + IPrimitiveValueProviderFactory[] keyValueProviderFactories, RTreePolicyType rtreePolicyType, + boolean isPointMBR) { + this.tupleWriterFactory = tupleWriterFactory; + if (keyValueProviderFactories.length % 2 != 0) { + throw new IllegalArgumentException("The key has different number of dimensions."); + } + this.keyValueProviderFactories = keyValueProviderFactories; + this.rtreePolicyType = rtreePolicyType; + this.isPointMBR = isPointMBR; + } + + @Override + public RTreeTypeAwareTupleWriterFactory getTupleWriterFactory() { + return tupleWriterFactory; + } + +} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMInteriorFrameFactory.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMInteriorFrameFactory.java b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMInteriorFrameFactory.java index 8798a70..b8b5a8c 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMInteriorFrameFactory.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMInteriorFrameFactory.java @@ -21,28 +21,15 @@ package org.apache.hyracks.storage.am.rtree.frames; import org.apache.hyracks.storage.am.common.api.IPrimitiveValueProvider; import org.apache.hyracks.storage.am.common.api.IPrimitiveValueProviderFactory; -import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory; -import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleWriterFactory; import org.apache.hyracks.storage.am.rtree.api.IRTreeInteriorFrame; +import org.apache.hyracks.storage.am.rtree.tuples.RTreeTypeAwareTupleWriterFactory; -public class RTreeNSMInteriorFrameFactory implements ITreeIndexFrameFactory { +public class RTreeNSMInteriorFrameFactory extends RTreeFrameFactory { - private static final long serialVersionUID = 1L; - private final ITreeIndexTupleWriterFactory tupleWriterFactory; - private final IPrimitiveValueProviderFactory[] keyValueProviderFactories; - private final RTreePolicyType rtreePolicyType; - private final boolean isPointMBR; - - public RTreeNSMInteriorFrameFactory(ITreeIndexTupleWriterFactory tupleWriterFactory, + public RTreeNSMInteriorFrameFactory(RTreeTypeAwareTupleWriterFactory tupleWriterFactory, IPrimitiveValueProviderFactory[] keyValueProviderFactories, RTreePolicyType rtreePolicyType, boolean isPointMBR) { - this.tupleWriterFactory = tupleWriterFactory; - if (keyValueProviderFactories.length % 2 != 0) { - throw new IllegalArgumentException("The key has different number of dimensions."); - } - this.keyValueProviderFactories = keyValueProviderFactories; - this.rtreePolicyType = rtreePolicyType; - this.isPointMBR = isPointMBR; + super(tupleWriterFactory, keyValueProviderFactories, rtreePolicyType, isPointMBR); } @Override @@ -55,9 +42,4 @@ public class RTreeNSMInteriorFrameFactory implements ITreeIndexFrameFactory { rtreePolicyType, isPointMBR); } - @Override - public ITreeIndexTupleWriterFactory getTupleWriterFactory() { - return tupleWriterFactory; - } - } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMLeafFrame.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMLeafFrame.java b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMLeafFrame.java index c86cc3d..fe46b41 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMLeafFrame.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMLeafFrame.java @@ -30,7 +30,7 @@ import org.apache.hyracks.storage.common.MultiComparator; public class RTreeNSMLeafFrame extends RTreeNSMFrame implements IRTreeLeafFrame { public RTreeNSMLeafFrame(ITreeIndexTupleWriter tupleWriter, IPrimitiveValueProvider[] keyValueProviders, - RTreePolicyType rtreePolicyType, boolean isPointMBR) { + RTreePolicyType rtreePolicyType, boolean isPointMBR) { super(tupleWriter, keyValueProviders, rtreePolicyType, isPointMBR); } @@ -82,8 +82,8 @@ public class RTreeNSMLeafFrame extends RTreeNSMFrame implements IRTreeLeafFrame int bytesWritten = tupleWriter.writeTuple(tuple, buf.array(), buf.getInt(Constants.FREE_SPACE_OFFSET)); buf.putInt(Constants.TUPLE_COUNT_OFFSET, buf.getInt(Constants.TUPLE_COUNT_OFFSET) + 1); buf.putInt(Constants.FREE_SPACE_OFFSET, buf.getInt(Constants.FREE_SPACE_OFFSET) + bytesWritten); - buf.putInt(TOTAL_FREE_SPACE_OFFSET, buf.getInt(TOTAL_FREE_SPACE_OFFSET) - bytesWritten - slotManager - .getSlotSize()); + buf.putInt(TOTAL_FREE_SPACE_OFFSET, + buf.getInt(TOTAL_FREE_SPACE_OFFSET) - bytesWritten - slotManager.getSlotSize()); } @Override @@ -101,8 +101,8 @@ public class RTreeNSMLeafFrame extends RTreeNSMFrame implements IRTreeLeafFrame // maintain space information buf.putInt(Constants.TUPLE_COUNT_OFFSET, buf.getInt(Constants.TUPLE_COUNT_OFFSET) - 1); - buf.putInt(TOTAL_FREE_SPACE_OFFSET, buf.getInt(TOTAL_FREE_SPACE_OFFSET) + tupleSize + slotManager - .getSlotSize()); + buf.putInt(TOTAL_FREE_SPACE_OFFSET, + buf.getInt(TOTAL_FREE_SPACE_OFFSET) + tupleSize + slotManager.getSlotSize()); } @Override http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMLeafFrameFactory.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMLeafFrameFactory.java b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMLeafFrameFactory.java index 8573119..e112b86 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMLeafFrameFactory.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/frames/RTreeNSMLeafFrameFactory.java @@ -21,28 +21,15 @@ package org.apache.hyracks.storage.am.rtree.frames; import org.apache.hyracks.storage.am.common.api.IPrimitiveValueProvider; import org.apache.hyracks.storage.am.common.api.IPrimitiveValueProviderFactory; -import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory; -import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleWriterFactory; import org.apache.hyracks.storage.am.rtree.api.IRTreeLeafFrame; +import org.apache.hyracks.storage.am.rtree.tuples.RTreeTypeAwareTupleWriterFactory; -public class RTreeNSMLeafFrameFactory implements ITreeIndexFrameFactory { +public class RTreeNSMLeafFrameFactory extends RTreeFrameFactory { - private static final long serialVersionUID = 1L; - private final ITreeIndexTupleWriterFactory tupleWriterFactory; - private final IPrimitiveValueProviderFactory[] keyValueProviderFactories; - private final RTreePolicyType rtreePolicyType; - private final boolean isPointMBR; - - public RTreeNSMLeafFrameFactory(ITreeIndexTupleWriterFactory tupleWriterFactory, + public RTreeNSMLeafFrameFactory(RTreeTypeAwareTupleWriterFactory tupleWriterFactory, IPrimitiveValueProviderFactory[] keyValueProviderFactories, RTreePolicyType rtreePolicyType, boolean isPointMBR) { - this.tupleWriterFactory = tupleWriterFactory; - if (keyValueProviderFactories.length % 2 != 0) { - throw new IllegalArgumentException("The key has different number of dimensions."); - } - this.keyValueProviderFactories = keyValueProviderFactories; - this.rtreePolicyType = rtreePolicyType; - this.isPointMBR = isPointMBR; + super(tupleWriterFactory, keyValueProviderFactories, rtreePolicyType, isPointMBR); } @Override @@ -55,9 +42,4 @@ public class RTreeNSMLeafFrameFactory implements ITreeIndexFrameFactory { rtreePolicyType, isPointMBR); } - @Override - public ITreeIndexTupleWriterFactory getTupleWriterFactory() { - return tupleWriterFactory; - } - } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/tuples/RTreeTypeAwareTupleReference.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/tuples/RTreeTypeAwareTupleReference.java b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/tuples/RTreeTypeAwareTupleReference.java new file mode 100644 index 0000000..61e2326 --- /dev/null +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/tuples/RTreeTypeAwareTupleReference.java @@ -0,0 +1,33 @@ +/* + + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + + */ +package org.apache.hyracks.storage.am.rtree.tuples; + +import org.apache.hyracks.api.dataflow.value.ITypeTraits; +import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleReference; +import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleReference; + +public class RTreeTypeAwareTupleReference extends TypeAwareTupleReference implements ITreeIndexTupleReference { + + public RTreeTypeAwareTupleReference(ITypeTraits[] typeTraits) { + super(typeTraits); + } + +} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/tuples/RTreeTypeAwareTupleWriterFactory.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/tuples/RTreeTypeAwareTupleWriterFactory.java b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/tuples/RTreeTypeAwareTupleWriterFactory.java index f14d89d..4536a0c 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/tuples/RTreeTypeAwareTupleWriterFactory.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/tuples/RTreeTypeAwareTupleWriterFactory.java @@ -20,20 +20,18 @@ package org.apache.hyracks.storage.am.rtree.tuples; import org.apache.hyracks.api.dataflow.value.ITypeTraits; -import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleWriter; -import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleWriterFactory; +import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriterFactory; -public class RTreeTypeAwareTupleWriterFactory implements ITreeIndexTupleWriterFactory { +public class RTreeTypeAwareTupleWriterFactory extends TypeAwareTupleWriterFactory { private static final long serialVersionUID = 1L; - private ITypeTraits[] typeTraits; public RTreeTypeAwareTupleWriterFactory(ITypeTraits[] typeTraits) { - this.typeTraits = typeTraits; + super(typeTraits); } @Override - public ITreeIndexTupleWriter createTupleWriter() { + public RTreeTypeAwareTupleWriter createTupleWriter() { return new RTreeTypeAwareTupleWriter(typeTraits); } } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/util/RTreeUtils.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/util/RTreeUtils.java b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/util/RTreeUtils.java index 650b6a8..204248f 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/util/RTreeUtils.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/util/RTreeUtils.java @@ -38,6 +38,10 @@ import org.apache.hyracks.storage.common.MultiComparator; import org.apache.hyracks.storage.common.buffercache.IBufferCache; public class RTreeUtils { + + private RTreeUtils() { + } + public static RTree createRTree(IBufferCache bufferCache, ITypeTraits[] typeTraits, IPrimitiveValueProviderFactory[] valueProviderFactories, IBinaryComparatorFactory[] cmpFactories, RTreePolicyType rtreePolicyType, FileReference file, boolean isPointMBR, http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeExamplesTest.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeExamplesTest.java b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeExamplesTest.java index 18580b0..8c0f5a5 100644 --- a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeExamplesTest.java +++ b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeExamplesTest.java @@ -53,7 +53,7 @@ public class BTreeExamplesTest extends OrderedIndexExamplesTest { LinkedMetaDataPageManager freePageManager = new LinkedMetaDataPageManager(harness.getBufferCache(), metaFrameFactory); return BTreeUtils.createBTree(harness.getBufferCache(), typeTraits, cmpFactories, - BTreeLeafFrameType.REGULAR_NSM, harness.getFileReference(), freePageManager); + BTreeLeafFrameType.REGULAR_NSM, harness.getFileReference(), freePageManager, false); } } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeModificationOperationCallbackTest.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeModificationOperationCallbackTest.java b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeModificationOperationCallbackTest.java index 304bf14..ad9198c 100644 --- a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeModificationOperationCallbackTest.java +++ b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeModificationOperationCallbackTest.java @@ -39,7 +39,7 @@ public class BTreeModificationOperationCallbackTest extends AbstractModification IMetadataPageManager freePageManager = freePageManagerFactory.createPageManager(harness.getBufferCache()); index = BTreeUtils.createBTree(harness.getBufferCache(), SerdeUtils.serdesToTypeTraits(keySerdes), SerdeUtils.serdesToComparatorFactories(keySerdes, keySerdes.length), BTreeLeafFrameType.REGULAR_NSM, - harness.getFileReference(), freePageManager); + harness.getFileReference(), freePageManager, false); } @Override http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeSearchCursorTest.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeSearchCursorTest.java b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeSearchCursorTest.java index cc4f444..78231fd 100644 --- a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeSearchCursorTest.java +++ b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeSearchCursorTest.java @@ -46,6 +46,7 @@ import org.apache.hyracks.storage.am.btree.frames.BTreeNSMLeafFrameFactory; import org.apache.hyracks.storage.am.btree.impls.BTree; import org.apache.hyracks.storage.am.btree.impls.BTreeRangeSearchCursor; import org.apache.hyracks.storage.am.btree.impls.RangePredicate; +import org.apache.hyracks.storage.am.btree.tuples.BTreeTypeAwareTupleWriterFactory; import org.apache.hyracks.storage.am.btree.util.AbstractBTreeTest; import org.apache.hyracks.storage.am.common.TestOperationCallback; import org.apache.hyracks.storage.am.common.api.IMetadataPageManager; @@ -55,7 +56,6 @@ import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory; import org.apache.hyracks.storage.am.common.api.ITreeIndexMetadataFrameFactory; import org.apache.hyracks.storage.am.common.frames.LIFOMetaDataFrameFactory; import org.apache.hyracks.storage.am.common.freepage.LinkedMetaDataPageManager; -import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriterFactory; import org.apache.hyracks.storage.common.MultiComparator; import org.apache.hyracks.storage.common.buffercache.IBufferCache; import org.junit.Assert; @@ -65,7 +65,8 @@ import org.junit.Test; public class BTreeSearchCursorTest extends AbstractBTreeTest { private final int fieldCount = 2; private final ITypeTraits[] typeTraits = new ITypeTraits[fieldCount]; - private final TypeAwareTupleWriterFactory tupleWriterFactory = new TypeAwareTupleWriterFactory(typeTraits); + private final BTreeTypeAwareTupleWriterFactory tupleWriterFactory = + new BTreeTypeAwareTupleWriterFactory(typeTraits, false); private final ITreeIndexMetadataFrameFactory metaFrameFactory = new LIFOMetaDataFrameFactory(); private final Random rnd = new Random(50); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeSearchOperationCallbackTest.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeSearchOperationCallbackTest.java b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeSearchOperationCallbackTest.java index 003dd39..89399bd 100644 --- a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeSearchOperationCallbackTest.java +++ b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeSearchOperationCallbackTest.java @@ -40,7 +40,7 @@ public class BTreeSearchOperationCallbackTest extends AbstractSearchOperationCal new LinkedMetaDataPageManager(harness.getBufferCache(), metaFrameFactory); index = BTreeUtils.createBTree(harness.getBufferCache(), SerdeUtils.serdesToTypeTraits(keySerdes), SerdeUtils.serdesToComparatorFactories(keySerdes, keySerdes.length), BTreeLeafFrameType.REGULAR_NSM, - harness.getFileReference(), freePageManager); + harness.getFileReference(), freePageManager, false); } @Override http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e66346a3/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeStatsTest.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeStatsTest.java b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeStatsTest.java index 7281da6..905eda8 100644 --- a/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeStatsTest.java +++ b/hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeStatsTest.java @@ -44,6 +44,7 @@ import org.apache.hyracks.storage.am.btree.api.IBTreeLeafFrame; import org.apache.hyracks.storage.am.btree.frames.BTreeNSMInteriorFrameFactory; import org.apache.hyracks.storage.am.btree.frames.BTreeNSMLeafFrameFactory; import org.apache.hyracks.storage.am.btree.impls.BTree; +import org.apache.hyracks.storage.am.btree.tuples.BTreeTypeAwareTupleWriterFactory; import org.apache.hyracks.storage.am.btree.util.AbstractBTreeTest; import org.apache.hyracks.storage.am.common.TestOperationCallback; import org.apache.hyracks.storage.am.common.api.IMetadataPageManager; @@ -53,7 +54,6 @@ import org.apache.hyracks.storage.am.common.api.ITreeIndexMetadataFrame; import org.apache.hyracks.storage.am.common.api.ITreeIndexMetadataFrameFactory; import org.apache.hyracks.storage.am.common.frames.LIFOMetaDataFrameFactory; import org.apache.hyracks.storage.am.common.freepage.LinkedMetaDataPageManager; -import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriterFactory; import org.apache.hyracks.storage.am.common.util.TreeIndexBufferCacheWarmup; import org.apache.hyracks.storage.am.common.util.TreeIndexStats; import org.apache.hyracks.storage.am.common.util.TreeIndexStatsGatherer; @@ -88,7 +88,7 @@ public class BTreeStatsTest extends AbstractBTreeTest { IBinaryComparatorFactory[] cmpFactories = new IBinaryComparatorFactory[keyFieldCount]; cmpFactories[0] = PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY); - TypeAwareTupleWriterFactory tupleWriterFactory = new TypeAwareTupleWriterFactory(typeTraits); + BTreeTypeAwareTupleWriterFactory tupleWriterFactory = new BTreeTypeAwareTupleWriterFactory(typeTraits, false); ITreeIndexFrameFactory leafFrameFactory = new BTreeNSMLeafFrameFactory(tupleWriterFactory); ITreeIndexFrameFactory interiorFrameFactory = new BTreeNSMInteriorFrameFactory(tupleWriterFactory); ITreeIndexMetadataFrameFactory metaFrameFactory = new LIFOMetaDataFrameFactory();
