You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2020/06/10 07:38:51 UTC

[incubator-iotdb] 03/04: resolve conflicts

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

jackietien pushed a commit to branch ShowTimeseriesSort
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit 8bea06346acfdd01c4ca36da2c5abb5be0bdbbdd
Merge: 88e2118 6a927f4
Author: JackieTien97 <Ja...@foxmail.com>
AuthorDate: Wed Jun 10 15:34:26 2020 +0800

    resolve conflicts

 docs/UserGuide/Server/Config Manual.md             |  55 ++++++
 docs/zh/UserGuide/Server/Config Manual.md          |  58 ++++++
 .../resources/conf/iotdb-engine.properties         |   3 +
 .../org/apache/iotdb/db/qp/strategy/SqlBase.g4     |   4 +
 .../java/org/apache/iotdb/db/conf/IoTDBConfig.java |  18 ++
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  |   2 +
 .../iotdb/db/engine/merge/task/MergeTask.java      |   4 +-
 .../engine/storagegroup/StorageGroupProcessor.java |   6 +-
 .../org/apache/iotdb/db/metadata/MManager.java     |  81 ++++----
 .../java/org/apache/iotdb/db/metadata/MTree.java   | 110 ++++++-----
 .../iotdb/db/metadata/mnode/InternalMNode.java     |   2 +-
 .../{LeafMNode.java => MeasurementMNode.java}      |  57 +-----
 .../apache/iotdb/db/qp/executor/PlanExecutor.java  |  10 +-
 .../iotdb/db/query/executor/LastQueryExecutor.java |   6 +-
 .../apache/iotdb/db/utils/TypeInferenceUtils.java  |   6 +-
 .../iotdb/db/integration/IoTDBAddSubDeviceIT.java  | 203 +++++++++++++++++++++
 .../iotdb/db/integration/IoTDBInsertNaNIT.java     | 139 ++++++++++++++
 .../apache/iotdb/db/integration/IoTDBLastIT.java   |  12 +-
 .../iotdb/db/metadata/MManagerAdvancedTest.java    |  14 +-
 .../iotdb/db/metadata/MManagerImproveTest.java     |   4 +-
 .../org/apache/iotdb/db/metadata/MTreeTest.java    |  77 ++++----
 .../java/org/apache/iotdb/db/qp/PlannerTest.java   |  13 ++
 22 files changed, 679 insertions(+), 205 deletions(-)

diff --cc server/src/main/antlr4/org/apache/iotdb/db/qp/strategy/SqlBase.g4
index 3f18bd5,d6ef3dd..21a84f2
--- a/server/src/main/antlr4/org/apache/iotdb/db/qp/strategy/SqlBase.g4
+++ b/server/src/main/antlr4/org/apache/iotdb/db/qp/strategy/SqlBase.g4
@@@ -881,13 -878,6 +882,14 @@@ FALS
      : F A L S E
      ;
  
 +ORDER
 +    : O R D E R
 +    ;
 +
 +HEAT
 +    : H E A T
 +    ;
++
  //============================
  // End of the keywords list
  //============================
diff --cc server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
index 1b89926,ec46b77..67694dc
--- a/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java
@@@ -773,11 -782,9 +783,10 @@@ public class MManager 
        if (value2Node.isEmpty()) {
          throw new MetadataException("The key " + plan.getKey() + " is not a tag.");
        }
 -      Set<MeasurementMNode> allMatchedNodes = new TreeSet<>(Comparator.comparing(MNode::getFullPath));
 +
