You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by qi...@apache.org on 2021/05/10 06:09:45 UTC
[iotdb] branch master updated: [ISSUE-3089] make it possible for
storage groups to have name with hyphen (#3151)
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/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new f4db723 [ISSUE-3089] make it possible for storage groups to have name with hyphen (#3151)
f4db723 is described below
commit f4db723a8c0cbd66801aed9792c897ac07c4b618
Author: xuesyn <43...@users.noreply.github.com>
AuthorDate: Mon May 10 14:09:19 2021 +0800
[ISSUE-3089] make it possible for storage groups to have name with hyphen (#3151)
---
.../Data-Concept/Data-Model-and-Terminology.md | 4 +--
.../DDL-Data-Definition-Language.md | 2 +-
.../Data-Concept/Data-Model-and-Terminology.md | 4 +--
.../DDL-Data-Definition-Language.md | 2 +-
.../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 2 +-
.../iotdb/db/integration/IoTDBSimpleQueryIT.java | 36 ++++++++++++++++++++++
.../iotdb/db/metadata/MManagerBasicTest.java | 17 ++++++++++
7 files changed, 60 insertions(+), 7 deletions(-)
diff --git a/docs/UserGuide/Data-Concept/Data-Model-and-Terminology.md b/docs/UserGuide/Data-Concept/Data-Model-and-Terminology.md
index 98043ae..4f0a5e8 100644
--- a/docs/UserGuide/Data-Concept/Data-Model-and-Terminology.md
+++ b/docs/UserGuide/Data-Concept/Data-Model-and-Terminology.md
@@ -61,7 +61,7 @@ Once a prefix path is set as a storage group, the storage group settings cannot
After a storage group is set, all parent and child layers of the corresponding prefix path are not allowed to be set up again (for example, after `root.ln` is set as the storage group, the root layer and `root.ln.wf01` are not allowed to be set as storage groups).
-The Layer Name of storage group can only consist of characters, numbers and underscores, like `root.storagegroup_1`.
+The Layer Name of storage group can only consist of characters, numbers, underscores and hyphen, like `root.storagegroup_1-sg1`.
* Path
@@ -89,7 +89,7 @@ The characters supported in LayerName without double quotes are as below:
'-' and ':' cannot be the first character. '+' cannot use alone.
-> Note: the LayerName of storage group can only be characters, numbers and underscores.
+> Note: the LayerName of storage group can only be characters, numbers, underscores and hyphen.
>
> Besides, if deploy on Windows system, the LayerName is case-insensitive, which means it's not allowed to set storage groups `root.ln` and `root.LN` at the same time.
diff --git a/docs/UserGuide/IoTDB-SQL-Language/DDL-Data-Definition-Language.md b/docs/UserGuide/IoTDB-SQL-Language/DDL-Data-Definition-Language.md
index 33622ec..e2fe36c 100644
--- a/docs/UserGuide/IoTDB-SQL-Language/DDL-Data-Definition-Language.md
+++ b/docs/UserGuide/IoTDB-SQL-Language/DDL-Data-Definition-Language.md
@@ -41,7 +41,7 @@ It is worth noting that when the path itself or the parent/child layer of the pa
IoTDB> set storage group to root.ln.wf01
Msg: 300: root.ln has already been set to storage group.
```
-The LayerName of storage group can only be characters, numbers and underscores.
+The LayerName of storage group can only be characters, numbers, underscores and hyphens.
Besides, if deploy on Windows system, the LayerName is case-insensitive, which means it's not allowed to set storage groups `root.ln` and `root.LN` at the same time.
diff --git a/docs/zh/UserGuide/Data-Concept/Data-Model-and-Terminology.md b/docs/zh/UserGuide/Data-Concept/Data-Model-and-Terminology.md
index ec7f533..469442f 100644
--- a/docs/zh/UserGuide/Data-Concept/Data-Model-and-Terminology.md
+++ b/docs/zh/UserGuide/Data-Concept/Data-Model-and-Terminology.md
@@ -59,7 +59,7 @@
一个存储组设定后,其对应的前缀路径的所有父层级与子层级也不允许再设置存储组(如,`root.ln`设置存储组后,root层级与`root.ln.wf01`不允许被设置为存储组)。
-存储组节点名只支持中英文字符、数字和下划线的组合。例如`root.存储组_1` 。
+存储组节点名只支持中英文字符、数字、下划线和中划线的组合。例如`root.存储组_1-组1` 。
* 路径
@@ -87,7 +87,7 @@ LayerName: Identifier | STAR
其中'-' 和 ':' 不能放置在第一位,不能使用单个 '+'。
-> 注意: storage group中的LayerName只支持数字,字母,汉字和下划线。另外,如果在Windows系统上部署,存储组层级名称是大小写不敏感的。例如同时创建`root.ln` 和 `root.LN` 是不被允许的。
+> 注意: storage group中的LayerName只支持数字,字母,汉字,下划线和中划线。另外,如果在Windows系统上部署,存储组层级名称是大小写不敏感的。例如同时创建`root.ln` 和 `root.LN` 是不被允许的。
* 时间序列
diff --git a/docs/zh/UserGuide/IoTDB-SQL-Language/DDL-Data-Definition-Language.md b/docs/zh/UserGuide/IoTDB-SQL-Language/DDL-Data-Definition-Language.md
index 1ec7a865..fd369e3 100644
--- a/docs/zh/UserGuide/IoTDB-SQL-Language/DDL-Data-Definition-Language.md
+++ b/docs/zh/UserGuide/IoTDB-SQL-Language/DDL-Data-Definition-Language.md
@@ -42,7 +42,7 @@ IoTDB > set storage group to root.sgcc
IoTDB> set storage group to root.ln.wf01
Msg: 300: root.ln has already been set to storage group.
```
-存储组节点名只支持中英文字符、数字和下划线的组合。
+存储组节点名只支持中英文字符、数字、下划线和中划线的组合。
还需注意,如果在Windows系统上部署,存储组名是大小写不敏感的。例如同时创建`root.ln` 和 `root.LN` 是不被允许的。
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
index 0c9583a..a21e783 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
@@ -56,7 +56,7 @@ public class IoTDBConfig {
private static final String ID_MATCHER =
"([a-zA-Z0-9/\"[ ],:@#$%&{}()*=?!~\\[\\]\\-+\\u2E80-\\u9FFF_]+)";
- private static final String STORAGE_GROUP_MATCHER = "([a-zA-Z0-9_.\\u2E80-\\u9FFF]+)";
+ private static final String STORAGE_GROUP_MATCHER = "([a-zA-Z0-9_.\\-\\u2E80-\\u9FFF]+)";
// e.g., .s1
private static final String PARTIAL_NODE_MATCHER = "[" + PATH_SEPARATOR + "]" + ID_MATCHER;
diff --git a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBSimpleQueryIT.java b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBSimpleQueryIT.java
index 02cb24a..16c68af 100644
--- a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBSimpleQueryIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBSimpleQueryIT.java
@@ -35,6 +35,7 @@ import org.junit.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
@@ -1244,4 +1245,39 @@ public class IoTDBSimpleQueryIT {
fail();
}
}
+
+ @Test
+ public void testStorageGroupWithHyphenInName() throws ClassNotFoundException, MetadataException {
+ Class.forName(Config.JDBC_DRIVER_NAME);
+ try (Connection connection =
+ DriverManager.getConnection(
+ Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
+ Statement statement = connection.createStatement()) {
+ statement.setFetchSize(5);
+ statement.execute("SET STORAGE GROUP TO root.group-with-hyphen");
+ } catch (SQLException e) {
+ fail();
+ }
+
+ try (Connection connection =
+ DriverManager.getConnection(
+ Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
+ Statement statement = connection.createStatement()) {
+ boolean hasResultSet = statement.execute("SHOW STORAGE GROUP");
+ if (hasResultSet) {
+ try (ResultSet resultSet = statement.getResultSet()) {
+ ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
+ while (resultSet.next()) {
+ StringBuilder builder = new StringBuilder();
+ for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
+ builder.append(resultSet.getString(i));
+ }
+ Assert.assertEquals(builder.toString(), "root.group-with-hyphen");
+ }
+ }
+ }
+ } catch (SQLException e) {
+ fail();
+ }
+ }
}
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java
index 1237bef..1e86e89 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/MManagerBasicTest.java
@@ -1317,4 +1317,21 @@ public class MManagerBasicTest {
fail(e.getMessage());
}
}
+
+ @Test
+ public void testStorageGroupNameWithHyphen() throws IllegalPathException {
+ MManager manager = IoTDB.metaManager;
+ assertTrue(manager.isPathExist(new PartialPath("root")));
+
+ assertFalse(manager.isPathExist(new PartialPath("root.group-with-hyphen")));
+
+ try {
+ manager.setStorageGroup(new PartialPath("root.group-with-hyphen"));
+ } catch (MetadataException e) {
+ e.printStackTrace();
+ fail(e.getMessage());
+ }
+
+ assertTrue(manager.isPathExist(new PartialPath("root.group-with-hyphen")));
+ }
}