You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ji...@apache.org on 2022/03/17 07:47:10 UTC

[iotdb] 12/45: support showTimeseries

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

jianyun pushed a commit to branch rocksdb/dev
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit bfb0124314dd6f9d596a4eaf08af94cdcabda654
Author: lisijia <li...@360.cn>
AuthorDate: Tue Mar 8 17:00:45 2022 +0800

    support showTimeseries
---
 .../iotdb/db/metadata/rocksdb/MRocksDBManager.java | 64 +++++++++++++++++++++-
 1 file changed, 63 insertions(+), 1 deletion(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/MRocksDBManager.java b/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/MRocksDBManager.java
index a705ae6..47b8dbb 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/MRocksDBManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/MRocksDBManager.java
@@ -102,6 +102,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -1604,9 +1605,70 @@ public class MRocksDBManager implements IMetaManager {
   @Override
   public List<ShowTimeSeriesResult> showTimeseries(ShowTimeSeriesPlan plan, QueryContext context)
       throws MetadataException {
-    return null;
+    if (plan.getKey() != null && plan.getValue() != null) {
+      return showTimeseriesWithIndex(plan, context);
+    } else {
+      return showTimeseriesWithoutIndex(plan, context);
+    }
   }
 
+  private List<ShowTimeSeriesResult> showTimeseriesWithIndex(
+      ShowTimeSeriesPlan plan, QueryContext context) throws MetadataException {
+    // temporarily unsupported
+    return Collections.emptyList();
+  }
+
+  private List<ShowTimeSeriesResult> showTimeseriesWithoutIndex(
+      ShowTimeSeriesPlan plan, QueryContext context) throws MetadataException {
+    List<Pair<PartialPath, String[]>> ans;
+    if (plan.isOrderByHeat()) {
+      ans = Collections.emptyList();
+    } else {
+      ans = getAllMeasurementSchema(plan);
+    }
+    List<ShowTimeSeriesResult> res = new LinkedList<>();
+    for (Pair<PartialPath, String[]> ansString : ans) {
+      Pair<Map<String, String>, Map<String, String>> tagAndAttributePair =
+          new Pair<>(Collections.emptyMap(), Collections.emptyMap());
+      res.add(
+          new ShowTimeSeriesResult(
+              ansString.left.getFullPath(),
+              ansString.right[0],
+              ansString.right[1],
+              TSDataType.valueOf(ansString.right[2]),
+              TSEncoding.valueOf(ansString.right[3]),
+              CompressionType.valueOf(ansString.right[4]),
+              ansString.right[6] != null ? Long.parseLong(ansString.right[6]) : 0,
+              tagAndAttributePair.left,
+              tagAndAttributePair.right));
+    }
+    return res;
+  }
+
+  private List<Pair<PartialPath, String[]>> getAllMeasurementSchema(ShowTimeSeriesPlan plan)
+      throws MetadataException {
+    List<MeasurementPath> measurementPaths = getMatchedMeasurementPath(plan.getPath().getNodes());
+    List<Pair<PartialPath, String[]>> result = Collections.synchronizedList(new LinkedList<>());
+    measurementPaths
+        .parallelStream()
+        .forEach(
+            measurementPath -> {
+              String[] tsRow = new String[7];
+              // todo need update these properties
+              tsRow[0] = measurementPath.getMeasurementAlias();
+              // sg name
+              tsRow[1] = measurementPath.getFullPath();
+              tsRow[2] = measurementPath.getMeasurementSchema().getType().toString();
+              tsRow[3] = measurementPath.getMeasurementSchema().getEncodingType().toString();
+              tsRow[4] = measurementPath.getMeasurementSchema().getCompressor().toString();
+              tsRow[5] = String.valueOf(0);
+              tsRow[6] = null;
+              Pair<PartialPath, String[]> temp = new Pair<>(measurementPath, tsRow);
+              result.add(temp);
+            });
+
+    return result;
+  }
   /**
    * Get series type for given seriesPath.
    *