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

Reply via email to