You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ge...@apache.org on 2020/06/24 02:54:22 UTC

[incubator-iotdb] branch measurement_with_quote created (now 847200a)

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

geniuspig pushed a change to branch measurement_with_quote
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git.


      at 847200a  measurement_with_quote

This branch includes the following new commits:

     new 847200a  measurement_with_quote

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[incubator-iotdb] 01/01: measurement_with_quote

Posted by ge...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 847200ab58ffd65e4a97a0a9b842ea825daddd1c
Author: zhutianci <zh...@gmail.com>
AuthorDate: Wed Jun 24 10:53:55 2020 +0800

    measurement_with_quote
---
 .../src/main/java/org/apache/iotdb/db/metadata/MTree.java |  8 +-------
 .../main/java/org/apache/iotdb/db/metadata/MetaUtils.java | 15 +++++++++++----
 .../org/apache/iotdb/db/qp/strategy/LogicalGenerator.java |  3 ++-
 .../java/org/apache/iotdb/session/IoTDBSessionIT.java     |  2 +-
 .../iotdb/tsfile/common/constant/TsFileConstant.java      |  2 ++
 .../java/org/apache/iotdb/tsfile/read/common/Path.java    |  9 ++++-----
 .../org/apache/iotdb/tsfile/read/common/PathTest.java     |  8 ++++----
 7 files changed, 25 insertions(+), 22 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java b/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
index b4eb3e0..1a48b60 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
@@ -720,13 +720,7 @@ public class MTree implements Serializable {
           return;
         }
       }
-      String nodeName;
-      if (node.getName().contains(TsFileConstant.PATH_SEPARATOR)) {
-        nodeName = "\"" + node + "\"";
-      } else {
-        nodeName = node.getName();
-      }
-      String nodePath = parent + nodeName;
+      String nodePath = parent + node;
       String[] tsRow = new String[8];
       tsRow[0] = nodePath;
       tsRow[1] = ((MeasurementMNode) node).getAlias();
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/MetaUtils.java b/server/src/main/java/org/apache/iotdb/db/metadata/MetaUtils.java
index 0e1d953..06de18c 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/MetaUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/MetaUtils.java
@@ -21,6 +21,7 @@ package org.apache.iotdb.db.metadata;
 import org.apache.iotdb.db.conf.IoTDBConstant;
 import org.apache.iotdb.db.exception.metadata.IllegalPathException;
 import org.apache.iotdb.db.exception.metadata.MetadataException;
+import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
 
 import static org.apache.iotdb.db.conf.IoTDBConstant.PATH_WILDCARD;
 
