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

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


The following commit(s) were added to refs/heads/master by this push:
     new bb3a634  Chinese in session (#962)
bb3a634 is described below

commit bb3a6340bf3f7a635b545e34a5ac52044e4634cf
Author: Ring-k <[email protected]>
AuthorDate: Tue Mar 31 11:06:29 2020 +0800

    Chinese in session (#962)
---
 .../main/java/org/apache/iotdb/session/Config.java |  5 +-
 .../org/apache/iotdb/session/IoTDBSessionIT.java   | 55 ++++++++++++++++++++--
 2 files changed, 55 insertions(+), 5 deletions(-)

diff --git a/session/src/main/java/org/apache/iotdb/session/Config.java 
b/session/src/main/java/org/apache/iotdb/session/Config.java
index 4f3fea7..03e5a26 100644
--- a/session/src/main/java/org/apache/iotdb/session/Config.java
+++ b/session/src/main/java/org/apache/iotdb/session/Config.java
@@ -30,11 +30,12 @@ public class Config {
   public static final int DEFAULT_FETCH_SIZE = 10000;
   public static final int DEFAULT_TIMEOUT_MS = 0;
 
-  public static final String NODE_MATCHER = "[" + PATH_SEPARATOR + "]" + 
"([a-zA-Z0-9_]+)";
+  public static final String NODE_MATCHER =
+      "[" + PATH_SEPARATOR + "]" + "([a-zA-Z0-9\u2E80-\u9FFF_]+)";
 
   // for path like: root.sg1.d1."1.2.3" or root.sg1.d1.'1.2.3', only occurs in 
the end of the path and only occurs once
   public static final String NODE_WITH_QUOTATION_MARK_MATCHER =
-      "[" + PATH_SEPARATOR + "][\"|\']([a-zA-Z0-9_]+)(" + NODE_MATCHER + 
")+[\"|\']";
+      "[" + PATH_SEPARATOR + "][\"|\']([a-zA-Z0-9\u2E80-\u9FFF_]+)(" + 
NODE_MATCHER + ")+[\"|\']";
   public static final Pattern PATH_PATTERN = Pattern
       .compile(PATH_ROOT + "(" + NODE_MATCHER + ")+(" + 
NODE_WITH_QUOTATION_MARK_MATCHER + ")?");
 
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 e995621..e5bec59 100644
--- a/session/src/test/java/org/apache/iotdb/session/IoTDBSessionIT.java
+++ b/session/src/test/java/org/apache/iotdb/session/IoTDBSessionIT.java
@@ -222,6 +222,24 @@ public class IoTDBSessionIT {
   }
 
   @Test
+  public void testChineseCharacter() throws IoTDBConnectionException, 
StatementExecutionException {
+    session = new Session("127.0.0.1", 6667, "root", "root");
+    session.open();
+    String storageGroup = "root.存储组1";
+    String[] devices = new String[]{
+        "设备1.指标1",
+        "设备1.s2",
+        "d2.s1",
+        "d2.指标2"
+    };
+    session.setStorageGroup(storageGroup);
+    createTimeseriesInChinese(storageGroup, devices);
+    insertInChinese(storageGroup, devices);
+    session.deleteStorageGroup(storageGroup);
+    session.close();
+  }
+
+  @Test
   public void test() throws ClassNotFoundException, SQLException,
       IoTDBConnectionException, StatementExecutionException, 
BatchExecutionException {
     session = new Session("127.0.0.1", 6667, "root", "root");
@@ -294,7 +312,8 @@ public class IoTDBSessionIT {
   }
 
 
-  private void createTimeseriesForTime() throws StatementExecutionException, 
IoTDBConnectionException {
+  private void createTimeseriesForTime()
+      throws StatementExecutionException, IoTDBConnectionException {
     session.createTimeseries("root.sg1.d1.s1", TSDataType.INT64, 
TSEncoding.RLE,
         CompressionType.SNAPPY);
     session.createTimeseries("root.sg1.d1.s2", TSDataType.INT64, 
TSEncoding.RLE,
@@ -330,6 +349,34 @@ public class IoTDBSessionIT {
         CompressionType.SNAPPY);
   }
 
+  private void createTimeseriesInChinese(String storageGroup, String[] devices)
+      throws StatementExecutionException, IoTDBConnectionException {
+    for (String path : devices) {
+      String fullPath = storageGroup + "." + path;
+      session.createTimeseries(fullPath, TSDataType.INT64, TSEncoding.RLE, 
CompressionType.SNAPPY);
+    }
+  }
+
+  private void insertInChinese(String storageGroup, String[] devices)
+      throws StatementExecutionException, IoTDBConnectionException {
+    for (String path : devices) {
+      String fullPath = storageGroup + "." + path;
+      for (int i = 0; i < 10; i++) {
+        String[] ss = path.split("\\.");
+        String deviceId = storageGroup;
+        for (int j = 0; j < ss.length - 1; j++) {
+          deviceId += ("." + ss[j]);
+        }
+        String sensorId = ss[ss.length - 1];
+        List<String> measurements = new ArrayList<>();
+        List<String> values = new ArrayList<>();
+        measurements.add(sensorId);
+        values.add("100");
+        session.insert(deviceId, i, measurements, values);
+      }
+    }
+  }
+
   private void insertInBatch() throws IoTDBConnectionException, 
BatchExecutionException {
     String deviceId = "root.sg1.d2";
     List<String> measurements = new ArrayList<>();
@@ -462,7 +509,8 @@ public class IoTDBSessionIT {
     }
   }
 
-  private void queryForAlignByDevice() throws StatementExecutionException, 
IoTDBConnectionException {
+  private void queryForAlignByDevice()
+      throws StatementExecutionException, IoTDBConnectionException {
     SessionDataSet sessionDataSet = session
         .executeQueryStatement("select '11', s1, '11' from root.sg1.d1 align 
by device");
     sessionDataSet.setBatchSize(1024);
@@ -480,7 +528,8 @@ public class IoTDBSessionIT {
     sessionDataSet.closeOperationHandle();
   }
 
-  private void queryForAlignByDevice2() throws IoTDBConnectionException, 
StatementExecutionException {
+  private void queryForAlignByDevice2()
+      throws IoTDBConnectionException, StatementExecutionException {
     SessionDataSet sessionDataSet = session.executeQueryStatement(
         "select '11', s1, '11', s5, s1, s5 from root.sg1.d1 align by device");
     sessionDataSet.setBatchSize(1024);

Reply via email to