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];
         }