This is an automated email from the ASF dual-hosted git repository.
xiangweiwei pushed a commit to branch alignbydevicevector
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/alignbydevicevector by this
push:
new 045db6b Implement vector align by device
045db6b is described below
commit 045db6be7813b945b1b538299994339724e49eac
Author: Alima777 <[email protected]>
AuthorDate: Mon Sep 6 20:16:40 2021 +0800
Implement vector align by device
---
.../apache/iotdb/cluster/metadata/CMManager.java | 17 +-----
.../iotdb/AlignedTimeseriesSessionExample.java | 20 ++++----
.../iotdb/HybridTimeseriesSessionExample.java | 5 +-
.../iotdb/tsfile/TsFileWriteVectorWithTablet.java | 2 +-
.../iotdb/db/engine/memtable/AbstractMemTable.java | 16 +++---
.../db/engine/memtable/PrimitiveMemTable.java | 3 +-
.../db/engine/querycontext/ReadOnlyMemChunk.java | 19 +++----
.../engine/storagegroup/StorageGroupProcessor.java | 2 +-
.../db/engine/storagegroup/TsFileProcessor.java | 21 ++++----
.../org/apache/iotdb/db/metadata/MManager.java | 57 ++++++++++----------
.../java/org/apache/iotdb/db/metadata/MTree.java | 60 +++++++++++-----------
.../iotdb/db/metadata/VectorPartialPath.java | 8 +++
.../iotdb/db/metadata/mnode/MeasurementMNode.java | 2 +-
.../iotdb/db/metadata/template/Template.java | 2 +-
.../iotdb/db/qp/logical/crud/QueryOperator.java | 13 +++--
.../iotdb/db/qp/physical/crud/InsertRowPlan.java | 3 +-
.../iotdb/db/qp/physical/crud/LastQueryPlan.java | 2 -
.../db/qp/physical/crud/RawDataQueryPlan.java | 21 +-------
.../db/query/dataset/AlignByDeviceDataSet.java | 50 ++++++++++++++----
.../iotdb/db/query/executor/QueryRouter.java | 9 +---
.../query/timegenerator/ServerTimeGenerator.java | 7 ---
.../java/org/apache/iotdb/db/utils/MemUtils.java | 2 +-
.../iotdb/db/writelog/recover/LogReplayer.java | 4 +-
.../java/org/apache/iotdb/session/Session.java | 13 +++--
.../org/apache/iotdb/session/SessionUtils.java | 4 +-
.../apache/iotdb/session/IoTDBSessionSimpleIT.java | 12 +++--
.../apache/iotdb/session/IoTDBSessionVectorIT.java | 5 +-
.../tsfile/write/chunk/ChunkGroupWriterImpl.java | 2 +-
.../tsfile/write/chunk/VectorChunkWriterImpl.java | 8 +--
.../apache/iotdb/tsfile/write/record/Tablet.java | 14 ++---
.../tsfile/write/schema/IMeasurementSchema.java | 8 +--
.../tsfile/write/schema/MeasurementSchema.java | 8 +--
.../write/schema/VectorMeasurementSchema.java | 8 +--
.../write/writer/VectorMeasurementSchemaStub.java | 8 +--
34 files changed, 218 insertions(+), 217 deletions(-)
diff --git
a/cluster/src/main/java/org/apache/iotdb/cluster/metadata/CMManager.java
b/cluster/src/main/java/org/apache/iotdb/cluster/metadata/CMManager.java
index fa06e12..007d90a 100644
--- a/cluster/src/main/java/org/apache/iotdb/cluster/metadata/CMManager.java
+++ b/cluster/src/main/java/org/apache/iotdb/cluster/metadata/CMManager.java
@@ -79,7 +79,6 @@ import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
import org.apache.iotdb.tsfile.read.TimeValuePair;
import org.apache.iotdb.tsfile.utils.Pair;
import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
import org.apache.iotdb.tsfile.write.schema.VectorMeasurementSchema;
import org.apache.thrift.TException;
@@ -227,7 +226,7 @@ public class CMManager extends MManager {
new MeasurementMNode(
null, measurementSchema.getMeasurementId(), measurementSchema,
null);
if (measurementSchema instanceof VectorMeasurementSchema) {
- for (String subSensorId :
measurementSchema.getValueMeasurementIdList()) {
+ for (String subSensorId :
measurementSchema.getSubMeasurementsList()) {
cacheMeta(new PartialPath(path.getDevice(), subSensorId),
measurementMNode, false);
}
cacheMeta(
@@ -263,20 +262,6 @@ public class CMManager extends MManager {
return super.getSeriesSchema(fullPath, getMeasurementMNode(fullPath));
}
- /**
- * Transform the PartialPath to VectorPartialPath if it is a sub sensor of
one vector. otherwise,
- * we don't change it.
- */
- @Override
- public PartialPath transformPath(PartialPath partialPath) throws
MetadataException {
- IMeasurementMNode node = getMeasurementMNode(partialPath);
- if (node.getSchema() instanceof MeasurementSchema) {
- return partialPath;
- } else {
- return toVectorPath(partialPath);
- }
- }
-
private IMeasurementMNode getMeasurementMNode(PartialPath fullPath) throws
MetadataException {
IMeasurementMNode node = null;
// try remote cache first
diff --git
a/example/session/src/main/java/org/apache/iotdb/AlignedTimeseriesSessionExample.java
b/example/session/src/main/java/org/apache/iotdb/AlignedTimeseriesSessionExample.java
index 2bbde9a..b64db80 100644
---
a/example/session/src/main/java/org/apache/iotdb/AlignedTimeseriesSessionExample.java
+++
b/example/session/src/main/java/org/apache/iotdb/AlignedTimeseriesSessionExample.java
@@ -52,13 +52,13 @@ public class AlignedTimeseriesSessionExample {
// set session fetchSize
session.setFetchSize(10000);
- createTemplate();
- createAlignedTimeseries();
- insertAlignedRecord();
-
- insertTabletWithAlignedTimeseriesMethod1();
- insertTabletWithAlignedTimeseriesMethod2();
- insertNullableTabletWithAlignedTimeseries();
+ // createTemplate();
+ // createAlignedTimeseries();
+ // insertAlignedRecord();
+ //
+ // insertTabletWithAlignedTimeseriesMethod1();
+ // insertTabletWithAlignedTimeseriesMethod2();
+ // insertNullableTabletWithAlignedTimeseries();
selectTest();
selectWithValueFilterTest();
@@ -67,7 +67,7 @@ public class AlignedTimeseriesSessionExample {
selectWithAggregationTest();
- // selectWithAlignByDeviceTest();
+ selectWithAlignByDeviceTest();
session.close();
}
@@ -255,11 +255,11 @@ public class AlignedTimeseriesSessionExample {
int rowIndex = tablet.rowSize++;
tablet.addTimestamp(rowIndex, timestamp);
tablet.addValue(
- schemaList.get(0).getValueMeasurementIdList().get(0),
+ schemaList.get(0).getSubMeasurementsList().get(0),
rowIndex,
new SecureRandom().nextLong());
tablet.addValue(
- schemaList.get(0).getValueMeasurementIdList().get(1),
+ schemaList.get(0).getSubMeasurementsList().get(1),
rowIndex,
new SecureRandom().nextInt());
diff --git
a/example/session/src/main/java/org/apache/iotdb/HybridTimeseriesSessionExample.java
b/example/session/src/main/java/org/apache/iotdb/HybridTimeseriesSessionExample.java
index 993fcb3..c2a9ed9 100644
---
a/example/session/src/main/java/org/apache/iotdb/HybridTimeseriesSessionExample.java
+++
b/example/session/src/main/java/org/apache/iotdb/HybridTimeseriesSessionExample.java
@@ -86,10 +86,9 @@ public class HybridTimeseriesSessionExample {
for (long row = minTime; row < maxTime; row++) {
int rowIndex = tablet.rowSize++;
tablet.addTimestamp(rowIndex, timestamp);
+ tablet.addValue(schemaList.get(0).getSubMeasurementsList().get(0),
rowIndex, row * 10 + 1L);
tablet.addValue(
- schemaList.get(0).getValueMeasurementIdList().get(0), rowIndex, row
* 10 + 1L);
- tablet.addValue(
- schemaList.get(0).getValueMeasurementIdList().get(1), rowIndex,
(int) (row * 10 + 2));
+ schemaList.get(0).getSubMeasurementsList().get(1), rowIndex, (int)
(row * 10 + 2));
if (tablet.rowSize == tablet.getMaxRowNumber()) {
session.insertTablet(tablet, true);
diff --git
a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileWriteVectorWithTablet.java
b/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileWriteVectorWithTablet.java
index b8b4a13..5f3e9ba 100644
---
a/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileWriteVectorWithTablet.java
+++
b/example/tsfile/src/main/java/org/apache/iotdb/tsfile/TsFileWriteVectorWithTablet.java
@@ -93,7 +93,7 @@ public class TsFileWriteVectorWithTablet {
for (int i = 0; i < measurementSchemas.size(); i++) {
IMeasurementSchema measurementSchema = measurementSchemas.get(i);
if (measurementSchema instanceof VectorMeasurementSchema) {
- for (String valueName :
measurementSchema.getValueMeasurementIdList()) {
+ for (String valueName :
measurementSchema.getSubMeasurementsList()) {
tablet.addValue(valueName, row, value);
}
}
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 984ce32..fed4851 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
@@ -131,14 +131,14 @@ public abstract class AbstractMemTable implements
IMemTable {
if (measurementMNode != null) {
// write vector
Object[] vectorValue =
- new
Object[measurementMNode.getSchema().getValueTSDataTypeList().size()];
+ new
Object[measurementMNode.getSchema().getSubMeasurementsTSDataTypeList().size()];
for (int j = 0; j < vectorValue.length; j++) {
vectorValue[j] = values[columnIndex];
columnIndex++;
}
memSize +=
MemUtils.getVectorRecordSize(
- measurementMNode.getSchema().getValueTSDataTypeList(),
+
measurementMNode.getSchema().getSubMeasurementsTSDataTypeList(),
vectorValue,
disableMemControl);
write(
@@ -209,9 +209,9 @@ public abstract class AbstractMemTable implements IMemTable
{
if (insertTabletPlan.isAligned()) {
VectorMeasurementSchema vectorSchema =
(VectorMeasurementSchema)
insertTabletPlan.getMeasurementMNodes()[i].getSchema();
- Object[] columns = new
Object[vectorSchema.getValueMeasurementIdList().size()];
- BitMap[] bitMaps = new
BitMap[vectorSchema.getValueMeasurementIdList().size()];
- for (int j = 0; j < vectorSchema.getValueMeasurementIdList().size();
j++) {
+ Object[] columns = new
Object[vectorSchema.getSubMeasurementsList().size()];
+ BitMap[] bitMaps = new
BitMap[vectorSchema.getSubMeasurementsList().size()];
+ for (int j = 0; j < vectorSchema.getSubMeasurementsList().size(); j++)
{
columns[j] = insertTabletPlan.getColumns()[columnIndex];
if (insertTabletPlan.getBitMaps() != null) {
bitMaps[j] = insertTabletPlan.getBitMaps()[columnIndex];
@@ -321,11 +321,11 @@ public abstract class AbstractMemTable implements
IMemTable {
return null;
}
- List<String> measurementIdList =
partialVectorSchema.getValueMeasurementIdList();
+ List<String> measurementIdList =
partialVectorSchema.getSubMeasurementsList();
List<Integer> columns = new ArrayList<>();
IMeasurementSchema vectorSchema = vectorMemChunk.getSchema();
for (String queryingMeasurement : measurementIdList) {
-
columns.add(vectorSchema.getValueMeasurementIdList().indexOf(queryingMeasurement));
+
columns.add(vectorSchema.getSubMeasurementsList().indexOf(queryingMeasurement));
}
// get sorted tv list is synchronized so different query can get right
sorted list reference
TVList vectorTvListCopy =
vectorMemChunk.getSortedTvListForQuery(columns);
@@ -376,7 +376,7 @@ public abstract class AbstractMemTable implements IMemTable
{
// for vector type
else if (schema.getType() == TSDataType.VECTOR) {
List<String> measurements =
MetaUtils.getMeasurementsInPartialPath(originalPath);
- if (measurements.containsAll(schema.getValueMeasurementIdList())) {
+ if (measurements.containsAll(schema.getSubMeasurementsList())) {
if (startTimestamp == Long.MIN_VALUE && endTimestamp ==
Long.MAX_VALUE) {
iter.remove();
}
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 e13bbf2..922cb12 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
@@ -42,7 +42,8 @@ public class PrimitiveMemTable extends AbstractMemTable {
protected IWritableMemChunk genMemSeries(IMeasurementSchema schema) {
if (schema.getType() == TSDataType.VECTOR) {
return new WritableMemChunk(
- schema,
TVListAllocator.getInstance().allocate(schema.getValueTSDataTypeList()));
+ schema,
+
TVListAllocator.getInstance().allocate(schema.getSubMeasurementsTSDataTypeList()));
}
return new WritableMemChunk(schema,
TVListAllocator.getInstance().allocate(schema.getType()));
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/querycontext/ReadOnlyMemChunk.java
b/server/src/main/java/org/apache/iotdb/db/engine/querycontext/ReadOnlyMemChunk.java
index e7e83db..bdd9e3b 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/querycontext/ReadOnlyMemChunk.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/querycontext/ReadOnlyMemChunk.java
@@ -173,13 +173,14 @@ public class ReadOnlyMemChunk {
IChunkMetadata timeChunkMetadata =
new ChunkMetadata(measurementUid, TSDataType.VECTOR, 0,
timeStatistics);
List<IChunkMetadata> valueChunkMetadataList = new ArrayList<>();
- Statistics[] valueStatistics = new
Statistics[schema.getValueTSDataTypeList().size()];
- for (int i = 0; i < schema.getValueTSDataTypeList().size(); i++) {
- valueStatistics[i] =
Statistics.getStatsByType(schema.getValueTSDataTypeList().get(i));
+ Statistics[] valueStatistics = new
Statistics[schema.getSubMeasurementsTSDataTypeList().size()];
+ for (int i = 0; i < schema.getSubMeasurementsTSDataTypeList().size(); i++)
{
+ valueStatistics[i] =
+
Statistics.getStatsByType(schema.getSubMeasurementsTSDataTypeList().get(i));
IChunkMetadata valueChunkMetadata =
new ChunkMetadata(
- schema.getValueMeasurementIdList().get(i),
- schema.getValueTSDataTypeList().get(i),
+ schema.getSubMeasurementsList().get(i),
+ schema.getSubMeasurementsTSDataTypeList().get(i),
0,
valueStatistics[i]);
valueChunkMetadataList.add(valueChunkMetadata);
@@ -190,7 +191,7 @@ public class ReadOnlyMemChunk {
while (iterator.hasNextTimeValuePair()) {
TimeValuePair timeValuePair = iterator.nextTimeValuePair();
timeStatistics.update(timeValuePair.getTimestamp());
- if (schema.getValueTSDataTypeList().size() == 1) {
+ if (schema.getSubMeasurementsTSDataTypeList().size() == 1) {
updateValueStatisticsForSingleColumn(schema, valueStatistics,
timeValuePair);
} else {
updateValueStatistics(schema, valueStatistics, timeValuePair);
@@ -212,7 +213,7 @@ public class ReadOnlyMemChunk {
private void updateValueStatisticsForSingleColumn(
IMeasurementSchema schema, Statistics[] valueStatistics, TimeValuePair
timeValuePair)
throws QueryProcessException {
- switch (schema.getValueTSDataTypeList().get(0)) {
+ switch (schema.getSubMeasurementsTSDataTypeList().get(0)) {
case BOOLEAN:
valueStatistics[0].update(
timeValuePair.getTimestamp(),
timeValuePair.getValue().getBoolean());
@@ -243,11 +244,11 @@ public class ReadOnlyMemChunk {
private void updateValueStatistics(
IMeasurementSchema schema, Statistics[] valueStatistics, TimeValuePair
timeValuePair)
throws QueryProcessException {
- for (int i = 0; i < schema.getValueTSDataTypeList().size(); i++) {
+ for (int i = 0; i < schema.getSubMeasurementsTSDataTypeList().size(); i++)
{
if (timeValuePair.getValue().getVector()[i] == null) {
continue;
}
- switch (schema.getValueTSDataTypeList().get(i)) {
+ switch (schema.getSubMeasurementsTSDataTypeList().get(i)) {
case BOOLEAN:
valueStatistics[i].update(
timeValuePair.getTimestamp(),
timeValuePair.getValue().getVector()[i].getBoolean());
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
index 297a80e..019219f 100755
---
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
@@ -1094,7 +1094,7 @@ public class StorageGroupProcessor {
for (int i = 0; i < mNodes.length; i++) {
// Don't update cached last value for vector type
if (mNodes[i] != null && plan.isAligned()) {
- columnIndex +=
mNodes[i].getSchema().getValueMeasurementIdList().size();
+ columnIndex += mNodes[i].getSchema().getSubMeasurementsList().size();
} else {
if (plan.getColumns()[i] == null) {
columnIndex++;
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java
index 7745138..f6a9270 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java
@@ -341,11 +341,12 @@ public class TsFileProcessor {
IMeasurementSchema schema =
insertRowPlan.getMeasurementMNodes()[i].getSchema();
if (schema.getType() == TSDataType.VECTOR) {
chunkMetadataIncrement +=
- schema.getValueTSDataTypeList().size()
+ schema.getSubMeasurementsTSDataTypeList().size()
* ChunkMetadata.calculateRamSize(
- schema.getValueMeasurementIdList().get(0),
- schema.getValueTSDataTypeList().get(0));
- memTableIncrement +=
TVList.vectorTvListArrayMemSize(schema.getValueTSDataTypeList());
+ schema.getSubMeasurementsList().get(0),
+ schema.getSubMeasurementsTSDataTypeList().get(0));
+ memTableIncrement +=
+
TVList.vectorTvListArrayMemSize(schema.getSubMeasurementsTSDataTypeList());
} else {
chunkMetadataIncrement +=
ChunkMetadata.calculateRamSize(
@@ -386,8 +387,8 @@ public class TsFileProcessor {
if (insertTabletPlan.isAligned()) {
VectorMeasurementSchema vectorSchema =
(VectorMeasurementSchema)
insertTabletPlan.getMeasurementMNodes()[i].getSchema();
- Object[] columns = new
Object[vectorSchema.getValueMeasurementIdList().size()];
- for (int j = 0; j < vectorSchema.getValueMeasurementIdList().size();
j++) {
+ Object[] columns = new
Object[vectorSchema.getSubMeasurementsList().size()];
+ for (int j = 0; j < vectorSchema.getSubMeasurementsList().size(); j++)
{
columns[j] = insertTabletPlan.getColumns()[columnIndex++];
}
updateVectorMemCost(vectorSchema, deviceId, start, end, memIncrements,
columns);
@@ -459,8 +460,8 @@ public class TsFileProcessor {
Object[] columns) {
// memIncrements = [memTable, text, chunk metadata] respectively
- List<String> measurementIds = vectorSchema.getValueMeasurementIdList();
- List<TSDataType> dataTypes = vectorSchema.getValueTSDataTypeList();
+ List<String> measurementIds = vectorSchema.getSubMeasurementsList();
+ List<TSDataType> dataTypes =
vectorSchema.getSubMeasurementsTSDataTypeList();
if (workMemTable.checkIfChunkDoesNotExist(deviceId,
vectorSchema.getMeasurementId())) {
// ChunkMetadataIncrement
memIncrements[2] +=
@@ -1252,8 +1253,8 @@ public class TsFileProcessor {
List<ChunkMetadata> timeChunkMetadataList =
writer.getVisibleMetadataList(deviceId, measurementId,
schema.getType());
List<List<ChunkMetadata>> valueChunkMetadataList = new ArrayList<>();
- List<String> valueMeasurementIdList =
schema.getValueMeasurementIdList();
- List<TSDataType> valueDataTypeList = schema.getValueTSDataTypeList();
+ List<String> valueMeasurementIdList = schema.getSubMeasurementsList();
+ List<TSDataType> valueDataTypeList =
schema.getSubMeasurementsTSDataTypeList();
for (int i = 0; i < valueMeasurementIdList.size(); i++) {
valueChunkMetadataList.add(
writer.getVisibleMetadataList(
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
b/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
index 9368523..9e748a5 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
@@ -23,10 +23,23 @@ import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.engine.StorageEngine;
import org.apache.iotdb.db.engine.fileSystem.SystemFileFactory;
import org.apache.iotdb.db.engine.trigger.executor.TriggerEngine;
-import org.apache.iotdb.db.exception.metadata.*;
+import org.apache.iotdb.db.exception.metadata.AliasAlreadyExistException;
+import org.apache.iotdb.db.exception.metadata.AlignedTimeseriesException;
+import org.apache.iotdb.db.exception.metadata.DataTypeMismatchException;
+import org.apache.iotdb.db.exception.metadata.DeleteFailedException;
+import org.apache.iotdb.db.exception.metadata.IllegalPathException;
+import org.apache.iotdb.db.exception.metadata.MetadataException;
+import org.apache.iotdb.db.exception.metadata.PathAlreadyExistException;
+import org.apache.iotdb.db.exception.metadata.PathNotExistException;
+import org.apache.iotdb.db.exception.metadata.StorageGroupAlreadySetException;
+import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
import org.apache.iotdb.db.metadata.logfile.MLogReader;
import org.apache.iotdb.db.metadata.logfile.MLogWriter;
-import org.apache.iotdb.db.metadata.mnode.*;
+import org.apache.iotdb.db.metadata.mnode.IEntityMNode;
+import org.apache.iotdb.db.metadata.mnode.IMNode;
+import org.apache.iotdb.db.metadata.mnode.IMeasurementMNode;
+import org.apache.iotdb.db.metadata.mnode.IStorageGroupMNode;
+import org.apache.iotdb.db.metadata.mnode.MeasurementMNode;
import org.apache.iotdb.db.metadata.tag.TagManager;
import org.apache.iotdb.db.metadata.template.Template;
import org.apache.iotdb.db.metadata.template.TemplateManager;
@@ -590,7 +603,7 @@ public class MManager {
if (lastNode.isMeasurement()) {
IMeasurementSchema schema = ((IMeasurementMNode) lastNode).getSchema();
if (schema instanceof VectorMeasurementSchema) {
- if (schema.getValueMeasurementIdList().size() !=
allTimeseries.size()) {
+ if (schema.getSubMeasurementsList().size() != allTimeseries.size()) {
throw new AlignedTimeseriesException(
"Not support deleting part of aligned timeseies!",
prefixPath.getFullPath());
} else {
@@ -652,7 +665,7 @@ public class MManager {
removeFromTagInvertedIndex(pair.right);
timeseriesNum = 1;
} else if (schema instanceof VectorMeasurementSchema) {
- timeseriesNum += schema.getValueTSDataTypeList().size();
+ timeseriesNum += schema.getSubMeasurementsTSDataTypeList().size();
}
PartialPath storageGroupPath = pair.left;
@@ -760,8 +773,10 @@ public class MManager {
if (schema instanceof MeasurementSchema) {
return schema.getType();
} else {
- List<String> measurements = schema.getValueMeasurementIdList();
- return
schema.getValueTSDataTypeList().get(measurements.indexOf(path.getMeasurement()));
+ List<String> measurements = schema.getSubMeasurementsList();
+ return schema
+ .getSubMeasurementsTSDataTypeList()
+ .get(measurements.indexOf(path.getMeasurement()));
}
}
@@ -1041,15 +1056,15 @@ public class MManager {
if (schema == null || schema.getType() != TSDataType.VECTOR) {
return schema;
}
- List<String> measurementsInLeaf = schema.getValueMeasurementIdList();
+ List<String> measurementsInLeaf = schema.getSubMeasurementsList();
List<PartialPath> measurements = ((VectorPartialPath)
fullPath).getSubSensorsPathList();
TSDataType[] types = new TSDataType[measurements.size()];
TSEncoding[] encodings = new TSEncoding[measurements.size()];
for (int i = 0; i < measurements.size(); i++) {
int index =
measurementsInLeaf.indexOf(measurements.get(i).getMeasurement());
- types[i] = schema.getValueTSDataTypeList().get(index);
- encodings[i] = schema.getValueTSEncodingList().get(index);
+ types[i] = schema.getSubMeasurementsTSDataTypeList().get(index);
+ encodings[i] = schema.getSubMeasurementsTSEncodingList().get(index);
}
String[] array = new String[measurements.size()];
for (int i = 0; i < array.length; i++) {
@@ -1060,26 +1075,6 @@ public class MManager {
}
/**
- * Transform the PartialPath to VectorPartialPath if it is a sub sensor of
one vector. otherwise,
- * we don't change it.
- */
- public PartialPath transformPath(PartialPath partialPath) throws
MetadataException {
- IMeasurementMNode node = (IMeasurementMNode) getNodeByPath(partialPath);
- if (node.getSchema() instanceof MeasurementSchema) {
- return partialPath;
- } else {
- return toVectorPath(partialPath);
- }
- }
-
- /** Convert the PartialPath to VectorPartialPath. */
- protected VectorPartialPath toVectorPath(PartialPath partialPath) throws
MetadataException {
- List<PartialPath> subSensorsPathList = new ArrayList<>();
- subSensorsPathList.add(partialPath);
- return new VectorPartialPath(partialPath.getDevice(), subSensorsPathList);
- }
-
- /**
* Get schema of partialPaths, in which aligned timeseries should only
organized to one schema.
* This method should be called when logical plan converts to physical plan.
*
@@ -1770,7 +1765,7 @@ public class MManager {
if (plan instanceof InsertRowPlan || plan instanceof InsertTabletPlan)
{
if (plan.isAligned()) {
TSDataType dataTypeInNode =
- measurementMNode.getSchema().getValueTSDataTypeList().get(i);
+
measurementMNode.getSchema().getSubMeasurementsTSDataTypeList().get(i);
insertDataType = plan.getDataTypes()[i];
if (insertDataType == null) {
insertDataType = dataTypeInNode;
@@ -1778,7 +1773,7 @@ public class MManager {
if (dataTypeInNode != insertDataType) {
logger.warn(
"DataType mismatch, Insert measurement {} in {} type {},
metadata tree type {}",
-
measurementMNode.getSchema().getValueMeasurementIdList().get(i),
+ measurementMNode.getSchema().getSubMeasurementsList().get(i),
measurementList[i],
insertDataType,
dataTypeInNode);
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
b/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
index 755605f..0bdba44 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
@@ -1264,36 +1264,36 @@ public class MTree implements Serializable {
*/
@SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity
warning
private void findPath(
- IMNode node,
+ IMNode curNode,
String[] nodes,
- int idx,
+ int childIndex,
List<Pair<PartialPath, String[]>> timeseriesSchemaList,
boolean hasLimit,
boolean needLast,
QueryContext queryContext,
Template upperTemplate)
throws MetadataException {
- if (node.isMeasurement()) {
- if ((nodes.length <= idx
- || ((IMeasurementMNode) node).getSchema() instanceof
VectorMeasurementSchema)) {
+ if (curNode.isMeasurement()) {
+ if ((nodes.length <= childIndex
+ || ((IMeasurementMNode) curNode).getSchema() instanceof
VectorMeasurementSchema)) {
if (hasLimit) {
curOffset.set(curOffset.get() + 1);
if (curOffset.get() < offset.get() || count.get().intValue() ==
limit.get().intValue()) {
return;
}
}
- IMeasurementSchema measurementSchema = ((IMeasurementMNode)
node).getSchema();
+ IMeasurementSchema measurementSchema = ((IMeasurementMNode)
curNode).getSchema();
if (measurementSchema instanceof MeasurementSchema) {
addMeasurementSchema(
- node, timeseriesSchemaList, needLast, queryContext,
measurementSchema, "*");
+ curNode, timeseriesSchemaList, needLast, queryContext,
measurementSchema, "*");
} else if (measurementSchema instanceof VectorMeasurementSchema) {
addVectorMeasurementSchema(
- node,
+ curNode,
timeseriesSchemaList,
needLast,
queryContext,
measurementSchema,
- idx < nodes.length ? nodes[idx] : "*");
+ childIndex < nodes.length ? nodes[childIndex] : "*");
}
if (hasLimit) {
count.set(count.get() + 1);
@@ -1302,19 +1302,19 @@ public class MTree implements Serializable {
return;
}
- String nodeReg = MetaUtils.getNodeRegByIdx(idx, nodes);
- if (node.getSchemaTemplate() != null) {
- upperTemplate = node.getSchemaTemplate();
+ String nodeReg = MetaUtils.getNodeRegByIdx(childIndex, nodes);
+ if (curNode.getSchemaTemplate() != null) {
+ upperTemplate = curNode.getSchemaTemplate();
}
- // we should use template when all child is measurement or this node has
no child
+ // we should use template when all child is measurement or this curNode
has no child
if (!nodeReg.contains(PATH_WILDCARD)) {
- IMNode next = node.getChild(nodeReg);
+ IMNode next = curNode.getChild(nodeReg);
if (next != null) {
findPath(
next,
nodes,
- idx + 1,
+ childIndex + 1,
timeseriesSchemaList,
hasLimit,
needLast,
@@ -1322,14 +1322,14 @@ public class MTree implements Serializable {
upperTemplate);
}
} else {
- for (IMNode child : node.getChildren().values()) {
+ for (IMNode child : curNode.getChildren().values()) {
if (!Pattern.matches(nodeReg.replace("*", ".*"), child.getName())) {
continue;
}
findPath(
child,
nodes,
- idx + 1,
+ childIndex + 1,
timeseriesSchemaList,
hasLimit,
needLast,
@@ -1342,14 +1342,14 @@ public class MTree implements Serializable {
}
// template part
- if (node.isUseTemplate()) {
+ if (curNode.isUseTemplate()) {
if (upperTemplate != null) {
HashSet<IMeasurementSchema> set = new HashSet<>();
for (IMeasurementSchema schema :
upperTemplate.getSchemaMap().values()) {
if (set.add(schema)) {
if (schema instanceof MeasurementSchema) {
addMeasurementSchema(
- new MeasurementMNode(node, schema.getMeasurementId(),
schema, null),
+ new MeasurementMNode(curNode, schema.getMeasurementId(),
schema, null),
timeseriesSchemaList,
needLast,
queryContext,
@@ -1359,14 +1359,14 @@ public class MTree implements Serializable {
VectorMeasurementSchema vectorMeasurementSchema =
(VectorMeasurementSchema) schema;
if (Pattern.matches(
nodeReg.replace("*", ".*"),
vectorMeasurementSchema.getMeasurementId())) {
- String firstNode = schema.getValueMeasurementIdList().get(0);
+ String firstNode = schema.getSubMeasurementsList().get(0);
addVectorMeasurementSchemaForTemplate(
- new MeasurementMNode(node, firstNode, schema, null),
+ new MeasurementMNode(curNode, firstNode, schema, null),
timeseriesSchemaList,
needLast,
queryContext,
schema,
- MetaUtils.getNodeRegByIdx(idx + 1, nodes),
+ MetaUtils.getNodeRegByIdx(childIndex + 1, nodes),
vectorMeasurementSchema.getMeasurementId());
}
}
@@ -1410,7 +1410,7 @@ public class MTree implements Serializable {
IMeasurementSchema schema,
String reg)
throws StorageGroupNotSetException, IllegalPathException {
- List<String> measurements = schema.getValueMeasurementIdList();
+ List<String> measurements = schema.getSubMeasurementsList();
for (int i = 0; i < measurements.size(); i++) {
if (!Pattern.matches(reg.replace("*", ".*"), measurements.get(i))) {
continue;
@@ -1419,8 +1419,8 @@ public class MTree implements Serializable {
String[] tsRow = new String[7];
tsRow[0] = null;
tsRow[1] = getStorageGroupPath(devicePath).getFullPath();
- tsRow[2] = schema.getValueTSDataTypeList().get(i).toString();
- tsRow[3] = schema.getValueTSEncodingList().get(i).toString();
+ tsRow[2] = schema.getSubMeasurementsTSDataTypeList().get(i).toString();
+ tsRow[3] = schema.getSubMeasurementsTSEncodingList().get(i).toString();
tsRow[4] = schema.getCompressor().toString();
tsRow[5] = "-1";
tsRow[6] =
@@ -1428,7 +1428,7 @@ public class MTree implements Serializable {
? String.valueOf(getLastTimeStamp((IMeasurementMNode) node,
queryContext))
: null;
Pair<PartialPath, String[]> temp =
- new Pair<>(new PartialPath(devicePath.getFullPath(),
measurements.get(i)), tsRow);
+ new Pair<>(new VectorPartialPath(devicePath.getFullPath(),
measurements.get(i)), tsRow);
timeseriesSchemaList.add(temp);
}
}
@@ -1442,7 +1442,7 @@ public class MTree implements Serializable {
String reg,
String vectorId)
throws StorageGroupNotSetException, IllegalPathException {
- List<String> measurements = schema.getValueMeasurementIdList();
+ List<String> measurements = schema.getSubMeasurementsList();
for (int i = 0; i < measurements.size(); i++) {
if (!Pattern.matches(reg.replace("*", ".*"), measurements.get(i))) {
continue;
@@ -1452,8 +1452,8 @@ public class MTree implements Serializable {
String[] tsRow = new String[7];
tsRow[0] = null;
tsRow[1] = getStorageGroupPath(devicePath).getFullPath();
- tsRow[2] = schema.getValueTSDataTypeList().get(i).toString();
- tsRow[3] = schema.getValueTSEncodingList().get(i).toString();
+ tsRow[2] = schema.getSubMeasurementsTSDataTypeList().get(i).toString();
+ tsRow[3] = schema.getSubMeasurementsTSEncodingList().get(i).toString();
tsRow[4] = schema.getCompressor().toString();
tsRow[5] = "-1";
tsRow[6] =
@@ -1461,7 +1461,7 @@ public class MTree implements Serializable {
? String.valueOf(getLastTimeStamp((IMeasurementMNode) node,
queryContext))
: null;
Pair<PartialPath, String[]> temp =
- new Pair<>(new PartialPath(devicePath.getFullPath(),
measurements.get(i)), tsRow);
+ new Pair<>(new VectorPartialPath(devicePath.getFullPath(),
measurements.get(i)), tsRow);
timeseriesSchemaList.add(temp);
}
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/metadata/VectorPartialPath.java
b/server/src/main/java/org/apache/iotdb/db/metadata/VectorPartialPath.java
index 65ef534..7f985e1 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/VectorPartialPath.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/VectorPartialPath.java
@@ -21,6 +21,7 @@ package org.apache.iotdb.db.metadata;
import org.apache.iotdb.db.exception.metadata.IllegalPathException;
+import java.util.Collections;
import java.util.List;
import java.util.Objects;
@@ -38,6 +39,13 @@ public class VectorPartialPath extends PartialPath {
throws IllegalPathException {
super(path);
this.subSensorsPathList = subSensorsPathList;
+ if (subSensorsPathList.size() == 1) {
+ this.fullPath = subSensorsPathList.get(0).getFullPath();
+ }
+ }
+
+ public VectorPartialPath(String path, String subSensor) throws
IllegalPathException {
+ this(path, Collections.singletonList(new PartialPath(path, subSensor)));
}
public List<PartialPath> getSubSensorsPathList() {
diff --git
a/server/src/main/java/org/apache/iotdb/db/metadata/mnode/MeasurementMNode.java
b/server/src/main/java/org/apache/iotdb/db/metadata/mnode/MeasurementMNode.java
index 27480e8..1899c1c 100644
---
a/server/src/main/java/org/apache/iotdb/db/metadata/mnode/MeasurementMNode.java
+++
b/server/src/main/java/org/apache/iotdb/db/metadata/mnode/MeasurementMNode.java
@@ -118,7 +118,7 @@ public class MeasurementMNode extends MNode implements
IMeasurementMNode {
return schema.getType();
} else {
int index = schema.getMeasurementIdColumnIndex(measurementId);
- return schema.getValueTSDataTypeList().get(index);
+ return schema.getSubMeasurementsTSDataTypeList().get(index);
}
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/metadata/template/Template.java
b/server/src/main/java/org/apache/iotdb/db/metadata/template/Template.java
index 5b769da..2d5b74b 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/template/Template.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/template/Template.java
@@ -168,7 +168,7 @@ public class Template {
if (schemaEntry.getValue() instanceof VectorMeasurementSchema) {
VectorMeasurementSchema vectorMeasurementSchema =
(VectorMeasurementSchema) schemaEntry.getValue();
- res.put(schemaEntry.getKey(),
vectorMeasurementSchema.getValueMeasurementIdList());
+ res.put(schemaEntry.getKey(),
vectorMeasurementSchema.getSubMeasurementsList());
} else {
res.put(schemaEntry.getKey(), new ArrayList<>());
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java
b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java
index d3dff46..0ef38df 100644
---
a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java
+++
b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java
@@ -25,6 +25,7 @@ import
org.apache.iotdb.db.exception.query.LogicalOptimizeException;
import org.apache.iotdb.db.exception.query.QueryProcessException;
import org.apache.iotdb.db.index.common.IndexType;
import org.apache.iotdb.db.metadata.PartialPath;
+import org.apache.iotdb.db.metadata.VectorPartialPath;
import org.apache.iotdb.db.qp.constant.SQLConstant;
import org.apache.iotdb.db.qp.logical.Operator;
import org.apache.iotdb.db.qp.physical.PhysicalPlan;
@@ -260,14 +261,14 @@ public class QueryOperator extends Operator {
}
if (actualPaths.isEmpty()) {
- String nonExistMeasurement =
getMeasurementName(fullPath.getMeasurement(), aggregation);
+ String nonExistMeasurement = getMeasurementName(fullPath,
aggregation);
if (measurementSetOfGivenSuffix.add(nonExistMeasurement)) {
measurementInfoMap.putIfAbsent(
nonExistMeasurement, new
MeasurementInfo(MeasurementType.NonExist));
}
} else {
for (PartialPath path : actualPaths) {
- String measurementName =
getMeasurementName(path.getMeasurement(), aggregation);
+ String measurementName = getMeasurementName(path, aggregation);
TSDataType measurementDataType =
IoTDB.metaManager.getSeriesType(path);
TSDataType columnDataType = getAggregationType(aggregation);
columnDataType = columnDataType == null ? measurementDataType :
columnDataType;
@@ -372,7 +373,13 @@ public class QueryOperator extends Operator {
: (((FunctionExpression) expression).getPaths().get(0));
}
- private String getMeasurementName(String initialMeasurement, String
aggregation) {
+ private String getMeasurementName(PartialPath path, String aggregation) {
+ String initialMeasurement = path.getMeasurement();
+ if (path instanceof VectorPartialPath) {
+ String subMeasurement =
+ ((VectorPartialPath)
path).getSubSensorsPathList().get(0).getMeasurement();
+ initialMeasurement += "." + subMeasurement;
+ }
if (aggregation != null) {
initialMeasurement = aggregation + "(" + initialMeasurement + ")";
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertRowPlan.java
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertRowPlan.java
index d201ae7..40ef6ca 100644
---
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertRowPlan.java
+++
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertRowPlan.java
@@ -281,7 +281,8 @@ public class InsertRowPlan extends InsertPlan {
}
// for aligned timeseries
else {
- for (TSDataType dataType :
measurementMNodes[i].getSchema().getValueTSDataTypeList()) {
+ for (TSDataType dataType :
+
measurementMNodes[i].getSchema().getSubMeasurementsTSDataTypeList()) {
dataTypes[columnIndex] = dataType;
try {
values[columnIndex] =
diff --git
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/LastQueryPlan.java
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/LastQueryPlan.java
index 4064364..21c3424 100644
---
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/LastQueryPlan.java
+++
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/LastQueryPlan.java
@@ -24,7 +24,6 @@ import
org.apache.iotdb.db.exception.query.QueryProcessException;
import org.apache.iotdb.db.qp.logical.Operator;
import org.apache.iotdb.db.qp.strategy.PhysicalGenerator;
import org.apache.iotdb.db.query.expression.ResultColumn;
-import org.apache.iotdb.db.service.IoTDB;
import org.apache.iotdb.tsfile.read.expression.IExpression;
import org.apache.iotdb.tsfile.read.expression.impl.GlobalTimeExpression;
import org.apache.iotdb.tsfile.read.filter.TimeFilter.TimeGt;
@@ -56,7 +55,6 @@ public class LastQueryPlan extends RawDataQueryPlan {
columnForReaderSet.add(column);
}
}
- transformPaths(IoTDB.metaManager);
setResultColumns(deduplicatedResultColumns);
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/RawDataQueryPlan.java
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/RawDataQueryPlan.java
index 796acc3..1cc9a56 100644
---
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/RawDataQueryPlan.java
+++
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/RawDataQueryPlan.java
@@ -20,12 +20,10 @@ package org.apache.iotdb.db.qp.physical.crud;
import org.apache.iotdb.db.exception.metadata.MetadataException;
import org.apache.iotdb.db.exception.query.QueryProcessException;
-import org.apache.iotdb.db.metadata.MManager;
import org.apache.iotdb.db.metadata.PartialPath;
import org.apache.iotdb.db.metadata.VectorPartialPath;
import org.apache.iotdb.db.qp.logical.Operator;
import org.apache.iotdb.db.qp.strategy.PhysicalGenerator;
-import org.apache.iotdb.db.service.IoTDB;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.Path;
import org.apache.iotdb.tsfile.read.expression.IExpression;
@@ -95,16 +93,10 @@ public class RawDataQueryPlan extends QueryPlan {
}
}
- // TODO Maybe we should get VectorPartialPath above from MTree
- // Currently, the above processing will only produce PartialPath instead
of VectorPartialPath
- // even if the queried time series is vector
- // So, we need to transform the PartialPath to VectorPartialPath if is is
a vector.
- if (!isRawQuery()) {
- transformPaths(IoTDB.metaManager);
- } else {
+ if (isRawQuery()) {
// if it is a RawQueryWithoutValueFilter, we also need to group all the
subSensors of one
// vector into one VectorPartialPath
- transformVectorPaths(physicalGenerator, columnForDisplaySet);
+ // transformVectorPaths(physicalGenerator, columnForDisplaySet);
}
}
@@ -177,15 +169,6 @@ public class RawDataQueryPlan extends QueryPlan {
return deviceToMeasurements;
}
- public void transformPaths(MManager mManager) throws MetadataException {
- for (int i = 0; i < deduplicatedPaths.size(); i++) {
- PartialPath path = mManager.transformPath(deduplicatedPaths.get(i));
- if (path instanceof VectorPartialPath) {
- deduplicatedPaths.set(i, path);
- }
- }
- }
-
/**
* Group all the subSensors of one vector into one VectorPartialPath save
the grouped
* VectorPartialPath in deduplicatedVectorPaths and
deduplicatedVectorDataTypes instead of putting
diff --git
a/server/src/main/java/org/apache/iotdb/db/query/dataset/AlignByDeviceDataSet.java
b/server/src/main/java/org/apache/iotdb/db/query/dataset/AlignByDeviceDataSet.java
index 923f459..e2fc477 100644
---
a/server/src/main/java/org/apache/iotdb/db/query/dataset/AlignByDeviceDataSet.java
+++
b/server/src/main/java/org/apache/iotdb/db/query/dataset/AlignByDeviceDataSet.java
@@ -23,7 +23,9 @@ import org.apache.iotdb.db.exception.StorageEngineException;
import org.apache.iotdb.db.exception.metadata.MetadataException;
import org.apache.iotdb.db.exception.query.QueryProcessException;
import org.apache.iotdb.db.metadata.PartialPath;
+import org.apache.iotdb.db.metadata.VectorPartialPath;
import org.apache.iotdb.db.metadata.mnode.IMNode;
+import org.apache.iotdb.db.metadata.mnode.MeasurementMNode;
import org.apache.iotdb.db.metadata.template.Template;
import org.apache.iotdb.db.qp.physical.crud.AggregationPlan;
import org.apache.iotdb.db.qp.physical.crud.AlignByDevicePlan;
@@ -43,9 +45,13 @@ import org.apache.iotdb.tsfile.read.common.RowRecord;
import org.apache.iotdb.tsfile.read.expression.IExpression;
import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
import org.apache.iotdb.tsfile.utils.Binary;
+import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
+import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+import org.apache.iotdb.tsfile.write.schema.VectorMeasurementSchema;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -156,7 +162,7 @@ public class AlignByDeviceDataSet extends QueryDataSet {
}
if (measurementOfGivenDevice.contains(measurement)) {
executeColumns.add(column);
- executePaths.add(currentDevice.concatNode(measurement));
+ executePaths.add(transformPath(currentDevice, measurement));
tsDataTypes.add(measurementInfoMap.get(column).getMeasurementDataType());
}
}
@@ -177,7 +183,6 @@ public class AlignByDeviceDataSet extends QueryDataSet {
groupByTimePlan.setDeduplicatedDataTypes(tsDataTypes);
groupByTimePlan.setDeduplicatedAggregations(executeAggregations);
groupByTimePlan.setExpression(expression);
- groupByTimePlan.transformPaths(IoTDB.metaManager);
currentDataSet = queryRouter.groupBy(groupByTimePlan, context);
break;
case AGGREGATE:
@@ -185,20 +190,17 @@ public class AlignByDeviceDataSet extends QueryDataSet {
aggregationPlan.setDeduplicatedAggregations(executeAggregations);
aggregationPlan.setDeduplicatedDataTypes(tsDataTypes);
aggregationPlan.setExpression(expression);
- aggregationPlan.transformPaths(IoTDB.metaManager);
currentDataSet = queryRouter.aggregate(aggregationPlan, context);
break;
case FILL:
fillQueryPlan.setDeduplicatedDataTypes(tsDataTypes);
fillQueryPlan.setDeduplicatedPathsAndUpdate(executePaths);
- fillQueryPlan.transformPaths(IoTDB.metaManager);
currentDataSet = queryRouter.fill(fillQueryPlan, context);
break;
case QUERY:
rawDataQueryPlan.setDeduplicatedPathsAndUpdate(executePaths);
rawDataQueryPlan.setDeduplicatedDataTypes(tsDataTypes);
rawDataQueryPlan.setExpression(expression);
- rawDataQueryPlan.transformPaths(IoTDB.metaManager);
currentDataSet = queryRouter.rawDataQuery(rawDataQueryPlan,
context);
break;
default:
@@ -206,8 +208,7 @@ public class AlignByDeviceDataSet extends QueryDataSet {
}
} catch (QueryProcessException
| QueryFilterOptimizationException
- | StorageEngineException
- | MetadataException e) {
+ | StorageEngineException e) {
throw new IOException(e);
}
@@ -230,14 +231,29 @@ public class AlignByDeviceDataSet extends QueryDataSet {
protected Set<String> getDeviceMeasurements(PartialPath device) throws
IOException {
try {
IMNode deviceNode = IoTDB.metaManager.getNodeByPath(device);
- Set<String> res = new HashSet<>(deviceNode.getChildren().keySet());
+ Set<String> res = new HashSet<>();
for (IMNode mnode : deviceNode.getChildren().values()) {
- res.addAll(mnode.getChildren().keySet());
+ IMeasurementSchema measurementSchema = ((MeasurementMNode)
mnode).getSchema();
+ if (measurementSchema instanceof VectorMeasurementSchema) {
+ for (String subMeasurement :
measurementSchema.getSubMeasurementsList()) {
+ res.add(measurementSchema.getMeasurementId() + "." +
subMeasurement);
+ }
+ } else {
+ res.add(mnode.getName());
+ }
}
Template template = deviceNode.getUpperTemplate();
if (template != null) {
- res.addAll(template.getSchemaMap().keySet());
+ for (IMeasurementSchema schema : template.getSchemaMap().values()) {
+ if (schema instanceof VectorMeasurementSchema) {
+ for (String subMeasurement : schema.getSubMeasurementsList()) {
+ res.add(schema.getMeasurementId() + "." + subMeasurement);
+ }
+ } else {
+ res.add(schema.getMeasurementId());
+ }
+ }
}
return res;
@@ -246,6 +262,20 @@ public class AlignByDeviceDataSet extends QueryDataSet {
}
}
+ private PartialPath transformPath(PartialPath device, String measurement)
throws IOException {
+ try {
+ PartialPath fullPath = new PartialPath(device.getFullPath(),
measurement);
+ MeasurementMNode node = (MeasurementMNode)
IoTDB.metaManager.getNodeByPath(fullPath);
+ if (node.getSchema() instanceof MeasurementSchema) {
+ return fullPath;
+ } else {
+ return new VectorPartialPath(fullPath.getDevice(),
Collections.singletonList(fullPath));
+ }
+ } catch (MetadataException e) {
+ throw new IOException("Cannot get node from " + device, e);
+ }
+ }
+
@Override
public RowRecord nextWithoutConstraint() throws IOException {
RowRecord originRowRecord = currentDataSet.next();
diff --git
a/server/src/main/java/org/apache/iotdb/db/query/executor/QueryRouter.java
b/server/src/main/java/org/apache/iotdb/db/query/executor/QueryRouter.java
index 8d7c210..838b46d 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/executor/QueryRouter.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/executor/QueryRouter.java
@@ -20,7 +20,6 @@
package org.apache.iotdb.db.query.executor;
import org.apache.iotdb.db.exception.StorageEngineException;
-import org.apache.iotdb.db.exception.metadata.MetadataException;
import org.apache.iotdb.db.exception.query.QueryProcessException;
import org.apache.iotdb.db.metadata.PartialPath;
import org.apache.iotdb.db.qp.physical.crud.AggregationPlan;
@@ -38,7 +37,6 @@ import
org.apache.iotdb.db.query.dataset.groupby.GroupByTimeDataSet;
import org.apache.iotdb.db.query.dataset.groupby.GroupByWithValueFilterDataSet;
import
org.apache.iotdb.db.query.dataset.groupby.GroupByWithoutValueFilterDataSet;
import org.apache.iotdb.db.query.executor.fill.IFill;
-import org.apache.iotdb.db.service.IoTDB;
import org.apache.iotdb.db.utils.TimeValuePairUtils;
import
org.apache.iotdb.tsfile.exception.filter.QueryFilterOptimizationException;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
@@ -95,11 +93,6 @@ public class QueryRouter implements IQueryRouter {
if (optimizedExpression != null
&& optimizedExpression.getType() != ExpressionType.GLOBAL_TIME) {
- try {
- queryPlan.transformPaths(IoTDB.metaManager);
- } catch (MetadataException e) {
- throw new QueryProcessException(e);
- }
return rawDataQueryExecutor.executeWithValueFilter(context);
} else if (optimizedExpression != null
&& optimizedExpression.getType() == ExpressionType.GLOBAL_TIME) {
@@ -112,7 +105,7 @@ public class QueryRouter implements IQueryRouter {
}
// Currently, we only group the vector partial paths for raw query without
value filter
- queryPlan.transformToVector();
+ // queryPlan.transformToVector();
return rawDataQueryExecutor.executeWithoutValueFilter(context);
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/query/timegenerator/ServerTimeGenerator.java
b/server/src/main/java/org/apache/iotdb/db/query/timegenerator/ServerTimeGenerator.java
index 645eb6b..4cd1f0b 100644
---
a/server/src/main/java/org/apache/iotdb/db/query/timegenerator/ServerTimeGenerator.java
+++
b/server/src/main/java/org/apache/iotdb/db/query/timegenerator/ServerTimeGenerator.java
@@ -22,7 +22,6 @@ import org.apache.iotdb.db.engine.StorageEngine;
import org.apache.iotdb.db.engine.querycontext.QueryDataSource;
import org.apache.iotdb.db.engine.storagegroup.StorageGroupProcessor;
import org.apache.iotdb.db.exception.StorageEngineException;
-import org.apache.iotdb.db.exception.metadata.MetadataException;
import org.apache.iotdb.db.metadata.PartialPath;
import org.apache.iotdb.db.qp.physical.crud.RawDataQueryPlan;
import org.apache.iotdb.db.query.context.QueryContext;
@@ -94,12 +93,6 @@ public class ServerTimeGenerator extends TimeGenerator {
@Override
protected IBatchReader generateNewBatchReader(SingleSeriesExpression
expression)
throws IOException {
- try {
- expression.setSeriesPath(
- IoTDB.metaManager.transformPath((PartialPath)
expression.getSeriesPath()));
- } catch (MetadataException e) {
- throw new IOException(e);
- }
Filter valueFilter = expression.getFilter();
PartialPath path = (PartialPath) expression.getSeriesPath();
TSDataType dataType;
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java
b/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java
index 667a984..564c39d 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/MemUtils.java
@@ -112,7 +112,7 @@ public class MemUtils {
// time and index column memSize
memSize += (end - start) * (8L + 4L);
// value columns memSize
- for (TSDataType type : schema.getValueTSDataTypeList()) {
+ for (TSDataType type : schema.getSubMeasurementsTSDataTypeList()) {
if (type == TSDataType.TEXT && addingTextDataSize) {
for (int j = start; j < end; j++) {
memSize += getBinarySize(((Binary[])
insertTabletPlan.getColumns()[columnCount])[j]);
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 61d7692..1e7c0a6 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
@@ -199,7 +199,7 @@ public class LogReplayer {
+ tPlan.getMeasurements()[i]));
columnIndex++;
} else if (tPlan.isAligned()) {
- List<TSDataType> datatypes =
mNodes[i].getSchema().getValueTSDataTypeList();
+ List<TSDataType> datatypes =
mNodes[i].getSchema().getSubMeasurementsTSDataTypeList();
for (int j = 0; j < datatypes.size(); j++) {
if (tPlan.getDataTypes()[columnIndex] == null) {
tPlan.getDataTypes()[columnIndex] = datatypes.get(j);
@@ -207,7 +207,7 @@ public class LogReplayer {
tPlan.markFailedMeasurementInsertion(
i,
new DataTypeMismatchException(
- mNodes[i].getSchema().getValueMeasurementIdList().get(j),
+ mNodes[i].getSchema().getSubMeasurementsList().get(j),
tPlan.getDataTypes()[columnIndex],
datatypes.get(j)));
}
diff --git a/session/src/main/java/org/apache/iotdb/session/Session.java
b/session/src/main/java/org/apache/iotdb/session/Session.java
index 039c186..2336142 100644
--- a/session/src/main/java/org/apache/iotdb/session/Session.java
+++ b/session/src/main/java/org/apache/iotdb/session/Session.java
@@ -1328,10 +1328,10 @@ public class Session {
request.setIsAligned(true);
IMeasurementSchema measurementSchema = tablet.getSchemas().get(0);
request.setPrefixPath(tablet.prefixPath);
- int measurementsSize =
measurementSchema.getValueMeasurementIdList().size();
+ int measurementsSize = measurementSchema.getSubMeasurementsList().size();
for (int i = 0; i < measurementsSize; i++) {
-
request.addToMeasurements(measurementSchema.getValueMeasurementIdList().get(i));
-
request.addToTypes(measurementSchema.getValueTSDataTypeList().get(i).ordinal());
+
request.addToMeasurements(measurementSchema.getSubMeasurementsList().get(i));
+
request.addToTypes(measurementSchema.getSubMeasurementsTSDataTypeList().get(i).ordinal());
}
request.setIsAligned(true);
} else {
@@ -1741,10 +1741,13 @@ public class Session {
}
columnIndex++;
} else {
- int measurementSize = schema.getValueMeasurementIdList().size();
+ int measurementSize = schema.getSubMeasurementsList().size();
for (int j = 0; j < measurementSize; j++) {
tablet.values[columnIndex] =
- sortList(tablet.values[columnIndex],
schema.getValueTSDataTypeList().get(j), index);
+ sortList(
+ tablet.values[columnIndex],
+ schema.getSubMeasurementsTSDataTypeList().get(j),
+ index);
if (tablet.bitMaps != null && tablet.bitMaps[columnIndex] != null) {
tablet.bitMaps[columnIndex] =
sortBitMap(tablet.bitMaps[columnIndex], index);
}
diff --git a/session/src/main/java/org/apache/iotdb/session/SessionUtils.java
b/session/src/main/java/org/apache/iotdb/session/SessionUtils.java
index f50ad52..4080688 100644
--- a/session/src/main/java/org/apache/iotdb/session/SessionUtils.java
+++ b/session/src/main/java/org/apache/iotdb/session/SessionUtils.java
@@ -58,9 +58,9 @@ public class SessionUtils {
getValueBufferOfDataType(schema.getType(), tablet, indexOfValues,
valueBuffer);
indexOfValues++;
} else {
- for (int j = 0; j < schema.getValueTSDataTypeList().size(); j++) {
+ for (int j = 0; j < schema.getSubMeasurementsTSDataTypeList().size();
j++) {
getValueBufferOfDataType(
- schema.getValueTSDataTypeList().get(j), tablet, indexOfValues,
valueBuffer);
+ schema.getSubMeasurementsTSDataTypeList().get(j), tablet,
indexOfValues, valueBuffer);
indexOfValues++;
}
}
diff --git
a/session/src/test/java/org/apache/iotdb/session/IoTDBSessionSimpleIT.java
b/session/src/test/java/org/apache/iotdb/session/IoTDBSessionSimpleIT.java
index 2dd9230..fd14315 100644
--- a/session/src/test/java/org/apache/iotdb/session/IoTDBSessionSimpleIT.java
+++ b/session/src/test/java/org/apache/iotdb/session/IoTDBSessionSimpleIT.java
@@ -58,7 +58,11 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
public class IoTDBSessionSimpleIT {
@@ -392,15 +396,15 @@ public class IoTDBSessionSimpleIT {
int rowIndex = tablet.rowSize++;
tablet.addTimestamp(rowIndex, timestamp);
tablet.addValue(
- schemaList.get(0).getValueMeasurementIdList().get(0),
+ schemaList.get(0).getSubMeasurementsList().get(0),
rowIndex,
new SecureRandom().nextLong());
tablet.addValue(
- schemaList.get(0).getValueMeasurementIdList().get(1),
+ schemaList.get(0).getSubMeasurementsList().get(1),
rowIndex,
new SecureRandom().nextInt());
tablet.addValue(
- schemaList.get(0).getValueMeasurementIdList().get(2), rowIndex, new
Binary("test"));
+ schemaList.get(0).getSubMeasurementsList().get(2), rowIndex, new
Binary("test"));
timestamp++;
}
diff --git
a/session/src/test/java/org/apache/iotdb/session/IoTDBSessionVectorIT.java
b/session/src/test/java/org/apache/iotdb/session/IoTDBSessionVectorIT.java
index f3f781a..ac90003 100644
--- a/session/src/test/java/org/apache/iotdb/session/IoTDBSessionVectorIT.java
+++ b/session/src/test/java/org/apache/iotdb/session/IoTDBSessionVectorIT.java
@@ -170,10 +170,9 @@ public class IoTDBSessionVectorIT {
for (long row = 0; row < 100; row++) {
int rowIndex = tablet.rowSize++;
tablet.addTimestamp(rowIndex, timestamp);
+ tablet.addValue(schemaList.get(0).getSubMeasurementsList().get(0),
rowIndex, row * 10 + 1L);
tablet.addValue(
- schemaList.get(0).getValueMeasurementIdList().get(0), rowIndex, row
* 10 + 1L);
- tablet.addValue(
- schemaList.get(0).getValueMeasurementIdList().get(1), rowIndex,
(int) (row * 10 + 2));
+ schemaList.get(0).getSubMeasurementsList().get(1), rowIndex, (int)
(row * 10 + 2));
if (tablet.rowSize == tablet.getMaxRowNumber()) {
session.insertTablet(tablet, true);
diff --git
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ChunkGroupWriterImpl.java
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ChunkGroupWriterImpl.java
index 65bc9c7..4d82175 100644
---
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ChunkGroupWriterImpl.java
+++
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/ChunkGroupWriterImpl.java
@@ -108,7 +108,7 @@ public class ChunkGroupWriterImpl implements
IChunkGroupWriter {
int batchSize = tablet.rowSize;
VectorMeasurementSchema vectorMeasurementSchema =
(VectorMeasurementSchema) tablet.getSchemas().get(index);
- List<TSDataType> valueDataTypes =
vectorMeasurementSchema.getValueTSDataTypeList();
+ List<TSDataType> valueDataTypes =
vectorMeasurementSchema.getSubMeasurementsTSDataTypeList();
IChunkWriter vectorChunkWriter = chunkWriters.get(measurement);
for (int row = 0; row < batchSize; row++) {
long time = tablet.timestamps[row];
diff --git
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/VectorChunkWriterImpl.java
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/VectorChunkWriterImpl.java
index 83faad4..c661cbe 100644
---
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/VectorChunkWriterImpl.java
+++
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/chunk/VectorChunkWriterImpl.java
@@ -45,10 +45,10 @@ public class VectorChunkWriterImpl implements IChunkWriter {
schema.getTimeTSEncoding(),
schema.getTimeEncoder());
- List<String> valueMeasurementIdList = schema.getValueMeasurementIdList();
- List<TSDataType> valueTSDataTypeList = schema.getValueTSDataTypeList();
- List<TSEncoding> valueTSEncodingList = schema.getValueTSEncodingList();
- List<Encoder> valueEncoderList = schema.getValueEncoderList();
+ List<String> valueMeasurementIdList = schema.getSubMeasurementsList();
+ List<TSDataType> valueTSDataTypeList =
schema.getSubMeasurementsTSDataTypeList();
+ List<TSEncoding> valueTSEncodingList =
schema.getSubMeasurementsTSEncodingList();
+ List<Encoder> valueEncoderList = schema.getSubMeasurementsEncoderList();
valueChunkWriterList = new ArrayList<>(valueMeasurementIdList.size());
for (int i = 0; i < valueMeasurementIdList.size(); i++) {
diff --git
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/Tablet.java
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/Tablet.java
index 2c8d958..0e9d676 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/Tablet.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/Tablet.java
@@ -98,7 +98,7 @@ public class Tablet {
int indexInSchema = 0;
for (IMeasurementSchema schema : schemas) {
if (schema.getType() == TSDataType.VECTOR) {
- for (String measurementId : schema.getValueMeasurementIdList()) {
+ for (String measurementId : schema.getSubMeasurementsList()) {
measurementIndex.put(measurementId, indexInSchema);
}
} else {
@@ -125,7 +125,7 @@ public class Tablet {
IMeasurementSchema measurementSchema = schemas.get(indexOfSchema);
if (measurementSchema.getType().equals(TSDataType.VECTOR)) {
int indexInVector =
measurementSchema.getMeasurementIdColumnIndex(measurementId);
- TSDataType dataType =
measurementSchema.getValueTSDataTypeList().get(indexInVector);
+ TSDataType dataType =
measurementSchema.getSubMeasurementsTSDataTypeList().get(indexInVector);
addValueOfDataType(dataType, rowIndex, indexInVector, value);
} else {
addValueOfDataType(measurementSchema.getType(), rowIndex, indexOfSchema,
value);
@@ -210,7 +210,7 @@ public class Tablet {
int valueColumnsSize = 0;
for (IMeasurementSchema schema : schemas) {
if (schema instanceof VectorMeasurementSchema) {
- valueColumnsSize += schema.getValueMeasurementIdList().size();
+ valueColumnsSize += schema.getSubMeasurementsList().size();
} else {
valueColumnsSize++;
}
@@ -231,8 +231,8 @@ public class Tablet {
}
private int buildVectorColumns(VectorMeasurementSchema schema, int idx) {
- for (int i = 0; i < schema.getValueMeasurementIdList().size(); i++) {
- TSDataType dataType = schema.getValueTSDataTypeList().get(i);
+ for (int i = 0; i < schema.getSubMeasurementsList().size(); i++) {
+ TSDataType dataType = schema.getSubMeasurementsTSDataTypeList().get(i);
values[idx] = createValueColumnOfDataType(dataType);
idx++;
}
@@ -281,8 +281,8 @@ public class Tablet {
valueOccupation += calOccupationOfOneColumn(schema.getType(),
columnIndex);
columnIndex++;
} else {
- for (int j = 0; j < schema.getValueTSDataTypeList().size(); j++) {
- TSDataType dataType = schema.getValueTSDataTypeList().get(j);
+ for (int j = 0; j < schema.getSubMeasurementsTSDataTypeList().size();
j++) {
+ TSDataType dataType =
schema.getSubMeasurementsTSDataTypeList().get(j);
valueOccupation += calOccupationOfOneColumn(dataType, columnIndex);
columnIndex++;
}
diff --git
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/IMeasurementSchema.java
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/IMeasurementSchema.java
index b689a12..685c6c7 100644
---
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/IMeasurementSchema.java
+++
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/IMeasurementSchema.java
@@ -49,13 +49,13 @@ public interface IMeasurementSchema {
Map<String, String> getProps();
- List<String> getValueMeasurementIdList();
+ List<String> getSubMeasurementsList();
- List<TSDataType> getValueTSDataTypeList();
+ List<TSDataType> getSubMeasurementsTSDataTypeList();
- List<TSEncoding> getValueTSEncodingList();
+ List<TSEncoding> getSubMeasurementsTSEncodingList();
- List<Encoder> getValueEncoderList();
+ List<Encoder> getSubMeasurementsEncoderList();
int getMeasurementIdColumnIndex(String measurementId);
diff --git
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/MeasurementSchema.java
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/MeasurementSchema.java
index 6a5e2a6..df87387 100644
---
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/MeasurementSchema.java
+++
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/MeasurementSchema.java
@@ -222,22 +222,22 @@ public class MeasurementSchema
}
@Override
- public List<String> getValueMeasurementIdList() {
+ public List<String> getSubMeasurementsList() {
throw new UnsupportedOperationException("unsupported method for
MeasurementSchema");
}
@Override
- public List<TSDataType> getValueTSDataTypeList() {
+ public List<TSDataType> getSubMeasurementsTSDataTypeList() {
throw new UnsupportedOperationException("unsupported method for
MeasurementSchema");
}
@Override
- public List<TSEncoding> getValueTSEncodingList() {
+ public List<TSEncoding> getSubMeasurementsTSEncodingList() {
throw new UnsupportedOperationException("unsupported method for
MeasurementSchema");
}
@Override
- public List<Encoder> getValueEncoderList() {
+ public List<Encoder> getSubMeasurementsEncoderList() {
throw new UnsupportedOperationException("unsupported method for
MeasurementSchema");
}
diff --git
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/VectorMeasurementSchema.java
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/VectorMeasurementSchema.java
index 280ba25..eb41b7a 100644
---
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/VectorMeasurementSchema.java
+++
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/schema/VectorMeasurementSchema.java
@@ -158,7 +158,7 @@ public class VectorMeasurementSchema
}
@Override
- public List<String> getValueMeasurementIdList() {
+ public List<String> getSubMeasurementsList() {
String[] measurements = new String[measurementsToIndexMap.size()];
for (Map.Entry<String, Integer> entry : measurementsToIndexMap.entrySet())
{
measurements[entry.getValue()] = entry.getKey();
@@ -167,7 +167,7 @@ public class VectorMeasurementSchema
}
@Override
- public List<TSDataType> getValueTSDataTypeList() {
+ public List<TSDataType> getSubMeasurementsTSDataTypeList() {
List<TSDataType> dataTypeList = new ArrayList<>();
for (byte dataType : types) {
dataTypeList.add(TSDataType.deserialize(dataType));
@@ -176,7 +176,7 @@ public class VectorMeasurementSchema
}
@Override
- public List<TSEncoding> getValueTSEncodingList() {
+ public List<TSEncoding> getSubMeasurementsTSEncodingList() {
List<TSEncoding> encodingList = new ArrayList<>();
for (byte encoding : encodings) {
encodingList.add(TSEncoding.deserialize(encoding));
@@ -185,7 +185,7 @@ public class VectorMeasurementSchema
}
@Override
- public List<Encoder> getValueEncoderList() {
+ public List<Encoder> getSubMeasurementsEncoderList() {
List<Encoder> encoderList = new ArrayList<>();
for (int i = 0; i < encodings.length; i++) {
TSEncoding encoding = TSEncoding.deserialize(encodings[i]);
diff --git
a/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/VectorMeasurementSchemaStub.java
b/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/VectorMeasurementSchemaStub.java
index de9c4a0..032835b 100644
---
a/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/VectorMeasurementSchemaStub.java
+++
b/tsfile/src/test/java/org/apache/iotdb/tsfile/write/writer/VectorMeasurementSchemaStub.java
@@ -79,22 +79,22 @@ public class VectorMeasurementSchemaStub implements
IMeasurementSchema {
}
@Override
- public List<String> getValueMeasurementIdList() {
+ public List<String> getSubMeasurementsList() {
return Arrays.asList("s1", "s2", "s3");
}
@Override
- public List<TSDataType> getValueTSDataTypeList() {
+ public List<TSDataType> getSubMeasurementsTSDataTypeList() {
return Arrays.asList(TSDataType.FLOAT, TSDataType.INT32,
TSDataType.DOUBLE);
}
@Override
- public List<TSEncoding> getValueTSEncodingList() {
+ public List<TSEncoding> getSubMeasurementsTSEncodingList() {
return Arrays.asList(TSEncoding.PLAIN, TSEncoding.PLAIN, TSEncoding.PLAIN);
}
@Override
- public List<Encoder> getValueEncoderList() {
+ public List<Encoder> getSubMeasurementsEncoderList() {
return Arrays.asList(
new PlainEncoder(TSDataType.FLOAT, 0),
new PlainEncoder(TSDataType.INT32, 0),