You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by am...@apache.org on 2017/01/07 05:48:40 UTC
[5/5] asterixdb git commit: Change the API for writing and reading
metadata pages
Change the API for writing and reading metadata pages
Change-Id: Iadad522ab5568677aa816c74fc1d63acad505380
Reviewed-on: https://asterix-gerrit.ics.uci.edu/1396
Sonar-Qube: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Ian Maxon <im...@apache.org>
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
BAD: Jenkins <je...@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
Project: http://git-wip-us.apache.org/repos/asf/asterixdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/asterixdb/commit/90cdbac7
Tree: http://git-wip-us.apache.org/repos/asf/asterixdb/tree/90cdbac7
Diff: http://git-wip-us.apache.org/repos/asf/asterixdb/diff/90cdbac7
Branch: refs/heads/master
Commit: 90cdbac7f118d85deb5377520ea99e3187d21725
Parents: 69ab91a
Author: Abdullah Alamoudi <ba...@gmail.com>
Authored: Thu Jan 5 18:18:48 2017 -0800
Committer: abdullah alamoudi <ba...@gmail.com>
Committed: Fri Jan 6 21:48:02 2017 -0800
----------------------------------------------------------------------
.../AbstractLSMIOOperationCallback.java | 19 +-
.../LSMBTreeIOOperationCallback.java | 8 +-
.../LSMBTreeWithBuddyIOOperationCallback.java | 6 +-
.../LSMInvertedIndexIOOperationCallback.java | 6 +-
.../LSMRTreeIOOperationCallback.java | 8 +-
.../asterix/common/transactions/LogRecord.java | 2 +-
.../asterix/common/utils/StorageConstants.java | 4 +-
.../apache/asterix/test/aql/TestExecutor.java | 1 -
.../metadata/bootstrap/MetadataBootstrap.java | 4 +-
.../TupleCopyValueExtractor.java | 2 +-
.../management/ReplicationChannel.java | 8 +-
.../management/ReplicationManager.java | 18 +-
.../storage/LSMComponentLSNSyncTask.java | 6 +-
.../storage/LSMComponentProperties.java | 8 +-
.../storage/LSMIndexFileProperties.java | 4 +-
.../PersistentLocalResourceRepository.java | 7 +-
.../data/std/primitive/IntegerPointable.java | 2 +-
.../data/std/primitive/LongPointable.java | 6 +
.../data/std/util/ArrayBackedValueStorage.java | 4 +
.../util/ByteArrayAccessibleOutputStream.java | 14 +-
.../hyracks/data/std/util/GrowableArray.java | 4 +
.../hdfs/lib/RawBinaryComparatorFactory.java | 26 +-
.../frames/BTreeFieldPrefixNSMLeafFrame.java | 193 +++++++------
.../am/btree/frames/BTreeNSMInteriorFrame.java | 147 +++++-----
.../am/btree/frames/BTreeNSMLeafFrame.java | 34 ++-
.../hyracks/storage/am/btree/impls/BTree.java | 4 +-
.../storage/am/btree/impls/BTreeOpContext.java | 4 +-
.../storage/am/btree/impls/BTreeSplitKey.java | 14 +-
.../impls/FieldPrefixPrefixTupleReference.java | 2 +-
.../btree/impls/FieldPrefixTupleReference.java | 19 +-
.../hyracks/hyracks-storage-am-common/pom.xml | 5 +
.../am/common/api/IMetadataPageManager.java | 53 ++--
.../storage/am/common/api/IPageManager.java | 12 +-
.../storage/am/common/api/ITreeIndexFrame.java | 17 +-
.../am/common/api/ITreeIndexMetaDataFrame.java | 85 ------
.../api/ITreeIndexMetaDataFrameFactory.java | 24 --
.../am/common/api/ITreeIndexMetadataFrame.java | 165 +++++++++++
.../api/ITreeIndexMetadataFrameFactory.java | 25 ++
.../am/common/api/ITreeIndexTupleReference.java | 4 +-
.../am/common/dataflow/IndexDataflowHelper.java | 4 +-
.../am/common/frames/LIFOMetaDataFrame.java | 281 +++++++++++++------
.../common/frames/LIFOMetaDataFrameFactory.java | 8 +-
.../am/common/frames/TreeIndexNSMFrame.java | 117 ++++----
.../AppendOnlyLinkedMetadataPageManager.java | 203 +++++---------
.../freepage/LinkedMetaDataPageManager.java | 192 ++++---------
.../freepage/MutableArrayValueReference.java | 53 ++++
.../am/common/impls/AbstractTreeIndex.java | 4 +-
.../am/common/tuples/SimpleTupleReference.java | 22 +-
.../common/tuples/TypeAwareTupleReference.java | 12 +-
.../common/util/TreeIndexBufferCacheWarmup.java | 4 +-
.../storage/am/common/util/TreeIndexStats.java | 4 +-
.../am/common/util/TreeIndexStatsGatherer.java | 4 +-
.../am/common/frames/LIFOMetadataFrameTest.java | 68 +++++
.../storage/am/lsm/btree/impls/LSMBTree.java | 8 +-
.../lsm/btree/impls/LSMBTreeDiskComponent.java | 3 +-
.../btree/tuples/LSMBTreeTupleReference.java | 9 +-
.../am/lsm/btree/util/LSMBTreeUtils.java | 5 +-
.../hyracks-storage-am-lsm-common/pom.xml | 12 +-
.../common/api/ILSMComponentFilterFrame.java | 44 ---
.../api/ILSMComponentFilterFrameFactory.java | 2 +-
.../common/api/ILSMComponentFilterManager.java | 2 -
.../api/ILSMComponentFilterReference.java | 40 +++
.../common/frames/LSMComponentFilterFrame.java | 108 -------
.../frames/LSMComponentFilterFrameFactory.java | 10 +-
.../frames/LSMComponentFilterReference.java | 163 +++++++++++
.../common/freepage/VirtualFreePageManager.java | 14 +-
.../lsm/common/impls/AbstractLSMComponent.java | 6 +
.../impls/AbstractLSMIndexFileManager.java | 7 +-
.../am/lsm/common/impls/LSMComponentFilter.java | 8 +-
.../common/impls/LSMComponentFilterManager.java | 50 +---
.../storage/am/lsm/common/impls/LSMHarness.java | 4 +-
.../am/lsm/common/impls/VirtualBufferCache.java | 106 ++-----
.../invertedindex/impls/LSMInvertedIndex.java | 2 +
.../invertedindex/util/InvertedIndexUtils.java | 10 +-
.../storage/am/lsm/rtree/impls/LSMRTree.java | 2 +
.../impls/LSMRTreeWithAntiMatterTuples.java | 2 +
.../am/lsm/rtree/impls/TreeTupleSorter.java | 13 +-
.../rtree/tuples/LSMRTreeTupleReference.java | 2 +-
.../LSMRTreeTupleReferenceForPointMBR.java | 14 +-
.../am/lsm/rtree/utils/LSMRTreeUtils.java | 10 +-
.../am/rtree/frames/RStarTreePolicy.java | 6 +-
.../storage/am/rtree/frames/RTreeNSMFrame.java | 46 +--
.../am/rtree/frames/RTreeNSMInteriorFrame.java | 56 ++--
.../am/rtree/frames/RTreeNSMLeafFrame.java | 21 +-
.../storage/am/rtree/frames/RTreePolicy.java | 6 +-
.../hyracks/storage/am/rtree/impls/RTree.java | 4 +-
.../storage/am/rtree/impls/RTreeOpContext.java | 4 +-
.../storage/am/rtree/impls/RTreeSplitKey.java | 13 +-
.../storage/common/buffercache/VirtualPage.java | 124 ++++++++
.../storage/am/btree/BTreeExamplesTest.java | 4 +-
.../storage/am/btree/BTreeSearchCursorTest.java | 2 +-
.../btree/BTreeSearchOperationCallbackTest.java | 4 +-
.../storage/am/btree/BTreeStatsTest.java | 4 +-
.../storage/am/btree/BTreeUpdateSearchTest.java | 2 +-
.../storage/am/lsm/btree/perf/BTreeRunner.java | 4 +-
.../btree/perf/ConcurrentSkipListRunner.java | 2 +-
.../am/lsm/btree/perf/InMemorySortRunner.java | 4 +-
.../am/lsm/btree/tuples/LSMBTreeTuplesTest.java | 14 +-
.../storage/am/rtree/RTreeSearchCursorTest.java | 4 +-
99 files changed, 1624 insertions(+), 1306 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/90cdbac7/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/AbstractLSMIOOperationCallback.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/AbstractLSMIOOperationCallback.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/AbstractLSMIOOperationCallback.java
index ad4d9e1..29af7c9 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/AbstractLSMIOOperationCallback.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/AbstractLSMIOOperationCallback.java
@@ -22,14 +22,19 @@ package org.apache.asterix.common.ioopcallbacks;
import java.util.List;
import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.primitive.LongPointable;
import org.apache.hyracks.storage.am.common.api.IMetadataPageManager;
import org.apache.hyracks.storage.am.common.api.ITreeIndex;
+import org.apache.hyracks.storage.am.common.freepage.MutableArrayValueReference;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallback;
import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType;
// A single LSMIOOperationCallback per LSM index used to perform actions around Flush and Merge operations
public abstract class AbstractLSMIOOperationCallback implements ILSMIOOperationCallback {
+ public static final MutableArrayValueReference LSN_KEY = new MutableArrayValueReference("LSN"
+ .getBytes());
+ public static final long INVALID = -1L;
// First LSN per mutable component
protected long[] firstLSNs;
@@ -90,14 +95,20 @@ public abstract class AbstractLSMIOOperationCallback implements ILSMIOOperationC
public abstract long getComponentLSN(List<ILSMComponent> oldComponents) throws HyracksDataException;
- protected void putLSNIntoMetadata(ITreeIndex treeIndex, List<ILSMComponent> oldComponents)
+ public void putLSNIntoMetadata(ITreeIndex treeIndex, List<ILSMComponent> oldComponents)
throws HyracksDataException {
- long componentLSN = getComponentLSN(oldComponents);
- ((IMetadataPageManager) treeIndex.getPageManager()).setLSN(componentLSN);
+ byte[] lsn = new byte[Long.BYTES];
+ LongPointable.setLong(lsn, 0, getComponentLSN(oldComponents));
+ IMetadataPageManager metadataPageManager = (IMetadataPageManager) treeIndex.getPageManager();
+ metadataPageManager.put(metadataPageManager.createMetadataFrame(), LSN_KEY, new MutableArrayValueReference(
+ lsn));
}
public static long getTreeIndexLSN(ITreeIndex treeIndex) throws HyracksDataException {
- return ((IMetadataPageManager) treeIndex.getPageManager()).getLSN();
+ LongPointable pointable = new LongPointable();
+ IMetadataPageManager metadataPageManager = (IMetadataPageManager) treeIndex.getPageManager();
+ metadataPageManager.get(metadataPageManager.createMetadataFrame(), LSN_KEY, pointable);
+ return pointable.getLength() == 0 ? INVALID : pointable.longValue();
}
public void updateLastLSN(long lastLSN) {
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/90cdbac7/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeIOOperationCallback.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeIOOperationCallback.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeIOOperationCallback.java
index f0296ea..142b84f 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeIOOperationCallback.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeIOOperationCallback.java
@@ -55,7 +55,7 @@ public class LSMBTreeIOOperationCallback extends AbstractLSMIOOperationCallback
}
}
// Get max LSN from the diskComponents. Implies a merge IO operation or Recovery operation.
- long maxLSN = -1;
+ long maxLSN = -1L;
for (ILSMComponent c : diskComponents) {
BTree btree = ((LSMBTreeDiskComponent) c).getBTree();
maxLSN = Math.max(AbstractLSMIOOperationCallback.getTreeIndexLSN(btree), maxLSN);
@@ -68,8 +68,10 @@ public class LSMBTreeIOOperationCallback extends AbstractLSMIOOperationCallback
throws HyracksDataException {
if (diskComponentFilePath.endsWith(LSMBTreeFileManager.BTREE_STRING)) {
LSMBTreeDiskComponent btreeComponent = (LSMBTreeDiskComponent) diskComponent;
- return ((IMetadataPageManager) btreeComponent.getBTree().getPageManager()).getLSNOffset();
+ IMetadataPageManager metadataPageManager = (IMetadataPageManager) btreeComponent.getBTree()
+ .getPageManager();
+ return metadataPageManager.getFileOffset(metadataPageManager.createMetadataFrame(), LSN_KEY);
}
- return IMetadataPageManager.Constants.INVALID_LSN_OFFSET;
+ return INVALID;
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/90cdbac7/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeWithBuddyIOOperationCallback.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeWithBuddyIOOperationCallback.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeWithBuddyIOOperationCallback.java
index 2b384fa..a8c545d 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeWithBuddyIOOperationCallback.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeWithBuddyIOOperationCallback.java
@@ -61,8 +61,10 @@ public class LSMBTreeWithBuddyIOOperationCallback extends AbstractLSMIOOperation
throws HyracksDataException {
if (diskComponentFilePath.endsWith(LSMBTreeWithBuddyFileManager.BTREE_STRING)) {
LSMBTreeWithBuddyDiskComponent btreeComponent = (LSMBTreeWithBuddyDiskComponent) diskComponent;
- return ((IMetadataPageManager) btreeComponent.getBTree().getPageManager()).getLSNOffset();
+ IMetadataPageManager metadataPageManager = (IMetadataPageManager) btreeComponent.getBTree()
+ .getPageManager();
+ return metadataPageManager.getFileOffset(metadataPageManager.createMetadataFrame(), LSN_KEY);
}
- return IMetadataPageManager.Constants.INVALID_LSN_OFFSET;
+ return INVALID;
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/90cdbac7/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMInvertedIndexIOOperationCallback.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMInvertedIndexIOOperationCallback.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMInvertedIndexIOOperationCallback.java
index 3be31d6..ec09d65 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMInvertedIndexIOOperationCallback.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMInvertedIndexIOOperationCallback.java
@@ -66,8 +66,10 @@ public class LSMInvertedIndexIOOperationCallback extends AbstractLSMIOOperationC
throws HyracksDataException {
if (diskComponentFilePath.endsWith(LSMInvertedIndexFileManager.DELETED_KEYS_BTREE_SUFFIX)) {
LSMInvertedIndexDiskComponent invIndexComponent = (LSMInvertedIndexDiskComponent) diskComponent;
- return ((IMetadataPageManager) invIndexComponent.getDeletedKeysBTree().getPageManager()).getLSNOffset();
+ IMetadataPageManager metadataPageManager = (IMetadataPageManager) invIndexComponent.getDeletedKeysBTree()
+ .getPageManager();
+ return metadataPageManager.getFileOffset(metadataPageManager.createMetadataFrame(), LSN_KEY);
}
- return IMetadataPageManager.Constants.INVALID_LSN_OFFSET;
+ return INVALID;
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/90cdbac7/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMRTreeIOOperationCallback.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMRTreeIOOperationCallback.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMRTreeIOOperationCallback.java
index 7b04b74..175250d 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMRTreeIOOperationCallback.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMRTreeIOOperationCallback.java
@@ -53,7 +53,7 @@ public class LSMRTreeIOOperationCallback extends AbstractLSMIOOperationCallback
}
}
// Get max LSN from the diskComponents. Implies a merge IO operation or Recovery operation.
- long maxLSN = -1;
+ long maxLSN = INVALID;
for (Object o : diskComponents) {
LSMRTreeDiskComponent rtreeComponent = (LSMRTreeDiskComponent) o;
maxLSN = Math.max(AbstractLSMIOOperationCallback.getTreeIndexLSN(rtreeComponent.getRTree()), maxLSN);
@@ -66,8 +66,10 @@ public class LSMRTreeIOOperationCallback extends AbstractLSMIOOperationCallback
throws HyracksDataException {
if (diskComponentFilePath.endsWith(LSMRTreeFileManager.RTREE_STRING)) {
LSMRTreeDiskComponent rtreeComponent = (LSMRTreeDiskComponent) diskComponent;
- return ((IMetadataPageManager) rtreeComponent.getRTree().getPageManager()).getLSNOffset();
+ IMetadataPageManager metadataPageManager = (IMetadataPageManager) rtreeComponent.getRTree()
+ .getPageManager();
+ return metadataPageManager.getFileOffset(metadataPageManager.createMetadataFrame(), LSN_KEY);
}
- return IMetadataPageManager.Constants.INVALID_LSN_OFFSET;
+ return INVALID;
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/90cdbac7/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/LogRecord.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/LogRecord.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/LogRecord.java
index 361ac7c..d691b18 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/LogRecord.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/LogRecord.java
@@ -392,7 +392,7 @@ public class LogRecord implements ILogRecord {
throw new BufferUnderflowException();
}
destTuple.setFieldCount(fieldCnt);
- destTuple.resetByTupleOffset(srcBuffer, srcBuffer.position());
+ destTuple.resetByTupleOffset(srcBuffer.array(), srcBuffer.position());
srcBuffer.position(srcBuffer.position() + size);
return destTuple;
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/90cdbac7/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/StorageConstants.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/StorageConstants.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/StorageConstants.java
index a885e93..49d64d6 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/StorageConstants.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/utils/StorageConstants.java
@@ -18,7 +18,7 @@
*/
package org.apache.asterix.common.utils;
-import org.apache.hyracks.storage.am.common.api.ITreeIndexMetaDataFrame;
+import org.apache.hyracks.storage.am.common.api.ITreeIndexFrame;
/**
* A static class that stores storage constants
@@ -29,7 +29,7 @@ public class StorageConstants {
private static final int LOCAL_STORAGE_VERSION = 1;
/** The storage version of AsterixDB stack. */
- public static final int VERSION = LOCAL_STORAGE_VERSION + ITreeIndexMetaDataFrame.VERSION;
+ public static final int VERSION = LOCAL_STORAGE_VERSION + ITreeIndexFrame.Constants.VERSION;
private StorageConstants() {
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/90cdbac7/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java
index 07a7cc5..ac05008 100644
--- a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java
+++ b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/TestExecutor.java
@@ -310,7 +310,6 @@ public class TestExecutor {
throws Exception {
System.err.println("Expected results file: " + expectedFile.toString());
String lineExpected, lineActual;
- int num = 1;
try (BufferedReader readerExpected = new BufferedReader(
new InputStreamReader(new FileInputStream(expectedFile), "UTF-8"));
BufferedReader readerActual = new BufferedReader(
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/90cdbac7/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
index d60b18d..b64d2ad 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
@@ -78,7 +78,7 @@ import org.apache.hyracks.api.dataflow.value.ITypeTraits;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.api.io.FileReference;
import org.apache.hyracks.api.io.IIOManager;
-import org.apache.hyracks.storage.am.common.frames.LIFOMetaDataFrame;
+import org.apache.hyracks.storage.am.common.api.ITreeIndexFrame;
import org.apache.hyracks.storage.am.lsm.btree.impls.LSMBTree;
import org.apache.hyracks.storage.am.lsm.btree.util.LSMBTreeUtils;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMMergePolicyFactory;
@@ -378,7 +378,7 @@ public class MetadataBootstrap {
LocalResource.LSMBTreeResource);
ILocalResourceFactory localResourceFactory = localResourceFactoryProvider.getLocalResourceFactory();
localResourceRepository.insert(localResourceFactory.createLocalResource(resourceID, resourceName,
- LIFOMetaDataFrame.VERSION, metadataPartition.getPartitionId()));
+ ITreeIndexFrame.Constants.VERSION, metadataPartition.getPartitionId()));
dataLifecycleManager.register(file.getRelativePath(), lsmBtree);
} else {
final LocalResource resource = localResourceRepository.get(file.getRelativePath());
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/90cdbac7/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/valueextractors/TupleCopyValueExtractor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/valueextractors/TupleCopyValueExtractor.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/valueextractors/TupleCopyValueExtractor.java
index 33f8969..4c0f48f 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/valueextractors/TupleCopyValueExtractor.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/valueextractors/TupleCopyValueExtractor.java
@@ -53,7 +53,7 @@ public class TupleCopyValueExtractor implements IValueExtractor<ITupleReference>
tupleBytes = new byte[numBytes];
tupleWriter.writeTuple(tuple, tupleBytes, 0);
buf = ByteBuffer.wrap(tupleBytes);
- tupleReference.resetByTupleOffset(buf, 0);
+ tupleReference.resetByTupleOffset(buf.array(), 0);
return tupleReference;
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/90cdbac7/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/management/ReplicationChannel.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/management/ReplicationChannel.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/management/ReplicationChannel.java
index 529a660..8050e8d 100644
--- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/management/ReplicationChannel.java
+++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/management/ReplicationChannel.java
@@ -44,8 +44,8 @@ import java.util.logging.Logger;
import org.apache.asterix.common.api.IDatasetLifecycleManager;
import org.apache.asterix.common.cluster.ClusterPartition;
-import org.apache.asterix.common.config.ReplicationProperties;
import org.apache.asterix.common.config.IPropertiesProvider;
+import org.apache.asterix.common.config.ReplicationProperties;
import org.apache.asterix.common.context.IndexInfo;
import org.apache.asterix.common.exceptions.ACIDException;
import org.apache.asterix.common.ioopcallbacks.AbstractLSMIOOperationCallback;
@@ -71,7 +71,6 @@ import org.apache.asterix.replication.storage.LSMIndexFileProperties;
import org.apache.asterix.replication.storage.ReplicaResourcesManager;
import org.apache.asterix.transaction.management.resource.PersistentLocalResourceRepository;
import org.apache.hyracks.api.application.INCApplicationContext;
-import org.apache.hyracks.storage.am.common.api.IMetadataPageManager;
import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType;
import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndex;
import org.apache.hyracks.util.StorageUtil;
@@ -344,7 +343,7 @@ public class ReplicationChannel extends Thread implements IReplicationChannel {
}
if (afp.isLSMComponentFile()) {
String componentId = LSMComponentProperties.getLSMComponentID(afp.getFilePath());
- if (afp.getLSNByteOffset() != IMetadataPageManager.Constants.INVALID_LSN_OFFSET) {
+ if (afp.getLSNByteOffset() > AbstractLSMIOOperationCallback.INVALID) {
LSMComponentLSNSyncTask syncTask = new LSMComponentLSNSyncTask(componentId,
destFile.getAbsolutePath(), afp.getLSNByteOffset());
lsmComponentRemoteLSN2LocalLSNMappingTaskQ.offer(syncTask);
@@ -392,13 +391,12 @@ public class ReplicationChannel extends Thread implements IReplicationChannel {
FileChannel fileChannel = fromFile.getChannel();) {
long fileSize = fileChannel.size();
fileProperties.initialize(filePath, fileSize, replicaId, false,
- IMetadataPageManager.Constants.INVALID_LSN_OFFSET, false);
+ AbstractLSMIOOperationCallback.INVALID, false);
outBuffer = ReplicationProtocol.writeFileReplicationRequest(outBuffer, fileProperties,
ReplicationRequestType.REPLICATE_FILE);
//send file info
NetworkingUtil.transferBufferToChannel(socketChannel, outBuffer);
-
//transfer file
NetworkingUtil.sendFile(fileChannel, socketChannel);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/90cdbac7/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/management/ReplicationManager.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/management/ReplicationManager.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/management/ReplicationManager.java
index dc4a93a..ce1e315 100644
--- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/management/ReplicationManager.java
+++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/management/ReplicationManager.java
@@ -52,16 +52,16 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.asterix.common.cluster.ClusterPartition;
-import org.apache.asterix.common.config.ReplicationProperties;
import org.apache.asterix.common.config.ClusterProperties;
import org.apache.asterix.common.config.IPropertiesProvider;
+import org.apache.asterix.common.config.ReplicationProperties;
import org.apache.asterix.common.dataflow.LSMIndexUtil;
-import org.apache.asterix.common.replication.ReplicationJob;
import org.apache.asterix.common.replication.IReplicaResourcesManager;
import org.apache.asterix.common.replication.IReplicationManager;
import org.apache.asterix.common.replication.Replica;
import org.apache.asterix.common.replication.Replica.ReplicaState;
import org.apache.asterix.common.replication.ReplicaEvent;
+import org.apache.asterix.common.replication.ReplicationJob;
import org.apache.asterix.common.transactions.IAppRuntimeContextProvider;
import org.apache.asterix.common.transactions.ILogManager;
import org.apache.asterix.common.transactions.ILogRecord;
@@ -83,7 +83,6 @@ import org.apache.hyracks.api.replication.IReplicationJob;
import org.apache.hyracks.api.replication.IReplicationJob.ReplicationExecutionType;
import org.apache.hyracks.api.replication.IReplicationJob.ReplicationJobType;
import org.apache.hyracks.api.replication.IReplicationJob.ReplicationOperation;
-import org.apache.hyracks.storage.am.common.api.IMetadataPageManager;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexReplicationJob;
import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndex;
@@ -328,15 +327,14 @@ public class ReplicationManager implements IReplicationManager {
*/
ILSMComponent diskComponent = LSMComponentJob.getLSMIndexOperationContext()
.getComponentsToBeReplicated().get(0);
- long LSNByteOffset = LSMIndexUtil.getComponentFileLSNOffset(
+ long lsnOffset = LSMIndexUtil.getComponentFileLSNOffset(
(AbstractLSMIndex) LSMComponentJob.getLSMIndex(), diskComponent, filePath);
asterixFileProperties.initialize(filePath, fileSize, nodeId, isLSMComponentFile,
- LSNByteOffset, remainingFiles == 0);
+ lsnOffset, remainingFiles == 0);
} else {
- asterixFileProperties.initialize(filePath, fileSize, nodeId, isLSMComponentFile,
- IMetadataPageManager.Constants.INVALID_LSN_OFFSET, remainingFiles == 0);
+ asterixFileProperties.initialize(filePath, fileSize, nodeId, isLSMComponentFile, -1L,
+ remainingFiles == 0);
}
-
requestBuffer = ReplicationProtocol.writeFileReplicationRequest(requestBuffer,
asterixFileProperties, ReplicationRequestType.REPLICATE_FILE);
@@ -372,8 +370,8 @@ public class ReplicationManager implements IReplicationManager {
} else if (job.getOperation() == ReplicationOperation.DELETE) {
for (String filePath : job.getJobFiles()) {
remainingFiles--;
- asterixFileProperties.initialize(filePath, -1, nodeId, isLSMComponentFile,
- IMetadataPageManager.Constants.INVALID_LSN_OFFSET, remainingFiles == 0);
+ asterixFileProperties.initialize(filePath, -1, nodeId, isLSMComponentFile, -1L,
+ remainingFiles == 0);
ReplicationProtocol.writeFileReplicationRequest(requestBuffer, asterixFileProperties,
ReplicationRequestType.DELETE_FILE);
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/90cdbac7/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/storage/LSMComponentLSNSyncTask.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/storage/LSMComponentLSNSyncTask.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/storage/LSMComponentLSNSyncTask.java
index 450eb7d..f11adc2 100644
--- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/storage/LSMComponentLSNSyncTask.java
+++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/storage/LSMComponentLSNSyncTask.java
@@ -26,7 +26,7 @@ public class LSMComponentLSNSyncTask {
public LSMComponentLSNSyncTask(String componentId, String componentFilePath, long LSNByteOffset) {
this.componentId = componentId;
this.componentFilePath = componentFilePath;
- this.setLSNByteOffset(LSNByteOffset);
+ this.LSNByteOffset = LSNByteOffset;
}
public String getComponentFilePath() {
@@ -48,8 +48,4 @@ public class LSMComponentLSNSyncTask {
public long getLSNByteOffset() {
return LSNByteOffset;
}
-
- public void setLSNByteOffset(long lSNByteOffset) {
- LSNByteOffset = lSNByteOffset;
- }
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/90cdbac7/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/storage/LSMComponentProperties.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/storage/LSMComponentProperties.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/storage/LSMComponentProperties.java
index 9749c7a..8dbd98f 100644
--- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/storage/LSMComponentProperties.java
+++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/storage/LSMComponentProperties.java
@@ -38,7 +38,7 @@ public class LSMComponentProperties {
private AtomicInteger numberOfFiles;
private String componentId;
- private long LSNOffset;
+ private long lsnOffset;
private long originalLSN;
private String nodeId;
private Long replicaLSN;
@@ -54,9 +54,7 @@ public class LSMComponentProperties {
job.getLSMIndexOperationContext());
opType = job.getLSMOpType();
}
-
public LSMComponentProperties() {
-
}
public static long getLSMComponentLSN(AbstractLSMIndex lsmIndex, ILSMIndexOperationContext ctx) {
@@ -79,7 +77,7 @@ public class LSMComponentProperties {
dos.writeUTF(nodeId);
dos.writeInt(numberOfFiles.get());
dos.writeLong(originalLSN);
- dos.writeLong(LSNOffset);
+ dos.writeLong(lsnOffset);
dos.writeInt(opType.ordinal());
}
@@ -89,7 +87,7 @@ public class LSMComponentProperties {
lsmCompProp.nodeId = input.readUTF();
lsmCompProp.numberOfFiles = new AtomicInteger(input.readInt());
lsmCompProp.originalLSN = input.readLong();
- lsmCompProp.LSNOffset = input.readLong();
+ lsmCompProp.lsnOffset = input.readLong();
lsmCompProp.opType = LSMOperationType.values()[input.readInt()];
return lsmCompProp;
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/90cdbac7/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/storage/LSMIndexFileProperties.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/storage/LSMIndexFileProperties.java b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/storage/LSMIndexFileProperties.java
index 2a219c1..eb9e82d 100644
--- a/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/storage/LSMIndexFileProperties.java
+++ b/asterixdb/asterix-replication/src/main/java/org/apache/asterix/replication/storage/LSMIndexFileProperties.java
@@ -25,7 +25,6 @@ import java.io.IOException;
import java.io.OutputStream;
import org.apache.asterix.common.utils.StoragePathUtil;
-import org.apache.hyracks.storage.am.common.api.IMetadataPageManager;
public class LSMIndexFileProperties {
@@ -49,8 +48,7 @@ public class LSMIndexFileProperties {
}
public LSMIndexFileProperties(LSMComponentProperties lsmComponentProperties) {
- initialize(lsmComponentProperties.getComponentId(), -1, lsmComponentProperties.getNodeId(), false,
- IMetadataPageManager.Constants.INVALID_LSN_OFFSET, false);
+ initialize(lsmComponentProperties.getComponentId(), -1, lsmComponentProperties.getNodeId(), false, -1L, false);
}
public void initialize(String filePath, long fileSize, String nodeId, boolean lsmComponentFile, long LSNByteOffset,
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/90cdbac7/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/resource/PersistentLocalResourceRepository.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/resource/PersistentLocalResourceRepository.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/resource/PersistentLocalResourceRepository.java
index d5b2563..517292a 100644
--- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/resource/PersistentLocalResourceRepository.java
+++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/resource/PersistentLocalResourceRepository.java
@@ -55,7 +55,7 @@ import org.apache.hyracks.api.io.IODeviceHandle;
import org.apache.hyracks.api.replication.IReplicationJob.ReplicationExecutionType;
import org.apache.hyracks.api.replication.IReplicationJob.ReplicationJobType;
import org.apache.hyracks.api.replication.IReplicationJob.ReplicationOperation;
-import org.apache.hyracks.storage.am.common.frames.LIFOMetaDataFrame;
+import org.apache.hyracks.storage.am.common.api.ITreeIndexFrame;
import org.apache.hyracks.storage.common.file.ILocalResourceRepository;
import org.apache.hyracks.storage.common.file.LocalResource;
@@ -164,7 +164,8 @@ public class PersistentLocalResourceRepository implements ILocalResourceReposito
}
LocalResource rootLocalResource = new LocalResource(STORAGE_LOCAL_RESOURCE_ID,
- storageMetadataFile.getRelativePath(), 0, LIFOMetaDataFrame.VERSION, storageRootDirPath);
+ storageMetadataFile.getRelativePath(), 0, ITreeIndexFrame.Constants.VERSION,
+ storageRootDirPath);
insert(rootLocalResource);
LOGGER.log(Level.INFO, "created the root-metadata-file: " + storageMetadataFile.getAbsolutePath());
}
@@ -343,7 +344,7 @@ public class PersistentLocalResourceRepository implements ILocalResourceReposito
try (FileInputStream fis = new FileInputStream(file);
ObjectInputStream oisFromFis = new ObjectInputStream(fis)) {
LocalResource resource = (LocalResource) oisFromFis.readObject();
- if (resource.getVersion() == LIFOMetaDataFrame.VERSION) {
+ if (resource.getVersion() == ITreeIndexFrame.Constants.VERSION) {
return resource;
} else {
throw new AsterixException("Storage version mismatch.");
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/90cdbac7/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/IntegerPointable.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/IntegerPointable.java b/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/IntegerPointable.java
index 34bf494..a3b9f44 100644
--- a/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/IntegerPointable.java
+++ b/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/IntegerPointable.java
@@ -45,7 +45,7 @@ public final class IntegerPointable extends AbstractPointable implements IHashab
private static final long serialVersionUID = 1L;
@Override
- public IPointable createPointable() {
+ public IntegerPointable createPointable() {
return new IntegerPointable();
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/90cdbac7/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/LongPointable.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/LongPointable.java b/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/LongPointable.java
index fee0667..41af193 100644
--- a/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/LongPointable.java
+++ b/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/primitive/LongPointable.java
@@ -142,4 +142,10 @@ public final class LongPointable extends AbstractPointable implements IHashable,
public double doubleValue() {
return getLong();
}
+
+ public static byte[] toByteArray(long value) {
+ byte[] bytes = new byte[Long.BYTES];
+ setLong(bytes, 0, value);
+ return bytes;
+ }
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/90cdbac7/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ArrayBackedValueStorage.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ArrayBackedValueStorage.java b/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ArrayBackedValueStorage.java
index 250d21a..33aa58b 100644
--- a/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ArrayBackedValueStorage.java
+++ b/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ArrayBackedValueStorage.java
@@ -65,4 +65,8 @@ public class ArrayBackedValueStorage implements IMutableValueStorage {
reset();
append(value);
}
+
+ public void setSize(int bytesRequired) {
+ data.setSize(bytesRequired);
+ }
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/90cdbac7/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ByteArrayAccessibleOutputStream.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ByteArrayAccessibleOutputStream.java b/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ByteArrayAccessibleOutputStream.java
index c1558ba..260312b 100644
--- a/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ByteArrayAccessibleOutputStream.java
+++ b/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ByteArrayAccessibleOutputStream.java
@@ -79,8 +79,9 @@ public class ByteArrayAccessibleOutputStream extends ByteArrayOutputStream {
private void ensureCapacity(int minCapacity) {
// overflow-conscious code
- if (minCapacity - buf.length > 0)
+ if (minCapacity - buf.length > 0) {
grow(minCapacity);
+ }
}
/**
@@ -94,11 +95,13 @@ public class ByteArrayAccessibleOutputStream extends ByteArrayOutputStream {
// overflow-conscious code
int oldCapacity = buf.length;
int newCapacity = oldCapacity << 1;
- if (newCapacity - minCapacity < 0)
+ if (newCapacity - minCapacity < 0) {
newCapacity = minCapacity;
+ }
if (newCapacity < 0) {
- if (minCapacity < 0) // overflow
+ if (minCapacity < 0) {
throw new OutOfMemoryError();
+ }
newCapacity = Integer.MAX_VALUE;
}
buf = Arrays.copyOf(buf, newCapacity);
@@ -110,4 +113,9 @@ public class ByteArrayAccessibleOutputStream extends ByteArrayOutputStream {
public int getLength() {
return count;
}
+
+ public void setSize(int bytesRequired) {
+ ensureCapacity(bytesRequired);
+ count = bytesRequired;
+ }
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/90cdbac7/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/GrowableArray.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/GrowableArray.java b/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/GrowableArray.java
index 6e329ab..39c9095 100644
--- a/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/GrowableArray.java
+++ b/hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/GrowableArray.java
@@ -67,4 +67,8 @@ public class GrowableArray implements IDataOutputProvider {
public void append(IValueReference value) throws IOException {
dos.write(value.getByteArray(), value.getStartOffset(), value.getLength());
}
+
+ public void setSize(int bytesRequired) {
+ baaos.setSize(bytesRequired);
+ }
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/90cdbac7/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/lib/RawBinaryComparatorFactory.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/lib/RawBinaryComparatorFactory.java b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/lib/RawBinaryComparatorFactory.java
index fa0ecbb..01acddd 100644
--- a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/lib/RawBinaryComparatorFactory.java
+++ b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/lib/RawBinaryComparatorFactory.java
@@ -24,27 +24,25 @@ import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
public class RawBinaryComparatorFactory implements IBinaryComparatorFactory {
private static final long serialVersionUID = 1L;
- public static IBinaryComparatorFactory INSTANCE = new RawBinaryComparatorFactory();
+ private static final IBinaryComparator comparator = RawBinaryComparatorFactory::compare;
+ public static final IBinaryComparatorFactory INSTANCE = new RawBinaryComparatorFactory();
private RawBinaryComparatorFactory() {
}
@Override
public IBinaryComparator createBinaryComparator() {
- return new IBinaryComparator() {
+ return comparator;
+ }
- @Override
- public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {
- int commonLength = Math.min(l1, l2);
- for (int i = 0; i < commonLength; i++) {
- if (b1[s1 + i] != b2[s2 + i]) {
- return b1[s1 + i] - b2[s2 + i];
- }
- }
- int difference = l1 - l2;
- return difference == 0 ? 0 : (difference > 0 ? 1 : -1);
+ public static final int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {
+ int commonLength = Math.min(l1, l2);
+ for (int i = 0; i < commonLength; i++) {
+ if (b1[s1 + i] != b2[s2 + i]) {
+ return b1[s1 + i] - b2[s2 + i];
}
-
- };
+ }
+ int difference = l1 - l2;
+ return difference == 0 ? 0 : (difference > 0 ? 1 : -1);
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/90cdbac7/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/frames/BTreeFieldPrefixNSMLeafFrame.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/frames/BTreeFieldPrefixNSMLeafFrame.java b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/frames/BTreeFieldPrefixNSMLeafFrame.java
index 73447dd..157c663 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/frames/BTreeFieldPrefixNSMLeafFrame.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/frames/BTreeFieldPrefixNSMLeafFrame.java
@@ -56,15 +56,12 @@ import org.apache.hyracks.storage.common.buffercache.IExtraPageBlockHelper;
*/
public class BTreeFieldPrefixNSMLeafFrame implements IBTreeLeafFrame {
- protected static final int pageLsnOff = 0; // 0
- protected static final int tupleCountOff = pageLsnOff + 8; // 8
- protected static final int freeSpaceOff = tupleCountOff + 4; // 12
- protected static final int totalFreeSpaceOff = freeSpaceOff + 4; // 16
- protected static final int levelOff = totalFreeSpaceOff + 4; // 20
- protected static final int smFlagOff = levelOff + 1; // 21
- protected static final int uncompressedTupleCountOff = smFlagOff + 1; // 22
- protected static final int prefixTupleCountOff = uncompressedTupleCountOff + 4; // 26
- protected static final int nextLeafOff = prefixTupleCountOff + 4; // 30
+ protected static final int PAGE_LSN_OFFSET = ITreeIndexFrame.Constants.RESERVED_HEADER_SIZE;
+ protected static final int TOTAL_FREE_SPACE_OFFSET = PAGE_LSN_OFFSET + 8;
+ protected static final int SM_FLAG_OFFSET = TOTAL_FREE_SPACE_OFFSET + 4;
+ protected static final int UNCOMPRESSED_TUPLE_COUNT_OFFSET = SM_FLAG_OFFSET + 1;
+ protected static final int PREFIX_TUPLE_COUNT_OFFSET = UNCOMPRESSED_TUPLE_COUNT_OFFSET + 4;
+ protected static final int NEXT_LEAF_OFFSET = PREFIX_TUPLE_COUNT_OFFSET + 4;
private final IPrefixSlotManager slotManager;
private final ITreeIndexFrameCompressor compressor;
@@ -132,11 +129,11 @@ public class BTreeFieldPrefixNSMLeafFrame implements IBTreeLeafFrame {
public boolean compact() {
resetSpaceParams();
- int tupleCount = buf.getInt(tupleCountOff);
+ int tupleCount = buf.getInt(ITreeIndexFrame.Constants.TUPLE_COUNT_OFFSET);
// determine start of target free space (depends on assumptions stated above)
- int freeSpace = buf.getInt(freeSpaceOff);
- int prefixTupleCount = buf.getInt(prefixTupleCountOff);
+ int freeSpace = buf.getInt(ITreeIndexFrame.Constants.FREE_SPACE_OFFSET);
+ int prefixTupleCount = buf.getInt(PREFIX_TUPLE_COUNT_OFFSET);
if (prefixTupleCount > 0) {
// debug
@@ -177,14 +174,16 @@ public class BTreeFieldPrefixNSMLeafFrame implements IBTreeLeafFrame {
int tupleLength = tupleEndOff - tupleOff;
System.arraycopy(buf.array(), tupleOff, buf.array(), freeSpace, tupleLength);
- slotManager.setSlot(sortedTupleOffs.get(i).slotOff, slotManager.encodeSlotFields(prefixSlotNum, freeSpace));
+ slotManager.setSlot(sortedTupleOffs.get(i).slotOff,
+ slotManager.encodeSlotFields(prefixSlotNum, freeSpace));
freeSpace += tupleLength;
}
- buf.putInt(freeSpaceOff, freeSpace);
- int totalFreeSpace = buf.capacity() - buf.getInt(freeSpaceOff)
- - ((buf.getInt(tupleCountOff) + buf.getInt(prefixTupleCountOff)) * slotManager.getSlotSize());
- buf.putInt(totalFreeSpaceOff, totalFreeSpace);
+ buf.putInt(ITreeIndexFrame.Constants.FREE_SPACE_OFFSET, freeSpace);
+ int totalFreeSpace = buf.capacity() - buf.getInt(ITreeIndexFrame.Constants.FREE_SPACE_OFFSET)
+ - ((buf.getInt(ITreeIndexFrame.Constants.TUPLE_COUNT_OFFSET) + buf.getInt(PREFIX_TUPLE_COUNT_OFFSET))
+ * slotManager.getSlotSize());
+ buf.putInt(TOTAL_FREE_SPACE_OFFSET, totalFreeSpace);
return false;
}
@@ -205,7 +204,7 @@ public class BTreeFieldPrefixNSMLeafFrame implements IBTreeLeafFrame {
int suffixFieldStart = 0;
if (prefixSlotNum == FieldPrefixSlotManager.TUPLE_UNCOMPRESSED) {
suffixFieldStart = 0;
- buf.putInt(uncompressedTupleCountOff, buf.getInt(uncompressedTupleCountOff) - 1);
+ buf.putInt(UNCOMPRESSED_TUPLE_COUNT_OFFSET, buf.getInt(UNCOMPRESSED_TUPLE_COUNT_OFFSET) - 1);
} else {
int prefixSlot = buf.getInt(slotManager.getPrefixSlotOff(prefixSlotNum));
suffixFieldStart = slotManager.decodeFirstSlotField(prefixSlot);
@@ -215,14 +214,17 @@ public class BTreeFieldPrefixNSMLeafFrame implements IBTreeLeafFrame {
tupleSize = tupleWriter.bytesRequired(frameTuple, suffixFieldStart, frameTuple.getFieldCount()
- suffixFieldStart);
- buf.putInt(tupleCountOff, buf.getInt(tupleCountOff) - 1);
- buf.putInt(totalFreeSpaceOff, buf.getInt(totalFreeSpaceOff) + tupleSize + slotManager.getSlotSize());
+ buf.putInt(ITreeIndexFrame.Constants.TUPLE_COUNT_OFFSET, buf.getInt(
+ ITreeIndexFrame.Constants.TUPLE_COUNT_OFFSET) - 1);
+ buf.putInt(TOTAL_FREE_SPACE_OFFSET, buf.getInt(TOTAL_FREE_SPACE_OFFSET) + tupleSize
+ + slotManager.getSlotSize());
}
@Override
public FrameOpSpaceStatus hasSpaceInsert(ITupleReference tuple) throws HyracksDataException {
- int freeContiguous = buf.capacity() - buf.getInt(freeSpaceOff)
- - ((buf.getInt(tupleCountOff) + buf.getInt(prefixTupleCountOff)) * slotManager.getSlotSize());
+ int freeContiguous = buf.capacity() - buf.getInt(ITreeIndexFrame.Constants.FREE_SPACE_OFFSET)
+ - ((buf.getInt(ITreeIndexFrame.Constants.TUPLE_COUNT_OFFSET) + buf.getInt(PREFIX_TUPLE_COUNT_OFFSET))
+ * slotManager.getSlotSize());
int bytesRequired = tupleWriter.bytesRequired(tuple);
@@ -232,7 +234,7 @@ public class BTreeFieldPrefixNSMLeafFrame implements IBTreeLeafFrame {
}
// See if tuple would fit into remaining space after compaction.
- if (bytesRequired + slotManager.getSlotSize() <= buf.getInt(totalFreeSpaceOff)) {
+ if (bytesRequired + slotManager.getSlotSize() <= buf.getInt(TOTAL_FREE_SPACE_OFFSET)) {
return FrameOpSpaceStatus.SUFFICIENT_SPACE;
}
@@ -255,7 +257,7 @@ public class BTreeFieldPrefixNSMLeafFrame implements IBTreeLeafFrame {
@Override
public void insert(ITupleReference tuple, int tupleIndex) {
- int slot = slotManager.insertSlot(tupleIndex, buf.getInt(freeSpaceOff));
+ int slot = slotManager.insertSlot(tupleIndex, buf.getInt(ITreeIndexFrame.Constants.FREE_SPACE_OFFSET));
int prefixSlotNum = slotManager.decodeFirstSlotField(slot);
int numPrefixFields = 0;
if (prefixSlotNum != FieldPrefixSlotManager.TUPLE_UNCOMPRESSED) {
@@ -263,16 +265,19 @@ public class BTreeFieldPrefixNSMLeafFrame implements IBTreeLeafFrame {
int prefixSlot = buf.getInt(prefixSlotOff);
numPrefixFields = slotManager.decodeFirstSlotField(prefixSlot);
} else {
- buf.putInt(uncompressedTupleCountOff, buf.getInt(uncompressedTupleCountOff) + 1);
+ buf.putInt(UNCOMPRESSED_TUPLE_COUNT_OFFSET, buf.getInt(UNCOMPRESSED_TUPLE_COUNT_OFFSET) + 1);
}
- int freeSpace = buf.getInt(freeSpaceOff);
+ int freeSpace = buf.getInt(ITreeIndexFrame.Constants.FREE_SPACE_OFFSET);
int bytesWritten = tupleWriter.writeTupleFields(tuple, numPrefixFields,
tuple.getFieldCount() - numPrefixFields, buf.array(), freeSpace);
- buf.putInt(tupleCountOff, buf.getInt(tupleCountOff) + 1);
- buf.putInt(freeSpaceOff, buf.getInt(freeSpaceOff) + bytesWritten);
- buf.putInt(totalFreeSpaceOff, buf.getInt(totalFreeSpaceOff) - bytesWritten - slotManager.getSlotSize());
+ buf.putInt(ITreeIndexFrame.Constants.TUPLE_COUNT_OFFSET, buf.getInt(
+ ITreeIndexFrame.Constants.TUPLE_COUNT_OFFSET) + 1);
+ buf.putInt(ITreeIndexFrame.Constants.FREE_SPACE_OFFSET, buf.getInt(ITreeIndexFrame.Constants.FREE_SPACE_OFFSET)
+ + bytesWritten);
+ buf.putInt(TOTAL_FREE_SPACE_OFFSET, buf.getInt(TOTAL_FREE_SPACE_OFFSET) - bytesWritten
+ - slotManager.getSlotSize());
}
@Override
@@ -301,15 +306,16 @@ public class BTreeFieldPrefixNSMLeafFrame implements IBTreeLeafFrame {
return FrameOpSpaceStatus.SUFFICIENT_INPLACE_SPACE;
}
- int freeContiguous = buf.capacity() - buf.getInt(freeSpaceOff)
- - ((buf.getInt(tupleCountOff) + buf.getInt(prefixTupleCountOff)) * slotManager.getSlotSize());
+ int freeContiguous = buf.capacity() - buf.getInt(ITreeIndexFrame.Constants.FREE_SPACE_OFFSET)
+ - ((buf.getInt(ITreeIndexFrame.Constants.TUPLE_COUNT_OFFSET) + buf.getInt(PREFIX_TUPLE_COUNT_OFFSET))
+ * slotManager.getSlotSize());
// Enough space if we delete the old tuple and insert the new one without compaction?
if (newTupleBytes <= freeContiguous) {
return FrameOpSpaceStatus.SUFFICIENT_CONTIGUOUS_SPACE;
}
// Enough space if we delete the old tuple and compact?
- if (additionalBytesRequired <= buf.getInt(totalFreeSpaceOff)) {
+ if (additionalBytesRequired <= buf.getInt(TOTAL_FREE_SPACE_OFFSET)) {
return FrameOpSpaceStatus.SUFFICIENT_SPACE;
}
return FrameOpSpaceStatus.INSUFFICIENT_SPACE;
@@ -336,41 +342,41 @@ public class BTreeFieldPrefixNSMLeafFrame implements IBTreeLeafFrame {
} else {
// Insert the new tuple suffix at the end of the free space, and change
// the slot value (effectively "deleting" the old tuple).
- int newSuffixTupleStartOff = buf.getInt(freeSpaceOff);
+ int newSuffixTupleStartOff = buf.getInt(ITreeIndexFrame.Constants.FREE_SPACE_OFFSET);
bytesWritten = tupleWriter.writeTupleFields(newTuple, numPrefixFields, fieldCount - numPrefixFields,
buf.array(), newSuffixTupleStartOff);
// Update slot value using the same prefix slot num.
slotManager.setSlot(tupleSlotOff, slotManager.encodeSlotFields(prefixSlotNum, newSuffixTupleStartOff));
// Update contiguous free space pointer.
- buf.putInt(freeSpaceOff, newSuffixTupleStartOff + bytesWritten);
+ buf.putInt(ITreeIndexFrame.Constants.FREE_SPACE_OFFSET, newSuffixTupleStartOff + bytesWritten);
}
- buf.putInt(totalFreeSpaceOff, buf.getInt(totalFreeSpaceOff) + oldTupleBytes - bytesWritten);
+ buf.putInt(TOTAL_FREE_SPACE_OFFSET, buf.getInt(TOTAL_FREE_SPACE_OFFSET) + oldTupleBytes - bytesWritten);
}
protected void resetSpaceParams() {
- buf.putInt(freeSpaceOff, getOrigFreeSpaceOff());
- buf.putInt(totalFreeSpaceOff, getOrigTotalFreeSpace());
+ buf.putInt(ITreeIndexFrame.Constants.FREE_SPACE_OFFSET, getOrigFreeSpaceOff());
+ buf.putInt(TOTAL_FREE_SPACE_OFFSET, getOrigTotalFreeSpace());
}
@Override
public void initBuffer(byte level) {
- buf.putLong(pageLsnOff, 0);
+ buf.putLong(PAGE_LSN_OFFSET, 0);
// during creation
- buf.putInt(tupleCountOff, 0);
+ buf.putInt(ITreeIndexFrame.Constants.TUPLE_COUNT_OFFSET, 0);
resetSpaceParams();
- buf.putInt(uncompressedTupleCountOff, 0);
- buf.putInt(prefixTupleCountOff, 0);
- buf.put(levelOff, level);
- buf.put(smFlagOff, (byte) 0);
- buf.putInt(nextLeafOff, -1);
+ buf.putInt(UNCOMPRESSED_TUPLE_COUNT_OFFSET, 0);
+ buf.putInt(PREFIX_TUPLE_COUNT_OFFSET, 0);
+ buf.put(ITreeIndexFrame.Constants.LEVEL_OFFSET, level);
+ buf.put(SM_FLAG_OFFSET, (byte) 0);
+ buf.putInt(NEXT_LEAF_OFFSET, -1);
}
public void setTotalFreeSpace(int totalFreeSpace) {
- buf.putInt(totalFreeSpaceOff, totalFreeSpace);
+ buf.putInt(TOTAL_FREE_SPACE_OFFSET, totalFreeSpace);
}
public int getOrigTotalFreeSpace() {
- return buf.capacity() - (nextLeafOff + 4);
+ return buf.capacity() - (NEXT_LEAF_OFFSET + 4);
}
@Override
@@ -437,7 +443,8 @@ public class BTreeFieldPrefixNSMLeafFrame implements IBTreeLeafFrame {
int tupleIndex = slotManager.decodeSecondSlotField(slot);
// Error indicator is set if there is no exact match.
if (tupleIndex == slotManager.getErrorIndicator()) {
- throw new TreeIndexNonExistentKeyException("Trying to update a tuple with a nonexistent key in leaf node.");
+ throw new TreeIndexNonExistentKeyException(
+ "Trying to update a tuple with a nonexistent key in leaf node.");
}
return slot;
}
@@ -454,7 +461,8 @@ public class BTreeFieldPrefixNSMLeafFrame implements IBTreeLeafFrame {
int tupleIndex = slotManager.decodeSecondSlotField(slot);
// Error indicator is set if there is no exact match.
if (tupleIndex == slotManager.getErrorIndicator()) {
- throw new TreeIndexNonExistentKeyException("Trying to delete a tuple with a nonexistent key in leaf node.");
+ throw new TreeIndexNonExistentKeyException(
+ "Trying to delete a tuple with a nonexistent key in leaf node.");
}
return slot;
}
@@ -462,21 +470,21 @@ public class BTreeFieldPrefixNSMLeafFrame implements IBTreeLeafFrame {
@Override
public String printHeader() {
StringBuilder strBuilder = new StringBuilder();
- strBuilder.append("pageLsnOff: " + pageLsnOff + "\n");
- strBuilder.append("tupleCountOff: " + tupleCountOff + "\n");
- strBuilder.append("freeSpaceOff: " + freeSpaceOff + "\n");
- strBuilder.append("totalFreeSpaceOff: " + totalFreeSpaceOff + "\n");
- strBuilder.append("levelOff: " + levelOff + "\n");
- strBuilder.append("smFlagOff: " + smFlagOff + "\n");
- strBuilder.append("uncompressedTupleCountOff: " + uncompressedTupleCountOff + "\n");
- strBuilder.append("prefixTupleCountOff: " + prefixTupleCountOff + "\n");
- strBuilder.append("nextLeafOff: " + nextLeafOff + "\n");
+ strBuilder.append("pageLsnOff: " + PAGE_LSN_OFFSET + "\n");
+ strBuilder.append("tupleCountOff: " + ITreeIndexFrame.Constants.TUPLE_COUNT_OFFSET + "\n");
+ strBuilder.append("freeSpaceOff: " + ITreeIndexFrame.Constants.FREE_SPACE_OFFSET + "\n");
+ strBuilder.append("totalFreeSpaceOff: " + TOTAL_FREE_SPACE_OFFSET + "\n");
+ strBuilder.append("levelOff: " + ITreeIndexFrame.Constants.LEVEL_OFFSET + "\n");
+ strBuilder.append("smFlagOff: " + SM_FLAG_OFFSET + "\n");
+ strBuilder.append("uncompressedTupleCountOff: " + UNCOMPRESSED_TUPLE_COUNT_OFFSET + "\n");
+ strBuilder.append("prefixTupleCountOff: " + PREFIX_TUPLE_COUNT_OFFSET + "\n");
+ strBuilder.append("nextLeafOff: " + NEXT_LEAF_OFFSET + "\n");
return strBuilder.toString();
}
@Override
public int getTupleCount() {
- return buf.getInt(tupleCountOff);
+ return buf.getInt(ITreeIndexFrame.Constants.TUPLE_COUNT_OFFSET);
}
@Override
@@ -493,50 +501,50 @@ public class BTreeFieldPrefixNSMLeafFrame implements IBTreeLeafFrame {
@Override
public long getPageLsn() {
- return buf.getLong(pageLsnOff);
+ return buf.getLong(PAGE_LSN_OFFSET);
}
@Override
public void setPageLsn(long pageLsn) {
- buf.putLong(pageLsnOff, pageLsn);
+ buf.putLong(PAGE_LSN_OFFSET, pageLsn);
}
@Override
public int getTotalFreeSpace() {
- return buf.getInt(totalFreeSpaceOff);
+ return buf.getInt(TOTAL_FREE_SPACE_OFFSET);
}
@Override
public boolean isLeaf() {
- return buf.get(levelOff) == 0;
+ return buf.get(ITreeIndexFrame.Constants.LEVEL_OFFSET) == 0;
}
@Override
public boolean isInterior() {
- return buf.get(levelOff) > 0;
+ return buf.get(ITreeIndexFrame.Constants.LEVEL_OFFSET) > 0;
}
@Override
public byte getLevel() {
- return buf.get(levelOff);
+ return buf.get(ITreeIndexFrame.Constants.LEVEL_OFFSET);
}
@Override
public void setLevel(byte level) {
- buf.put(levelOff, level);
+ buf.put(ITreeIndexFrame.Constants.LEVEL_OFFSET, level);
}
@Override
public boolean getSmFlag() {
- return buf.get(smFlagOff) != 0;
+ return buf.get(SM_FLAG_OFFSET) != 0;
}
@Override
public void setSmFlag(boolean smFlag) {
if (smFlag) {
- buf.put(smFlagOff, (byte) 1);
+ buf.put(SM_FLAG_OFFSET, (byte) 1);
} else {
- buf.put(smFlagOff, (byte) 0);
+ buf.put(SM_FLAG_OFFSET, (byte) 0);
}
}
@@ -551,21 +559,21 @@ public class BTreeFieldPrefixNSMLeafFrame implements IBTreeLeafFrame {
}
public int getPrefixTupleCount() {
- return buf.getInt(prefixTupleCountOff);
+ return buf.getInt(PREFIX_TUPLE_COUNT_OFFSET);
}
public void setPrefixTupleCount(int prefixTupleCount) {
- buf.putInt(prefixTupleCountOff, prefixTupleCount);
+ buf.putInt(PREFIX_TUPLE_COUNT_OFFSET, prefixTupleCount);
}
@Override
public void insertSorted(ITupleReference tuple) throws HyracksDataException {
- int freeSpace = buf.getInt(freeSpaceOff);
+ int freeSpace = buf.getInt(ITreeIndexFrame.Constants.FREE_SPACE_OFFSET);
int fieldsToTruncate = 0;
// check if tuple matches last prefix tuple
- if (buf.getInt(prefixTupleCountOff) > 0) {
- framePrefixTuple.resetByTupleIndex(this, buf.getInt(prefixTupleCountOff) - 1);
+ if (buf.getInt(PREFIX_TUPLE_COUNT_OFFSET) > 0) {
+ framePrefixTuple.resetByTupleIndex(this, buf.getInt(PREFIX_TUPLE_COUNT_OFFSET) - 1);
if (cmp.fieldRangeCompare(tuple, framePrefixTuple, 0, framePrefixTuple.getFieldCount()) == 0) {
fieldsToTruncate = framePrefixTuple.getFieldCount();
}
@@ -577,17 +585,20 @@ public class BTreeFieldPrefixNSMLeafFrame implements IBTreeLeafFrame {
// insert slot
int prefixSlotNum = FieldPrefixSlotManager.TUPLE_UNCOMPRESSED;
if (fieldsToTruncate > 0) {
- prefixSlotNum = buf.getInt(prefixTupleCountOff) - 1;
+ prefixSlotNum = buf.getInt(PREFIX_TUPLE_COUNT_OFFSET) - 1;
} else {
- buf.putInt(uncompressedTupleCountOff, buf.getInt(uncompressedTupleCountOff) + 1);
+ buf.putInt(UNCOMPRESSED_TUPLE_COUNT_OFFSET, buf.getInt(UNCOMPRESSED_TUPLE_COUNT_OFFSET) + 1);
}
int insSlot = slotManager.encodeSlotFields(prefixSlotNum, FieldPrefixSlotManager.GREATEST_KEY_INDICATOR);
slotManager.insertSlot(insSlot, freeSpace);
// update page metadata
- buf.putInt(tupleCountOff, buf.getInt(tupleCountOff) + 1);
- buf.putInt(freeSpaceOff, buf.getInt(freeSpaceOff) + bytesWritten);
- buf.putInt(totalFreeSpaceOff, buf.getInt(totalFreeSpaceOff) - bytesWritten - slotManager.getSlotSize());
+ buf.putInt(ITreeIndexFrame.Constants.TUPLE_COUNT_OFFSET, buf.getInt(
+ ITreeIndexFrame.Constants.TUPLE_COUNT_OFFSET) + 1);
+ buf.putInt(ITreeIndexFrame.Constants.FREE_SPACE_OFFSET, buf.getInt(ITreeIndexFrame.Constants.FREE_SPACE_OFFSET)
+ + bytesWritten);
+ buf.putInt(TOTAL_FREE_SPACE_OFFSET, buf.getInt(TOTAL_FREE_SPACE_OFFSET) - bytesWritten
+ - slotManager.getSlotSize());
}
@Override
@@ -688,8 +699,8 @@ public class BTreeFieldPrefixNSMLeafFrame implements IBTreeLeafFrame {
int length = rf.slotManager.getSlotSize() * tuplesToRight;
System.arraycopy(right.array(), src, right.array(), dest, length);
- right.putInt(tupleCountOff, tuplesToRight);
- right.putInt(prefixTupleCountOff, prefixesToRight);
+ right.putInt(ITreeIndexFrame.Constants.TUPLE_COUNT_OFFSET, tuplesToRight);
+ right.putInt(PREFIX_TUPLE_COUNT_OFFSET, prefixesToRight);
// on left page move slots to reflect possibly removed prefixes
src = slotManager.getTupleSlotEndOff() + tuplesToRight * slotManager.getSlotSize();
@@ -698,8 +709,8 @@ public class BTreeFieldPrefixNSMLeafFrame implements IBTreeLeafFrame {
length = slotManager.getSlotSize() * tuplesToLeft;
System.arraycopy(buf.array(), src, buf.array(), dest, length);
- buf.putInt(tupleCountOff, tuplesToLeft);
- buf.putInt(prefixTupleCountOff, prefixesToLeft);
+ buf.putInt(ITreeIndexFrame.Constants.TUPLE_COUNT_OFFSET, tuplesToLeft);
+ buf.putInt(PREFIX_TUPLE_COUNT_OFFSET, prefixesToLeft);
// compact both pages
compact();
@@ -721,39 +732,39 @@ public class BTreeFieldPrefixNSMLeafFrame implements IBTreeLeafFrame {
int splitKeySize = tupleWriter.bytesRequired(frameTuple, 0, cmp.getKeyFieldCount());
splitKey.initData(splitKeySize);
tupleWriter.writeTupleFields(frameTuple, 0, cmp.getKeyFieldCount(), splitKey.getBuffer().array(), 0);
- splitKey.getTuple().resetByTupleOffset(splitKey.getBuffer(), 0);
+ splitKey.getTuple().resetByTupleOffset(splitKey.getBuffer().array(), 0);
}
@Override
public int getFreeSpaceOff() {
- return buf.getInt(freeSpaceOff);
+ return buf.getInt(ITreeIndexFrame.Constants.FREE_SPACE_OFFSET);
}
public int getOrigFreeSpaceOff() {
- return nextLeafOff + 4;
+ return NEXT_LEAF_OFFSET + 4;
}
@Override
public void setFreeSpaceOff(int freeSpace) {
- buf.putInt(freeSpaceOff, freeSpace);
+ buf.putInt(ITreeIndexFrame.Constants.FREE_SPACE_OFFSET, freeSpace);
}
@Override
public void setNextLeaf(int page) {
- buf.putInt(nextLeafOff, page);
+ buf.putInt(NEXT_LEAF_OFFSET, page);
}
@Override
public int getNextLeaf() {
- return buf.getInt(nextLeafOff);
+ return buf.getInt(NEXT_LEAF_OFFSET);
}
public int getUncompressedTupleCount() {
- return buf.getInt(uncompressedTupleCountOff);
+ return buf.getInt(UNCOMPRESSED_TUPLE_COUNT_OFFSET);
}
public void setUncompressedTupleCount(int uncompressedTupleCount) {
- buf.putInt(uncompressedTupleCountOff, uncompressedTupleCount);
+ buf.putInt(UNCOMPRESSED_TUPLE_COUNT_OFFSET, uncompressedTupleCount);
}
@Override
@@ -787,7 +798,7 @@ public class BTreeFieldPrefixNSMLeafFrame implements IBTreeLeafFrame {
@Override
public int getPageHeaderSize() {
- return nextLeafOff;
+ return NEXT_LEAF_OFFSET;
}
@Override