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 2021/04/20 02:03:20 UTC
[iotdb] 01/01: [To Vector] Move BitMaps to the end of the
ValueBuffer
This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch moveBitMaps
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 2252f706d961d6b513535892146c3420fe3aeec7
Author: HTHou <hh...@outlook.com>
AuthorDate: Tue Apr 20 10:01:48 2021 +0800
[To Vector] Move BitMaps to the end of the ValueBuffer
---
.../db/qp/physical/crud/InsertTabletPlan.java | 8 +++----
.../org/apache/iotdb/db/service/TSServiceImpl.java | 10 ++++----
.../apache/iotdb/db/utils/QueryDataSetUtils.java | 2 +-
.../org/apache/iotdb/session/SessionUtils.java | 27 ++++++++++------------
4 files changed, 21 insertions(+), 26 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertTabletPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertTabletPlan.java
index 4e23ac1..1358429 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertTabletPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertTabletPlan.java
@@ -157,8 +157,8 @@ public class InsertTabletPlan extends InsertPlan {
writeMeasurements(stream);
writeDataTypes(stream);
writeTimes(stream);
- writeBitMaps(stream);
writeValues(stream);
+ writeBitMaps(stream);
}
private void writeMeasurements(DataOutputStream stream) throws IOException {
@@ -207,7 +207,6 @@ public class InsertTabletPlan extends InsertPlan {
}
private void writeBitMaps(DataOutputStream stream) throws IOException {
- stream.writeBoolean(bitMaps != null);
if (bitMaps != null) {
for (BitMap bitMap : bitMaps) {
if (bitMap == null) {
@@ -243,8 +242,8 @@ public class InsertTabletPlan extends InsertPlan {
writeMeasurements(buffer);
writeDataTypes(buffer);
writeTimes(buffer);
- writeBitMaps(buffer);
writeValues(buffer);
+ writeBitMaps(buffer);
}
private void writeMeasurements(ByteBuffer buffer) {
@@ -292,7 +291,6 @@ public class InsertTabletPlan extends InsertPlan {
}
private void writeBitMaps(ByteBuffer buffer) {
- buffer.put(BytesUtils.boolToByte(bitMaps != null));
if (bitMaps != null) {
for (BitMap bitMap : bitMaps) {
if (bitMap == null) {
@@ -461,9 +459,9 @@ public class InsertTabletPlan extends InsertPlan {
times = QueryDataSetUtils.readTimesFromBuffer(buffer, rows);
updateTimesCache();
- bitMaps = QueryDataSetUtils.readBitMapsFromBuffer(buffer, dataTypeSize, rows);
columns = QueryDataSetUtils.readValuesFromBuffer(buffer, dataTypes, dataTypeSize, rows);
this.index = buffer.getLong();
+ bitMaps = QueryDataSetUtils.readBitMapsFromBuffer(buffer, dataTypeSize, rows);
}
public void setDataTypes(List<Integer> dataTypes) {
diff --git a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
index 4cd264a..19bc1a4 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
@@ -1633,11 +1633,11 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
InsertTabletPlan insertTabletPlan =
new InsertTabletPlan(new PartialPath(req.deviceId), req.measurements);
insertTabletPlan.setTimes(QueryDataSetUtils.readTimesFromBuffer(req.timestamps, req.size));
- insertTabletPlan.setBitMaps(
- QueryDataSetUtils.readBitMapsFromBuffer(req.values, req.types.size(), req.size));
insertTabletPlan.setColumns(
QueryDataSetUtils.readValuesFromBuffer(
req.values, req.types, req.types.size(), req.size));
+ insertTabletPlan.setBitMaps(
+ QueryDataSetUtils.readBitMapsFromBuffer(req.values, req.types.size(), req.size));
insertTabletPlan.setRowCount(req.size);
insertTabletPlan.setDataTypes(req.types);
@@ -1677,15 +1677,15 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
new InsertTabletPlan(new PartialPath(req.deviceIds.get(i)), req.measurementsList.get(i));
insertTabletPlan.setTimes(
QueryDataSetUtils.readTimesFromBuffer(req.timestampsList.get(i), req.sizeList.get(i)));
- insertTabletPlan.setBitMaps(
- QueryDataSetUtils.readBitMapsFromBuffer(
- req.valuesList.get(i), req.measurementsList.get(i).size(), req.sizeList.get(i)));
insertTabletPlan.setColumns(
QueryDataSetUtils.readValuesFromBuffer(
req.valuesList.get(i),
req.typesList.get(i),
req.measurementsList.get(i).size(),
req.sizeList.get(i)));
+ insertTabletPlan.setBitMaps(
+ QueryDataSetUtils.readBitMapsFromBuffer(
+ req.valuesList.get(i), req.measurementsList.get(i).size(), req.sizeList.get(i)));
insertTabletPlan.setRowCount(req.sizeList.get(i));
insertTabletPlan.setDataTypes(req.typesList.get(i));
return insertTabletPlan;
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/QueryDataSetUtils.java b/server/src/main/java/org/apache/iotdb/db/utils/QueryDataSetUtils.java
index 54ec810..4c32123 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/QueryDataSetUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/QueryDataSetUtils.java
@@ -185,7 +185,7 @@ public class QueryDataSetUtils {
}
public static BitMap[] readBitMapsFromBuffer(ByteBuffer buffer, int columns, int size) {
- if (!BytesUtils.byteToBool(buffer.get())) {
+ if (!buffer.hasRemaining()) {
return null;
}
BitMap[] bitMaps = new BitMap[columns];
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 4fa5cbc..f028990 100644
--- a/session/src/main/java/org/apache/iotdb/session/SessionUtils.java
+++ b/session/src/main/java/org/apache/iotdb/session/SessionUtils.java
@@ -43,21 +43,6 @@ public class SessionUtils {
@SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning
public static ByteBuffer getValueBuffer(Tablet tablet) {
ByteBuffer valueBuffer = ByteBuffer.allocate(tablet.getTotalValueOccupation());
- boolean hasBitMaps = tablet.bitMaps != null;
- valueBuffer.put(BytesUtils.boolToByte(hasBitMaps));
- if (hasBitMaps) {
- for (BitMap bitMap : tablet.bitMaps) {
- boolean columnHasNull = bitMap != null && !bitMap.isAllUnmarked();
- valueBuffer.put(BytesUtils.boolToByte(columnHasNull));
-
- if (columnHasNull) {
- byte[] bytes = bitMap.getByteArray();
- for (int j = 0; j < tablet.rowSize / Byte.SIZE + 1; j++) {
- valueBuffer.put(bytes[j]);
- }
- }
- }
- }
int indexOfValues = 0;
for (int i = 0; i < tablet.getSchemas().size(); i++) {
IMeasurementSchema schema = tablet.getSchemas().get(i);
@@ -72,6 +57,18 @@ public class SessionUtils {
}
}
}
+ if (tablet.bitMaps != null) {
+ for (BitMap bitMap : tablet.bitMaps) {
+ boolean columnHasNull = bitMap != null && !bitMap.isAllUnmarked();
+ valueBuffer.put(BytesUtils.boolToByte(columnHasNull));
+ if (columnHasNull) {
+ byte[] bytes = bitMap.getByteArray();
+ for (int j = 0; j < tablet.rowSize / Byte.SIZE + 1; j++) {
+ valueBuffer.put(bytes[j]);
+ }
+ }
+ }
+ }
valueBuffer.flip();
return valueBuffer;
}