This is an automated email from the ASF dual-hosted git repository.

leirui pushed a commit to branch research/LTS-visualization
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit d1f7c6dd0759946aa3930479764dad5f7896705a
Author: Lei Rui <[email protected]>
AuthorDate: Sun Jan 28 09:03:48 2024 +0800

    p1pnrps config
---
 .../resources/conf/iotdb-engine.properties         |   8 +
 .../java/org/apache/iotdb/db/conf/IoTDBConfig.java |  47 ++++
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  |   7 +
 .../groupby/GroupByWithoutValueFilterDataSet.java  |  28 ++-
 .../db/integration/tri/MyTest_MinMaxLTTB.java      | 271 +++++----------------
 5 files changed, 142 insertions(+), 219 deletions(-)

diff --git a/server/src/assembly/resources/conf/iotdb-engine.properties 
b/server/src/assembly/resources/conf/iotdb-engine.properties
index 39258498cff..ebc535b6422 100644
--- a/server/src/assembly/resources/conf/iotdb-engine.properties
+++ b/server/src/assembly/resources/conf/iotdb-engine.properties
@@ -22,6 +22,14 @@
 # MinMax, MinMaxLTTB, M4LTTB, LTTB, ILTS
 enable_Tri=MinMax
 
+p1t=0
+p1v=0
+
+pnt=100
+pnv=100
+
+rps=4
+
 ####################
 ### enable CPV
 ####################
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java 
b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
index 2bf7caaec93..92bb68f7f2f 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
@@ -435,6 +435,53 @@ public class IoTDBConfig {
 
   private String enableTri = ""; // MinMax, MinMaxLTTB, M4LTTB, LTTB, ILTS
 
+  private long p1t;
+  private double p1v;
+  private long pnt;
+  private double pnv;
+
+  private int rps;
+
+  public long getP1t() {
+    return p1t;
+  }
+
+  public void setP1t(long p1t) {
+    this.p1t = p1t;
+  }
+
+  public double getP1v() {
+    return p1v;
+  }
+
+  public void setP1v(double p1v) {
+    this.p1v = p1v;
+  }
+
+  public long getPnt() {
+    return pnt;
+  }
+
+  public void setPnt(long pnt) {
+    this.pnt = pnt;
+  }
+
+  public double getPnv() {
+    return pnv;
+  }
+
+  public void setPnv(double pnv) {
+    this.pnv = pnv;
+  }
+
+  public int getRps() {
+    return rps;
+  }
+
+  public void setRps(int rps) {
+    this.rps = rps;
+  }
+
   /** The display of stat performance interval in ms. */
   private long performanceStatDisplayInterval = 60000;
 
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java 
b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index e335d5ce0b9..f1523d8f739 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -540,6 +540,13 @@ public class IoTDBDescriptor {
               properties.getProperty("enable_CPV", 
Boolean.toString(conf.isEnableCPV())).trim()));
 
       conf.setEnableTri(properties.getProperty("enable_Tri", 
conf.getEnableTri()).trim());
+      conf.setP1t(Long.parseLong(properties.getProperty("p1t", 
Long.toString(conf.getP1t()))));
+      conf.setP1v(
+          Double.parseDouble(properties.getProperty("p1v", 
Double.toString(conf.getP1v()))));
+      conf.setPnt(Long.parseLong(properties.getProperty("pnt", 
Long.toString(conf.getPnt()))));
+      conf.setPnv(
+          Double.parseDouble(properties.getProperty("pnv", 
Double.toString(conf.getPnv()))));
+      conf.setRps(Integer.parseInt(properties.getProperty("rps", 
Integer.toString(conf.getRps()))));
 
       conf.setPerformanceStatDisplayInterval(
           Long.parseLong(
diff --git 
a/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithoutValueFilterDataSet.java
 
b/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithoutValueFilterDataSet.java
index 71538e8c3dd..9bb07093067 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithoutValueFilterDataSet.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/query/dataset/groupby/GroupByWithoutValueFilterDataSet.java
@@ -153,16 +153,17 @@ public class GroupByWithoutValueFilterDataSet extends 
GroupByEngineDataSet {
   }
 
   public RowRecord nextWithoutConstraintTri_MinMaxLTTB() throws IOException {
-    RowRecord record;
 
-    // TODO tmp p1,pn,rps later passed by config
-    long p1t = 0;
-    double p1v = -1.2079272;
-    long pnt = 2100;
-    double pnv = -0.0211206;
-    int rps = 4;
     int divide = 2; // one LTTB bucket corresponds to rps/2 MinMax buckets
 
+    long p1t = CONFIG.getP1t();
+    double p1v = CONFIG.getP1v();
+    long pnt = CONFIG.getPnt();
+    double pnv = CONFIG.getPnv();
+    int rps = CONFIG.getRps();
+
+    RowRecord record;
+
     // concat results into a string
     record = new RowRecord(0);
     StringBuilder series = new StringBuilder();
@@ -184,7 +185,7 @@ public class GroupByWithoutValueFilterDataSet extends 
GroupByEngineDataSet {
           // [0,3),[3,6),[6,9), no need incomplete [9,11)
           // then the number of buckets must be 
Math.floor((endTime-startTime)/interval)
           localCurStartTime += interval) {
-        System.out.println(localCurStartTime);
+        //        System.out.println(localCurStartTime);
         // not change real curStartTime&curEndTime
         // attention the returned aggregations need deep copy if using directly
         List<AggregateResult> aggregations =
@@ -204,8 +205,8 @@ public class GroupByWithoutValueFilterDataSet extends 
GroupByEngineDataSet {
       }
 
       // Second step: apply LTTB on the MinMax preselection result
-      System.out.println(times);
-      System.out.println(values);
+      //      System.out.println(times);
+      //      System.out.println(values);
       int N1 = (int) Math.floor((endTime * 1.0 - startTime) / interval); // 
MinMax桶数
       int N2 = N1 / (rps / divide); // LTTB桶数
       // 全局首点
@@ -266,7 +267,8 @@ public class GroupByWithoutValueFilterDataSet extends 
GroupByEngineDataSet {
             long t = times.get(j);
             double v = (double) values.get(j); // TODO
             double area = IOMonitor2.calculateTri(lt, lv, t, v, rt, rv);
-            System.out.printf("curr=%d,t=%d,area=%f,lt=%d%n", currentBucket, 
t, area, lt);
+            //            System.out.printf("curr=%d,t=%d,area=%f,lt=%d%n", 
currentBucket, t, area,
+            // lt);
             if (area > maxArea) {
               maxArea = area;
               select_t = t;
@@ -285,7 +287,7 @@ public class GroupByWithoutValueFilterDataSet extends 
GroupByEngineDataSet {
         lv = select_v;
       }
 
-      // 下面处理最后一个桶
+      // ==========下面处理最后一个桶===============
       // 现在找到当前非空桶里距离lr垂直距离最远的点
       double maxArea = -1;
       long select_t = -1;
@@ -296,7 +298,7 @@ public class GroupByWithoutValueFilterDataSet extends 
GroupByEngineDataSet {
           long t = times.get(j);
           double v = (double) values.get(j); // TODO
           double area = IOMonitor2.calculateTri(lt, lv, t, v, pnt, pnv); // 
全局尾点作为右边固定点
-          System.out.printf("curr=%d,t=%d,area=%f,lt=%d%n", currentBucket, t, 
area, lt);
+          //          System.out.printf("curr=%d,t=%d,area=%f,lt=%d%n", 
currentBucket, t, area, lt);
           if (area > maxArea) {
             maxArea = area;
             select_t = t;
diff --git 
a/server/src/test/java/org/apache/iotdb/db/integration/tri/MyTest_MinMaxLTTB.java
 
b/server/src/test/java/org/apache/iotdb/db/integration/tri/MyTest_MinMaxLTTB.java
index e80a6c3f8cf..8ee541a2514 100644
--- 
a/server/src/test/java/org/apache/iotdb/db/integration/tri/MyTest_MinMaxLTTB.java
+++ 
b/server/src/test/java/org/apache/iotdb/db/integration/tri/MyTest_MinMaxLTTB.java
@@ -24,7 +24,6 @@ import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.engine.compaction.CompactionStrategy;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.jdbc.Config;
-import org.apache.iotdb.jdbc.IoTDBStatement;
 import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
 
 import org.junit.After;
@@ -73,13 +72,12 @@ public class MyTest_MinMaxLTTB {
     config.setCompactionStrategy(CompactionStrategy.NO_COMPACTION);
 
     config.setEnableTri("MinMaxLTTB");
+    //    config.setP1t(0);
+    //    config.setP1v(-1.2079272);
+    //    config.setPnt(2100);
+    //    config.setPnv(-0.0211206);
+    //    config.setRps(4);
 
-    // 但是如果走的是unpackOneChunkMetaData(firstChunkMetadata)就没问题,
-    // 因为它直接用chunk元数据去构造pageReader,
-    // 
但是如果走的是传统聚合类型->seriesAggregateReader->seriesReader->hasNextOverlappedPage里
-    // cachedBatchData = BatchDataFactory.createBatchData(dataType, 
orderUtils.getAscending(), true)
-    // 这个路径就错了,把聚合类型赋给batchData了。所以这个LocalGroupByExecutor 
bug得在有overlap数据的时候才能复现
-    // (那刚好我本文数据都不会有Overlap,可以用LocalGroupByExecutor来得到正确结果)
     config.setEnableCPV(false);
     TSFileDescriptor.getInstance().getConfig().setEnableMinMaxLSM(false);
     TSFileDescriptor.getInstance().getConfig().setUseStatistics(false);
@@ -93,64 +91,70 @@ public class MyTest_MinMaxLTTB {
     EnvironmentUtils.cleanEnv();
   }
 
-  @Test
-  public void test1() throws Exception {
-    prepareData1();
-    String res = "0,1[20],15[2],8[25],8[25],3[54],3[54],null,null,";
-    try (Connection connection =
-            DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667/", 
"root", "root");
-        Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT min_value(s0), max_value(s0)"
-                  + " FROM root.vehicle.d0 group by ([0,100),25ms)");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        int i = 0;
-        while (resultSet.next()) {
-          // 注意从1开始编号,所以第一列是无意义时间戳
-          String ans = resultSet.getString(TIMESTAMP_STR) + "," + 
resultSet.getString(2);
-          System.out.println(ans);
-          Assert.assertEquals(res, ans);
-        }
-      }
-      System.out.println(((IoTDBStatement) statement).executeFinish());
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  private static void prepareData1() {
-    // data:
-    // 
https://user-images.githubusercontent.com/33376433/151985070-73158010-8ba0-409d-a1c1-df69bad1aaee.png
-    // only first chunk
-    // no overlap, no delete
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      for (String sql : creationSqls) {
-        statement.execute(sql);
-      }
-
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 1, 5.0));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 2, 
15.0));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 20, 
1.0));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 25, 
8.0));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 54, 
3.0));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 120, 
8.0));
-      statement.execute("FLUSH");
-
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
-  }
+  //  @Test
+  //  public void test1() throws Exception {
+  //    prepareData1();
+  //    String res = "0,1[20],15[2],8[25],8[25],3[54],3[54],null,null,";
+  //    try (Connection connection =
+  //            DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667/", 
"root", "root");
+  //        Statement statement = connection.createStatement()) {
+  //      boolean hasResultSet =
+  //          statement.execute(
+  //              "SELECT min_value(s0), max_value(s0)"
+  //                  + " FROM root.vehicle.d0 group by ([0,100),25ms)");
+  //      Assert.assertTrue(hasResultSet);
+  //      try (ResultSet resultSet = statement.getResultSet()) {
+  //        int i = 0;
+  //        while (resultSet.next()) {
+  //          // 注意从1开始编号,所以第一列是无意义时间戳
+  //          String ans = resultSet.getString(TIMESTAMP_STR) + "," + 
resultSet.getString(2);
+  //          System.out.println(ans);
+  //          Assert.assertEquals(res, ans);
+  //        }
+  //      }
+  //      System.out.println(((IoTDBStatement) statement).executeFinish());
+  //    } catch (Exception e) {
+  //      e.printStackTrace();
+  //      fail(e.getMessage());
+  //    }
+  //  }
+  //
+  //  private static void prepareData1() {
+  //    // data:
+  //    //
+  // 
https://user-images.githubusercontent.com/33376433/151985070-73158010-8ba0-409d-a1c1-df69bad1aaee.png
+  //    // only first chunk
+  //    // no overlap, no delete
+  //    try (Connection connection =
+  //            DriverManager.getConnection(
+  //                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", 
"root");
+  //        Statement statement = connection.createStatement()) {
+  //
+  //      for (String sql : creationSqls) {
+  //        statement.execute(sql);
+  //      }
+  //
+  //      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 1, 
5.0));
+  //      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 2, 
15.0));
+  //      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 20, 
1.0));
+  //      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 25, 
8.0));
+  //      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 54, 
3.0));
+  //      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 120, 
8.0));
+  //      statement.execute("FLUSH");
+  //
+  //    } catch (Exception e) {
+  //      e.printStackTrace();
+  //    }
+  //  }
 
   @Test
   public void test2() throws Exception {
     prepareData2();
+    config.setP1t(0);
+    config.setP1v(-1.2079272);
+    config.setPnt(2100);
+    config.setPnv(-0.0211206);
+    config.setRps(4);
     String res =
         
"-1.2079272[0],1.101946[200],-1.014322[700],0.809559[1500],-0.785419[1600],-0.0211206[2100],";
     try (Connection connection =
@@ -229,149 +233,4 @@ public class MyTest_MinMaxLTTB {
       e.printStackTrace();
     }
   }
-
-  @Test
-  public void test3() {
-    prepareData3();
-
-    //    String[] res = new String[]{"0,1[10],10[2]", "25,2[40],8[30]", 
"50,4[72],20[62]",
-    // "75,1[90],11[80]"};
-    String res = "0,1[10],10[2],2[40],8[30],4[72],20[62],1[90],11[80],";
-    // 0,BPv[t]ofBucket1,TPv[t]ofBucket1,BPv[t]ofBucket2,TPv[t]ofBucket2,...
-    try (Connection connection =
-            DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667/", 
"root", "root");
-        Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT min_value(s0), max_value(s0)"
-                  + " FROM root.vehicle.d0 group by ([0,100),25ms)"); // don't 
change the
-      // sequence!!!
-
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        int i = 0;
-        while (resultSet.next()) {
-          String ans = resultSet.getString(TIMESTAMP_STR) + "," + 
resultSet.getString(2);
-          System.out.println(ans);
-          Assert.assertEquals(res, ans);
-        }
-      }
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  private static void prepareData3() {
-    // data:
-    // 
https://user-images.githubusercontent.com/33376433/152003603-6b4e7494-00ff-47e4-bf6e-cab3c8600ce2.png
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      for (String sql : creationSqls) {
-        statement.execute(sql);
-      }
-
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 1, 5));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 2, 10));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 10, 1));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 20, 5));
-      statement.execute("FLUSH");
-
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 22, 4));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 30, 8));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 40, 2));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 55, 5));
-      statement.execute("FLUSH");
-
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 60, 15));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 62, 20));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 65, 8));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 70, 18));
-      statement.execute("FLUSH");
-
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 72, 4));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 80, 11));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 90, 1));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 105, 7));
-      statement.execute("FLUSH");
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
-  }
-
-  @Test
-  public void test3_2() {
-    prepareData3_2();
-
-    //    String[] res = new String[]{"0,1[10],10[2]", "25,null,null", 
"50,4[72],20[62]",
-    // "75,1[90],11[80]"};
-    String res = "0,1[10],10[2],null,null,4[72],20[62],1[90],11[80],";
-    // 0,BPv[t]ofBucket1,TPv[t]ofBucket1,BPv[t]ofBucket2,TPv[t]ofBucket2,...
-    try (Connection connection =
-            DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667/", 
"root", "root");
-        Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT min_value(s0), max_value(s0)"
-                  + " FROM root.vehicle.d0 group by ([0,100),25ms)"); // don't 
change the
-      // sequence!!!
-
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        int i = 0;
-        while (resultSet.next()) {
-          String ans = resultSet.getString(TIMESTAMP_STR) + "," + 
resultSet.getString(2);
-          System.out.println(ans);
-          Assert.assertEquals(res, ans);
-        }
-      }
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  private static void prepareData3_2() {
-    // data:
-    // 
https://user-images.githubusercontent.com/33376433/152003603-6b4e7494-00ff-47e4-bf6e-cab3c8600ce2.png
-    // remove chunk 2 so that bucket 2 is empty
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      for (String sql : creationSqls) {
-        statement.execute(sql);
-      }
-
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 1, 5));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 2, 10));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 10, 1));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 20, 5));
-      statement.execute("FLUSH");
-
-      //      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 
22, 4));
-      //      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 
30, 8));
-      //      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 
40, 2));
-      //      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 
55, 5));
-      //      statement.execute("FLUSH");
-
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 60, 15));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 62, 20));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 65, 8));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 70, 18));
-      statement.execute("FLUSH");
-
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 72, 4));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 80, 11));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 90, 1));
-      statement.execute(String.format(Locale.ENGLISH, insertTemplate, 105, 7));
-      statement.execute("FLUSH");
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
-  }
 }

Reply via email to