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);