You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by le...@apache.org on 2022/10/05 17:33:44 UTC
[iotdb] branch research/M4-visualization updated: fix bug
This is an automated email from the ASF dual-hosted git repository.
leirui pushed a commit to branch research/M4-visualization
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/research/M4-visualization by this push:
new cbcf384d6f fix bug
cbcf384d6f is described below
commit cbcf384d6f7bfc788e8119717bcd78a40ed37d40
Author: Lei Rui <10...@qq.com>
AuthorDate: Thu Oct 6 01:33:52 2022 +0800
fix bug
---
.../apache/iotdb/db/utils/EnvironmentUtils.java | 2 +-
.../org/apache/iotdb/session/MF03SmallData.csv | 12 ++++
.../iotdb/session/MyRealDataWriteQueryTest.java | 69 ++++++++++++----------
.../encoding/decoder/DeltaBinaryDecoder.java | 32 +++++-----
4 files changed, 69 insertions(+), 46 deletions(-)
diff --git a/server/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java b/server/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java
index f5057f9bf1..6415fddcea 100644
--- a/server/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java
+++ b/server/src/test/java/org/apache/iotdb/db/utils/EnvironmentUtils.java
@@ -154,7 +154,7 @@ public class EnvironmentUtils {
MemTableManager.getInstance().close();
// delete all directory
- // cleanAllDir();
+ cleanAllDir();
config.setSeqTsFileSize(oldSeqTsFileSize);
config.setUnSeqTsFileSize(oldUnSeqTsFileSize);
config.setMemtableSizeThreshold(oldGroupSizeInByte);
diff --git a/session/src/test/java/org/apache/iotdb/session/MF03SmallData.csv b/session/src/test/java/org/apache/iotdb/session/MF03SmallData.csv
new file mode 100644
index 0000000000..e86b34e48f
--- /dev/null
+++ b/session/src/test/java/org/apache/iotdb/session/MF03SmallData.csv
@@ -0,0 +1,12 @@
+1329965999881042200,9141
+1329965999891043800,9141
+1329965999901044000,9146
+1329965999911044300,9148
+1329965999921046500,9147
+1329965999931074900,9147
+1329965999941045100,9146
+1329965999951046000,9145
+1329965999961044400,9142
+1329965999971061300,9141
+1329965999981043600,9141
+1329965999991045200,9141
\ No newline at end of file
diff --git a/session/src/test/java/org/apache/iotdb/session/MyRealDataWriteQueryTest.java b/session/src/test/java/org/apache/iotdb/session/MyRealDataWriteQueryTest.java
index 471417f958..3d355eaed9 100644
--- a/session/src/test/java/org/apache/iotdb/session/MyRealDataWriteQueryTest.java
+++ b/session/src/test/java/org/apache/iotdb/session/MyRealDataWriteQueryTest.java
@@ -46,20 +46,26 @@ public class MyRealDataWriteQueryTest {
private static TSDataType tsDataType = TSDataType.INT64; // TSDataType.DOUBLE;
private static String timestamp_precision = "ns"; // ns, us, ms
// used to bound tqs random position
- private static long dataMinTime = 0;
- private static long dataMaxTime = 617426057626L; // 511483966L;// 617426057626L;
+ private static long dataMinTime =
+ 1329965999881042200L; // 1329965998981025700L;//1329955200008812200L;//0;
+ private static long dataMaxTime =
+ 1329965999991045200L; // 1329965999991045200L;//511483966L;// 617426057626L;
private static long total_time_length =
dataMaxTime - dataMinTime; // in corresponding timestamp precision
- private static int total_point_number = 1200000; // 1000; // 1200000;
- private static int iotdb_chunk_point_size = 100;
+ private static int total_point_number = 12; // 1200000;
+ private static int iotdb_chunk_point_size = 10;
private static long chunkAvgTimeLen =
(long)
Math.ceil(
total_time_length / Math.ceil(total_point_number * 1.0 / iotdb_chunk_point_size));
- // private static String filePath =
- // "D:\\github\\m4-lsm\\iotdb\\session\\src\\test\\java\\org\\apache\\iotdb\\session\\BallSpeedSmallData.csv";
private static String filePath =
- "D:\\github\\m4-lsm\\M4-visualization-exp\\src\\main\\java\\org\\apache\\iotdb\\datasets\\BallSpeed.csv";
+ "D:\\github\\m4-lsm\\iotdb\\session\\src\\test\\java\\org\\apache\\iotdb\\session\\MF03SmallData.csv";
+ // private static String filePath =
+ //
+ // "D:\\github\\m4-lsm\\iotdb\\session\\src\\test\\java\\org\\apache\\iotdb\\session\\BallSpeedSmallData.csv";
+ // private static String filePath =
+ //
+ // "D:\\github\\m4-lsm\\M4-visualization-exp\\src\\main\\java\\org\\apache\\iotdb\\datasets\\BallSpeed.csv";
private static int deletePercentage = 0; // 0 means no deletes. 0-100
private static int deleteLenPercentage = 0; // 0-100 每次删除的时间长度,用chunkAvgTimeLen的百分比表示
private static int timeIdx = 0; // 时间戳idx,从0开始
@@ -78,8 +84,9 @@ public class MyRealDataWriteQueryTest {
TSFileDescriptor.getInstance().getConfig().setPageSizeInByte(1073741824);
- TSFileDescriptor.getInstance().getConfig().setEnableRegularityTimeDecode(false);
- TSFileDescriptor.getInstance().getConfig().setRegularTimeInterval(511996);
+ TSFileDescriptor.getInstance().getConfig().setEnableRegularityTimeDecode(true);
+ TSFileDescriptor.getInstance().getConfig().setRegularTimeInterval(10000900);
+ // TSFileDescriptor.getInstance().getConfig().setRegularTimeInterval(511996);
EnvironmentUtils.envSetUp(); // start after configuration settings
Class.forName(Config.JDBC_DRIVER_NAME);
@@ -106,7 +113,7 @@ public class MyRealDataWriteQueryTest {
@After
public void tearDown() throws Exception {
- EnvironmentUtils.cleanEnv(); // comment out the cleanAllDir()
+ EnvironmentUtils.cleanEnv();
}
/** Before writing data, make sure check the server parameter configurations. */
@@ -123,7 +130,7 @@ public class MyRealDataWriteQueryTest {
// [tqs,tqe) range length, i.e., tqe-tqs
long range = total_time_length;
// w数量
- int w = 1000;
+ int w = 2;
System.out.println("[QueryData] query range=" + range);
System.out.println("[QueryData] w=" + w);
@@ -196,26 +203,26 @@ public class MyRealDataWriteQueryTest {
// System.out.println(dataSet.getColumnNames());
while (iterator.next()) { // this way avoid constructing rowRecord
c++;
- // String ans;
- // if (approach.equals("mac")) {
- // ans =
- // String.format(
- // "%s,%s",
- // iterator.getString(1), // time
- // iterator.getString(2)); // M4
- // } else {
- // ans =
- // String.format(
- // "%s,%s,%s,%s,%s,%s,%s",
- // iterator.getString(1), // time
- // iterator.getString(2), // min_time
- // iterator.getString(3), // max_time
- // iterator.getString(4), // first_value
- // iterator.getString(5), // last_value
- // iterator.getString(6), // min_value & bottomTime
- // iterator.getString(7)); // max_value & topTime
- // }
- // System.out.println(ans);
+ String ans;
+ if (approach.equals("mac")) {
+ ans =
+ String.format(
+ "%s,%s",
+ iterator.getString(1), // time
+ iterator.getString(2)); // M4
+ } else {
+ ans =
+ String.format(
+ "%s,%s,%s,%s,%s,%s,%s",
+ iterator.getString(1), // time
+ iterator.getString(2), // min_time
+ iterator.getString(3), // max_time
+ iterator.getString(4), // first_value
+ iterator.getString(5), // last_value
+ iterator.getString(6), // min_value & bottomTime
+ iterator.getString(7)); // max_value & topTime
+ }
+ System.out.println(ans);
}
Assert.assertEquals(w, c);
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DeltaBinaryDecoder.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DeltaBinaryDecoder.java
index 2791149389..e5b610286c 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DeltaBinaryDecoder.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/encoding/decoder/DeltaBinaryDecoder.java
@@ -229,21 +229,25 @@ public abstract class DeltaBinaryDecoder extends Decoder {
// (2) compare bits with encodedRegularTimeInterval,
// (3) equal to reuse, else to convert
- boolean equal = true;
- int pos = i * bitWidthToByteNum;
- for (int j = 0; j < bitWidthToByteNum; j++) { // compare encoded bytes
- byte regular = encodedRegularTimeInterval[j];
- byte data = deltaBuf[pos + j];
- if (regular != data) {
- equal = false;
- break;
- }
- }
- if (equal) {
- data[i] = previous + regularTimeInterval;
+ if (packWidth == 0) {
+ data[i] = previous + minDeltaBase; // v=0
} else {
- long v = BytesUtils.bytesToLong(deltaBuf, packWidth * i, packWidth);
- data[i] = previous + minDeltaBase + v;
+ boolean equal = true;
+ int pos = i * bitWidthToByteNum;
+ for (int j = 0; j < bitWidthToByteNum; j++) { // compare encoded bytes
+ byte regular = encodedRegularTimeInterval[j];
+ byte data = deltaBuf[pos + j];
+ if (regular != data) {
+ equal = false;
+ break;
+ }
+ }
+ if (equal) {
+ data[i] = previous + regularTimeInterval;
+ } else {
+ long v = BytesUtils.bytesToLong(deltaBuf, packWidth * i, packWidth);
+ data[i] = previous + minDeltaBase + v;
+ }
}
previous = data[i];
}