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 2022/11/18 08:13:36 UTC

[iotdb] branch master updated: [IOTDB-4668] Add Database name length constraint (#8037)

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 7bb3f4b2d4 [IOTDB-4668] Add Database name length constraint (#8037)
7bb3f4b2d4 is described below

commit 7bb3f4b2d4f7aa8afe01f95ba8a845918ee82c4b
Author: Marcos_Zyk <38...@users.noreply.github.com>
AuthorDate: Fri Nov 18 16:13:29 2022 +0800

    [IOTDB-4668] Add Database name length constraint (#8037)
---
 .../apache/iotdb/confignode/manager/ClusterSchemaManager.java  | 10 ++++++++++
 docs/UserGuide/Data-Concept/Data-Model-and-Terminology.md      |  2 ++
 docs/zh/UserGuide/Data-Concept/Data-Model-and-Terminology.md   |  2 ++
 .../main/java/org/apache/iotdb/commons/conf/IoTDBConstant.java |  2 ++
 4 files changed, 16 insertions(+)

diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/manager/ClusterSchemaManager.java b/confignode/src/main/java/org/apache/iotdb/confignode/manager/ClusterSchemaManager.java
index 174ba8eabb..7817f0afba 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/manager/ClusterSchemaManager.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/manager/ClusterSchemaManager.java
@@ -88,6 +88,8 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
+import static org.apache.iotdb.commons.conf.IoTDBConstant.MAX_DATABASE_NAME_LENGTH;
+
 /** The ClusterSchemaManager Manages cluster schema read and write requests. */
 public class ClusterSchemaManager {
 
@@ -119,6 +121,14 @@ public class ClusterSchemaManager {
    */
   public TSStatus setStorageGroup(SetStorageGroupPlan setStorageGroupPlan) {
     TSStatus result;
+    if (setStorageGroupPlan.getSchema().getName().length() > MAX_DATABASE_NAME_LENGTH) {
+      IllegalPathException illegalPathException =
+          new IllegalPathException(
+              setStorageGroupPlan.getSchema().getName(),
+              "the length of database name shall not exceed " + MAX_DATABASE_NAME_LENGTH);
+      return RpcUtils.getStatus(
+          illegalPathException.getErrorCode(), illegalPathException.getMessage());
+    }
     try {
       clusterSchemaInfo.checkContainsStorageGroup(setStorageGroupPlan.getSchema().getName());
     } catch (MetadataException metadataException) {
diff --git a/docs/UserGuide/Data-Concept/Data-Model-and-Terminology.md b/docs/UserGuide/Data-Concept/Data-Model-and-Terminology.md
index f50fc5fc1d..393630fd03 100644
--- a/docs/UserGuide/Data-Concept/Data-Model-and-Terminology.md
+++ b/docs/UserGuide/Data-Concept/Data-Model-and-Terminology.md
@@ -46,6 +46,8 @@ It is information measured by detection equipment in an actual scene and can tra
 > Note1: A full path (`root.ln.wf01.wt01.status` as in the above example) is not allowed to be set as a database.
 >
 > Note2: The prefix of a timeseries must belong to a database. Before creating a timeseries, users must set which database the series belongs to. Only timeseries whose database is set can be persisted to disk.
+> 
+> Note3: The number of character in the path as database, including `root.`, shall not exceed 64.
 
 Once a prefix path is set as a database, the database settings cannot be changed.
 
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 f75387137b..e559251312 100644
--- a/docs/zh/UserGuide/Data-Concept/Data-Model-and-Terminology.md
+++ b/docs/zh/UserGuide/Data-Concept/Data-Model-and-Terminology.md
@@ -50,6 +50,8 @@ IoTDB 模型结构涉及的基本概念在下文将做详细叙述。
 > 注意 1:不允许将一个完整路径(如上例的`root.ln.wf01.wt01.status`) 设置成 database。
 >
 > 注意 2:一个时间序列其前缀必须属于某个 database。在创建时间序列之前,用户必须设定该序列属于哪个database。只有设置了 database 的时间序列才可以被持久化在磁盘上。
+> 
+> 注意 3:被设置为数据库的路径总字符数不能超过64,包括路径开头的`root.`这5个字符。
 
 一个前缀路径一旦被设定成 database 后就不可以再更改这个 database 的设定。
 
diff --git a/node-commons/src/main/java/org/apache/iotdb/commons/conf/IoTDBConstant.java b/node-commons/src/main/java/org/apache/iotdb/commons/conf/IoTDBConstant.java
index 01af67885e..bb0df10e17 100644
--- a/node-commons/src/main/java/org/apache/iotdb/commons/conf/IoTDBConstant.java
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/conf/IoTDBConstant.java
@@ -261,4 +261,6 @@ public class IoTDBConstant {
   // select into
   public static final Pattern LEVELED_PATH_TEMPLATE_PATTERN = Pattern.compile("\\$\\{\\w+}");
   public static final String DOUBLE_COLONS = "::";
+
+  public static final int MAX_DATABASE_NAME_LENGTH = 64;
 }