You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by hu...@apache.org on 2023/04/03 13:21:25 UTC

[iotdb] 01/02: modify iotdb server

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

hui pushed a commit to branch mlnode/test
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit bf171eff727a59895ed439d08ea45b65657dc154
Author: Minghui Liu <li...@foxmail.com>
AuthorDate: Mon Apr 3 16:05:01 2023 +0800

    modify iotdb server
---
 .../iotdb/commons/model/ModelHyperparameter.java   | 10 +++++
 .../iotdb/commons/model/ModelInformation.java      |  9 +++-
 .../iotdb/commons/model/TrailInformation.java      |  7 ++-
 .../db/mpp/common/header/ColumnHeaderConstant.java |  8 ++--
 .../db/mpp/common/header/DatasetHeaderFactory.java |  4 +-
 .../config/metadata/model/ShowModelsTask.java      | 51 +++++++++++++---------
 .../config/metadata/model/ShowTrailsTask.java      | 29 ++++++++----
 .../ConcatExpressionWithSuffixPathsVisitor.java    |  3 +-
 .../db/mpp/plan/parser/StatementGenerator.java     | 49 ++++++++++-----------
 9 files changed, 105 insertions(+), 65 deletions(-)

diff --git a/node-commons/src/main/java/org/apache/iotdb/commons/model/ModelHyperparameter.java b/node-commons/src/main/java/org/apache/iotdb/commons/model/ModelHyperparameter.java
index 151a6b7c59..ed5a3cbb3c 100644
--- a/node-commons/src/main/java/org/apache/iotdb/commons/model/ModelHyperparameter.java
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/model/ModelHyperparameter.java
@@ -26,6 +26,8 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 
 public class ModelHyperparameter {
@@ -53,6 +55,14 @@ public class ModelHyperparameter {
     return stringBuilder.toString();
   }
 
+  public List<String> toStringList() {
+    List<String> resultList = new ArrayList<>();
+    for (Map.Entry<String, String> keyValuePair : keyValueMap.entrySet()) {
+      resultList.add(keyValuePair.getKey() + "=" + keyValuePair.getValue());
+    }
+    return resultList;
+  }
+
   public void serialize(DataOutputStream stream) throws IOException {
     ReadWriteIOUtils.write(keyValueMap, stream);
   }
diff --git a/node-commons/src/main/java/org/apache/iotdb/commons/model/ModelInformation.java b/node-commons/src/main/java/org/apache/iotdb/commons/model/ModelInformation.java
index a8cff6968d..522f609e51 100644
--- a/node-commons/src/main/java/org/apache/iotdb/commons/model/ModelInformation.java
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/model/ModelInformation.java
@@ -270,10 +270,17 @@ public class ModelInformation {
 
     if (bestTrailId != null) {
       TrailInformation bestTrail = trailMap.get(bestTrailId);
-      ReadWriteIOUtils.write(bestTrail.getModelHyperparameter().toString(), stream);
       ReadWriteIOUtils.write(bestTrail.getModelPath(), stream);
+
+      List<String> modelHyperparameterList = bestTrail.getModelHyperparameter().toStringList();
+      ReadWriteIOUtils.write(modelHyperparameterList.size(), stream);
+      for (String hyperparameter : modelHyperparameterList) {
+        ReadWriteIOUtils.write(hyperparameter, stream);
+      }
     } else {
       ReadWriteIOUtils.write("UNKNOWN", stream);
+
+      ReadWriteIOUtils.write(1, stream);
       ReadWriteIOUtils.write("UNKNOWN", stream);
     }
     return ByteBuffer.wrap(buffer.getBuf(), 0, buffer.size());
diff --git a/node-commons/src/main/java/org/apache/iotdb/commons/model/TrailInformation.java b/node-commons/src/main/java/org/apache/iotdb/commons/model/TrailInformation.java
index 8551534d41..56de20671e 100644
--- a/node-commons/src/main/java/org/apache/iotdb/commons/model/TrailInformation.java
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/model/TrailInformation.java
@@ -27,6 +27,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.ByteBuffer;
+import java.util.List;
 import java.util.Map;
 
 public class TrailInformation {
@@ -68,8 +69,12 @@ public class TrailInformation {
     PublicBAOS buffer = new PublicBAOS();
     DataOutputStream stream = new DataOutputStream(buffer);
     ReadWriteIOUtils.write(trailId, stream);
-    ReadWriteIOUtils.write(modelHyperparameter.toString(), stream);
     ReadWriteIOUtils.write(modelPath, stream);
+    List<String> modelHyperparameterList = modelHyperparameter.toStringList();
+    ReadWriteIOUtils.write(modelHyperparameterList.size(), stream);
+    for (String hyperparameter : modelHyperparameterList) {
+      ReadWriteIOUtils.write(hyperparameter, stream);
+    }
     return ByteBuffer.wrap(buffer.getBuf(), 0, buffer.size());
   }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java
index 9093cf3f27..ded93fc3df 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java
@@ -412,12 +412,12 @@ public class ColumnHeaderConstant {
           new ColumnHeader(MODEL_TYPE, TSDataType.TEXT),
           new ColumnHeader(QUERY_BODY, TSDataType.TEXT),
           new ColumnHeader(STATE, TSDataType.TEXT),
-          new ColumnHeader(HYPERPARAMETER, TSDataType.TEXT),
-          new ColumnHeader(MODEL_PATH, TSDataType.TEXT));
+          new ColumnHeader(MODEL_PATH, TSDataType.TEXT),
+          new ColumnHeader(HYPERPARAMETER, TSDataType.TEXT));
 
   public static final List<ColumnHeader> showTrailsColumnHeaders =
       ImmutableList.of(
           new ColumnHeader(TRAIL_ID, TSDataType.TEXT),
-          new ColumnHeader(HYPERPARAMETER, TSDataType.TEXT),
-          new ColumnHeader(MODEL_PATH, TSDataType.TEXT));
+          new ColumnHeader(MODEL_PATH, TSDataType.TEXT),
+          new ColumnHeader(HYPERPARAMETER, TSDataType.TEXT));
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/DatasetHeaderFactory.java b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/DatasetHeaderFactory.java
index e5670729f2..c7b07431d0 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/DatasetHeaderFactory.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/DatasetHeaderFactory.java
@@ -170,10 +170,10 @@ public class DatasetHeaderFactory {
   }
 
   public static DatasetHeader getShowModelsHeader() {
-    return new DatasetHeader(ColumnHeaderConstant.showModelsColumnHeaders, false);
+    return new DatasetHeader(ColumnHeaderConstant.showModelsColumnHeaders, true);
   }
 
   public static DatasetHeader getShowTrailsHeader() {
-    return new DatasetHeader(ColumnHeaderConstant.showTrailsColumnHeaders, false);
+    return new DatasetHeader(ColumnHeaderConstant.showTrailsColumnHeaders, true);
   }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowModelsTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowModelsTask.java
index 7fd719e0fd..750e0dd5ae 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowModelsTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowModelsTask.java
@@ -36,6 +36,7 @@ import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
 
 import java.nio.ByteBuffer;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -57,29 +58,37 @@ public class ShowModelsTask implements IConfigTask {
             .collect(Collectors.toList());
     TsBlockBuilder builder = new TsBlockBuilder(outputDataTypes);
     for (ByteBuffer modelInfo : modelInfoList) {
+      String modelId = ReadWriteIOUtils.readString(modelInfo);
+      String modelTask = ReadWriteIOUtils.readString(modelInfo);
+      String modelType = ReadWriteIOUtils.readString(modelInfo);
+      String queryBody = ReadWriteIOUtils.readString(modelInfo);
+      String trainingState = ReadWriteIOUtils.readString(modelInfo);
+      String modelPath = ReadWriteIOUtils.readString(modelInfo);
+
+      int listSize = ReadWriteIOUtils.readInt(modelInfo);
+      List<String> modelHyperparameter = new ArrayList<>();
+      for (int i = 0; i < listSize; i++) {
+        modelHyperparameter.add(ReadWriteIOUtils.readString(modelInfo));
+      }
+
       builder.getTimeColumnBuilder().writeLong(0L);
-      builder
-          .getColumnBuilder(0)
-          .writeBinary(Binary.valueOf(ReadWriteIOUtils.readString(modelInfo)));
-      builder
-          .getColumnBuilder(1)
-          .writeBinary(Binary.valueOf(ReadWriteIOUtils.readString(modelInfo)));
-      builder
-          .getColumnBuilder(2)
-          .writeBinary(Binary.valueOf(ReadWriteIOUtils.readString(modelInfo)));
-      builder
-          .getColumnBuilder(3)
-          .writeBinary(Binary.valueOf(ReadWriteIOUtils.readString(modelInfo)));
-      builder
-          .getColumnBuilder(4)
-          .writeBinary(Binary.valueOf(ReadWriteIOUtils.readString(modelInfo)));
-      builder
-          .getColumnBuilder(5)
-          .writeBinary(Binary.valueOf(ReadWriteIOUtils.readString(modelInfo)));
-      builder
-          .getColumnBuilder(6)
-          .writeBinary(Binary.valueOf(ReadWriteIOUtils.readString(modelInfo)));
+      builder.getColumnBuilder(0).writeBinary(Binary.valueOf(modelId));
+      builder.getColumnBuilder(1).writeBinary(Binary.valueOf(modelTask));
+      builder.getColumnBuilder(2).writeBinary(Binary.valueOf(modelType));
+      builder.getColumnBuilder(3).writeBinary(Binary.valueOf(queryBody));
+      builder.getColumnBuilder(4).writeBinary(Binary.valueOf(trainingState));
+      builder.getColumnBuilder(5).writeBinary(Binary.valueOf(modelPath));
+      builder.getColumnBuilder(6).writeBinary(Binary.valueOf(modelHyperparameter.get(0)));
       builder.declarePosition();
+
+      for (int i = 1; i < listSize; i++) {
+        builder.getTimeColumnBuilder().writeLong(0L);
+        for (int columnIndex = 0; columnIndex <= 5; columnIndex++) {
+          builder.getColumnBuilder(columnIndex).writeBinary(Binary.valueOf(""));
+        }
+        builder.getColumnBuilder(6).writeBinary(Binary.valueOf(modelHyperparameter.get(i)));
+        builder.declarePosition();
+      }
     }
     DatasetHeader datasetHeader = DatasetHeaderFactory.getShowModelsHeader();
     future.set(new ConfigTaskResult(TSStatusCode.SUCCESS_STATUS, builder.build(), datasetHeader));
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowTrailsTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowTrailsTask.java
index a428c27794..ddb9a5e385 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowTrailsTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/model/ShowTrailsTask.java
@@ -36,6 +36,7 @@ import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
 
 import java.nio.ByteBuffer;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -61,17 +62,27 @@ public class ShowTrailsTask implements IConfigTask {
             .collect(Collectors.toList());
     TsBlockBuilder builder = new TsBlockBuilder(outputDataTypes);
     for (ByteBuffer trailInfo : trailInfoList) {
+      String trailId = ReadWriteIOUtils.readString(trailInfo);
+      String modelPath = ReadWriteIOUtils.readString(trailInfo);
+      int listSize = ReadWriteIOUtils.readInt(trailInfo);
+      List<String> modelHyperparameter = new ArrayList<>();
+      for (int i = 0; i < listSize; i++) {
+        modelHyperparameter.add(ReadWriteIOUtils.readString(trailInfo));
+      }
+
       builder.getTimeColumnBuilder().writeLong(0L);
-      builder
-          .getColumnBuilder(0)
-          .writeBinary(Binary.valueOf(ReadWriteIOUtils.readString(trailInfo)));
-      builder
-          .getColumnBuilder(1)
-          .writeBinary(Binary.valueOf(ReadWriteIOUtils.readString(trailInfo)));
-      builder
-          .getColumnBuilder(2)
-          .writeBinary(Binary.valueOf(ReadWriteIOUtils.readString(trailInfo)));
+      builder.getColumnBuilder(0).writeBinary(Binary.valueOf(trailId));
+      builder.getColumnBuilder(1).writeBinary(Binary.valueOf(modelPath));
+      builder.getColumnBuilder(2).writeBinary(Binary.valueOf(modelHyperparameter.get(0)));
       builder.declarePosition();
+
+      for (int i = 1; i < listSize; i++) {
+        builder.getTimeColumnBuilder().writeLong(0L);
+        builder.getColumnBuilder(0).writeBinary(Binary.valueOf(""));
+        builder.getColumnBuilder(1).writeBinary(Binary.valueOf(""));
+        builder.getColumnBuilder(2).writeBinary(Binary.valueOf(modelHyperparameter.get(i)));
+        builder.declarePosition();
+      }
     }
     DatasetHeader datasetHeader = DatasetHeaderFactory.getShowTrailsHeader();
     future.set(new ConfigTaskResult(TSStatusCode.SUCCESS_STATUS, builder.build(), datasetHeader));
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/ConcatExpressionWithSuffixPathsVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/ConcatExpressionWithSuffixPathsVisitor.java
index 4afbe910ee..a8e565e7da 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/ConcatExpressionWithSuffixPathsVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/ConcatExpressionWithSuffixPathsVisitor.java
@@ -60,8 +60,7 @@ public class ConcatExpressionWithSuffixPathsVisitor
     }
     List<List<Expression>> childExpressionsList = new ArrayList<>();
     cartesianProduct(extendedExpressions, childExpressionsList, 0, new ArrayList<>());
-    return reconstructFunctionExpressions(
-        (FunctionExpression) functionExpression, childExpressionsList);
+    return reconstructFunctionExpressions(functionExpression, childExpressionsList);
   }
 
   @Override
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/StatementGenerator.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/StatementGenerator.java
index e3951749d4..422617162d 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/StatementGenerator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/StatementGenerator.java
@@ -109,7 +109,6 @@ import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
 
 /** Convert SQL and RPC requests to {@link Statement}. */
 public class StatementGenerator {
@@ -843,30 +842,30 @@ public class StatementGenerator {
         new ResultColumn(
             new TimeSeriesOperand(new PartialPath("", false)), ResultColumn.ColumnType.RAW));
 
-    WhereCondition whereCondition = new WhereCondition();
-    String queryFilter = fetchTimeseriesReq.getQueryFilter();
-    String[] times = queryFilter.split(",");
-    int predictNum = 0;
-    LessThanExpression rightPredicate = null;
-    GreaterEqualExpression leftPredicate = null;
-    if (!Objects.equals(times[0], "-1")) {
-      leftPredicate =
-          new GreaterEqualExpression(
-              new TimestampOperand(), new ConstantOperand(TSDataType.INT64, times[0]));
-      predictNum += 1;
-    }
-    if (!Objects.equals(times[1], "-1")) {
-      rightPredicate =
-          new LessThanExpression(
-              new TimestampOperand(), new ConstantOperand(TSDataType.INT64, times[1]));
-      predictNum += 2;
-    }
-    whereCondition.setPredicate(
-        predictNum == 3
-            ? new LogicAndExpression(leftPredicate, rightPredicate)
-            : (predictNum == 1 ? leftPredicate : rightPredicate));
-
-    queryStatement.setWhereCondition(whereCondition);
+    //    WhereCondition whereCondition = new WhereCondition();
+    //    String queryFilter = fetchTimeseriesReq.getQueryFilter();
+    //    String[] times = queryFilter.split(",");
+    //    int predictNum = 0;
+    //    LessThanExpression rightPredicate = null;
+    //    GreaterEqualExpression leftPredicate = null;
+    //    if (!Objects.equals(times[0], "-1")) {
+    //      leftPredicate =
+    //          new GreaterEqualExpression(
+    //              new TimestampOperand(), new ConstantOperand(TSDataType.INT64, times[0]));
+    //      predictNum += 1;
+    //    }
+    //    if (!Objects.equals(times[1], "-1")) {
+    //      rightPredicate =
+    //          new LessThanExpression(
+    //              new TimestampOperand(), new ConstantOperand(TSDataType.INT64, times[1]));
+    //      predictNum += 2;
+    //    }
+    //    whereCondition.setPredicate(
+    //        predictNum == 3
+    //            ? new LogicAndExpression(leftPredicate, rightPredicate)
+    //            : (predictNum == 1 ? leftPredicate : rightPredicate));
+    //
+    //    queryStatement.setWhereCondition(whereCondition);
     queryStatement.setFromComponent(fromComponent);
     queryStatement.setSelectComponent(selectComponent);
     return queryStatement;