@@ -29,16 +30,22 @@ public class MetaUtils {
   public static final String PATH_SEPARATOR = "\\.";
 
   private MetaUtils() {
-
+    throw new IllegalStateException("Utility class");
   }
 
   public static String[] getNodeNames(String path) {
     String[] nodeNames;
     if (path.contains("\"") || path.contains("'")) {
       // e.g., root.sg.d1."s1.int"  ->  root.sg.d1, s1.int
-      String[] measurementDeviceNode = path.trim().replace("'", "\"").split("\"");
-      // s1.int
-      String measurement = measurementDeviceNode[1];
+      String measurement;
+      String[] measurementDeviceNode;
+      if (path.contains("\"")) {
+        measurementDeviceNode = path.split("\"");
+      } else {
+        measurementDeviceNode = path.split("\'");
+      }
+      // "s1.int"
+      measurement = TsFileConstant.DOUBLE_QUOTATION + measurementDeviceNode[1] + TsFileConstant.DOUBLE_QUOTATION;
       // root.sg.d1 -> root, sg, d1
       String[] deviceNodeName = measurementDeviceNode[0].split(PATH_SEPARATOR);
       int nodeNumber = deviceNodeName.length + 1;
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/strategy/LogicalGenerator.java b/server/src/main/java/org/apache/iotdb/db/qp/strategy/LogicalGenerator.java
index ebd41f0..70b7a2e 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/strategy/LogicalGenerator.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/strategy/LogicalGenerator.java
@@ -1062,8 +1062,9 @@ public class LogicalGenerator extends SqlBaseBaseListener {
     List<String> measurementList = new ArrayList<>();
     for (NodeNameWithoutStarContext nodeNameWithoutStar : nodeNamesWithoutStar) {
       String measurement = nodeNameWithoutStar.getText();
-      if (measurement.contains("\"") || measurement.contains("'")) {
+      if (measurement.contains("'")) {
         measurement = measurement.substring(1, measurement.length() - 1);
+        measurement = TsFileConstant.DOUBLE_QUOTATION + measurement + TsFileConstant.DOUBLE_QUOTATION;
       }
       measurementList.add(measurement);
     }
diff --git a/session/src/test/java/org/apache/iotdb/session/IoTDBSessionIT.java b/session/src/test/java/org/apache/iotdb/session/IoTDBSessionIT.java
index 7bc3a11..723eb86 100644
--- a/session/src/test/java/org/apache/iotdb/session/IoTDBSessionIT.java
+++ b/session/src/test/java/org/apache/iotdb/session/IoTDBSessionIT.java
@@ -883,7 +883,7 @@ public class IoTDBSessionIT {
       for (Field f : fields) {
         sb.append(f.getStringValue()).append(",");
       }
-      Assert.assertEquals("root.sg1.d1,11,0,11,", sb.toString());
+      Assert.assertEquals("root.sg1.d1,\"11\",0,\"11\",", sb.toString());
     }
     Assert.assertEquals(1000, count);
     sessionDataSet.closeOperationHandle();
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/common/constant/TsFileConstant.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/common/constant/TsFileConstant.java
index a0001c0..267fa29 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/common/constant/TsFileConstant.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/common/constant/TsFileConstant.java
@@ -27,6 +27,8 @@ public class TsFileConstant {
   public static final String PATH_UPGRADE = "tmp";
   public static final String PATH_SEPARATOR = ".";
   public static final String PATH_SEPARATER_NO_REGEX = "\\.";
+  public static final String DOUBLE_QUOTATION = "\"";
+  public static final String SINGLE_QUOTATION = "\'";
 
   private TsFileConstant() {
   }
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Path.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Path.java
index c7f74dd..74933f9 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Path.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/Path.java
@@ -72,8 +72,7 @@ public class Path implements Serializable, Comparable<Path> {
     }
     this.device = device;
     this.measurement = measurement;
-    this.fullPath = device + TsFileConstant.PATH_SEPARATOR
-        + (measurement.contains(TsFileConstant.PATH_SEPARATOR) ? "\"" + measurement + "\"" : measurement);
+    this.fullPath = device + TsFileConstant.PATH_SEPARATOR + measurement;
   }
 
   /**
@@ -94,8 +93,8 @@ public class Path implements Serializable, Comparable<Path> {
     if ((i != 2 && i != 0) || (j != 2 && j != 0)) {
       throw new IllegalArgumentException("input pathSc single/double quotes error, not in pair or more than one pair!");
     }
-    if ((i == 2 && pathSc.length() - 1 != pathSc.lastIndexOf("\""))
-        || (j == 2 && pathSc.length() - 1 != pathSc.lastIndexOf("\'"))) {
+    if ((i == 2 && pathSc.length() - 1 != pathSc.lastIndexOf('\"'))
+        || (j == 2 && pathSc.length() - 1 != pathSc.lastIndexOf('\''))) {
       throw new IllegalArgumentException("input pathSc contains quoted string in the middle!");
     }
     String[] subStrs;
@@ -105,11 +104,11 @@ public class Path implements Serializable, Comparable<Path> {
       } else {
         subStrs = pathSc.split("\'");
       }
+      measurement = TsFileConstant.DOUBLE_QUOTATION + subStrs[1] + TsFileConstant.DOUBLE_QUOTATION;
       device = subStrs[0];
       if (!device.equals("")) {
         device = device.substring(0, subStrs[0].length() - 1);
       }
-      measurement = subStrs[1];
       fullPath = pathSc;
     } else {
       StringContainer sc = new StringContainer(pathSc.split(TsFileConstant.PATH_SEPARATER_NO_REGEX),
diff --git a/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/PathTest.java b/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/PathTest.java
index 6205582..626056d 100644
--- a/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/PathTest.java
+++ b/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/PathTest.java
@@ -41,7 +41,7 @@ public class PathTest {
     testPath(path, "", "", "");
     // with quote;
     path = new Path("root.d1.r1.\"x1.x2.x3\"");
-    testPath(path, "root.d1.r1", "x1.x2.x3", "root.d1.r1.\"x1.x2.x3\"");
+    testPath(path, "root.d1.r1", "\"x1.x2.x3\"", "root.d1.r1.\"x1.x2.x3\"");
   }
 
   @Test
@@ -64,7 +64,7 @@ public class PathTest {
     Path suffix2 = new Path("d.\"e.f\"");
     testPath(Path.mergePath(prefix, suffix), "a.b.c.d", "e", "a.b.c.d.e");
     testPath(Path.mergePath(prefix, suffix1), "a.b", "c", "a.b.c");
-    testPath(Path.mergePath(prefix, suffix2), "a.b.c.d", "e.f", "a.b.c.d.\"e.f\"");
+    testPath(Path.mergePath(prefix, suffix2), "a.b.c.d", "\"e.f\"", "a.b.c.d.\"e.f\"");
   }
 
   @Test
@@ -81,7 +81,7 @@ public class PathTest {
     Path desc = new Path("a.b.\"c\"");
     Path head = new Path("d.e");
     Path head1 = new Path("");
-    testPath(Path.addPrefixPath(desc, head), "d.e.a.b", "c", "d.e.a.b.\"c\"");
-    testPath(Path.mergePath(desc, head1), "a.b", "c", "a.b.\"c\"");
+    testPath(Path.addPrefixPath(desc, head), "d.e.a.b", "\"c\"", "d.e.a.b.\"c\"");
+    testPath(Path.mergePath(desc, head1), "a.b", "\"c\"", "a.b.\"c\"");
   }
 }
\ No newline at end of file