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 <[email protected]> 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;
