You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2022/12/12 08:18:54 UTC
[iotdb] branch rel/0.13 updated: [To rel/0.13][IOTDB-5184] Fix CompressionType ArrayIndexOutOfBounds (#8401)
This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch rel/0.13
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/rel/0.13 by this push:
new 5463e72a7a [To rel/0.13][IOTDB-5184] Fix CompressionType ArrayIndexOutOfBounds (#8401)
5463e72a7a is described below
commit 5463e72a7a9d685ea0f9403cce212eb9038ba46a
Author: 周沛辰 <45...@users.noreply.github.com>
AuthorDate: Mon Dec 12 16:18:47 2022 +0800
[To rel/0.13][IOTDB-5184] Fix CompressionType ArrayIndexOutOfBounds (#8401)
Co-authored-by: Liu Xuxin <37...@users.noreply.github.com>
---
.../org/apache/iotdb/db/metadata/logfile/MLogWriter.java | 2 +-
.../iotdb/db/qp/physical/sys/AppendTemplatePlan.java | 6 +++---
.../db/qp/physical/sys/CreateAlignedTimeSeriesPlan.java | 6 +++---
.../db/qp/physical/sys/CreateMultiTimeSeriesPlan.java | 6 +++---
.../iotdb/db/qp/physical/sys/CreateTemplatePlan.java | 7 ++++---
.../iotdb/db/qp/physical/sys/CreateTimeSeriesPlan.java | 6 +++---
.../apache/iotdb/db/service/thrift/impl/TSServiceImpl.java | 8 ++++----
.../src/main/java/org/apache/iotdb/session/Session.java | 14 +++++++-------
8 files changed, 28 insertions(+), 27 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/logfile/MLogWriter.java b/server/src/main/java/org/apache/iotdb/db/metadata/logfile/MLogWriter.java
index 1ec1e16d7e..6e481c797f 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/logfile/MLogWriter.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/logfile/MLogWriter.java
@@ -277,7 +277,7 @@ public class MLogWriter implements AutoCloseable {
words[1],
TSDataType.values()[Integer.parseInt(words[3])],
TSEncoding.values()[Integer.parseInt(words[4])],
- CompressionType.values()[Integer.parseInt(words[5])]));
+ CompressionType.deserialize((byte) Integer.parseInt(words[5]))));
case "1":
return new StorageGroupMNodePlan(
words[1], Long.parseLong(words[2]), Integer.parseInt(words[3]));
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/AppendTemplatePlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/AppendTemplatePlan.java
index 5e9287dc81..508a7afb0f 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/AppendTemplatePlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/AppendTemplatePlan.java
@@ -134,7 +134,7 @@ public class AppendTemplatePlan extends PhysicalPlan {
// compressor
ReadWriteIOUtils.write(compressors.length, buffer);
for (CompressionType type : compressors) {
- ReadWriteIOUtils.write(type.ordinal(), buffer);
+ ReadWriteIOUtils.write((int) type.serialize(), buffer);
}
buffer.putLong(index);
@@ -171,7 +171,7 @@ public class AppendTemplatePlan extends PhysicalPlan {
size = ReadWriteIOUtils.readInt(buffer);
compressors = new CompressionType[size];
for (int i = 0; i < size; i++) {
- compressors[i] = CompressionType.values()[ReadWriteIOUtils.readInt(buffer)];
+ compressors[i] = CompressionType.deserialize((byte) ReadWriteIOUtils.readInt(buffer));
}
this.index = buffer.getLong();
@@ -205,7 +205,7 @@ public class AppendTemplatePlan extends PhysicalPlan {
// compressor
ReadWriteIOUtils.write(compressors.length, stream);
for (CompressionType type : compressors) {
- ReadWriteIOUtils.write(type.ordinal(), stream);
+ ReadWriteIOUtils.write((int) type.serialize(), stream);
}
stream.writeLong(index);
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateAlignedTimeSeriesPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateAlignedTimeSeriesPlan.java
index b02a98e35e..2e9f408a1b 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateAlignedTimeSeriesPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateAlignedTimeSeriesPlan.java
@@ -157,7 +157,7 @@ public class CreateAlignedTimeSeriesPlan extends PhysicalPlan {
stream.write(encoding.ordinal());
}
for (CompressionType compressor : compressors) {
- stream.write(compressor.ordinal());
+ stream.write(compressor.serialize());
}
// alias
@@ -190,7 +190,7 @@ public class CreateAlignedTimeSeriesPlan extends PhysicalPlan {
buffer.put((byte) encoding.ordinal());
}
for (CompressionType compressor : compressors) {
- buffer.put((byte) compressor.ordinal());
+ buffer.put(compressor.serialize());
}
// alias
@@ -228,7 +228,7 @@ public class CreateAlignedTimeSeriesPlan extends PhysicalPlan {
}
compressors = new ArrayList<>();
for (int i = 0; i < size; i++) {
- compressors.add(CompressionType.values()[buffer.get()]);
+ compressors.add(CompressionType.deserialize(buffer.get()));
}
// alias
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateMultiTimeSeriesPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateMultiTimeSeriesPlan.java
index 38c323cc0d..a6b86f36b2 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateMultiTimeSeriesPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateMultiTimeSeriesPlan.java
@@ -184,7 +184,7 @@ public class CreateMultiTimeSeriesPlan extends PhysicalPlan implements BatchPlan
}
for (CompressionType compressor : compressors) {
- stream.write(compressor.ordinal());
+ stream.write(compressor.serialize());
}
serializeOptional(stream);
@@ -242,7 +242,7 @@ public class CreateMultiTimeSeriesPlan extends PhysicalPlan implements BatchPlan
}
for (CompressionType compressor : compressors) {
- buffer.put((byte) compressor.ordinal());
+ buffer.put(compressor.serialize());
}
serializeOptional(buffer);
@@ -298,7 +298,7 @@ public class CreateMultiTimeSeriesPlan extends PhysicalPlan implements BatchPlan
}
compressors = new ArrayList<>(totalSize);
for (int i = 0; i < totalSize; i++) {
- compressors.add(CompressionType.values()[buffer.get()]);
+ compressors.add(CompressionType.deserialize(buffer.get()));
}
deserializeOptional(buffer, totalSize);
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTemplatePlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTemplatePlan.java
index dfbce3c17a..809a28a3ed 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTemplatePlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTemplatePlan.java
@@ -226,7 +226,8 @@ public class CreateTemplatePlan extends PhysicalPlan {
String measurementName = ReadWriteIOUtils.readString(buffer);
TSDataType dataType = TSDataType.values()[ReadWriteIOUtils.readByte(buffer)];
TSEncoding encoding = TSEncoding.values()[ReadWriteIOUtils.readByte(buffer)];
- CompressionType compressionType = CompressionType.values()[ReadWriteIOUtils.readByte(buffer)];
+ CompressionType compressionType =
+ CompressionType.deserialize(ReadWriteIOUtils.readByte(buffer));
if (alignedPrefix.containsKey(prefix) && !isAlign) {
throw new MetadataException("Align designation incorrect at: " + prefix);
@@ -401,7 +402,7 @@ public class CreateTemplatePlan extends PhysicalPlan {
int listSize = ReadWriteIOUtils.readInt(buffer);
compressors[i] = new CompressionType[listSize];
for (int j = 0; j < listSize; j++) {
- compressors[i][j] = CompressionType.values()[ReadWriteIOUtils.readInt(buffer)];
+ compressors[i][j] = CompressionType.deserialize((byte) ReadWriteIOUtils.readInt(buffer));
}
}
} else {
@@ -411,7 +412,7 @@ public class CreateTemplatePlan extends PhysicalPlan {
int listSize = measurements[i].length;
compressors[i] = new CompressionType[listSize];
CompressionType alignedCompressionType =
- CompressionType.values()[ReadWriteIOUtils.readInt(buffer)];
+ CompressionType.deserialize((byte) ReadWriteIOUtils.readInt(buffer));
for (int j = 0; j < listSize; j++) {
compressors[i][j] = alignedCompressionType;
}
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTimeSeriesPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTimeSeriesPlan.java
index aceae26e51..1252781ab5 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTimeSeriesPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTimeSeriesPlan.java
@@ -169,7 +169,7 @@ public class CreateTimeSeriesPlan extends PhysicalPlan {
stream.write(bytes);
stream.write(dataType.ordinal());
stream.write(encoding.ordinal());
- stream.write(compressor.ordinal());
+ stream.write(compressor.serialize());
stream.writeLong(tagOffset);
// alias
@@ -215,7 +215,7 @@ public class CreateTimeSeriesPlan extends PhysicalPlan {
buffer.put(bytes);
buffer.put((byte) dataType.ordinal());
buffer.put((byte) encoding.ordinal());
- buffer.put((byte) compressor.ordinal());
+ buffer.put(compressor.serialize());
buffer.putLong(tagOffset);
// alias
@@ -261,7 +261,7 @@ public class CreateTimeSeriesPlan extends PhysicalPlan {
path = new PartialPath(new String(bytes));
dataType = TSDataType.values()[buffer.get()];
encoding = TSEncoding.values()[buffer.get()];
- compressor = CompressionType.values()[buffer.get()];
+ compressor = CompressionType.deserialize(buffer.get());
tagOffset = buffer.getLong();
// alias
diff --git a/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/TSServiceImpl.java b/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/TSServiceImpl.java
index 41ee38f4de..47176a83ba 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/TSServiceImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/TSServiceImpl.java
@@ -1796,7 +1796,7 @@ public class TSServiceImpl implements TSIService.Iface {
new PartialPath(req.path),
TSDataType.values()[req.dataType],
TSEncoding.values()[req.encoding],
- CompressionType.values()[req.compressor],
+ CompressionType.deserialize((byte) req.compressor),
req.props,
req.tags,
req.attributes,
@@ -1836,7 +1836,7 @@ public class TSServiceImpl implements TSIService.Iface {
}
List<CompressionType> compressors = new ArrayList<>();
for (int compressor : req.compressors) {
- compressors.add(CompressionType.values()[compressor]);
+ compressors.add(CompressionType.deserialize((byte) compressor));
}
CreateAlignedTimeSeriesPlan plan =
@@ -1906,7 +1906,7 @@ public class TSServiceImpl implements TSIService.Iface {
}
paths.add(new PartialPath(req.paths.get(i)));
- compressors.add(CompressionType.values()[req.compressors.get(i)]);
+ compressors.add(CompressionType.deserialize(req.compressors.get(i).byteValue()));
if (alias != null) {
alias.add(req.measurementAliasList.get(i));
}
@@ -2014,7 +2014,7 @@ public class TSServiceImpl implements TSIService.Iface {
measurements[i] = req.getMeasurements().get(i);
dataTypes[i] = TSDataType.values()[req.getDataTypes().get(i)];
encodings[i] = TSEncoding.values()[req.getEncodings().get(i)];
- compressionTypes[i] = CompressionType.values()[req.getCompressors().get(i)];
+ compressionTypes[i] = CompressionType.deserialize(req.getCompressors().get(i).byteValue());
}
AppendTemplatePlan plan =
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 8d57a1977d..13d6e4c646 100644
--- a/session/src/main/java/org/apache/iotdb/session/Session.java
+++ b/session/src/main/java/org/apache/iotdb/session/Session.java
@@ -578,7 +578,7 @@ public class Session {
request.setPath(path);
request.setDataType(dataType.ordinal());
request.setEncoding(encoding.ordinal());
- request.setCompressor(compressor.ordinal());
+ request.setCompressor(compressor.serialize());
request.setProps(props);
request.setTags(tags);
request.setAttributes(attributes);
@@ -613,7 +613,7 @@ public class Session {
request.setDataTypes(dataTypes.stream().map(TSDataType::ordinal).collect(Collectors.toList()));
request.setEncodings(encodings.stream().map(TSEncoding::ordinal).collect(Collectors.toList()));
request.setCompressors(
- compressors.stream().map(CompressionType::ordinal).collect(Collectors.toList()));
+ compressors.stream().map(i -> (int) i.serialize()).collect(Collectors.toList()));
request.setMeasurementAlias(measurementAliasList);
return request;
}
@@ -668,7 +668,7 @@ public class Session {
List<Integer> compressionOrdinals = new ArrayList<>(paths.size());
for (CompressionType compression : compressors) {
- compressionOrdinals.add(compression.ordinal());
+ compressionOrdinals.add((int) compression.serialize());
}
request.setCompressors(compressionOrdinals);
@@ -2869,7 +2869,7 @@ public class Session {
req.setDataTypes(dataTypes.stream().map(TSDataType::ordinal).collect(Collectors.toList()));
req.setEncodings(encodings.stream().map(TSEncoding::ordinal).collect(Collectors.toList()));
req.setCompressors(
- compressors.stream().map(CompressionType::ordinal).collect(Collectors.toList()));
+ compressors.stream().map(i -> (int) i.serialize()).collect(Collectors.toList()));
req.setIsAligned(true);
defaultSessionConnection.appendSchemaTemplate(req);
}
@@ -2891,7 +2891,7 @@ public class Session {
req.setMeasurements(Collections.singletonList(measurementPath));
req.setDataTypes(Collections.singletonList(dataType.ordinal()));
req.setEncodings(Collections.singletonList(encoding.ordinal()));
- req.setCompressors(Collections.singletonList(compressor.ordinal()));
+ req.setCompressors(Collections.singletonList((int) compressor.serialize()));
req.setIsAligned(true);
defaultSessionConnection.appendSchemaTemplate(req);
}
@@ -2913,7 +2913,7 @@ public class Session {
req.setDataTypes(dataTypes.stream().map(TSDataType::ordinal).collect(Collectors.toList()));
req.setEncodings(encodings.stream().map(TSEncoding::ordinal).collect(Collectors.toList()));
req.setCompressors(
- compressors.stream().map(CompressionType::ordinal).collect(Collectors.toList()));
+ compressors.stream().map(i -> (int) i.serialize()).collect(Collectors.toList()));
req.setIsAligned(false);
defaultSessionConnection.appendSchemaTemplate(req);
}
@@ -2934,7 +2934,7 @@ public class Session {
req.setMeasurements(Collections.singletonList(measurementPath));
req.setDataTypes(Collections.singletonList(dataType.ordinal()));
req.setEncodings(Collections.singletonList(encoding.ordinal()));
- req.setCompressors(Collections.singletonList(compressor.ordinal()));
+ req.setCompressors(Collections.singletonList((int) compressor.serialize()));
req.setIsAligned(false);
defaultSessionConnection.appendSchemaTemplate(req);
}