You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ji...@apache.org on 2021/02/15 03:05:54 UTC
[iotdb] branch spotless updated: IOTDB-1152 optimize regular data
size in traversing
This is an automated email from the ASF dual-hosted git repository.
jincheng pushed a commit to branch spotless
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/spotless by this push:
new b6709a7 IOTDB-1152 optimize regular data size in traversing
b6709a7 is described below
commit b6709a76701d33bf210dcd09f8d8a10c71ae4f21
Author: sunjincheng121 <su...@gmail.com>
AuthorDate: Mon Feb 15 11:03:35 2021 +0800
IOTDB-1152 optimize regular data size in traversing
---
.../iotdb/tsfile/encoding/encoder/RegularDataEncoder.java | 8 ++++++--
.../decoder/regular/RegularDataEncoderIntegerTest.java | 13 +++++++++++++
.../decoder/regular/RegularDataEncoderLongTest.java | 13 +++++++++++++
3 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/RegularDataEncoder.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/RegularDataEncoder.java
index 492e8eb..19502a8 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/RegularDataEncoder.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/encoder/RegularDataEncoder.java
@@ -49,6 +49,8 @@ public abstract class RegularDataEncoder extends Encoder {
protected int writeIndex = -1;
+ protected int dataTotal;
+
/**
* constructor of RegularDataEncoder.
*
@@ -183,6 +185,7 @@ public abstract class RegularDataEncoder extends Encoder {
}
firstValue = data[0];
if (isMissingPoint) {
+ dataTotal = writeIndex;
newBlockSize = ((data[writeIndex - 1] - data[0]) / minDeltaBase) + 1;
writeIndex = newBlockSize;
}
@@ -218,7 +221,7 @@ public abstract class RegularDataEncoder extends Encoder {
bitmap = new BitSet(newBlockSize);
bitmap.flip(0, newBlockSize);
int offset = 0;
- for (int i = 1; i < missingPointData.length; i++) {
+ for (int i = 1; i < dataTotal; i++) {
int delta = missingPointData[i] - missingPointData[i - 1];
if (delta != minDeltaBase) {
int missingPointNum = (int) (delta / minDeltaBase) - 1;
@@ -309,6 +312,7 @@ public abstract class RegularDataEncoder extends Encoder {
}
firstValue = data[0];
if (isMissingPoint) {
+ dataTotal = writeIndex;
newBlockSize = (int) (((data[writeIndex - 1] - data[0]) / minDeltaBase) + 1);
writeIndex = newBlockSize;
}
@@ -344,7 +348,7 @@ public abstract class RegularDataEncoder extends Encoder {
bitmap = new BitSet(newBlockSize);
bitmap.flip(0, newBlockSize);
int offset = 0;
- for (int i = 1; i < missingPointData.length; i++) {
+ for (int i = 1; i < dataTotal; i++) {
long delta = missingPointData[i] - missingPointData[i - 1];
if (delta != minDeltaBase) {
int missingPointNum = (int) (delta / minDeltaBase) - 1;
diff --git a/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/regular/RegularDataEncoderIntegerTest.java b/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/regular/RegularDataEncoderIntegerTest.java
index be08915..8b091ab 100644
--- a/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/regular/RegularDataEncoderIntegerTest.java
+++ b/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/regular/RegularDataEncoderIntegerTest.java
@@ -96,6 +96,19 @@ public class RegularDataEncoderIntegerTest {
shouldReadAndWrite(data, ROW_NUM);
}
+ @Test
+ public void testMissingPointsDataSize() throws IOException {
+ int[] originalData = new int[] {1000, 1100, 1200, 1300, 1500, 2000};
+ out = new ByteArrayOutputStream();
+ writeData(originalData, 6);
+ byte[] page = out.toByteArray();
+ buffer = ByteBuffer.wrap(page);
+ int i = 0;
+ while (regularDataDecoder.hasNext(buffer)) {
+ assertEquals(originalData[i++], regularDataDecoder.readInt(buffer));
+ }
+ }
+
private int[] getMissingPointData(int dataSize, int missingPointInterval) {
ROW_NUM = dataSize;
diff --git a/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/regular/RegularDataEncoderLongTest.java b/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/regular/RegularDataEncoderLongTest.java
index aaec9a3..5e7748b 100644
--- a/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/regular/RegularDataEncoderLongTest.java
+++ b/tsfile/src/test/java/org/apache/iotdb/tsfile/encoding/decoder/regular/RegularDataEncoderLongTest.java
@@ -137,6 +137,19 @@ public class RegularDataEncoderLongTest {
shouldReadAndWrite(data, ROW_NUM);
}
+ @Test
+ public void testMissingPointsDataSize() throws IOException {
+ long[] originalData = new long[] {1000, 1100, 1200, 1300, 1500, 2000};
+ out = new ByteArrayOutputStream();
+ writeData(originalData, 6);
+ byte[] page = out.toByteArray();
+ buffer = ByteBuffer.wrap(page);
+ int i = 0;
+ while (regularDataDecoder.hasNext(buffer)) {
+ assertEquals(originalData[i++], regularDataDecoder.readLong(buffer));
+ }
+ }
+
private long[] getMissingPointData(List<String> originalData, int missingPointInterval) {
List<String> dates = originalData;