Cleaned some more and added some Javadocs.
git-svn-id: https://hyracks.googlecode.com/svn/branches/hyracks_btree_updates_next@645 123451ca-8445-de46-9d55-352943316053
diff --git a/hyracks-storage-am-btree/src/main/java/edu/uci/ics/hyracks/storage/am/btree/frames/BTreeFieldPrefixNSMLeafFrame.java b/hyracks-storage-am-btree/src/main/java/edu/uci/ics/hyracks/storage/am/btree/frames/BTreeFieldPrefixNSMLeafFrame.java
index 3ba30ba..190e2b4 100644
--- a/hyracks-storage-am-btree/src/main/java/edu/uci/ics/hyracks/storage/am/btree/frames/BTreeFieldPrefixNSMLeafFrame.java
+++ b/hyracks-storage-am-btree/src/main/java/edu/uci/ics/hyracks/storage/am/btree/frames/BTreeFieldPrefixNSMLeafFrame.java
@@ -15,14 +15,10 @@
package edu.uci.ics.hyracks.storage.am.btree.frames;
-import java.io.ByteArrayInputStream;
-import java.io.DataInput;
-import java.io.DataInputStream;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Collections;
-import edu.uci.ics.hyracks.api.dataflow.value.ISerializerDeserializer;
import edu.uci.ics.hyracks.api.dataflow.value.ITypeTrait;
import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
import edu.uci.ics.hyracks.dataflow.common.data.accessors.ITupleReference;
@@ -267,8 +263,6 @@
public FrameOpSpaceStatus hasSpaceUpdate(ITupleReference newTuple, int oldTupleIndex) {
int tupleIndex = slotManager.decodeSecondSlotField(oldTupleIndex);
frameTuple.resetByTupleIndex(this, tupleIndex);
- // TODO: Do we need to set the field count here?
- //frameTuple.setFieldCount(cmp.getFieldCount());
int oldTupleBytes = 0;
int newTupleBytes = 0;
@@ -341,7 +335,7 @@
@Override
public void initBuffer(byte level) {
- buf.putInt(pageLsnOff, 0); // TODO: might to set to a different lsn
+ buf.putInt(pageLsnOff, 0);
// during creation
buf.putInt(tupleCountOff, 0);
resetSpaceParams();
@@ -413,26 +407,6 @@
}
@Override
- public String printKeys(MultiComparator cmp, ISerializerDeserializer[] fields) throws HyracksDataException {
- StringBuilder strBuilder = new StringBuilder();
- int tupleCount = buf.getInt(tupleCountOff);
- frameTuple.setFieldCount(fields.length);
- for (int i = 0; i < tupleCount; i++) {
- frameTuple.resetByTupleIndex(this, i);
- for (int j = 0; j < cmp.getKeyFieldCount(); j++) {
- ByteArrayInputStream inStream = new ByteArrayInputStream(frameTuple.getFieldData(j),
- frameTuple.getFieldStart(j), frameTuple.getFieldLength(j));
- DataInput dataIn = new DataInputStream(inStream);
- Object o = fields[j].deserialize(dataIn);
- strBuilder.append(o.toString() + " ");
- }
- strBuilder.append(" | ");
- }
- strBuilder.append("\n");
- return strBuilder.toString();
- }
-
- @Override
public int getTupleOffset(int slotNum) {
int tupleSlotOff = slotManager.getTupleSlotOff(slotNum);
int tupleSlot = buf.getInt(tupleSlotOff);
diff --git a/hyracks-storage-am-btree/src/main/java/edu/uci/ics/hyracks/storage/am/btree/impls/BTree.java b/hyracks-storage-am-btree/src/main/java/edu/uci/ics/hyracks/storage/am/btree/impls/BTree.java
index 995c447..3c510ec 100644
--- a/hyracks-storage-am-btree/src/main/java/edu/uci/ics/hyracks/storage/am/btree/impls/BTree.java
+++ b/hyracks-storage-am-btree/src/main/java/edu/uci/ics/hyracks/storage/am/btree/impls/BTree.java
@@ -43,6 +43,7 @@
import edu.uci.ics.hyracks.storage.am.common.impls.TreeDiskOrderScanCursor;
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.common.util.TreeIndexUtils;
import edu.uci.ics.hyracks.storage.common.buffercache.IBufferCache;
import edu.uci.ics.hyracks.storage.common.buffercache.ICachedPage;
import edu.uci.ics.hyracks.storage.common.file.BufferedFileHandle;
@@ -1082,17 +1083,17 @@
}
@SuppressWarnings("rawtypes")
- public String printTree(IBTreeLeafFrame leafFrame, IBTreeInteriorFrame interiorFrame, ISerializerDeserializer[] fieldSerdes)
+ public String printTree(IBTreeLeafFrame leafFrame, IBTreeInteriorFrame interiorFrame, ISerializerDeserializer[] keySerdes)
throws Exception {
byte treeHeight = getTreeHeight(leafFrame);
StringBuilder strBuilder = new StringBuilder();
- printTree(rootPage, null, false, leafFrame, interiorFrame, treeHeight, fieldSerdes, strBuilder);
+ printTree(rootPage, null, false, leafFrame, interiorFrame, treeHeight, keySerdes, strBuilder);
return strBuilder.toString();
}
@SuppressWarnings("rawtypes")
public void printTree(int pageId, ICachedPage parent, boolean unpin, IBTreeLeafFrame leafFrame,
- IBTreeInteriorFrame interiorFrame, byte treeHeight, ISerializerDeserializer[] fieldSerdes, StringBuilder strBuilder) throws Exception {
+ IBTreeInteriorFrame interiorFrame, byte treeHeight, ISerializerDeserializer[] keySerdes, StringBuilder strBuilder) throws Exception {
ICachedPage node = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, pageId), false);
node.acquireReadLatch();
try {
@@ -1111,16 +1112,16 @@
String keyString;
if (interiorFrame.isLeaf()) {
leafFrame.setPage(node);
- keyString = leafFrame.printKeys(cmp, fieldSerdes);
+ keyString = TreeIndexUtils.printFrameTuples(leafFrame, keySerdes);
} else {
- keyString = interiorFrame.printKeys(cmp, fieldSerdes);
+ keyString = TreeIndexUtils.printFrameTuples(interiorFrame, keySerdes);
}
strBuilder.append(keyString);
if (!interiorFrame.isLeaf()) {
ArrayList<Integer> children = ((BTreeNSMInteriorFrame) (interiorFrame)).getChildren(cmp);
for (int i = 0; i < children.size(); i++) {
- printTree(children.get(i), node, i == children.size() - 1, leafFrame, interiorFrame, treeHeight, fieldSerdes, strBuilder);
+ printTree(children.get(i), node, i == children.size() - 1, leafFrame, interiorFrame, treeHeight, keySerdes, strBuilder);
}
} else {
node.releaseReadLatch();
diff --git a/hyracks-storage-am-common/src/main/java/edu/uci/ics/hyracks/storage/am/common/api/ITreeIndex.java b/hyracks-storage-am-common/src/main/java/edu/uci/ics/hyracks/storage/am/common/api/ITreeIndex.java
index 6fe5219..1db33c1 100644
--- a/hyracks-storage-am-common/src/main/java/edu/uci/ics/hyracks/storage/am/common/api/ITreeIndex.java
+++ b/hyracks-storage-am-common/src/main/java/edu/uci/ics/hyracks/storage/am/common/api/ITreeIndex.java
@@ -20,64 +20,203 @@
import edu.uci.ics.hyracks.storage.am.common.ophelpers.IndexOp;
/**
- * Interface implemented by tree-based index structures, describing their
- * supported operations. Indexes implementing this interface can easily reuse
- * the tree index operators for dataflow.
+ * Interface describing the operations of tree-based index structures. Indexes
+ * implementing this interface can easily reuse the tree index operators for
+ * dataflow. We assume that indexes store tuples with a fixed number of fields.
*/
public interface ITreeIndex {
- // init:
+ /**
+ * Initializes the persistent state of a tree index, e.g., the root page,
+ * and metadata pages.
+ *
+ * @param indexFileId
+ * The file id to use for this index.
+ * @param leafFrame
+ * Leaf frame to use for initializing the root.
+ * @param metaFrame
+ * Metadata frame to use for initializing metadata information.
+ * @throws HyracksDataException
+ * If the BufferCache throws while un/pinning or un/latching.
+ */
public void create(int indexFileId, ITreeIndexFrame leafFrame,
ITreeIndexMetaDataFrame metaFrame) throws HyracksDataException;
+ /**
+ * Opens the tree index backed by the given file id.
+ *
+ * @param indexFileId
+ * The file id backing this index.
+ */
public void open(int indexFileId);
+ /**
+ * Closes the tree index.
+ */
public void close();
- // operations:
-
- public void insert(ITupleReference tuple, IIndexOpContext ictx)
- throws HyracksDataException, TreeIndexException;
-
- public void update(ITupleReference tuple, IIndexOpContext ictx)
- throws HyracksDataException, TreeIndexException;
-
- public void delete(ITupleReference tuple, IIndexOpContext ictx)
- throws HyracksDataException, TreeIndexException;
-
+ /**
+ * Creates an operation context for a given index operation
+ * (insert/delete/update/search/diskorderscan). An operation context
+ * maintains a cache of objects used during the traversal of the tree index.
+ * The context is intended to be reused for multiple subsequent operations
+ * by the same user/thread.
+ *
+ * @param indexOp
+ * Intended index operation.
+ * @param leafFrame
+ * Leaf frame for interpreting leaf pages.
+ * @param interiorFrame
+ * Interior frame for interpreting interior pages.
+ * @param metaFrame
+ * Metadata frame for interpreting metadata pages.
+ * @returns IITreeIndexOpContext Operation context for the desired index
+ * operation.
+ */
public IIndexOpContext createOpContext(IndexOp op,
ITreeIndexFrame leafFrame, ITreeIndexFrame interiorFrame,
ITreeIndexMetaDataFrame metaFrame);
+
+ /**
+ * Inserts the given tuple into the index using an existing operation
+ * context.
+ *
+ * @param tuple
+ * Tuple to be inserted.
+ * @param ictx
+ * Existing operation context.
+ * @throws HyracksDataException
+ * If the BufferCache throws while un/pinning or un/latching.
+ * @throws TreeIndexException
+ * If an index-specific constraint is violated, e.g., the key
+ * already exists.
+ */
+ public void insert(ITupleReference tuple, IIndexOpContext ictx)
+ throws HyracksDataException, TreeIndexException;
- // bulk loading:
+ /**
+ * Updates the tuple in the index matching the given tuple with the new
+ * contents in the given tuple.
+ *
+ * @param tuple
+ * Tuple whose match in the index is to be update with the given
+ * tuples contents.
+ * @param ictx
+ * Existing operation context.
+ * @throws HyracksDataException
+ * If the BufferCache throws while un/pinning or un/latching.
+ * @throws TreeIndexException
+ * If there is no matching tuple in the index.
+ */
+ public void update(ITupleReference tuple, IIndexOpContext ictx)
+ throws HyracksDataException, TreeIndexException;
+ /**
+ * Deletes the tuple in the index matching the given tuple.
+ *
+ * @param tuple
+ * Tuple to be deleted.
+ * @param ictx
+ * Existing operation context.
+ * @throws HyracksDataException
+ * If the BufferCache throws while un/pinning or un/latching.
+ * @throws TreeIndexException
+ * If there is no matching tuple in the index.
+ */
+ public void delete(ITupleReference tuple, IIndexOpContext ictx)
+ throws HyracksDataException, TreeIndexException;
+
+ /**
+ * Prepares the index for bulk loading, returning a bulk load context. The
+ * index must be empty for bulk loading to be possible.
+ *
+ * @param fillFactor
+ * Desired fill factor in [0, 1.0].
+ * @param leafFrame
+ * Leaf frame for filling leaf pages.
+ * @param interiorFrame
+ * Interior frame for filling interior pages.
+ * @param metaFrame
+ * Metadata frame for accessing metadata pages.
+ * @throws HyracksDataException
+ * If the BufferCache throws while un/pinning or un/latching.
+ * @throws TreeIndexException
+ * If the tree is not empty.
+ * @returns A new context for bulk loading, required for appending tuples.
+ */
public IIndexBulkLoadContext beginBulkLoad(float fillFactor,
ITreeIndexFrame leafFrame, ITreeIndexFrame interiorFrame,
ITreeIndexMetaDataFrame metaFrame) throws TreeIndexException,
HyracksDataException;
+ /**
+ * Append a tuple to the index in the context of a bulk load.
+ *
+ * @param tuple
+ * Tuple to be inserted.
+ * @param ictx
+ * Existing bulk load context.
+ * @throws HyracksDataException
+ * If the BufferCache throws while un/pinning or un/latching.
+ */
public void bulkLoadAddTuple(ITupleReference tuple,
IIndexBulkLoadContext ictx) throws HyracksDataException;
+ /**
+ * Finalize the bulk loading operation in the given context.
+ *
+ * @param ictx
+ * Existing bulk load context to be finalized.
+ * @throws HyracksDataException
+ * If the BufferCache throws while un/pinning or un/latching.
+ */
public void endBulkLoad(IIndexBulkLoadContext ictx)
throws HyracksDataException;
- // search:
+ /**
+ * Open the given cursor for a disk-order scan, positioning the cursor to
+ * the first leaf tuple.
+ *
+ * @param leafFrame
+ * Leaf frame for interpreting leaf pages.
+ * @param metaFrame
+ * Metadata frame for interpreting metadata pages.
+ * @param ictx
+ * Existing operation context.
+ * @throws HyracksDataException
+ * If the BufferCache throws while un/pinning or un/latching.
+ */
public void diskOrderScan(ITreeIndexCursor icursor,
ITreeIndexFrame leafFrame, ITreeIndexMetaDataFrame metaFrame,
IIndexOpContext ictx) throws HyracksDataException;
-
- // utility:
-
- public IFreePageManager getFreePageManager();
-
+
+ /**
+ * @return The index's leaf frame factory.
+ */
public ITreeIndexFrameFactory getLeafFrameFactory();
+ /**
+ * @return The index's interior frame factory.
+ */
public ITreeIndexFrameFactory getInteriorFrameFactory();
-
- public int getRootPageId();
- public int getFieldCount();
+ /**
+ * @return The index's free page manager.
+ */
+ public IFreePageManager getFreePageManager();
+ /**
+ * @return The number of fields tuples of this index have.
+ */
+ public int getFieldCount();
+
+ /**
+ * @return The current root page id of this index.
+ */
+ public int getRootPageId();
+
+ /**
+ * @return An enum of the concrete type of this index.
+ */
public IndexType getIndexType();
}
diff --git a/hyracks-storage-am-common/src/main/java/edu/uci/ics/hyracks/storage/am/common/api/ITreeIndexFrame.java b/hyracks-storage-am-common/src/main/java/edu/uci/ics/hyracks/storage/am/common/api/ITreeIndexFrame.java
index 01ea75f..76e19b5 100644
--- a/hyracks-storage-am-common/src/main/java/edu/uci/ics/hyracks/storage/am/common/api/ITreeIndexFrame.java
+++ b/hyracks-storage-am-common/src/main/java/edu/uci/ics/hyracks/storage/am/common/api/ITreeIndexFrame.java
@@ -17,11 +17,9 @@
import java.nio.ByteBuffer;
-import edu.uci.ics.hyracks.api.dataflow.value.ISerializerDeserializer;
import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
import edu.uci.ics.hyracks.dataflow.common.data.accessors.ITupleReference;
import edu.uci.ics.hyracks.storage.am.common.frames.FrameOpSpaceStatus;
-import edu.uci.ics.hyracks.storage.am.common.ophelpers.MultiComparator;
import edu.uci.ics.hyracks.storage.common.buffercache.ICachedPage;
public interface ITreeIndexFrame {
@@ -63,9 +61,6 @@
// for debugging
public void printHeader();
- public String printKeys(MultiComparator cmp, ISerializerDeserializer[] fields) throws HyracksDataException;
-
- // TODO; what if tuples more than half-page size?
public int split(ITreeIndexFrame rightFrame, ITupleReference tuple, ISplitKey splitKey) throws TreeIndexException;
public ISlotManager getSlotManager();
diff --git a/hyracks-storage-am-common/src/main/java/edu/uci/ics/hyracks/storage/am/common/frames/TreeIndexNSMFrame.java b/hyracks-storage-am-common/src/main/java/edu/uci/ics/hyracks/storage/am/common/frames/TreeIndexNSMFrame.java
index 5f15c2f..98b3e0b 100644
--- a/hyracks-storage-am-common/src/main/java/edu/uci/ics/hyracks/storage/am/common/frames/TreeIndexNSMFrame.java
+++ b/hyracks-storage-am-common/src/main/java/edu/uci/ics/hyracks/storage/am/common/frames/TreeIndexNSMFrame.java
@@ -15,21 +15,15 @@
package edu.uci.ics.hyracks.storage.am.common.frames;
-import java.io.ByteArrayInputStream;
-import java.io.DataInput;
-import java.io.DataInputStream;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Collections;
-import edu.uci.ics.hyracks.api.dataflow.value.ISerializerDeserializer;
-import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
import edu.uci.ics.hyracks.dataflow.common.data.accessors.ITupleReference;
import edu.uci.ics.hyracks.storage.am.common.api.ISlotManager;
import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexFrame;
import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexTupleReference;
import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexTupleWriter;
-import edu.uci.ics.hyracks.storage.am.common.ophelpers.MultiComparator;
import edu.uci.ics.hyracks.storage.am.common.ophelpers.SlotOffTupleOff;
import edu.uci.ics.hyracks.storage.common.buffercache.ICachedPage;
@@ -249,26 +243,6 @@
}
@Override
- public String printKeys(MultiComparator cmp, ISerializerDeserializer[] fields) throws HyracksDataException {
- StringBuilder strBuilder = new StringBuilder();
- int tupleCount = buf.getInt(tupleCountOff);
- frameTuple.setFieldCount(fields.length);
- for (int i = 0; i < tupleCount; i++) {
- frameTuple.resetByTupleIndex(this, i);
- for (int j = 0; j < cmp.getKeyFieldCount(); j++) {
- ByteArrayInputStream inStream = new ByteArrayInputStream(frameTuple.getFieldData(j),
- frameTuple.getFieldStart(j), frameTuple.getFieldLength(j));
- DataInput dataIn = new DataInputStream(inStream);
- Object o = fields[j].deserialize(dataIn);
- strBuilder.append(o.toString() + " ");
- }
- strBuilder.append(" | ");
- }
- strBuilder.append("\n");
- return strBuilder.toString();
- }
-
- @Override
public int getTupleOffset(int slotNum) {
return slotManager.getTupleOff(slotManager.getSlotStartOff() - slotNum * slotManager.getSlotSize());
}
diff --git a/hyracks-storage-am-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/rtree/frames/RTreeNSMInteriorFrame.java b/hyracks-storage-am-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/rtree/frames/RTreeNSMInteriorFrame.java
index 6f125e0..8b56f97 100644
--- a/hyracks-storage-am-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/rtree/frames/RTreeNSMInteriorFrame.java
+++ b/hyracks-storage-am-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/rtree/frames/RTreeNSMInteriorFrame.java
@@ -15,15 +15,10 @@
package edu.uci.ics.hyracks.storage.am.rtree.frames;
-import java.io.ByteArrayInputStream;
-import java.io.DataInput;
-import java.io.DataInputStream;
import java.util.ArrayList;
import java.util.Collections;
import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparator;
-import edu.uci.ics.hyracks.api.dataflow.value.ISerializerDeserializer;
-import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
import edu.uci.ics.hyracks.dataflow.common.data.accessors.ITupleReference;
import edu.uci.ics.hyracks.dataflow.common.data.comparators.IntegerBinaryComparatorFactory;
import edu.uci.ics.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
@@ -56,26 +51,6 @@
}
@Override
- public String printKeys(MultiComparator cmp, ISerializerDeserializer[] fields) throws HyracksDataException {
- StringBuilder strBuilder = new StringBuilder();
- int tupleCount = buf.getInt(tupleCountOff);
- frameTuple.setFieldCount(cmp.getKeyFieldCount());
- for (int i = 0; i < tupleCount; i++) {
- frameTuple.resetByTupleIndex(this, i);
- for (int j = 0; j < cmp.getKeyFieldCount(); j++) {
- ByteArrayInputStream inStream = new ByteArrayInputStream(frameTuple.getFieldData(j),
- frameTuple.getFieldStart(j), frameTuple.getFieldLength(j));
- DataInput dataIn = new DataInputStream(inStream);
- Object o = fields[j].deserialize(dataIn);
- strBuilder.append(o.toString() + " ");
- }
- strBuilder.append(" | ");
- }
- strBuilder.append("\n");
- return strBuilder.toString();
- }
-
- @Override
public boolean findBestChild(ITupleReference tuple, MultiComparator cmp) {
cmpFrameTuple.setFieldCount(cmp.getKeyFieldCount());
frameTuple.setFieldCount(cmp.getKeyFieldCount());
diff --git a/hyracks-storage-am-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/rtree/impls/RTree.java b/hyracks-storage-am-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/rtree/impls/RTree.java
index cccd326..e361f92 100644
--- a/hyracks-storage-am-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/rtree/impls/RTree.java
+++ b/hyracks-storage-am-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/rtree/impls/RTree.java
@@ -38,6 +38,7 @@
import edu.uci.ics.hyracks.storage.am.common.impls.TreeDiskOrderScanCursor;
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.common.util.TreeIndexUtils;
import edu.uci.ics.hyracks.storage.am.rtree.api.IRTreeFrame;
import edu.uci.ics.hyracks.storage.am.rtree.api.IRTreeInteriorFrame;
import edu.uci.ics.hyracks.storage.am.rtree.api.IRTreeLeafFrame;
@@ -141,13 +142,13 @@
return strBuilder.toString();
}
- public void printTree(IRTreeFrame leafFrame, IRTreeFrame interiorFrame, ISerializerDeserializer[] fields)
+ public void printTree(IRTreeFrame leafFrame, IRTreeFrame interiorFrame, ISerializerDeserializer[] keySerdes)
throws Exception {
- printTree(rootPage, null, false, leafFrame, interiorFrame, fields);
+ printTree(rootPage, null, false, leafFrame, interiorFrame, keySerdes);
}
public void printTree(int pageId, ICachedPage parent, boolean unpin, IRTreeFrame leafFrame,
- IRTreeFrame interiorFrame, ISerializerDeserializer[] fields) throws Exception {
+ IRTreeFrame interiorFrame, ISerializerDeserializer[] keySerdes) throws Exception {
ICachedPage node = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, pageId), false);
incrementPins();
@@ -173,16 +174,16 @@
String keyString;
if (interiorFrame.isLeaf()) {
leafFrame.setPage(node);
- keyString = leafFrame.printKeys(cmp, fields);
+ keyString = TreeIndexUtils.printFrameTuples(leafFrame, keySerdes);
} else {
- keyString = interiorFrame.printKeys(cmp, fields);
+ keyString = TreeIndexUtils.printFrameTuples(interiorFrame, keySerdes);
}
System.out.format(keyString);
if (!interiorFrame.isLeaf()) {
ArrayList<Integer> children = ((RTreeNSMFrame) (interiorFrame)).getChildren(cmp);
for (int i = 0; i < children.size(); i++) {
- printTree(children.get(i), node, i == children.size() - 1, leafFrame, interiorFrame, fields);
+ printTree(children.get(i), node, i == children.size() - 1, leafFrame, interiorFrame, keySerdes);
}
} else {
node.releaseReadLatch();
diff --git a/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/edu/uci/ics/hyracks/storage/am/btree/BTreeFieldPrefixNSMTest.java b/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/edu/uci/ics/hyracks/storage/am/btree/BTreeFieldPrefixNSMTest.java
index 49403a1..c5ca61c 100644
--- a/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/edu/uci/ics/hyracks/storage/am/btree/BTreeFieldPrefixNSMTest.java
+++ b/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/edu/uci/ics/hyracks/storage/am/btree/BTreeFieldPrefixNSMTest.java
@@ -43,6 +43,7 @@
import edu.uci.ics.hyracks.storage.am.common.api.ITreeIndexTupleWriter;
import edu.uci.ics.hyracks.storage.am.common.ophelpers.MultiComparator;
import edu.uci.ics.hyracks.storage.am.common.tuples.TypeAwareTupleWriter;
+import edu.uci.ics.hyracks.storage.am.common.util.TreeIndexUtils;
import edu.uci.ics.hyracks.storage.common.buffercache.ICachedPage;
import edu.uci.ics.hyracks.storage.common.file.BufferedFileHandle;
@@ -105,7 +106,7 @@
MultiComparator cmp = new MultiComparator(cmps);
// just for printing
- ISerializerDeserializer[] sers = { IntegerSerializerDeserializer.INSTANCE,
+ ISerializerDeserializer[] fieldSerdes = { IntegerSerializerDeserializer.INSTANCE,
IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE };
Random rnd = new Random();
@@ -156,16 +157,16 @@
savedFields[i][2] = c;
if (rnd.nextInt() % compactFreq == 0) {
- before = frame.printKeys(cmp, sers);
+ before = TreeIndexUtils.printFrameTuples(frame, fieldSerdes);
frame.compact();
- after = frame.printKeys(cmp, sers);
+ after = TreeIndexUtils.printFrameTuples(frame, fieldSerdes);
Assert.assertEquals(before, after);
}
if (rnd.nextInt() % compressFreq == 0) {
- before = frame.printKeys(cmp, sers);
+ before = TreeIndexUtils.printFrameTuples(frame, fieldSerdes);
frame.compress();
- after = frame.printKeys(cmp, sers);
+ after = TreeIndexUtils.printFrameTuples(frame, fieldSerdes);
Assert.assertEquals(before, after);
}
@@ -185,16 +186,16 @@
}
if (rnd.nextInt() % compactFreq == 0) {
- before = frame.printKeys(cmp, sers);
+ before = TreeIndexUtils.printFrameTuples(frame, fieldSerdes);
frame.compact();
- after = frame.printKeys(cmp, sers);
+ after = TreeIndexUtils.printFrameTuples(frame, fieldSerdes);
Assert.assertEquals(before, after);
}
if (rnd.nextInt() % compressFreq == 0) {
- before = frame.printKeys(cmp, sers);
+ before = TreeIndexUtils.printFrameTuples(frame, fieldSerdes);
frame.compress();
- after = frame.printKeys(cmp, sers);
+ after = TreeIndexUtils.printFrameTuples(frame, fieldSerdes);
Assert.assertEquals(before, after);
}
}