You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ea...@apache.org on 2020/06/08 03:13:47 UTC
[incubator-iotdb] 01/04: fix conflicts
This is an automated email from the ASF dual-hosted git repository.
east pushed a commit to branch nvmlogging
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
commit 5db70006889d34445ec387857853f08cd7cab9c2
Author: mdf369 <95...@qq.com>
AuthorDate: Sat Jun 6 00:16:55 2020 +0800
fix conflicts
---
.../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 1 +
.../org/apache/iotdb/db/engine/StorageEngine.java | 2 +-
.../iotdb/db/engine/flush/MemTableFlushTask.java | 5 +
.../iotdb/db/engine/memtable/AbstractMemTable.java | 4 +-
...MemChunk.java => AbstractWritableMemChunk.java} | 35 +--
.../db/engine/memtable/PrimitiveMemTable.java | 18 --
.../iotdb/db/engine/memtable/WritableMemChunk.java | 206 +---------------
.../db/nvm/exception/NVMSpaceManagerException.java | 7 +-
.../db/nvm/memtable/NVMPrimitiveMemTable.java | 49 ++--
.../iotdb/db/nvm/memtable/NVMWritableMemChunk.java | 269 +--------------------
.../iotdb/db/nvm/rescon/NVMPrimitiveArrayPool.java | 14 +-
.../iotdb/db/nvm/space/NVMBinaryDataSpace.java | 43 +++-
.../apache/iotdb/db/nvm/space/NVMDataSpace.java | 4 +-
.../db/query/executor/AggregationExecutor.java | 1 +
.../iotdb/db/query/reader/series/SeriesReader.java | 1 +
.../org/apache/iotdb/db/rescon/MemTablePool.java | 1 -
.../db/utils/datastructure/AbstractTVList.java | 25 ++
.../iotdb/db/utils/datastructure/BinaryTVList.java | 5 -
.../db/utils/datastructure/BooleanTVList.java | 5 -
.../iotdb/db/utils/datastructure/DoubleTVList.java | 5 -
.../iotdb/db/utils/datastructure/FloatTVList.java | 5 -
.../iotdb/db/utils/datastructure/IntTVList.java | 5 -
.../iotdb/db/utils/datastructure/LongTVList.java | 5 -
.../db/utils/datastructure/NVMBinaryTVList.java | 88 +++----
.../db/utils/datastructure/NVMBooleanTVList.java | 38 +--
.../db/utils/datastructure/NVMDoubleTVList.java | 47 +---
.../db/utils/datastructure/NVMFloatTVList.java | 38 +--
.../iotdb/db/utils/datastructure/NVMIntTVList.java | 38 +--
.../db/utils/datastructure/NVMLongTVList.java | 38 +--
.../iotdb/db/utils/datastructure/NVMTVList.java | 31 ++-
.../iotdb/db/writelog/recover/LogReplayer.java | 1 -
.../writelog/recover/TsFileRecoverPerformer.java | 2 +-
.../iotdb/db/integration/IoTDBAggregationIT.java | 8 -
.../apache/iotdb/db/utils/EnvironmentUtils.java | 8 +-
.../recover/RecoverResourceFromReaderTest.java | 2 +-
.../db/writelog/recover/SeqTsFileRecoverTest.java | 2 +-
server/src/test/resources/iotdb-engine.properties | 3 +-
.../java/org/apache/iotdb/rpc/TSStatusCode.java | 2 +-
.../apache/iotdb/tsfile/read/common/BatchData.java | 2 +-
.../tsfile/read/reader/chunk/ChunkReader.java | 1 +
40 files changed, 238 insertions(+), 826 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
index 29abfb5..f0c3b04 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
@@ -646,6 +646,7 @@ public class IoTDBConfig {
schemaDir = addHomeDir(schemaDir);
syncDir = addHomeDir(syncDir);
walFolder = addHomeDir(walFolder);
+ nvmDir = addHomeDir(nvmDir);
if (TSFileDescriptor.getInstance().getConfig().getTSFileStorageFs().equals(FSType.HDFS)) {
String hdfsDir = getHdfsDir();
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
index ba10dbb..65f99d4 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
@@ -157,7 +157,7 @@ public class StorageEngine implements IService {
/*
* recover all storage group processors.
*/
- List<StorageGroupMNode> sgNodes = MManager.getInstance().getAllStorageGroups();
+ List<StorageGroupMNode> sgNodes = MManager.getInstance().getAllStorageGroupNodes();
List<Future> futures = new ArrayList<>();
for (StorageGroupMNode storageGroup : sgNodes) {
futures.add(recoveryThreadPool.submit((Callable<Void>) () -> {
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTask.java b/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTask.java
index 77ec37c..8c9983c 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTask.java
@@ -80,6 +80,11 @@ public class MemTableFlushTask {
IWritableMemChunk series = memTable.getMemTableMap().get(deviceId).get(measurementId);
MeasurementSchema desc = series.getSchema();
AbstractTVList tvList = series.getSortedTVList();
+ System.out.println("flush size:" + tvList.size());
+ for (int i = 0; i < tvList.size(); i++) {
+ System.out.print("<" + tvList.getTime(i) + ":" + tvList.getInt(i) + "> ");
+ }
+ System.out.println();
sortTime += System.currentTimeMillis() - startTime;
encodingTaskQueue.add(new Pair<>(tvList, desc));
// register active time series to the ActiveTimeSeriesCounter
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java b/server/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java
index a2bb763..f7d1183 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java
@@ -144,10 +144,12 @@ public abstract class AbstractMemTable implements IMemTable {
}
+ @Override
public int getSeriesNumber() {
return seriesNumber;
}
+ @Override
public long getTotalPointsNum() {
return totalPointsNum;
}
@@ -197,7 +199,7 @@ public abstract class AbstractMemTable implements IMemTable {
}
long undeletedTime = findUndeletedTime(deviceId, measurement, timeLowerBound);
IWritableMemChunk memChunk = memTableMap.get(deviceId).get(measurement);
- TVList chunkCopy = memChunk.getTVList().clone();
+ TVList chunkCopy = (TVList) memChunk.getTVList().clone();
chunkCopy.setTimeOffset(undeletedTime);
return new ReadOnlyMemChunk(measurement, dataType, encoding, chunkCopy, props, getVersion());
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/memtable/WritableMemChunk.java b/server/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractWritableMemChunk.java
similarity index 81%
copy from server/src/main/java/org/apache/iotdb/db/engine/memtable/WritableMemChunk.java
copy to server/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractWritableMemChunk.java
index 4e115b6..eb277e0 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/memtable/WritableMemChunk.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractWritableMemChunk.java
@@ -1,38 +1,16 @@
-/*
- * 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.iotdb.db.engine.memtable;
+import org.apache.iotdb.db.utils.datastructure.AbstractTVList;
import org.apache.iotdb.db.utils.datastructure.TVList;
import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.utils.Binary;
import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-public class WritableMemChunk implements IWritableMemChunk {
+public abstract class AbstractWritableMemChunk implements IWritableMemChunk {
- private MeasurementSchema schema;
- private TVList list;
-
- public WritableMemChunk(MeasurementSchema schema, TVList list) {
- this.schema = schema;
- this.list = list;
- }
+ protected MeasurementSchema schema;
+ protected AbstractTVList list;
@Override
public void write(long insertTime, Object objectValue) {
@@ -92,7 +70,6 @@ public class WritableMemChunk implements IWritableMemChunk {
}
}
-
@Override
public void putLong(long t, long v) {
list.putLong(t, v);
@@ -184,13 +161,13 @@ public class WritableMemChunk implements IWritableMemChunk {
}
@Override
- public synchronized TVList getSortedTVList() {
+ public synchronized AbstractTVList getSortedTVList() {
list.sort();
return list;
}
@Override
- public TVList getTVList() {
+ public AbstractTVList getTVList() {
return list;
}
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTable.java b/server/src/main/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTable.java
index 52bda30..779d89f 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTable.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTable.java
@@ -22,7 +22,6 @@ package org.apache.iotdb.db.engine.memtable;
import java.util.HashMap;
import java.util.Map;
-import org.apache.iotdb.db.engine.querycontext.ReadOnlyMemChunk;
import org.apache.iotdb.db.rescon.TVListAllocator;
import org.apache.iotdb.db.utils.datastructure.TVList;
import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
@@ -62,21 +61,4 @@ public class PrimitiveMemTable extends AbstractMemTable {
public boolean equals(Object obj) {
return this == obj;
}
-
- @Override
- public ReadOnlyMemChunk query(String deviceId, String measurement, TSDataType dataType,
- Map<String, String> props, long timeLowerBound) {
- TimeValuePairSorter sorter;
- if (!checkPath(deviceId, measurement)) {
- return null;
- } else {
- long undeletedTime = findUndeletedTime(deviceId, measurement, timeLowerBound);
- IWritableMemChunk memChunk = memTableMap.get(deviceId).get(measurement);
- IWritableMemChunk chunkCopy = new WritableMemChunk(dataType,
- (TVList) memChunk.getTVList().clone());
- chunkCopy.setTimeOffset(undeletedTime);
- sorter = chunkCopy;
- }
- return new ReadOnlyMemChunk(dataType, sorter, props);
- }
}
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/memtable/WritableMemChunk.java b/server/src/main/java/org/apache/iotdb/db/engine/memtable/WritableMemChunk.java
index 4e115b6..71422ec 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/memtable/WritableMemChunk.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/memtable/WritableMemChunk.java
@@ -18,219 +18,17 @@
*/
package org.apache.iotdb.db.engine.memtable;
+import org.apache.iotdb.db.utils.datastructure.AbstractTVList;
import org.apache.iotdb.db.utils.datastructure.TVList;
import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.utils.Binary;
import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-public class WritableMemChunk implements IWritableMemChunk {
-
- private MeasurementSchema schema;
- private TVList list;
+public class WritableMemChunk extends AbstractWritableMemChunk {
public WritableMemChunk(MeasurementSchema schema, TVList list) {
this.schema = schema;
this.list = list;
}
-
- @Override
- public void write(long insertTime, Object objectValue) {
- switch (schema.getType()) {
- case BOOLEAN:
- putBoolean(insertTime, (boolean) objectValue);
- break;
- case INT32:
- putInt(insertTime, (int) objectValue);
- break;
- case INT64:
- putLong(insertTime, (long) objectValue);
- break;
- case FLOAT:
- putFloat(insertTime, (float) objectValue);
- break;
- case DOUBLE:
- putDouble(insertTime, (double) objectValue);
- break;
- case TEXT:
- putBinary(insertTime, (Binary) objectValue);
- break;
- default:
- throw new UnSupportedDataTypeException("Unsupported data type:" + schema.getType());
- }
- }
-
- @Override
- public void write(long[] times, Object valueList, TSDataType dataType, int start, int end) {
- switch (dataType) {
- case BOOLEAN:
- boolean[] boolValues = (boolean[]) valueList;
- putBooleans(times, boolValues, start, end);
- break;
- case INT32:
- int[] intValues = (int[]) valueList;
- putInts(times, intValues, start, end);
- break;
- case INT64:
- long[] longValues = (long[]) valueList;
- putLongs(times, longValues, start, end);
- break;
- case FLOAT:
- float[] floatValues = (float[]) valueList;
- putFloats(times, floatValues, start, end);
- break;
- case DOUBLE:
- double[] doubleValues = (double[]) valueList;
- putDoubles(times, doubleValues, start, end);
- break;
- case TEXT:
- Binary[] binaryValues = (Binary[]) valueList;
- putBinaries(times, binaryValues, start, end);
- break;
- default:
- throw new UnSupportedDataTypeException("Unsupported data type:" + dataType);
- }
- }
-
-
- @Override
- public void putLong(long t, long v) {
- list.putLong(t, v);
- }
-
- @Override
- public void putInt(long t, int v) {
- list.putInt(t, v);
- }
-
- @Override
- public void putFloat(long t, float v) {
- list.putFloat(t, v);
- }
-
- @Override
- public void putDouble(long t, double v) {
- list.putDouble(t, v);
- }
-
- @Override
- public void putBinary(long t, Binary v) {
- list.putBinary(t, v);
- }
-
- @Override
- public void putBoolean(long t, boolean v) {
- list.putBoolean(t, v);
- }
-
- @Override
- public void putLongs(long[] t, long[] v) {
- list.putLongs(t, v);
- }
-
- @Override
- public void putInts(long[] t, int[] v) {
- list.putInts(t, v);
- }
-
- @Override
- public void putFloats(long[] t, float[] v) {
- list.putFloats(t, v);
- }
-
- @Override
- public void putDoubles(long[] t, double[] v) {
- list.putDoubles(t, v);
- }
-
- @Override
- public void putBinaries(long[] t, Binary[] v) {
- list.putBinaries(t, v);
- }
-
- @Override
- public void putBooleans(long[] t, boolean[] v) {
- list.putBooleans(t, v);
- }
-
- @Override
- public void putLongs(long[] t, long[] v, int start, int end) {
- list.putLongs(t, v, start, end);
- }
-
- @Override
- public void putInts(long[] t, int[] v, int start, int end) {
- list.putInts(t, v, start, end);
- }
-
- @Override
- public void putFloats(long[] t, float[] v, int start, int end) {
- list.putFloats(t, v, start, end);
- }
-
- @Override
- public void putDoubles(long[] t, double[] v, int start, int end) {
- list.putDoubles(t, v, start, end);
- }
-
- @Override
- public void putBinaries(long[] t, Binary[] v, int start, int end) {
- list.putBinaries(t, v, start, end);
- }
-
- @Override
- public void putBooleans(long[] t, boolean[] v, int start, int end) {
- list.putBooleans(t, v, start, end);
- }
-
- @Override
- public synchronized TVList getSortedTVList() {
- list.sort();
- return list;
- }
-
- @Override
- public TVList getTVList() {
- return list;
- }
-
- @Override
- public long count() {
- return list.size();
- }
-
- @Override
- public MeasurementSchema getSchema() {
- return schema;
- }
-
- @Override
- public void setTimeOffset(long offset) {
- list.setTimeOffset(offset);
- }
-
- @Override
- public long getMinTime() {
- return list.getMinTime();
- }
-
- @Override
- public int delete(long upperBound) {
- return list.delete(upperBound);
- }
-
- @Override
- public String toString() {
- int size = getSortedTVList().size();
- StringBuilder out = new StringBuilder("MemChunk Size: " + size + System.lineSeparator());
- if (size != 0) {
- out.append("Data type:").append(schema.getType()).append(System.lineSeparator());
- out.append("First point:").append(getSortedTVList().getTimeValuePair(0))
- .append(System.lineSeparator());
- out.append("Last point:").append(getSortedTVList().getTimeValuePair(size - 1))
- .append(System.lineSeparator());
- ;
- }
- return out.toString();
- }
}
diff --git a/server/src/main/java/org/apache/iotdb/db/nvm/exception/NVMSpaceManagerException.java b/server/src/main/java/org/apache/iotdb/db/nvm/exception/NVMSpaceManagerException.java
index 891acc0..1043f46 100644
--- a/server/src/main/java/org/apache/iotdb/db/nvm/exception/NVMSpaceManagerException.java
+++ b/server/src/main/java/org/apache/iotdb/db/nvm/exception/NVMSpaceManagerException.java
@@ -1,14 +1,13 @@
package org.apache.iotdb.db.nvm.exception;
-import org.apache.iotdb.db.exception.ProcessException;
+import org.apache.iotdb.db.exception.IoTDBException;
import org.apache.iotdb.rpc.TSStatusCode;
-public class NVMSpaceManagerException extends ProcessException {
+public class NVMSpaceManagerException extends IoTDBException {
private static final long serialVersionUID = 3502239072309147687L;
public NVMSpaceManagerException(String message) {
- super(message);
- errorCode = TSStatusCode.NVMSPACE_MANAGER_EROOR.getStatusCode();
+ super(message, TSStatusCode.NVMSPACE_MANAGER_ERROR.getStatusCode());
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/nvm/memtable/NVMPrimitiveMemTable.java b/server/src/main/java/org/apache/iotdb/db/nvm/memtable/NVMPrimitiveMemTable.java
index 175e2ab..9012d4a 100644
--- a/server/src/main/java/org/apache/iotdb/db/nvm/memtable/NVMPrimitiveMemTable.java
+++ b/server/src/main/java/org/apache/iotdb/db/nvm/memtable/NVMPrimitiveMemTable.java
@@ -7,18 +7,20 @@ import java.util.Map.Entry;
import org.apache.iotdb.db.engine.memtable.AbstractMemTable;
import org.apache.iotdb.db.engine.memtable.IMemTable;
import org.apache.iotdb.db.engine.memtable.IWritableMemChunk;
-import org.apache.iotdb.db.engine.memtable.TimeValuePairSorter;
-import org.apache.iotdb.db.engine.memtable.WritableMemChunk;
-import org.apache.iotdb.db.engine.querycontext.ReadOnlyMemChunk;
+import org.apache.iotdb.db.exception.metadata.MetadataException;
+import org.apache.iotdb.db.metadata.MManager;
import org.apache.iotdb.db.nvm.space.NVMDataSpace;
-import org.apache.iotdb.db.utils.datastructure.NVMTVList;
import org.apache.iotdb.db.rescon.TVListAllocator;
-import org.apache.iotdb.db.utils.datastructure.TVList;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.iotdb.db.utils.datastructure.NVMTVList;
import org.apache.iotdb.tsfile.utils.Pair;
+import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class NVMPrimitiveMemTable extends AbstractMemTable {
+ private static final Logger logger = LoggerFactory.getLogger(NVMPrimitiveMemTable.class);
+
public NVMPrimitiveMemTable(String sgId) {
super(sgId);
}
@@ -28,9 +30,9 @@ public class NVMPrimitiveMemTable extends AbstractMemTable {
}
@Override
- protected IWritableMemChunk genMemSeries(String deviceId, String measurementId, TSDataType dataType) {
- return new NVMWritableMemChunk(dataType,
- (NVMTVList) TVListAllocator.getInstance().allocate(storageGroupId, deviceId, measurementId, dataType, true));
+ protected IWritableMemChunk genMemSeries(String deviceId, String measurementId, MeasurementSchema schema) {
+ return new NVMWritableMemChunk(schema,
+ (NVMTVList) TVListAllocator.getInstance().allocate(storageGroupId, deviceId, measurementId, schema.getType(), true));
}
@Override
@@ -53,23 +55,6 @@ public class NVMPrimitiveMemTable extends AbstractMemTable {
return this == obj;
}
- @Override
- public ReadOnlyMemChunk query(String deviceId, String measurement, TSDataType dataType,
- Map<String, String> props, long timeLowerBound) {
- TimeValuePairSorter sorter;
- if (!checkPath(deviceId, measurement)) {
- return null;
- } else {
- long undeletedTime = findUndeletedTime(deviceId, measurement, timeLowerBound);
- IWritableMemChunk memChunk = memTableMap.get(deviceId).get(measurement);
- IWritableMemChunk chunkCopy = new WritableMemChunk(dataType,
- (TVList) memChunk.getTVList().clone());
- chunkCopy.setTimeOffset(undeletedTime);
- sorter = chunkCopy;
- }
- return new ReadOnlyMemChunk(dataType, sorter, props);
- }
-
public void loadData(Map<String, Map<String, Pair<List<NVMDataSpace>, List<NVMDataSpace>>>> dataMap) {
if (dataMap == null) {
return;
@@ -83,10 +68,16 @@ public class NVMPrimitiveMemTable extends AbstractMemTable {
.entrySet()) {
String measurementId = measurementDataEntry.getKey();
Pair<List<NVMDataSpace>, List<NVMDataSpace>> tvListPair = measurementDataEntry.getValue();
- TSDataType dataType = tvListPair.right.get(0).getDataType();
- NVMWritableMemChunk memChunk = (NVMWritableMemChunk) createIfNotExistAndGet(deviceId, measurementId, dataType);
- memChunk.loadData(tvListPair.left, tvListPair.right);
+ try {
+ MeasurementSchema[] schemas = MManager.getInstance().getSchemas(deviceId, new String[]{measurementId});
+ NVMWritableMemChunk memChunk = (NVMWritableMemChunk) createIfNotExistAndGet(deviceId, measurementId, schemas[0]);
+ memChunk.loadData(tvListPair.left, tvListPair.right);
+ } catch (MetadataException e) {
+ logger.error(
+ "occurs exception when reloading records from path ({}.{}): {}.(Will ignore the records)",
+ deviceId, measurementId, e.getMessage());
+ }
}
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/nvm/memtable/NVMWritableMemChunk.java b/server/src/main/java/org/apache/iotdb/db/nvm/memtable/NVMWritableMemChunk.java
index 6a4f72e..602a418 100644
--- a/server/src/main/java/org/apache/iotdb/db/nvm/memtable/NVMWritableMemChunk.java
+++ b/server/src/main/java/org/apache/iotdb/db/nvm/memtable/NVMWritableMemChunk.java
@@ -1,276 +1,19 @@
package org.apache.iotdb.db.nvm.memtable;
-import java.util.ArrayList;
import java.util.List;
-import org.apache.iotdb.db.engine.memtable.IWritableMemChunk;
+import org.apache.iotdb.db.engine.memtable.AbstractWritableMemChunk;
import org.apache.iotdb.db.nvm.space.NVMDataSpace;
import org.apache.iotdb.db.utils.datastructure.NVMTVList;
-import org.apache.iotdb.db.utils.TimeValuePair;
-import org.apache.iotdb.db.utils.TsPrimitiveType.TsBinary;
-import org.apache.iotdb.db.utils.TsPrimitiveType.TsBoolean;
-import org.apache.iotdb.db.utils.TsPrimitiveType.TsDouble;
-import org.apache.iotdb.db.utils.TsPrimitiveType.TsFloat;
-import org.apache.iotdb.db.utils.TsPrimitiveType.TsInt;
-import org.apache.iotdb.db.utils.TsPrimitiveType.TsLong;
-import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.Binary;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
-public class NVMWritableMemChunk implements IWritableMemChunk {
+public class NVMWritableMemChunk extends AbstractWritableMemChunk {
- private static final Logger logger = LoggerFactory.getLogger(NVMWritableMemChunk.class);
-
- private TSDataType dataType;
- private NVMTVList list;
- private List<TimeValuePair> sortedList;
-
- public NVMWritableMemChunk(TSDataType dataType, NVMTVList list) {
- this.dataType = dataType;
+ public NVMWritableMemChunk(MeasurementSchema schema, NVMTVList list) {
+ this.schema = schema;
this.list = list;
}
- @Override
- public void write(long insertTime, Object objectValue) {
- switch (dataType) {
- case BOOLEAN:
- putBoolean(insertTime, (boolean) objectValue);
- break;
- case INT32:
- putInt(insertTime, (int) objectValue);
- break;
- case INT64:
- putLong(insertTime, (long) objectValue);
- break;
- case FLOAT:
- putFloat(insertTime, (float) objectValue);
- break;
- case DOUBLE:
- putDouble(insertTime, (double) objectValue);
- break;
- case TEXT:
- putBinary(insertTime, (Binary) objectValue);
- break;
- default:
- throw new UnSupportedDataTypeException("Unsupported data type:" + dataType);
- }
- sortedList = null;
- }
-
- @Override
- public void write(long[] times, Object valueList, TSDataType dataType, List<Integer> indexes) {
- switch (dataType) {
- case BOOLEAN:
- boolean[] boolValues = (boolean[]) valueList;
- if (times.length == indexes.size()) {
- putBooleans(times, boolValues);
- break;
- }
- for (Integer index : indexes) {
- putBoolean(times[index], boolValues[index]);
- }
- break;
- case INT32:
- int[] intValues = (int[]) valueList;
- if (times.length == indexes.size()) {
- putInts(times, intValues);
- break;
- }
- for (Integer index : indexes) {
- putInt(times[index], intValues[index]);
- }
- break;
- case INT64:
- long[] longValues = (long[]) valueList;
- if (times.length == indexes.size()) {
- putLongs(times, longValues);
- break;
- }
- for (Integer index : indexes) {
- putLong(times[index], longValues[index]);
- }
- break;
- case FLOAT:
- float[] floatValues = (float[]) valueList;
- if (times.length == indexes.size()) {
- putFloats(times, floatValues);
- break;
- }
- for (Integer index : indexes) {
- putFloat(times[index], floatValues[index]);
- }
- break;
- case DOUBLE:
- double[] doubleValues = (double[]) valueList;
- if (times.length == indexes.size()) {
- putDoubles(times, doubleValues);
- break;
- }
- for (Integer index : indexes) {
- putDouble(times[index], doubleValues[index]);
- }
- break;
- case TEXT:
- Binary[] binaryValues = (Binary[]) valueList;
- if (times.length == indexes.size()) {
- putBinaries(times, binaryValues);
- break;
- }
- for (Integer index : indexes) {
- putBinary(times[index], binaryValues[index]);
- }
- break;
- default:
- throw new UnSupportedDataTypeException("Unsupported data type:" + dataType);
- }
- sortedList = null;
- }
-
-
- @Override
- public void putLong(long t, long v) {
- list.putLong(t, v);
- }
-
- @Override
- public void putInt(long t, int v) {
- list.putInt(t, v);
- }
-
- @Override
- public void putFloat(long t, float v) {
- list.putFloat(t, v);
- }
-
- @Override
- public void putDouble(long t, double v) {
- list.putDouble(t, v);
- }
-
- @Override
- public void putBinary(long t, Binary v) {
- list.putBinary(t, v);
- }
-
- @Override
- public void putBoolean(long t, boolean v) {
- list.putBoolean(t, v);
- }
-
- @Override
- public void putLongs(long[] t, long[] v) {
- list.putLongs(t, v);
- }
-
- @Override
- public void putInts(long[] t, int[] v) {
- list.putInts(t, v);
- }
-
- @Override
- public void putFloats(long[] t, float[] v) {
- list.putFloats(t, v);
- }
-
- @Override
- public void putDoubles(long[] t, double[] v) {
- list.putDoubles(t, v);
- }
-
- @Override
- public void putBinaries(long[] t, Binary[] v) {
- list.putBinaries(t, v);
- }
-
- @Override
- public void putBooleans(long[] t, boolean[] v) {
- list.putBooleans(t, v);
- }
-
- @Override
- public synchronized NVMTVList getSortedTVList() {
- list.sort();
- return list;
- }
-
- @Override
- public NVMTVList getTVList() {
- return list;
- }
-
- @Override
- public long count() {
- return list.size();
- }
-
- @Override
- public TSDataType getType() {
- return dataType;
- }
-
- @Override
- public void setTimeOffset(long offset) {
- list.setTimeOffset(offset);
- }
-
- @Override
- public synchronized List<TimeValuePair> getSortedTimeValuePairList() {
- if (sortedList != null) {
- return sortedList;
- }
- sortedList = new ArrayList<>();
- list.sort();
- for (int i = 0; i < list.size(); i++) {
- long time = list.getTime(i);
- if (time < list.getTimeOffset() ||
- (i + 1 < list.size() && (time == list.getTime(i + 1)))) {
- continue;
- }
- switch (dataType) {
- case BOOLEAN:
- sortedList.add(new TimeValuePair(time, new TsBoolean(list.getBoolean(i))));
- break;
- case INT32:
- sortedList.add(new TimeValuePair(time, new TsInt(list.getInt(i))));
- break;
- case INT64:
- sortedList.add(new TimeValuePair(time, new TsLong(list.getLong(i))));
- break;
- case FLOAT:
- sortedList.add(new TimeValuePair(time, new TsFloat(list.getFloat(i))));
- break;
- case DOUBLE:
- sortedList.add(new TimeValuePair(time, new TsDouble(list.getDouble(i))));
- break;
- case TEXT:
- sortedList.add(new TimeValuePair(time, new TsBinary(list.getBinary(i))));
- break;
- default:
- logger.error("Unsupported data type: {}", dataType);
- break;
- }
- }
- return this.sortedList;
- }
-
- @Override
- public boolean isEmpty() {
- return list.size() == 0;
- }
-
- @Override
- public long getMinTime() {
- return list.getMinTime();
- }
-
- @Override
- public void delete(long upperBound) {
- list.delete(upperBound);
- }
-
public void loadData(List<NVMDataSpace> timeSpaceList, List<NVMDataSpace> valueSpaceList) {
- // TODO how about abstract
- list.loadData(timeSpaceList, valueSpaceList);
+ ((NVMTVList) list).loadData(timeSpaceList, valueSpaceList);
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/nvm/rescon/NVMPrimitiveArrayPool.java b/server/src/main/java/org/apache/iotdb/db/nvm/rescon/NVMPrimitiveArrayPool.java
index 1ea4f6e..81080c2 100644
--- a/server/src/main/java/org/apache/iotdb/db/nvm/rescon/NVMPrimitiveArrayPool.java
+++ b/server/src/main/java/org/apache/iotdb/db/nvm/rescon/NVMPrimitiveArrayPool.java
@@ -4,8 +4,11 @@ import java.util.ArrayDeque;
import java.util.EnumMap;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.nvm.exception.NVMSpaceManagerException;
+import org.apache.iotdb.db.nvm.space.NVMBinaryDataSpace;
import org.apache.iotdb.db.nvm.space.NVMDataSpace;
import org.apache.iotdb.db.nvm.space.NVMSpaceManager;
+import org.apache.iotdb.db.rescon.PrimitiveArrayPool;
+import org.apache.iotdb.db.utils.datastructure.NVMBinaryTVList;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
public class NVMPrimitiveArrayPool {
@@ -15,7 +18,8 @@ public class NVMPrimitiveArrayPool {
*/
private static final EnumMap<TSDataType, ArrayDeque<NVMDataSpace>> primitiveArraysMap = new EnumMap<>(TSDataType.class);
- public static final int ARRAY_SIZE = 128;
+ public static final int ARRAY_SIZE =
+ IoTDBDescriptor.getInstance().getConfig().getPrimitiveArraySize();
static {
primitiveArraysMap.put(TSDataType.BOOLEAN, new ArrayDeque());
@@ -35,17 +39,19 @@ public class NVMPrimitiveArrayPool {
private NVMPrimitiveArrayPool() {}
public synchronized NVMDataSpace getPrimitiveDataListByType(TSDataType dataType, boolean isTime) {
- ArrayDeque<NVMDataSpace> dataListQueue = primitiveArraysMap.computeIfAbsent(dataType, k ->new ArrayDeque<>());
+ ArrayDeque<NVMDataSpace> dataListQueue = primitiveArraysMap
+ .computeIfAbsent(dataType, k -> new ArrayDeque<>());
NVMDataSpace nvmSpace = dataListQueue.poll();
if (nvmSpace == null) {
try {
long size = NVMSpaceManager.getPrimitiveTypeByteSize(dataType);
- nvmSpace = NVMSpaceManager.getInstance().allocateDataSpace(size * ARRAY_SIZE, dataType, isTime);
+ nvmSpace = NVMSpaceManager.getInstance().allocateDataSpace(
+ size * (dataType == TSDataType.TEXT ? NVMBinaryDataSpace.NUM_OF_TEXT_IN_SPACE
+ : ARRAY_SIZE), dataType, isTime);
} catch (NVMSpaceManagerException e) {
e.printStackTrace();
System.exit(0);
- // TODO
}
}
return nvmSpace;
diff --git a/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMBinaryDataSpace.java b/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMBinaryDataSpace.java
index abde477..3e3932f 100644
--- a/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMBinaryDataSpace.java
+++ b/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMBinaryDataSpace.java
@@ -8,33 +8,41 @@ import org.apache.iotdb.tsfile.utils.Binary;
public class NVMBinaryDataSpace extends NVMDataSpace {
+ public static final int NUM_OF_TEXT_IN_SPACE = 1;
+
+ private int endPos;
+
private int cacheSize;
private Binary[] cachedBinaries;
+ private int[] cachedOffset;
NVMBinaryDataSpace(long offset, long size, ByteBuffer byteBuffer, int index, boolean recover) {
super(offset, size, byteBuffer, index, TSDataType.TEXT, false);
- cacheSize = 0;
- cachedBinaries = new Binary[ARRAY_SIZE];
+ reset();
+ cachedBinaries = new Binary[NUM_OF_TEXT_IN_SPACE];
+ cachedOffset = new int[NUM_OF_TEXT_IN_SPACE];
if (recover) {
recoverCache();
}
}
private void recoverCache() {
- int size = byteBuffer.getInt();
- cacheSize = size;
- for (int i = 0; i < size; i++) {
+ cacheSize = byteBuffer.getInt();
+ for (int i = 0; i < cacheSize; i++) {
int len = byteBuffer.getInt();
byte[] bytes = new byte[len];
byteBuffer.get(bytes);
+
cachedBinaries[i] = new Binary(bytes);
+ cachedOffset[i] = endPos;
+ endPos += len + NVMSpaceManager.getPrimitiveTypeByteSize(TSDataType.INT32);
}
}
@Override
public int getUnitNum() {
- return cachedBinaries.length;
+ return cacheSize;
}
@Override
@@ -44,13 +52,21 @@ public class NVMBinaryDataSpace extends NVMDataSpace {
@Override
public void setData(int index, Object object) {
- // todo nos support index
Binary binary = (Binary) object;
+ cachedOffset[index] = endPos;
cachedBinaries[index] = binary;
- if (index >= cacheSize) {
- byteBuffer.putInt(0, index);
- cacheSize = index;
- }
+ endPos = binary.getLength() + 2 * NVMSpaceManager.getPrimitiveTypeByteSize(TSDataType.INT32);
+ byteBuffer.position(NVMSpaceManager.getPrimitiveTypeByteSize(TSDataType.INT32));
+ byteBuffer.putInt(binary.getLength());
+ byteBuffer.put(binary.getValues());
+ }
+
+ public void appendData(Binary binary) {
+ cachedOffset[cacheSize] = endPos;
+ cachedBinaries[cacheSize] = binary;
+ cacheSize++;
+ endPos += binary.getLength() + NVMSpaceManager.getPrimitiveTypeByteSize(TSDataType.INT32);
+ byteBuffer.putInt(0, cacheSize);
byteBuffer.putInt(binary.getLength());
byteBuffer.put(binary.getValues());
}
@@ -59,4 +75,9 @@ public class NVMBinaryDataSpace extends NVMDataSpace {
public Object toArray() {
return cachedBinaries;
}
+
+ public void reset() {
+ cacheSize = 0;
+ endPos = NVMSpaceManager.getPrimitiveTypeByteSize(TSDataType.INT32);
+ }
}
diff --git a/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMDataSpace.java b/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMDataSpace.java
index 06be125..d299b32 100644
--- a/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMDataSpace.java
+++ b/server/src/main/java/org/apache/iotdb/db/nvm/space/NVMDataSpace.java
@@ -35,7 +35,7 @@ public class NVMDataSpace extends NVMSpace {
}
public int getValidUnitNum() {
- // TODO only for time
+ // only for time space
int count = 0;
while (count < unitNum) {
long v = (long) getData(count);
@@ -67,7 +67,7 @@ public class NVMDataSpace extends NVMSpace {
object = byteBuffer.getDouble(index);
break;
case TEXT:
- // TODO
+ // override in NVMBinaryDataSpace
break;
}
return object;
diff --git a/server/src/main/java/org/apache/iotdb/db/query/executor/AggregationExecutor.java b/server/src/main/java/org/apache/iotdb/db/query/executor/AggregationExecutor.java
index 04e80f2..fae41c4 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/executor/AggregationExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/executor/AggregationExecutor.java
@@ -231,6 +231,7 @@ public class AggregationExecutor {
continue;
}
BatchData nextOverlappedPageData = seriesReader.nextPage();
+ System.out.println("read:" + nextOverlappedPageData.count);
for (int i = 0; i < aggregateResultList.size(); i++) {
if (!isCalculatedArray[i]) {
AggregateResult aggregateResult = aggregateResultList.get(i);
diff --git a/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReader.java b/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReader.java
index 816be29..b1e2eb6 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReader.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReader.java
@@ -477,6 +477,7 @@ class SeriesReader {
* get current first point in mergeReader, this maybe overlapped latter
*/
TimeValuePair timeValuePair = mergeReader.currentTimeValuePair();
+ System.out.println("read:" + timeValuePair);
if (timeValuePair.getTimestamp() > currentPageEndTime) {
break;
diff --git a/server/src/main/java/org/apache/iotdb/db/rescon/MemTablePool.java b/server/src/main/java/org/apache/iotdb/db/rescon/MemTablePool.java
index fdb6728..23f2a90 100644
--- a/server/src/main/java/org/apache/iotdb/db/rescon/MemTablePool.java
+++ b/server/src/main/java/org/apache/iotdb/db/rescon/MemTablePool.java
@@ -42,7 +42,6 @@ public class MemTablePool {
private int nvmSize = 0;
private static final int WAIT_TIME = 2000;
- private int size = 0;
private MemTablePool() {
}
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/AbstractTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/AbstractTVList.java
index 507be77..d8728f3 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/AbstractTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/AbstractTVList.java
@@ -80,6 +80,30 @@ public abstract class AbstractTVList {
throw new UnsupportedOperationException(ERR_DATATYPE_NOT_CONSISTENT);
}
+ public void putLongs(long[] time, long[] value, int start, int end) {
+ throw new UnsupportedOperationException(ERR_DATATYPE_NOT_CONSISTENT);
+ }
+
+ public void putInts(long[] time, int[] value, int start, int end) {
+ throw new UnsupportedOperationException(ERR_DATATYPE_NOT_CONSISTENT);
+ }
+
+ public void putFloats(long[] time, float[] value, int start, int end) {
+ throw new UnsupportedOperationException(ERR_DATATYPE_NOT_CONSISTENT);
+ }
+
+ public void putDoubles(long[] time, double[] value, int start, int end) {
+ throw new UnsupportedOperationException(ERR_DATATYPE_NOT_CONSISTENT);
+ }
+
+ public void putBinaries(long[] time, Binary[] value, int start, int end) {
+ throw new UnsupportedOperationException(ERR_DATATYPE_NOT_CONSISTENT);
+ }
+
+ public void putBooleans(long[] time, boolean[] value, int start, int end) {
+ throw new UnsupportedOperationException(ERR_DATATYPE_NOT_CONSISTENT);
+ }
+
public long getLong(int index) {
throw new UnsupportedOperationException(ERR_DATATYPE_NOT_CONSISTENT);
}
@@ -260,6 +284,7 @@ public abstract class AbstractTVList {
int n = start - left; // The number of elements to move
for (int i = n; i >= 1; i--) {
set(left + i - 1, left + i);
+ setToSorted(left + i - 1, left + i);
}
setPivotTo(left);
}
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/BinaryTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/BinaryTVList.java
index f146d28..3b6b89f 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/BinaryTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/BinaryTVList.java
@@ -262,11 +262,6 @@ public class BinaryTVList extends TVList {
}
@Override
- protected Object getValueForSort(int index) {
- return getBinary(index);
- }
-
- @Override
protected void setForSort(int index, long timestamp, Object value) {
set(index, timestamp, (Binary) value);
}
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/BooleanTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/BooleanTVList.java
index ce42960..0ad2ecc 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/BooleanTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/BooleanTVList.java
@@ -262,11 +262,6 @@ public class BooleanTVList extends TVList {
}
@Override
- protected Object getValueForSort(int index) {
- return getBoolean(index);
- }
-
- @Override
protected void setForSort(int index, long timestamp, Object value) {
set(index, timestamp, (boolean) value);
}
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/DoubleTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/DoubleTVList.java
index 131e9fb..90a39fc 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/DoubleTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/DoubleTVList.java
@@ -266,11 +266,6 @@ public class DoubleTVList extends TVList {
}
@Override
- protected Object getValueForSort(int index) {
- return getDouble(index);
- }
-
- @Override
protected void setForSort(int index, long timestamp, Object value) {
set(index, timestamp, (double) value);
}
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/FloatTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/FloatTVList.java
index 6861365..9ea5086 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/FloatTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/FloatTVList.java
@@ -269,11 +269,6 @@ public class FloatTVList extends TVList {
}
@Override
- protected Object getValueForSort(int index) {
- return getFloat(index);
- }
-
- @Override
protected void setForSort(int index, long timestamp, Object value) {
set(index, timestamp, (float) value);
}
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/IntTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/IntTVList.java
index f3c73bb..75d2248 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/IntTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/IntTVList.java
@@ -262,11 +262,6 @@ public class IntTVList extends TVList {
}
@Override
- protected Object getValueForSort(int index) {
- return getInt(index);
- }
-
- @Override
protected void setForSort(int index, long timestamp, Object value) {
set(index, timestamp, (int) value);
}
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/LongTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/LongTVList.java
index 9f8a0ee..5922caa 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/LongTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/LongTVList.java
@@ -261,11 +261,6 @@ public class LongTVList extends TVList {
}
@Override
- protected Object getValueForSort(int index) {
- return getLong(index);
- }
-
- @Override
protected void setForSort(int index, long timestamp, Object value) {
set(index, timestamp, (long) value);
}
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMBinaryTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMBinaryTVList.java
index 0b8ce51..88c37fc 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMBinaryTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMBinaryTVList.java
@@ -4,6 +4,7 @@ import static org.apache.iotdb.db.nvm.rescon.NVMPrimitiveArrayPool.ARRAY_SIZE;
import org.apache.iotdb.db.exception.StartupException;
import org.apache.iotdb.db.nvm.rescon.NVMPrimitiveArrayPool;
+import org.apache.iotdb.db.nvm.space.NVMBinaryDataSpace;
import org.apache.iotdb.db.nvm.space.NVMDataSpace;
import org.apache.iotdb.db.nvm.space.NVMSpaceManager;
import org.apache.iotdb.db.nvm.space.NVMSpaceMetadataManager;
@@ -14,7 +15,6 @@ import org.apache.iotdb.tsfile.utils.Binary;
// TODO how to organize data
public class NVMBinaryTVList extends NVMTVList {
- // TODO
private Binary[][] sortedValues;
private Binary[][] tempValuesForSort;
@@ -27,10 +27,9 @@ public class NVMBinaryTVList extends NVMTVList {
public void putBinary(long timestamp, Binary value) {
checkExpansion();
int arrayIndex = size;
- int elementIndex = 0;
minTime = minTime <= timestamp ? minTime : timestamp;
- timestamps.get(arrayIndex).setData(elementIndex, timestamp);
- values.get(arrayIndex).setData(elementIndex, value);
+ timestamps.get(arrayIndex).setData(0, timestamp);
+ ((NVMBinaryDataSpace)values.get(arrayIndex)).appendData(value);
size++;
if (sorted && size > 1 && timestamp < getTime(size - 2)) {
sorted = false;
@@ -39,7 +38,8 @@ public class NVMBinaryTVList extends NVMTVList {
@Override
protected void checkExpansion() {
- NVMDataSpace valueSpace = expandValues();
+ NVMBinaryDataSpace valueSpace = (NVMBinaryDataSpace) expandValues();
+ valueSpace.reset();
NVMDataSpace timeSpace = NVMPrimitiveArrayPool
.getInstance().getPrimitiveDataListByType(TSDataType.INT64, true);
timestamps.add(timeSpace);
@@ -48,22 +48,46 @@ public class NVMBinaryTVList extends NVMTVList {
}
@Override
+ public long getTime(int index) {
+ if (index >= size) {
+ throw new ArrayIndexOutOfBoundsException(index);
+ }
+ return (long) timestamps.get(index).getData(0);
+ }
+
+ @Override
public Binary getBinary(int index) {
+ return (Binary) getValue(index);
+ }
+
+ @Override
+ public Object getValue(int index) {
if (index >= size) {
throw new ArrayIndexOutOfBoundsException(index);
}
- int arrayIndex = index;
- int elementIndex = 0;
- return (Binary) values.get(arrayIndex).getData(elementIndex);
+ return values.get(index).getData(0);
+ }
+
+ @Override
+ protected void set(int index, long timestamp, Object value) {
+ if (index >= size) {
+ throw new ArrayIndexOutOfBoundsException(index);
+ }
+ timestamps.get(index).setData(0, timestamp);
+ values.get(index).setData(0, value);
}
@Override
public BinaryTVList clone() {
BinaryTVList cloneList = new BinaryTVList();
- cloneAs(cloneList);
- for (NVMDataSpace valueSpace : values) {
- cloneList.addBatchValue((Binary[]) cloneValue(valueSpace));
+
+ long[] cloneTimestamps = new long[size];
+ Binary[] cloneValues = new Binary[size];
+ for (int i = 0; i < size; i++) {
+ cloneTimestamps[i] = timestamps.get(i).getLong(0);
+ cloneValues[i] = (Binary) values.get(i).getData(0);
}
+ cloneList.putBinaries(cloneTimestamps, cloneValues);
return cloneList;
}
@@ -172,49 +196,17 @@ public class NVMBinaryTVList extends NVMTVList {
@Override
public void putBinaries(long[] time, Binary[] value) {
- checkExpansion();
- int idx = 0;
int length = time.length;
for (int i = 0; i < length; i++) {
putBinary(time[i], value[i]);
}
+ }
-// updateMinTimeAndSorted(time);
-//
-// while (idx < length) {
-// int inputRemaining = length - idx;
-// int arrayIdx = size / ARRAY_SIZE;
-// int elementIdx = size % ARRAY_SIZE;
-// int internalRemaining = ARRAY_SIZE - elementIdx;
-// if (internalRemaining >= inputRemaining) {
-// // the remaining inputs can fit the last array, copy all remaining inputs into last array
-// System.arraycopy(time, idx, timestamps.get(arrayIdx), elementIdx, inputRemaining);
-// System.arraycopy(value, idx, values.get(arrayIdx), elementIdx, inputRemaining);
-// size += inputRemaining;
-// break;
-// } else {
-// // the remaining inputs cannot fit the last array, fill the last array and create a new
-// // one and enter the next loop
-// System.arraycopy(time, idx, timestamps.get(arrayIdx), elementIdx, internalRemaining);
-// System.arraycopy(value, idx, values.get(arrayIdx), elementIdx, internalRemaining);
-// idx += internalRemaining;
-// size += internalRemaining;
-// checkExpansion();
-// }
-// }
- }
-
- public static void main(String[] args) throws StartupException {
- NVMSpaceManager.getInstance().init();
-
- NVMBinaryTVList tvList = new NVMBinaryTVList("sg", "d0", "s0");
- int size = 5000;
- for (int i = 0; i < size; i++) {
- String v = String.valueOf(size - i);
- tvList.putBinary(i, Binary.valueOf(v));
+ @Override
+ public void putBinaries(long[] time, Binary[] value, int start, int end) {
+ for (int i = start; i < end; i++) {
+ putBinary(time[i], value[i]);
}
-
- tvList.sort();
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMBooleanTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMBooleanTVList.java
index 3c8a8e7..726fb1e 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMBooleanTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMBooleanTVList.java
@@ -33,12 +33,7 @@ public class NVMBooleanTVList extends NVMTVList {
@Override
public boolean getBoolean(int index) {
- if (index >= size) {
- throw new ArrayIndexOutOfBoundsException(index);
- }
- int arrayIndex = index / ARRAY_SIZE;
- int elementIndex = index % ARRAY_SIZE;
- return (boolean) values.get(arrayIndex).getData(elementIndex);
+ return (boolean) getValue(index);
}
@Override
@@ -156,36 +151,17 @@ public class NVMBooleanTVList extends NVMTVList {
@Override
public void putBooleans(long[] time, boolean[] value) {
- checkExpansion();
- int idx = 0;
int length = time.length;
for (int i = 0; i < length; i++) {
putBoolean(time[i], value[i]);
}
+ }
-// updateMinTimeAndSorted(time);
-//
-// while (idx < length) {
-// int inputRemaining = length - idx;
-// int arrayIdx = size / ARRAY_SIZE;
-// int elementIdx = size % ARRAY_SIZE;
-// int internalRemaining = ARRAY_SIZE - elementIdx;
-// if (internalRemaining >= inputRemaining) {
-// // the remaining inputs can fit the last array, copy all remaining inputs into last array
-// System.arraycopy(time, idx, timestamps.get(arrayIdx), elementIdx, inputRemaining);
-// System.arraycopy(value, idx, values.get(arrayIdx), elementIdx, inputRemaining);
-// size += inputRemaining;
-// break;
-// } else {
-// // the remaining inputs cannot fit the last array, fill the last array and create a new
-// // one and enter the next loop
-// System.arraycopy(time, idx, timestamps.get(arrayIdx), elementIdx, internalRemaining);
-// System.arraycopy(value, idx, values.get(arrayIdx), elementIdx, internalRemaining);
-// idx += internalRemaining;
-// size += internalRemaining;
-// checkExpansion();
-// }
-// }
+ @Override
+ public void putBooleans(long[] time, boolean[] value, int start, int end) {
+ for (int i = start; i < end; i++) {
+ putBoolean(time[i], value[i]);
+ }
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMDoubleTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMDoubleTVList.java
index 7455d18..c8bdee4 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMDoubleTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMDoubleTVList.java
@@ -34,12 +34,7 @@ public class NVMDoubleTVList extends NVMTVList {
@Override
public double getDouble(int index) {
- if (index >= size) {
- throw new ArrayIndexOutOfBoundsException(index);
- }
- int arrayIndex = index / ARRAY_SIZE;
- int elementIndex = index % ARRAY_SIZE;
- return (double) values.get(arrayIndex).getData(elementIndex);
+ return (double) getValue(index);
}
@Override
@@ -157,45 +152,17 @@ public class NVMDoubleTVList extends NVMTVList {
@Override
public void putDoubles(long[] time, double[] value) {
-// checkExpansion();
- int idx = 0;
int length = time.length;
for (int i = 0; i < length; i++) {
putDouble(time[i], value[i]);
}
+ }
-// long startTime = System.currentTimeMillis();
-// for (NVMDataSpace timeSpace : timestamps) {
-// timeSpace.force();
-// }
-// for (NVMDataSpace valueSpace : values) {
-// valueSpace.force();
-// }
-// PerfMonitor.add("NVMTVList.force", System.currentTimeMillis() - startTime);
-
-// updateMinTimeAndSorted(time);
-//
-// while (idx < length) {
-// int inputRemaining = length - idx;
-// int arrayIdx = size / ARRAY_SIZE;
-// int elementIdx = size % ARRAY_SIZE;
-// int internalRemaining = ARRAY_SIZE - elementIdx;
-// if (internalRemaining >= inputRemaining) {
-// // the remaining inputs can fit the last array, copy all remaining inputs into last array
-// System.arraycopy(time, idx, timestamps.get(arrayIdx), elementIdx, inputRemaining);
-// System.arraycopy(value, idx, values.get(arrayIdx), elementIdx, inputRemaining);
-// size += inputRemaining;
-// break;
-// } else {
-// // the remaining inputs cannot fit the last array, fill the last array and create a new
-// // one and enter the next loop
-// System.arraycopy(time, idx, timestamps.get(arrayIdx), elementIdx, internalRemaining);
-// System.arraycopy(value, idx, values.get(arrayIdx), elementIdx, internalRemaining);
-// idx += internalRemaining;
-// size += internalRemaining;
-// checkExpansion();
-// }
-// }
+ @Override
+ public void putDoubles(long[] time, double[] value, int start, int end) {
+ for (int i = start; i < end; i++) {
+ putDouble(time[i], value[i]);
+ }
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMFloatTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMFloatTVList.java
index b9814e8..d72e05a 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMFloatTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMFloatTVList.java
@@ -33,12 +33,7 @@ public class NVMFloatTVList extends NVMTVList {
@Override
public float getFloat(int index) {
- if (index >= size) {
- throw new ArrayIndexOutOfBoundsException(index);
- }
- int arrayIndex = index / ARRAY_SIZE;
- int elementIndex = index % ARRAY_SIZE;
- return (float) values.get(arrayIndex).getData(elementIndex);
+ return (float) getValue(index);
}
@Override
@@ -156,36 +151,17 @@ public class NVMFloatTVList extends NVMTVList {
@Override
public void putFloats(long[] time, float[] value) {
- checkExpansion();
- int idx = 0;
int length = time.length;
for (int i = 0; i < length; i++) {
putFloat(time[i], value[i]);
}
+ }
-// updateMinTimeAndSorted(time);
-//
-// while (idx < length) {
-// int inputRemaining = length - idx;
-// int arrayIdx = size / ARRAY_SIZE;
-// int elementIdx = size % ARRAY_SIZE;
-// int internalRemaining = ARRAY_SIZE - elementIdx;
-// if (internalRemaining >= inputRemaining) {
-// // the remaining inputs can fit the last array, copy all remaining inputs into last array
-// System.arraycopy(time, idx, timestamps.get(arrayIdx), elementIdx, inputRemaining);
-// System.arraycopy(value, idx, values.get(arrayIdx), elementIdx, inputRemaining);
-// size += inputRemaining;
-// break;
-// } else {
-// // the remaining inputs cannot fit the last array, fill the last array and create a new
-// // one and enter the next loop
-// System.arraycopy(time, idx, timestamps.get(arrayIdx), elementIdx, internalRemaining);
-// System.arraycopy(value, idx, values.get(arrayIdx), elementIdx, internalRemaining);
-// idx += internalRemaining;
-// size += internalRemaining;
-// checkExpansion();
-// }
-// }
+ @Override
+ public void putFloats(long[] time, float[] value, int start, int end) {
+ for (int i = start; i < end; i++) {
+ putFloat(time[i], value[i]);
+ }
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMIntTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMIntTVList.java
index 5ff1403..13e5e0a 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMIntTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMIntTVList.java
@@ -33,12 +33,7 @@ public class NVMIntTVList extends NVMTVList {
@Override
public int getInt(int index) {
- if (index >= size) {
- throw new ArrayIndexOutOfBoundsException(index);
- }
- int arrayIndex = index / ARRAY_SIZE;
- int elementIndex = index % ARRAY_SIZE;
- return (int) values.get(arrayIndex).getData(elementIndex);
+ return (int) getValue(index);
}
@Override
@@ -156,36 +151,17 @@ public class NVMIntTVList extends NVMTVList {
@Override
public void putInts(long[] time, int[] value) {
- checkExpansion();
- int idx = 0;
int length = time.length;
for (int i = 0; i < length; i++) {
putInt(time[i], value[i]);
}
+ }
-// updateMinTimeAndSorted(time);
-//
-// while (idx < length) {
-// int inputRemaining = length - idx;
-// int arrayIdx = size / ARRAY_SIZE;
-// int elementIdx = size % ARRAY_SIZE;
-// int internalRemaining = ARRAY_SIZE - elementIdx;
-// if (internalRemaining >= inputRemaining) {
-// // the remaining inputs can fit the last array, copy all remaining inputs into last array
-// System.arraycopy(time, idx, timestamps.get(arrayIdx), elementIdx, inputRemaining);
-// System.arraycopy(value, idx, values.get(arrayIdx), elementIdx, inputRemaining);
-// size += inputRemaining;
-// break;
-// } else {
-// // the remaining inputs cannot fit the last array, fill the last array and create a new
-// // one and enter the next loop
-// System.arraycopy(time, idx, timestamps.get(arrayIdx), elementIdx, internalRemaining);
-// System.arraycopy(value, idx, values.get(arrayIdx), elementIdx, internalRemaining);
-// idx += internalRemaining;
-// size += internalRemaining;
-// checkExpansion();
-// }
-// }
+ @Override
+ public void putInts(long[] time, int[] value, int start, int end) {
+ for (int i = start; i < end; i++) {
+ putInt(time[i], value[i]);
+ }
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMLongTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMLongTVList.java
index 956880f..98823be 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMLongTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMLongTVList.java
@@ -33,12 +33,7 @@ public class NVMLongTVList extends NVMTVList {
@Override
public long getLong(int index) {
- if (index >= size) {
- throw new ArrayIndexOutOfBoundsException(index);
- }
- int arrayIndex = index / ARRAY_SIZE;
- int elementIndex = index % ARRAY_SIZE;
- return (long) values.get(arrayIndex).getData(elementIndex);
+ return (long) getValue(index);
}
@Override
@@ -156,37 +151,18 @@ public class NVMLongTVList extends NVMTVList {
@Override
public void putLongs(long[] time, long[] value) {
- checkExpansion();
- int idx = 0;
int length = time.length;
for (int i = 0; i < length; i++) {
putLong(time[i], value[i]);
}
+ }
-// updateMinTimeAndSorted(time);
-//
-// while (idx < length) {
-// int inputRemaining = length - idx;
-// int arrayIdx = size / ARRAY_SIZE;
-// int elementIdx = size % ARRAY_SIZE;
-// int internalRemaining = ARRAY_SIZE - elementIdx;
-// if (internalRemaining >= inputRemaining) {
-// // the remaining inputs can fit the last array, copy all remaining inputs into last array
-// System.arraycopy(time, idx, timestamps.get(arrayIdx), elementIdx, inputRemaining);
-// System.arraycopy(value, idx, values.get(arrayIdx), elementIdx, inputRemaining);
-// size += inputRemaining;
-// break;
-// } else {
-// // the remaining inputs cannot fit the last array, fill the last array and create a new
-// // one and enter the next loop
-// System.arraycopy(time, idx, timestamps.get(arrayIdx), elementIdx, internalRemaining);
-// System.arraycopy(value, idx, values.get(arrayIdx), elementIdx, internalRemaining);
-// idx += internalRemaining;
-// size += internalRemaining;
-// checkExpansion();
-// }
-// }
+ @Override
+ public void putLongs(long[] time, long[] value, int start, int end) {
+ for (int i = start; i < end; i++) {
+ putLong(time[i], value[i]);
+ }
}
}
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMTVList.java
index eda0cb6..6e4d2d1 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/NVMTVList.java
@@ -9,6 +9,9 @@ import org.apache.iotdb.db.nvm.space.NVMDataSpace;
import org.apache.iotdb.db.nvm.space.NVMSpaceMetadataManager;
import org.apache.iotdb.db.rescon.PrimitiveArrayPool;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.iotdb.tsfile.read.TimeValuePair;
+import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
public abstract class NVMTVList extends AbstractTVList {
@@ -102,7 +105,7 @@ public abstract class NVMTVList extends AbstractTVList {
}
@Override
- public void delete(long upperBound) {
+ public int delete(long upperBound) {
int newSize = 0;
minTime = Long.MAX_VALUE;
for (int i = 0; i < size; i++) {
@@ -112,6 +115,7 @@ public abstract class NVMTVList extends AbstractTVList {
minTime = time < minTime ? time : minTime;
}
}
+ int deletedNumber = size - newSize;
size = newSize;
// release primitive arrays that are empty
int newArrayNum = newSize / ARRAY_SIZE;
@@ -122,6 +126,7 @@ public abstract class NVMTVList extends AbstractTVList {
releaseLastTimeArray();
releaseLastValueArray();
}
+ return deletedNumber;
}
@Override
@@ -279,6 +284,17 @@ public abstract class NVMTVList extends AbstractTVList {
return tempTimestampsForSort[arrayIndex][elementIndex];
}
+ protected abstract Object getValueForSort(int index);
+
+ public Object getValue(int index) {
+ if (index >= size) {
+ throw new ArrayIndexOutOfBoundsException(index);
+ }
+ int arrayIndex = index / ARRAY_SIZE;
+ int elementIndex = index % ARRAY_SIZE;
+ return values.get(arrayIndex).getData(elementIndex);
+ }
+
@Override
protected void setForSort(int index, long timestamp, Object value) {
if (index >= size) {
@@ -302,4 +318,17 @@ public abstract class NVMTVList extends AbstractTVList {
protected void setPivotTo(int pos) {
setForSort(pos, pivotTime, pivotValue);
}
+
+ @Override
+ public TimeValuePair getTimeValuePair(int index) {
+ return new TimeValuePair(getTime(index),
+ TsPrimitiveType.getByType(dataType, getValue(index)));
+ }
+
+ @Override
+ protected TimeValuePair getTimeValuePair(int index, long time, Integer floatPrecision,
+ TSEncoding encoding) {
+ return new TimeValuePair(time, TsPrimitiveType.getByType(dataType, getValue(index)));
+
+ }
}
diff --git a/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java b/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java
index 7663065..d9dfcd3 100644
--- a/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java
+++ b/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java
@@ -178,7 +178,6 @@ public class LogReplayer {
MManager.getInstance().getSchemas(insertPlan.getDeviceId(), insertPlan.getMeasurements());
insertPlan.setSchemasAndTransferType(schemas);
recoverMemTable.insert(insertPlan);
- // TODO how about NVM
} catch (Exception e) {
logger.error(
"occurs exception when replaying the record {} at timestamp {}: {}.(Will ignore the record)",
diff --git a/server/src/main/java/org/apache/iotdb/db/writelog/recover/TsFileRecoverPerformer.java b/server/src/main/java/org/apache/iotdb/db/writelog/recover/TsFileRecoverPerformer.java
index 05b6553..425d0d3 100644
--- a/server/src/main/java/org/apache/iotdb/db/writelog/recover/TsFileRecoverPerformer.java
+++ b/server/src/main/java/org/apache/iotdb/db/writelog/recover/TsFileRecoverPerformer.java
@@ -73,8 +73,8 @@ public class TsFileRecoverPerformer {
this.versionController = versionController;
this.resource = currentTsFileResource;
this.acceptUnseq = acceptUnseq;
- this.storageGroupId = sgId;
this.isLastFile = isLastFile;
+ this.storageGroupId = sgId;
}
/**
diff --git a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAggregationIT.java b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAggregationIT.java
index f180ec2..26bc141 100644
--- a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAggregationIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAggregationIT.java
@@ -85,14 +85,12 @@ public class IoTDBAggregationIT {
@Before
public void setUp() throws Exception {
- System.out.println("set up start");
EnvironmentUtils.closeStatMonitor();
prevPartitionInterval = IoTDBDescriptor.getInstance().getConfig().getPartitionInterval();
IoTDBDescriptor.getInstance().getConfig().setPartitionInterval(1000);
EnvironmentUtils.envSetUp();
Class.forName(Config.JDBC_DRIVER_NAME);
prepareData();
- System.out.println("set up end");
}
@After
@@ -105,7 +103,6 @@ public class IoTDBAggregationIT {
//details in: https://issues.apache.org/jira/projects/IOTDB/issues/IOTDB-54
@Test
public void test() throws SQLException {
- System.out.println("test start");
String[] retArray = new String[]{
"0,2",
"0,4",
@@ -167,7 +164,6 @@ public class IoTDBAggregationIT {
@Test
public void countTest() throws SQLException {
- System.out.println("countTest start");
String[] retArray = new String[]{
"0,2001,2001,2001,2001",
"0,7500,7500,7500,7500"
@@ -214,7 +210,6 @@ public class IoTDBAggregationIT {
@Test
public void firstTest() {
- System.out.println("firstTest start");
String[] retArray = new String[]{
"0,2000,2000,2000.0,2000",
"0,500,500,500.0,500"
@@ -269,7 +264,6 @@ public class IoTDBAggregationIT {
@Test
public void lastTest() throws SQLException {
- System.out.println("lastTest start");
String[] retArray = new String[]{
"0,8499,8499.0",
"0,1499,1499.0",
@@ -333,7 +327,6 @@ public class IoTDBAggregationIT {
@Test
public void maxminTimeTest() throws SQLException {
- System.out.println("maxminTimeTest start");
String[] retArray = new String[]{
"0,8499,500",
"0,2499,2000"
@@ -428,7 +421,6 @@ public class IoTDBAggregationIT {
@Test
public void avgSumTest() {
- System.out.println("avgSumTest start");
String[] retArray = new String[]{
"0,1.4508E7,7250.374812593702",
"0,626750.0,1250.9980039920158"
diff --git a/server/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java b/server/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java
index 6ceb46d..955ee4d 100644
--- a/server/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java
+++ b/server/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java
@@ -37,6 +37,7 @@ import org.apache.iotdb.db.conf.directories.DirectoryManager;
import org.apache.iotdb.db.constant.TestConstant;
import org.apache.iotdb.db.engine.StorageEngine;
import org.apache.iotdb.db.engine.cache.ChunkMetadataCache;
+import org.apache.iotdb.db.exception.StartupException;
import org.apache.iotdb.db.exception.StorageEngineException;
import org.apache.iotdb.db.metadata.MManager;
import org.apache.iotdb.db.monitor.StatMonitor;
@@ -212,7 +213,12 @@ public class EnvironmentUtils {
TEST_QUERY_JOB_ID = QueryResourceManager.getInstance().assignQueryId(true);
TEST_QUERY_CONTEXT = new QueryContext(TEST_QUERY_JOB_ID);
- NVMSpaceManager.getInstance().init();
+ try {
+ NVMSpaceManager.getInstance().init();
+ } catch (StartupException e) {
+ logger.error("init NVM space failed", e);
+ fail(e.getMessage());
+ }
}
public static void stopDaemon() {
diff --git a/server/src/test/java/org/apache/iotdb/db/writelog/recover/RecoverResourceFromReaderTest.java b/server/src/test/java/org/apache/iotdb/db/writelog/recover/RecoverResourceFromReaderTest.java
index 00e3e4c..1a4857d 100644
--- a/server/src/test/java/org/apache/iotdb/db/writelog/recover/RecoverResourceFromReaderTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/writelog/recover/RecoverResourceFromReaderTest.java
@@ -182,7 +182,7 @@ public class RecoverResourceFromReaderTest {
}
TsFileRecoverPerformer performer = new TsFileRecoverPerformer(logNodePrefix,
- versionController, resource, true, false);
+ versionController, resource, true, false, "root.sg");
ActiveTimeSeriesCounter.getInstance()
.init(resource.getFile().getParentFile().getParentFile().getName());
performer.recover();
diff --git a/server/src/test/java/org/apache/iotdb/db/writelog/recover/SeqTsFileRecoverTest.java b/server/src/test/java/org/apache/iotdb/db/writelog/recover/SeqTsFileRecoverTest.java
index 0e34574..c448855 100644
--- a/server/src/test/java/org/apache/iotdb/db/writelog/recover/SeqTsFileRecoverTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/writelog/recover/SeqTsFileRecoverTest.java
@@ -219,7 +219,7 @@ public class SeqTsFileRecoverTest {
@Test
public void testLastRecovery() throws StorageGroupProcessorException, IOException {
TsFileRecoverPerformer performer = new TsFileRecoverPerformer(logNodePrefix,
- versionController, resource, true, true);
+ versionController, resource, true, true, "root.sg");
ActiveTimeSeriesCounter.getInstance().init(storageGroup);
RestorableTsFileIOWriter writer = performer.recover();
diff --git a/server/src/test/resources/iotdb-engine.properties b/server/src/test/resources/iotdb-engine.properties
index b213e4c..c792aba 100644
--- a/server/src/test/resources/iotdb-engine.properties
+++ b/server/src/test/resources/iotdb-engine.properties
@@ -18,4 +18,5 @@
base_dir=target/tmp
data_dirs=target/data
-wal_dir=target/wal
\ No newline at end of file
+wal_dir=target/wal
+nvm_dir=target/nvm
\ No newline at end of file
diff --git a/service-rpc/src/main/java/org/apache/iotdb/rpc/TSStatusCode.java b/service-rpc/src/main/java/org/apache/iotdb/rpc/TSStatusCode.java
index af191b9..5d4e96e 100644
--- a/service-rpc/src/main/java/org/apache/iotdb/rpc/TSStatusCode.java
+++ b/service-rpc/src/main/java/org/apache/iotdb/rpc/TSStatusCode.java
@@ -43,7 +43,7 @@ public enum TSStatusCode {
TSFILE_PROCESSOR_ERROR(314),
PATH_ILLEGAL(315),
LOAD_FILE_ERROR(316),
- NVMSPACE_MANAGER_EROOR(317),
+ NVMSPACE_MANAGER_ERROR(317),
EXECUTE_STATEMENT_ERROR(400),
SQL_PARSE_ERROR(401),
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/BatchData.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/BatchData.java
index a893c1b..da9dd83 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/BatchData.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/BatchData.java
@@ -68,7 +68,7 @@ public class BatchData implements Serializable {
private int writeCurArrayIndex;
// the insert timestamp number of timeRet
- private int count;
+ public int count;
private List<long[]> timeRet;
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/ChunkReader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/ChunkReader.java
index aa334d8..4289952 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/ChunkReader.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/chunk/ChunkReader.java
@@ -93,6 +93,7 @@ public class ChunkReader implements IChunkReader {
// deserialize a PageHeader from chunkDataBuffer
PageHeader pageHeader = isFromOldTsFile ? HeaderUtils.deserializePageHeaderV1(chunkDataBuffer, chunkHeader.getDataType()) :
PageHeader.deserializeFrom(chunkDataBuffer, chunkHeader.getDataType());
+ System.out.println("statistics:" + pageHeader.getStatistics());
// if the current page satisfies
if (pageSatisfied(pageHeader)) {
pageReaderList.add(constructPageReaderForNextPage(pageHeader));