-       List<LeafMNode> allMatchedNodes = new ArrayList<>();
- 
++      List<MeasurementMNode> allMatchedNodes = new ArrayList<>();
        if (plan.isContains()) {
-         for (Entry<String, Set<LeafMNode>> entry : value2Node.entrySet()) {
+         for (Entry<String, Set<MeasurementMNode>> entry : value2Node.entrySet()) {
            String tagValue = entry.getKey();
            if (tagValue.contains(plan.getValue())) {
              allMatchedNodes.addAll(entry.getValue());
diff --cc server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
index 530594e,bfb2398..df27cd7
--- a/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
@@@ -18,32 -18,9 +18,34 @@@
   */
  package org.apache.iotdb.db.metadata;
  
 +import static java.util.stream.Collectors.toList;
 +import static org.apache.iotdb.db.conf.IoTDBConstant.PATH_SEPARATOR;
 +import static org.apache.iotdb.db.conf.IoTDBConstant.PATH_WILDCARD;
 +import static org.apache.iotdb.db.query.executor.LastQueryExecutor.calculateLastPairForOneSeries;
 +
 +import com.alibaba.fastjson.JSON;
 +import com.alibaba.fastjson.JSONObject;
 +import com.alibaba.fastjson.serializer.SerializerFeature;
 +import java.io.Serializable;
 +import java.util.ArrayDeque;
 +import java.util.ArrayList;
- import java.util.Collection;
 +import java.util.Collections;
 +import java.util.Comparator;
 +import java.util.Deque;
 +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;
 +import java.util.Queue;
 +import java.util.Set;
 +import java.util.TreeSet;
 +import java.util.regex.Pattern;
 +import java.util.stream.Stream;
+ import com.alibaba.fastjson.JSON;
+ import com.alibaba.fastjson.JSONObject;
+ import com.alibaba.fastjson.serializer.SerializerFeature;
  import org.apache.iotdb.db.conf.IoTDBConstant;
  import org.apache.iotdb.db.conf.IoTDBDescriptor;
  import org.apache.iotdb.db.exception.metadata.AliasAlreadyExistException;
@@@ -697,37 -657,34 +713,36 @@@ public class MTree implements Serializa
    /**
     * Iterate through MTree to fetch metadata info of all leaf nodes under the given seriesPath
     *
-    * @param timeseriesSchemas Collection<timeseriesSchema> result: [name, alias, storage group,
 -   * @param timeseriesSchemaList List<timeseriesSchema>
++   * @param timeseriesSchemaList Collection<timeseriesSchema> result: [name, alias, storage group,
 +   *                          dataType, encoding, compression, offset, lastTimeStamp]
     */
    private void findPath(MNode node, String[] nodes, int idx, String parent,
-       Collection<String[]> timeseriesSchemas, boolean hasLimit) throws MetadataException {
-     if (node instanceof LeafMNode) {
-       if (nodes.length <= idx) {
-         if (hasLimit) {
-           curOffset.set(curOffset.get() + 1);
-           if (curOffset.get() < offset.get() || count.get().intValue() == limit.get().intValue()) {
-             return;
-           }
+       List<String[]> timeseriesSchemaList, boolean hasLimit) throws MetadataException {
+     if (node instanceof MeasurementMNode && nodes.length <= idx) {
+       if (hasLimit) {
+         curOffset.set(curOffset.get() + 1);
+         if (curOffset.get() < offset.get() || count.get().intValue() == limit.get().intValue()) {
+           return;
          }
-         String nodeName;
-         if (node.getName().contains(TsFileConstant.PATH_SEPARATOR)) {
-           nodeName = "\"" + node + "\"";
-         } else {
+       }
+       String nodeName;
+       if (node.getName().contains(TsFileConstant.PATH_SEPARATOR)) {
+         nodeName = "\"" + node + "\"";
+       } else {
            nodeName = node.getName();
          }
          String nodePath = parent + nodeName;
 -        String[] tsRow = new String[7];
 +        String[] tsRow = new String[8];
          tsRow[0] = nodePath;
-         tsRow[1] = ((LeafMNode) node).getAlias();
-         MeasurementSchema measurementSchema = ((LeafMNode) node).getSchema();
+         tsRow[1] = ((MeasurementMNode) node).getAlias();
+         MeasurementSchema measurementSchema = ((MeasurementMNode) node).getSchema();
          tsRow[2] = getStorageGroupName(nodePath);
          tsRow[3] = measurementSchema.getType().toString();
          tsRow[4] = measurementSchema.getEncodingType().toString();
          tsRow[5] = measurementSchema.getCompressor().toString();
-         tsRow[6] = String.valueOf(((LeafMNode) node).getOffset());
-         tsRow[7] = String.valueOf(getLastTimeStamp((LeafMNode) node));
-         timeseriesSchemas.add(tsRow);
+         tsRow[6] = String.valueOf(((MeasurementMNode) node).getOffset());
 -        timeseriesSchemaList.add(tsRow);
++        tsRow[7] = String.valueOf(getLastTimeStamp((MeasurementMNode) node));
++      timeseriesSchemaList.add(tsRow);
  
          if (hasLimit) {
            count.set(count.get() + 1);
@@@ -752,21 -707,6 +765,21 @@@
      }
    }
  
-   static long getLastTimeStamp(LeafMNode node) {
++  static long getLastTimeStamp(MeasurementMNode node) {
 +    TimeValuePair last = node.getCachedLast();
 +    if (last != null) {
 +      return node.getCachedLast().getTimestamp();
 +    } else {
 +      try {
 +        last = calculateLastPairForOneSeries(new Path(node.getFullPath()),
 +            node.getSchema().getType(), new QueryContext(-1), Collections.emptySet());
 +        return last.getTimestamp();
 +      } catch (Exception e) {
 +        return Long.MIN_VALUE;
 +      }
 +    }
 +  }
 +
    /**
     * Get child node path in the next level of the given path.
     *