From 99572dfff29646c2943826a53c8b4ee981a2637e Mon Sep 17 00:00:00 2001 From: MengHuanli Date: Mon, 5 Jan 2026 15:52:56 +0800 Subject: [PATCH 1/3] [KWDB 3.1.0]--PROCEDURE supports prepare, deallocate, execute statements --- .../procedure-mgmt-relational.md | 143 ++++++++++++------ .../ddl/relational-db/relational-procedure.md | 143 ++++++++++++------ static/sql-reference/opt_proc_body.png | Bin 36663 -> 42578 bytes 3 files changed, 198 insertions(+), 88 deletions(-) diff --git a/db-administration/db-object-mgmt/relational-db/procedure-mgmt-relational.md b/db-administration/db-object-mgmt/relational-db/procedure-mgmt-relational.md index 266bdb8..28b83f9 100644 --- a/db-administration/db-object-mgmt/relational-db/procedure-mgmt-relational.md +++ b/db-administration/db-object-mgmt/relational-db/procedure-mgmt-relational.md @@ -19,6 +19,7 @@ KWDB 关系引擎支持创建、修改、查看、删除、执行存储过程。 - `LEAVE` - 事务语句 - 特殊函数(`ROW_COUNT()`) +- `PREPARE`、`EXECUTE`、`DEALLOCATE` ::: warning 说明 @@ -58,7 +59,7 @@ KWDB 关系引擎支持创建、修改、查看、删除、执行存储过程。 | `upsert_stmt`| 更新插入语句,用于更新、插入数据。 | | `delete_stmt`| 删除语句,用于删除目标表中的行数据,格式为 `DELETE FROM .... RETURNING target_list INTO select_into_targets`。| | `declare_stmt`| 用于声明自定义变量、处理程序以及游标。有关详细信息,参见[声明](../../../sql-reference/other-sql-statements/declare-sql.md)语句。| -| `proc_set_stmt` | 用于设置自定义变量,格式为 `SET var_name = a_expr`。
- `var_name`:自定义变量的名称。
- `a_expr`:自定义变量赋值的表达式。| +| `proc_set_stmt` | 用于设置自定义变量,格式为 `SET var_name = a_expr`。其中,`var_name` 表示自定义变量的名称,`a_expr` 表示自定义变量赋值的表达式,支持正常的自定义变量取值和存储过程中定义的临时变量(`DECLARE` 语句声明的变量)。
在存储过程中设置的自定义变量仅对当前会话有效,会话结束后自动失效。
在存储过程中设置的自定义变量,在调用存储过程后,用户仍可在外部会话中访问和修改该自定义变量。
在存储过程中设置自定义变量的类型后,不支持修改自定义变量的类型。后续赋值必须与初始类型一致,否则系统报错。
如果存储过程外部设置了自定义变量,在创建存储过程中设置自定义变量时,系统检查存储过程外部是否已存在具有相同名称的自定义变量。如果存在且类型一致,则成功设置自定义变量。否则,系统将报错。
**说明**
在存储过程内设置的自定义变量值不受 `COMMIT`、`ROLLBACK` 事务语句的影响。| | `proc_if_stmt` | `IF` 条件语句,用于根据给定的条件执行不同的 SQL 语句块,格式为 `IF a_expr THEN proc_stmt_list opt_stmt_elsifs opt_stmt_else ENDIF`。
- `a_expr`:`IF` 语句的条件表达式,该表达式必须是返回布尔值的表达式。
- `proc_stmt_list`:满足条件后需要执行的语句。支持的语句与 `CREATE PROCEDURE` 语句支持的语句相同。
- `opt_stmt_elsifs`:可选项,`IF` 语句的其他条件分支。
- `opt_stmt_else`:可选项,`IF` 语句的 `ELSE` 条件分支。| | `proc_while_stmt` | `WHILE` 循环语句,用于在指定条件为真时重复执行一段代码,格式为 `opt_loop_label WHILE a_expr DO proc_stmt_list ENDWHILE opt_label`。
- `opt_loop_label`:`WHILE` 循环语句的标签,格式为 `LABEL label_name:`。
-`a_expr`:`WHILE` 循环语句的条件判断表达式。
-`proc_stmt_list`:满足条件后需要执行的语句。支持的语句与 `CREATE PROCEDURE` 语句支持的语句相同。
- `opt_label`:`WHILE` 循环语句的标签,与 `opt_loop_label` 参数成对出现,格式为 `label_name`。 | | `begin_stmt` | 启动事务语句。 | @@ -70,59 +71,113 @@ KWDB 关系引擎支持创建、修改、查看、删除、执行存储过程。 | `fetch_cursor_stmt` | 获取游标语句。有关详细信息,参见[获取游标](../../../sql-reference/other-sql-statements/cursor-sql.md#获取游标)。 | | `close_cursor_stmt` | 关闭游标语句。有关详细信息,参见[关闭游标](../../../sql-reference/other-sql-statements/cursor-sql.md#关闭游标)。 | | `proc_leave_stmt`| 在使用 `LABEL` 关键字为存储过程体或 `WHILE` 语句定义标签时,可以使用 `LEAVE` 语句跳出存储过程体或 `WHILE` 循环,格式为 `LEAVE label_name`。 | +| `prepare_stmt` | 预处理语句,格式为 `PREPARE stmt_name AS stmt_sql`。预处理语句名称在当前会话中必须全局唯一。在存储过程中创建预处理语句时,若与已存在的预处理语句重名,系统将报错。在存储过程中创建的预处理语句仅对当前会话有效,会话结束后自动清理。
在存储过程中,预处理语句定义的 SQL 语句必须是存储过程支持的单个完整 SQL 语句。SQL 语句的参数占位符仅支持美元符号(`$`)且仅能替换 SQL 中的值(如 `WHERE id = $1`),不能替换表名、列名、关键字等标识符。
在存储过程中,预处理语句支持 `SELECT`、`INSERT`、`UPDATE`、`UPSERT`、`DELETE` 语句。
在存储过程中,预处理语句不支持事务语句(`BEGIN`、`START TRANSACTION`、`COMMIT`、`ROLLBACK`)、会话控制语句(`USE`)、存储过程的流程控制语句、存储过程相关的语句(`CREATE PROCEDURE`、`ALTER PROCEDURE`、`DROP PROCEDURE`、`CALL PROCEDURE`)、`SELECT INTO` 语句、DDL 语句。
存储过程内部可以使用在存储过程外部定义的预处理语句。反之,如果系统未主动释放存储过程中创建的预处理语句,在存储过程外部也可以使用该预处理语句。
**说明**
- 不支持预处理语句中嵌套另一个预处理语句。
- 预处理语句中不能包含存储过程中定义的临时变量(`DECLARE` 语句声明的变量)和自定义变量。
- 运行预处理语句后,如果未显式执行 `DEALLOCATE PREPARE` 语句,预处理对象会保留在当前会话中。此时,如果在存储过程外部创建具有相同名称的预处理对象,系统会报错。 | +| `execute_stmt` | 执行预处理语句,格式为 `EXECUTE stmt_name para_value`。
**说明**
执行预处理语句中不能包含存储过程中定义的临时变量(`DECLARE` 语句声明的变量)或传入参数。用户需要通过 `SET @var = variable` 语句提前进行转换。 | +| `deallocate_stmt` | 释放预处理语句,格式为 `DEALLOCATE PREPARE stmt`。如需删除所有的预处理语句,使用 `DEALLOCATE ALL` 或者 `DEALLOCATE PREPARE ALL` 语句。| ### 语法示例 -以下示例创建一个名为 `test` 的存储过程。 +- 创建存储过程。 -```sql --- 设置分隔符。 -delimiter \\ + 以下示例创建一个名为 `test` 的存储过程。 --- 创建存储过程。 -create procedure test() -label test: -begin - declare a int; - declare b int; - declare err int; - declare exit HANDLER FOR NOT FOUND,SQLEXCEPTION - BEGIN - SET err = -1; - SELECT a,b; - ROLLBACK; - ENDHANDLER; - - START TRANSACTION; - set a = 10; - select a, b from t1; - update t1 set a = a + 1 where b > 0; - insert into t1 values (a, b); - label my_loop: - WHILE b <= 10 DO - declare d int; - set d = b + 2; - if d > 9 then - select * from t1; - leave my_loop; - elsif b > 5 then - select * from t2; - endif; - set b = b + 1; - ENDWHILE my_loop; - IF err = 0 THEN - SELECT a,b; - ENDIF; - COMMIT; -end test\\ -delimiter ; -CREATE PROCEDURE -``` + ```sql + -- 设置分隔符。 + delimiter \\ + + -- 创建存储过程。 + create procedure test() + label test: + begin + declare a int; + declare b int; + declare err int; + declare exit HANDLER FOR NOT FOUND,SQLEXCEPTION + BEGIN + SET err = -1; + SELECT a,b; + ROLLBACK; + ENDHANDLER; + + START TRANSACTION; + set a = 10; + select a, b from t1; + update t1 set a = a + 1 where b > 0; + insert into t1 values (a, b); + label my_loop: + WHILE b <= 10 DO + declare d int; + set d = b + 2; + if d > 9 then + select * from t1; + leave my_loop; + elsif b > 5 then + select * from t2; + endif; + set b = b + 1; + ENDWHILE my_loop; + IF err = 0 THEN + SELECT a,b; + ENDIF; + COMMIT; + end test\\ + delimiter ; + CREATE PROCEDURE + ``` + +- 创建存储过程,并在存储过程中设置自定义变量。 + + ```sql + -- 设置分隔符。 + DELIMITER \\ + + -- 创建存储过程。 + CREATE PROCEDURE proc1() + BEGIN + declare a int; + set a = 10; + set @b = 1; + select @b; + + set @b = a; + select @b; + + END // + CREATE PROCEDURE + Time: 60.4819ms + ``` + +- 创建存储过程,并在存储过程中使用 `PREPARE`、`EXECUTE`、`DEALLOCATE` 语句。 + + ```sql + -- 设置分隔符。 + DELIMITER \\ + + -- 创建存储过程。 + CREATE PROCEDURE proc1() + BEGIN + PREPARE stmt as SELECT 1; + EXECUTE stmt; + DEALLOCATE PREPARE stmt; + END // + + CREATE PROCEDURE + Time: 60.4819ms + ``` ## 调用存储过程 `CALL` 语句用于调用存储过程。 +::: warning 说明 + +- 如果在创建存储过程时定义了自定义变量,在调用存储过程时,系统检查存储过程外部是否已存在具有相同名称的自定义变量。如果存在且类型一致,系统将成功调用存储过程并用新的自定义变量值覆盖原有值。否则,系统将报错。 +- 如果在创建存储过程时定义了预处理语句,在调用存储过程时,系统检查预处理语句的语法。如果不符合语法,系统将报错。 +- 如果在创建存储过程时定义了执行预处理语句,在调用存储过程时,系统检查执行预处理语句的对象是否存在。如果不存在,系统将报错。 +- 如果在创建存储过程时定义了释放预处理语句,在调用存储过程时,系统检查释放预处理语句的对象是否存在。如果不存在,系统将报错。 + +::: + ### 前提条件 用户是 `admin` 角色的成员或者拥有目标存储过程 EXECUTE 权限和存储过程体中引用的所有对象的相关权限(例如表的 SELECT 权限)。默认情况下,`root` 用户属于 `admin` 角色。 diff --git a/sql-reference/ddl/relational-db/relational-procedure.md b/sql-reference/ddl/relational-db/relational-procedure.md index a26ca8f..97c9ce1 100644 --- a/sql-reference/ddl/relational-db/relational-procedure.md +++ b/sql-reference/ddl/relational-db/relational-procedure.md @@ -20,6 +20,7 @@ KWDB 关系引擎支持创建、修改、查看、删除、执行存储过程。 - `LEAVE` - 事务语句 - 特殊函数(`ROW_COUNT()`) +- `PREPARE`、`EXECUTE`、`DEALLOCATE` ::: warning 说明 @@ -84,7 +85,7 @@ KWDB 关系引擎支持创建、修改、查看、删除、执行存储过程。 | `upsert_stmt`| 更新插入语句,用于更新、插入数据。 | | `delete_stmt`| 删除语句,用于删除目标表中的行数据,格式为 `DELETE FROM .... RETURNING target_list INTO select_into_targets`。| | `declare_stmt`| 用于声明自定义变量、处理程序以及游标。有关详细信息,参见[声明](../../other-sql-statements/declare-sql.md)语句。| -| `proc_set_stmt` | 用于设置自定义变量,格式为 `SET var_name = a_expr`。
- `var_name`:自定义变量的名称。
- `a_expr`:自定义变量赋值的表达式。| +| `proc_set_stmt` | 用于设置自定义变量,格式为 `SET var_name = a_expr`。其中,`var_name` 表示自定义变量的名称,`a_expr` 表示自定义变量赋值的表达式,支持正常的自定义变量取值和存储过程中定义的临时变量(`DECLARE` 语句声明的变量)。
在存储过程中设置的自定义变量仅对当前会话有效,会话结束后自动失效。
在存储过程中设置的自定义变量,在调用存储过程后,用户仍可在外部会话中访问和修改该自定义变量。
在存储过程中设置自定义变量的类型后,不支持修改自定义变量的类型。后续赋值必须与初始类型一致,否则系统报错。
如果存储过程外部设置了自定义变量,在创建存储过程中设置自定义变量时,系统检查存储过程外部是否已存在具有相同名称的自定义变量。如果存在且类型一致,则成功设置自定义变量。否则,系统将报错。
**说明**
在存储过程内设置的自定义变量值不受 `COMMIT`、`ROLLBACK` 事务语句的影响。| | `proc_if_stmt` | `IF` 条件语句,用于根据给定的条件执行不同的 SQL 语句块,格式为 `IF a_expr THEN proc_stmt_list opt_stmt_elsifs opt_stmt_else ENDIF`。
- `a_expr`:`IF` 语句的条件表达式,该表达式必须是返回布尔值的表达式。
- `proc_stmt_list`:满足条件后需要执行的语句。支持的语句与 `CREATE PROCEDURE` 语句支持的语句相同。
- `opt_stmt_elsifs`:可选项,`IF` 语句的其他条件分支。
- `opt_stmt_else`:可选项,`IF` 语句的 `ELSE` 条件分支。| | `proc_while_stmt` | `WHILE` 循环语句,用于在指定条件为真时重复执行一段代码,格式为 `opt_loop_label WHILE a_expr DO proc_stmt_list ENDWHILE opt_label`。
- `opt_loop_label`:`WHILE` 循环语句的标签,格式为 `LABEL label_name:`。
-`a_expr`:`WHILE` 循环语句的条件判断表达式。
-`proc_stmt_list`:满足条件后需要执行的语句。支持的语句与 `CREATE PROCEDURE` 语句支持的语句相同。
- `opt_label`:`WHILE` 循环语句的标签,与 `opt_loop_label` 参数成对出现,格式为 `label_name`。 | | `begin_stmt` | 启动事务语句。 | @@ -96,59 +97,113 @@ KWDB 关系引擎支持创建、修改、查看、删除、执行存储过程。 | `fetch_cursor_stmt` | 获取游标语句。有关详细信息,参见[获取游标](../../other-sql-statements/cursor-sql.md#获取游标)。 | | `close_cursor_stmt` | 关闭游标语句。有关详细信息,参见[关闭游标](../../other-sql-statements/cursor-sql.md#关闭游标)。 | | `proc_leave_stmt`| 在使用 `LABEL` 关键字为存储过程体或 `WHILE` 语句定义标签时,可以使用 `LEAVE` 语句跳出存储过程体或 `WHILE` 循环,格式为 `LEAVE label_name`。 | +| `prepare_stmt` | 预处理语句,格式为 `PREPARE stmt_name AS stmt_sql`。预处理语句名称在当前会话中必须全局唯一。在存储过程中创建预处理语句时,若与已存在的预处理语句重名,系统将报错。在存储过程中创建的预处理语句仅对当前会话有效,会话结束后自动清理。
在存储过程中,预处理语句定义的 SQL 语句必须是存储过程支持的单个完整 SQL 语句。SQL 语句的参数占位符仅支持美元符号(`$`)且仅能替换 SQL 中的值(如 `WHERE id = $1`),不能替换表名、列名、关键字等标识符。
在存储过程中,预处理语句支持 `SELECT`、`INSERT`、`UPDATE`、`UPSERT`、`DELETE` 语句。
在存储过程中,预处理语句不支持事务语句(`BEGIN`、`START TRANSACTION`、`COMMIT`、`ROLLBACK`)、会话控制语句(`USE`)、存储过程的流程控制语句、存储过程相关的语句(`CREATE PROCEDURE`、`ALTER PROCEDURE`、`DROP PROCEDURE`、`CALL PROCEDURE`)、`SELECT INTO` 语句、DDL 语句。
存储过程内部可以使用在存储过程外部定义的预处理语句。反之,如果系统未主动释放存储过程中创建的预处理语句,在存储过程外部也可以使用该预处理语句。
**说明**
- 不支持预处理语句中嵌套另一个预处理语句。
- 预处理语句中不能包含存储过程中定义的临时变量(`DECLARE` 语句声明的变量)和自定义变量。
- 运行预处理语句后,如果未显式执行 `DEALLOCATE PREPARE` 语句,预处理对象会保留在当前会话中。此时,如果在存储过程外部创建具有相同名称的预处理对象,系统会报错。 | +| `execute_stmt` | 执行预处理语句,格式为 `EXECUTE stmt_name para_value`。
**说明**
执行预处理语句中不能包含存储过程中定义的临时变量(`DECLARE` 语句声明的变量)或传入参数。用户需要通过 `SET @var = variable` 语句提前进行转换。 | +| `deallocate_stmt` | 释放预处理语句,格式为 `DEALLOCATE PREPARE stmt`。如需删除所有的预处理语句,使用 `DEALLOCATE ALL` 或者 `DEALLOCATE PREPARE ALL` 语句。| ### 语法示例 -以下示例创建一个名为 `test` 的存储过程。 +- 创建存储过程。 -```sql --- 设置分隔符。 -delimiter \\ + 以下示例创建一个名为 `test` 的存储过程。 --- 创建存储过程。 -create procedure test() -label test: -begin - declare a int; - declare b int; - declare err int; - declare exit HANDLER FOR NOT FOUND,SQLEXCEPTION - BEGIN - SET err = -1; - SELECT a,b; - ROLLBACK; - ENDHANDLER; - - START TRANSACTION; - set a = 10; - select a, b from t1; - update t1 set a = a + 1 where b > 0; - insert into t1 values (a, b); - label my_loop: - WHILE b <= 10 DO - declare d int; - set d = b + 2; - if d > 9 then - select * from t1; - leave my_loop; - elsif b > 5 then - select * from t2; - endif; - set b = b + 1; - ENDWHILE my_loop; - IF err = 0 THEN - SELECT a,b; - ENDIF; - COMMIT; -end test\\ -delimiter ; -CREATE PROCEDURE -``` + ```sql + -- 设置分隔符。 + delimiter \\ + + -- 创建存储过程。 + create procedure test() + label test: + begin + declare a int; + declare b int; + declare err int; + declare exit HANDLER FOR NOT FOUND,SQLEXCEPTION + BEGIN + SET err = -1; + SELECT a,b; + ROLLBACK; + ENDHANDLER; + + START TRANSACTION; + set a = 10; + select a, b from t1; + update t1 set a = a + 1 where b > 0; + insert into t1 values (a, b); + label my_loop: + WHILE b <= 10 DO + declare d int; + set d = b + 2; + if d > 9 then + select * from t1; + leave my_loop; + elsif b > 5 then + select * from t2; + endif; + set b = b + 1; + ENDWHILE my_loop; + IF err = 0 THEN + SELECT a,b; + ENDIF; + COMMIT; + end test\\ + delimiter ; + CREATE PROCEDURE + ``` + +- 创建存储过程,并在存储过程中设置自定义变量。 + + ```sql + -- 设置分隔符。 + DELIMITER \\ + + -- 创建存储过程。 + CREATE PROCEDURE proc1() + BEGIN + declare a int; + set a = 10; + set @b = 1; + select @b; + + set @b = a; + select @b; + + END // + CREATE PROCEDURE + Time: 60.4819ms + ``` + +- 创建存储过程,并在存储过程中使用 `PREPARE`、`EXECUTE`、`DEALLOCATE` 语句。 + + ```sql + -- 设置分隔符。 + DELIMITER \\ + + -- 创建存储过程。 + CREATE PROCEDURE proc1() + BEGIN + PREPARE stmt as SELECT 1; + EXECUTE stmt; + DEALLOCATE PREPARE stmt; + END // + + CREATE PROCEDURE + Time: 60.4819ms + ``` ## 调用存储过程 `CALL` 语句用于调用存储过程。 +::: warning 说明 + +- 如果在创建存储过程时定义了自定义变量,在调用存储过程时,系统检查存储过程外部是否已存在具有相同名称的自定义变量。如果存在且类型一致,系统将成功调用存储过程并用新的自定义变量值覆盖原有值。否则,系统将报错。 +- 如果在创建存储过程时定义了预处理语句,在调用存储过程时,系统检查预处理语句的语法。如果不符合语法,系统将报错。 +- 如果在创建存储过程时定义了执行预处理语句,在调用存储过程时,系统检查执行预处理语句的对象是否存在。如果不存在,系统将报错。 +- 如果在创建存储过程时定义了释放预处理语句,在调用存储过程时,系统检查释放预处理语句的对象是否存在。如果不存在,系统将报错。 + +::: + ### 所需权限 用户是 `admin` 角色的成员或者拥有目标存储过程 EXECUTE 权限和存储过程体中引用的所有对象的相关权限(例如表的 SELECT 权限)。默认情况下,`root` 用户属于 `admin` 角色。 diff --git a/static/sql-reference/opt_proc_body.png b/static/sql-reference/opt_proc_body.png index d6836309b6200352f24cecef69c50ad1cdf1bb05..f069ee9e29db4b8de16b567d3250b1bf9e50dcd2 100644 GIT binary patch delta 19736 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

ZhhWzz!QD?f=V;3_T5uP6_-6;<0* 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 QY9Qu{lKSNw#asUW4;|ZGHUIzs delta 13948 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 -- Gitee From 256ae3a3c030a47d20f409f3589085a9ce34cae8 Mon Sep 17 00:00:00 2001 From: MengHuanli Date: Mon, 5 Jan 2026 16:58:28 +0800 Subject: [PATCH 2/3] update docs --- db-administration/db-mgmt/db-mgmt-ts.md | 22 +++-------------- .../db-object-mgmt/ts-db/table-mgmt-ts.md | 3 +-- sql-reference/ddl/ts-db/ts-database.md | 23 ++++-------------- sql-reference/ddl/ts-db/ts-table.md | 3 +-- static/sql-reference/create_ts_db.png | Bin 19956 -> 0 bytes static/sql-reference/createtable.png | Bin 37630 -> 0 bytes 6 files changed, 11 insertions(+), 40 deletions(-) delete mode 100644 static/sql-reference/create_ts_db.png delete mode 100644 static/sql-reference/createtable.png diff --git a/db-administration/db-mgmt/db-mgmt-ts.md b/db-administration/db-mgmt/db-mgmt-ts.md index 9b52fef..0b52037 100644 --- a/db-administration/db-mgmt/db-mgmt-ts.md +++ b/db-administration/db-mgmt/db-mgmt-ts.md @@ -14,21 +14,21 @@ id: db-mgmt-ts ### 语法格式 ```sql -CREATE TS DATABASE [IF NOT EXISTS] [RETENTIONS ] [PARTITION INTERVAL ] [COMMENT [=] <'comment_text'>]; +CREATE TS DATABASE [RETENTIONS ] [COMMENT [=] <'comment_text'>]; ``` ### 参数说明 :::warning 说明 -配置可选参数时,必须严格按照 `[RETENTIONS ] [PARTITION INTERVAL ] [COMMENT [=] <'comment_text'>]` 的顺序,否则系统将会报错。 +- 配置可选参数时,必须严格按照 `[RETENTIONS ] [COMMENT [=] <'comment_text'>]` 的顺序,否则系统将会报错。 +- 3.0.0 版本数据库分区间隔仅支持 10 天,其他配置值无效。 + ::: | 参数 | 说明 | | --- | --- | -| `IF NOT EXISTS` | 可选关键字。当使用 `IF NOT EXISTS` 关键字时,如果目标数据库不存在,系统创建目标数据库。如果目标数据库存在,系统不会创建数据库,但不会报错。当未使用 `IF NOT EXISTS` 关键字时,如果目标数据库不存在,系统创建目标数据库。如果目标数据库存在,系统报错,提示目标数据库已存在。 | | `db_name` | 待创建的数据库的名称。该名称必须唯一,且遵循[数据库标识符规则](../../sql-reference/sql-identifiers.md)。目前,数据库名称不支持中文字符,最大长度不能超过 63 个字节。| | `keep_duration` | 可选参数,设置数据库的数据生命周期。数据超过此时长后将被系统自动清除。
默认值: `0s`(永久保留)
时间单位:
- 秒:`s` 或 `second`
- 分钟:`m` 或 `minute`
- 小时:`h` 或 `hour`
- 天:`d` 或 `day`
- 周:`w` 或 `week`
- 月:`mon` 或 `month`
- 年:`y` 或 `year`
取值范围:正整数,上限为 1000 年
**说明:**
- 表级设置优先于库级设置。
- 保留时长越长,存储空间占用越大,请根据业务需求合理配置。
- 如果待写入的数据已超过生命周期限制,系统会直接丢弃该数据,不予写入。| -| `interval` | 可选参数,指定数据库数据目录分区的时间范围。如未指定,则默认为 `10d`,即每 10 天进行一次分区。支持配置的时间单位包括:天(D 或 DAY)、周(W 或 WEEK)、月(MON 或 MONTH)、年(Y 或 YEAR)。取值必须是整数值,最大值不得超过 `1000` 年。| | `comment_text` | 可选参数。指定数据库的注释信息。 | ### 语法示例 @@ -75,20 +75,6 @@ CREATE TS DATABASE [IF NOT EXISTS] [RETENTIONS ] [PARTI CREATE TS DATABASE ``` -- 创建数据库时,指定数据库的分区时间范围。 - - 以下示例创建一个名为 `iot` 的数据库,并将数据库的分区时间范围设置为 `2d`。 - - ```sql - CREATE TS DATABASE iot PARTITION INTERVAL 2d; - ``` - - 执行成功后,控制台输出以下信息: - - ```sql - CREATE TS DATABASE - ``` - ## 查看数据库 ### 前提条件 diff --git a/db-administration/db-object-mgmt/ts-db/table-mgmt-ts.md b/db-administration/db-object-mgmt/ts-db/table-mgmt-ts.md index a3f53f5..5f90b3e 100644 --- a/db-administration/db-object-mgmt/ts-db/table-mgmt-ts.md +++ b/db-administration/db-object-mgmt/ts-db/table-mgmt-ts.md @@ -16,7 +16,7 @@ id: table-mgmt-ts ### 语法格式 ```sql -CREATE TABLE [IF NOT EXISTS] () +CREATE TABLE () [TAGS|ATTRIBUTES] () PRIMARY [TAGS|ATTRIBUTES] () [RETENTIONS ] @@ -36,7 +36,6 @@ PRIMARY [TAGS|ATTRIBUTES] () | 参数 | 说明 | | --- | --- | -| `IF NOT EXISTS` | 可选关键字。当使用 `IF NOT EXISTS` 关键字时,如果目标数表不存在,系统创建目标表。如果目标表存在,系统不会创建表,但不会报错。当未使用 `IF NOT EXISTS` 关键字时,如果目标表不存在,系统创建目标表。如果目标表存在,系统报错,提示目标表已存在。| | `table_name`| 待创建的时序表的名称,表名的最大长度为 128 字节。在指定数据库中,时序表名称必须唯一,并且遵循[数据库标识符规则](../../../sql-reference/sql-identifiers.md)。 | | `column_list`| 待创建的数据列列表,支持添加两个以上的列定义,最多可指定 4096 列。列定义包括列名、数据类型、注释信息和默认值。
- 列名的最大长度为 128 字节,支持指定 NOT NULL,默认为空值。支持自定义第一列的列名,但数据类型必须是 TIMESTAMPTZ 或 TIMESTAMP 且非空。默认时区为 UTC。
- 对于非时间类型的数据列,默认值只能是常量。对于时间类型的列(TIMESTAMPTZ 或 TIMESTAMP),默认值可以是常量,也可以是 `now()` 函数。如果默认值类型与列类型不匹配,设置默认值时,系统报错。支持默认值设置为 NULL。
- KWDB 支持毫秒、微秒和纳秒的时间精度。默认情况下,KWDB 采用毫秒时间精度。
- 支持在数据类型之后添加数据列的注释信息。| | `tag_list`| 标签列表,支持添加一个或多个标签定义,最多可指定 `128` 个标签。标签定义包含标签名、数据类型和注释信息。
- 标签名的最大长度为 128 字节,支持指定 NOT NULL,默认为空值。不支持 TIMESTAMP、TIMESTAMPTZ、NVARCHAR 和 GEOMETRY 数据类型。
- 支持在 nullable 条件之后添加标签列的注释信息。 | diff --git a/sql-reference/ddl/ts-db/ts-database.md b/sql-reference/ddl/ts-db/ts-database.md index febfd89..08993f0 100644 --- a/sql-reference/ddl/ts-db/ts-database.md +++ b/sql-reference/ddl/ts-db/ts-database.md @@ -17,20 +17,21 @@ id: ts-database ### 语法格式 -![](../../../static/sql-reference/create_ts_db.png) +![](../../../static/sql-reference/createdb_ts.png) ### 参数说明 :::warning 说明 -配置可选参数时,必须严格按照 `[RETENTIONS ] [PARTITION INTERVAL ] [COMMENT [=] <'comment_text'>]` 的顺序,否则系统将会报错。 + +- 配置可选参数时,必须严格按照 `[RETENTIONS ] [COMMENT [=] <'comment_text'>]` 的顺序,否则系统将会报错。 +- 3.0.0 版本数据库分区间隔仅支持 10 天,其他配置值无效。 + ::: | 参数 | 说明 | | --- | --- | -| `IF NOT EXISTS` | 可选关键字。当使用 `IF NOT EXISTS` 关键字时,如果目标数据库不存在,系统创建目标数据库。如果目标数据库存在,系统不会创建数据库,但不会报错。当未使用 `IF NOT EXISTS` 关键字时,如果目标数据库不存在,系统创建目标数据库。如果目标数据库存在,系统报错,提示目标数据库已存在。 | | `database_name` | 待创建的数据库的名称。该名称必须唯一,且遵循[数据库标识符规则](../../sql-identifiers.md)。目前,数据库名称不支持中文字符,最大长度不能超过 63 个字节。| | `keep_duration` | 可选参数,设置数据库的数据生命周期。数据超过此时长后将被系统自动清除。
默认值: `0s`(永久保留)
时间单位:
- 秒:`s` 或 `second`
- 分钟:`m` 或 `minute`
- 小时:`h` 或 `hour`
- 天:`d` 或 `day`
- 周:`w` 或 `week`
- 月:`mon` 或 `month`
- 年:`y` 或 `year`
取值范围:正整数,上限为 1000 年
**说明:**
- 表级设置优先于库级设置。
- 保留时长越长,存储空间占用越大,请根据业务需求合理配置。
- 如果待写入的数据已超过生命周期限制,系统会直接丢弃该数据,不予写入。| -| `interval` | 可选参数,指定数据库数据目录分区的时间范围。如未指定,则默认为 `10d`,即每 10 天进行一次分区。支持配置的时间单位包括:天(D 或 DAY)、周(W 或 WEEK)、月(MON 或 MONTH)、年(Y 或 YEAR)。取值必须是整数值,最大值不得超过 `1000` 年。| | `comment_text` | 可选参数。指定数据库的注释信息。 | ### 语法示例 @@ -77,20 +78,6 @@ id: ts-database CREATE TS DATABASE ``` -- 创建数据库时,指定数据库的分区时间范围。 - - 以下示例创建一个名为 `iot` 的数据库,并将数据库的分区时间范围设置为 `2d`。 - - ```sql - CREATE TS DATABASE iot PARTITION INTERVAL 2d; - ``` - - 执行成功后,控制台输出以下信息: - - ```sql - CREATE TS DATABASE - ``` - ## 查看数据库 `SHOW DATABASES` 语句用于查看 KWDB 数据库系统中包含的所有数据库,包括关系数据库和时序数据库。 diff --git a/sql-reference/ddl/ts-db/ts-table.md b/sql-reference/ddl/ts-db/ts-table.md index 370eac7..491f2e8 100644 --- a/sql-reference/ddl/ts-db/ts-table.md +++ b/sql-reference/ddl/ts-db/ts-table.md @@ -15,7 +15,7 @@ id: ts-table ### 语法格式 -![](../../../static/sql-reference/createtable.png) +![](../../../static/sql-reference/create_table_ts.png) ### 参数说明 @@ -29,7 +29,6 @@ id: ts-table | 参数 | 说明 | | --- | --- | -| `IF NOT EXISTS` | 可选关键字。当使用 `IF NOT EXISTS` 关键字时,如果目标数表不存在,系统创建目标表。如果目标表存在,系统不会创建表,但不会报错。当未使用 `IF NOT EXISTS` 关键字时,如果目标表不存在,系统创建目标表。如果目标表存在,系统报错,提示目标表已存在。| | `table_name`| 待创建的时序表的名称,表名的最大长度为 128 字节。在指定数据库中,时序表名称必须唯一,并且遵循[数据库标识符规则](../../sql-identifiers.md)。 | | `column_list`| 待创建的数据列列表,支持添加两个以上的列定义,最多可指定 4096 列。列定义包括列名、数据类型、注释信息和默认值。
- 列名的最大长度为 128 字节,支持指定 NOT NULL,默认为空值。支持自定义第一列的列名,但数据类型必须是 TIMESTAMPTZ 或 TIMESTAMP 且非空。默认时区为 UTC。
- 对于非时间类型的数据列,默认值只能是常量。对于时间类型的列(TIMESTAMPTZ 或 TIMESTAMP),默认值可以是常量,也可以是 `now()` 函数。如果默认值类型与列类型不匹配,设置默认值时,系统报错。支持默认值设置为 NULL。
- 时间戳列支持设置时间精度。目前,KWDB 支持毫秒、微秒和纳秒的时间精度。默认情况下,KWDB 采用毫秒时间精度。
- 支持在数据类型之后添加数据列的注释信息。 | | `tag_list`| 标签列表,支持添加一个或多个标签定义,最多可指定 `128` 个标签。标签定义包含标签名、数据类型和注释信息。
- 标签名的最大长度为 128 字节,支持指定 NOT NULL,默认为空值。不支持 TIMESTAMP、TIMESTAMPTZ、NVARCHAR 和 GEOMETRY 数据类型。
- 支持在 nullable 条件之后添加标签列的注释信息。 | diff --git a/static/sql-reference/create_ts_db.png b/static/sql-reference/create_ts_db.png deleted file mode 100644 index 3216bc04a270eb2dccfe48e300c30be3e8184468..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19956 zcmeFZg4gN{fIsL^$kP^Z#J68`Sp zyQvb*vODHFp`JTGtz9K0+ne(8@>0k-b=>CnW^0!FKf{LqtPi-o{(XhZz?4*6fZjNwmshEcCa9{{=n~d{|Ae% zcVreDgJ~8!KZ`TwYpqW=s?7(6xwyFvlX3U6wtG^xKmWKOl`^Z_s;ko`NM!l5H71>> zi^K4qv#F${#FbSgQ}E)G?*XNtSuZi4)hK;Zc6K&@?9GtCa_aGVPsUijyyNBNZiQ-= zMBuf0+Rvr50KX>jaAK)E-Jje|Vt1FNAa<+*X;j=?Tmf!-GgY_CUhqm>^rFl zL&cVmu=x>cw^2!NK8r!Ye18ONV7go%p;A!mSwNRvuF4Q*MJ+2UD`4Q#$6^C{Z2Yt6 z)wc@!8|Ne)8JxtjU(B{0$!PJEd=~Ur-r4@JzMZ7+$MIAGT=j2CG~wE-g3J?hA`|hd z(}n+x1>+YPfh4^r8?Xh}kq^)B;AFIiVn?2woE#8DcCeZ0_*z~bZ(rW~J8V*)W40_b zx2vnGJz^TkZq~;Yx%ta<>xXN&*(fL|4nJC>It%+wP{F2WdHM2{0}e++t->}T7fnx=xI~`)6u8~C{Qetk&)%*xYy!^ zA1;OIA@uA&*ItWXqE+#X>X{t`;nQ}x!%^e%`z3!Ru@rZM9k7*Cy!C z(aqQ|;F@2Js0ASQ>xT@lPbf||G8~(h52^>a4ul3bvjd?QTlw)yzxX8Z@bHG(vFYpr zj-w5Ej*}3}vK0DeknKuo(|WaBi;mM9EJ3Bj4fdO|Xm$VGLzj(tJJ@W&m%JoI~ z+;=qU%iC^{hZg=v`t<^|G`gax+Kshh^F|-I@NdSzZ0MNVl$(RS1bqdcnBGx?=D1 z)yPFCr%r7z%}AWcfmNK~8V;Y|xznb`_0^_Cd{digcg(7|YCpKsAa8T%EU)95F11JI zzS#~9aJSj12>nh@of`0TZ2V1rntgL6ANv@@jo&h!AU=rWMs}#TfxAR8FKRbJ+)<%G zHTxiJd}Amh>$@~_>v1<#d6LYpfQ#QL-)MdhiyYcLv!DAVL)Mld=37TPX3!u{nk;dB z9AEDh2>LMtzT`X7%Ido#D=>C;DQqSqK3~2oq6`_PnE7JQIPU|d@Wux%gQ&|iiqAN< zVT;e^?Mz{do`$Dq(}o$FpL~Z~E_X_vL>-vX(m5$VHiRzN)h~LeJa>Vzs(!LNXximE ztq4R8fDn=oYli7~{&?^N&o538J4EbEpUBYfSayFGaoE-dYtHsN=_Ah*@fxB}XuH^; zN*P+cWO?D%L*w}~0FHz&dxp%N{+UqCNKz3lh9SX6+PWUL!qdT(rJ};cA|E&OJkR_3 zVl!)tH6v*lb$55(LSMBlZ)CL?;{ zlB)P@6a@z6t38hL29uIQrqcO3dt13UYHNpvRjkurNvaNKG@WFWM^=MbBGb4IoiNL6 ze~V8(JM3`JdHZ^P-@PjNG9Jm)iCiYT5XOkOr5dMIsT6bv*2buo`=7iwDB%>&5f8)D z_$<@ukX!Nx?y|Ds-oFy%7j`3QeR`<_uZ|D+XXilNEWA3#Yy{V%?|$n?`lc^wZ|)BI zE808Z3!Z|S7@mbHS((HesjXWDkAg6*utUh&5Q~R;?lK8yyVD|7ao^djWU$f)1!{ui zrH(=##hng|jM)3OhhXaZ9o&8q5a@L%E3j#|(BOQ)|HF6Xd+-7OG`BYVMSp+49vVj$ zh^sOl!TMDEHpw*uU0q$e$wBJDVP(4CY(A8n3++{Q=wVSKl#Nn@uI%dV^v~(v4W}@0g4HUfa5;$hg5e@Z(jlZj zyv`Q)U$}L;IU*2<+%?pfa9s(;PB%pEXnmV}ebyfEHgEt*D1l+P*0fvB7jU0!o++x* zVNtkdx4gOO4w}Rt%d7KahqmpJWuIM6&&)s0dp(NWt!4p7p>%>bML9X&{pkYVJ?jo! zPob`!Wg`96 z#dW5T>jEr<()r~UyJMup&Be&UgPtcH#6w4kiL+hu9Tc~$jVMt5AAN4 zWo2N`HB$pgF~ss#I*#Xe)tSH> zdOR7ORF=E0SG0~LW*VIH@g5|V8qrbSlE-AYp^(BMF+AD12(-6o&K=QxbgInGMf@So z++znMD9zOdjNjb^1J66?^4>XQk6|*7%ar#Os9WH>DM6kH`(oV9vNpxNL)j@Yw(b^* zBR1xdN!Hy!s${f!btKU(QOFe2+AS$P^SbOg=IuD#--~)wdRk^Ldfn8PXv+HYxO(Gm zr&(4L;rLavCdVS^-?Is-B<_x2#|QB`Q%htreie86H6tG;7)OtYZ|HtvI#}O!J%cr@ zF=`xYL=SoV@>dIv6i%X2?_JU@8L#mkG;KqoG*j}ur_T;YrHS|}+OC^O>u@X|trKT| z%8wK7=frtiy?*ua5b>3MuO@p0vl6aBm*ullT<$2naH3o1y6g{cM4BEDbn?GZX|cea zdmA7xOO`;{GsQS++UKF3=(!#%&@`PT;_2}wkoG#hLRyyQN4hBs&I-p*;>ka{-}MAB zNF1OS7VxD@+i&Q4mw5+^%^4--P5rHGv(GC(_Lr^4iKtNIf^hfT&37Y5k?L~c-64yn zUyr}vCL9VEgQxJiR)<5Wzlv|&i#i`S#_VbKA&za2yZ;K)tz72EHvV?6-{+J)rY{X{ zO0npPGVTS{It3-Q(dbeDBgdYWML(X zJUh0)Ej~s-1y609reupS4$(dK!<#w(=wdTFgYA=7-qh@ALN0yu51z=93h11+v_{WEJk1sU{G58nt2SK~sS^OlME!rX3{=p}m`D{wb+o@%9k< z@V%f7)QqHRaLt&SHjXroo{;uST!3zjz8MZy&kJh?Lc62On2ywgx5I|ziw9gDbUqPM zx%vCPSY2(F`#n6(%U`PJr9Km}u&@~0rW{mpzp{>>L0roE8jjR^1mP+_TDPt!9zXuQ zI7Tm`2%Ao^Zk*>k!dmWirPF*`C!@I*d!LlRK)u6n8AX&B{0wGvii}?D*o`#jElG$B;FOC*t;VH;*>9iMQQA-L$&I$BHj`>*gBXrk_Thrqcab-oxOmJ!ZGP zN2u$vw^AcQ!K~;m{Ua5*4_0Dn4mq*x11b~`d!#>C-zYhBr%DWyY{tktziR5SJD0Q! zQ}Ax6BOa`RI2__U=}tfP{N5nmy;^1ek~%cuNv?7u)cL;i+(V{Koq}4DG3v*7Y{b7T zw>FzBub8Ge%!9AU*~U~c#@dkt=>F=tYGJnT`C z?|I3I;_>sTQ-+gVcqOjy5T_{R$rdW&YW`a9+UbaXrAkWMm+Z14s3!KjU{XSJ$bi)0 zb-Ku5OU)GeOKhC(N+$vmw_G#o9zws#+ol&GllRO{NERV38+bVHre0iCVz3J2FA%eh zhVsa5@kOG|ADtT!|4!DkH8ZhtZIdvo3Pp6B{%#!ZEi&|&HFw~pp(P@}w^17DDy?9w z=Ek;rS^7k;e#X~6&b^=j)CSb0_z}d#%F3N|*k%deY*m>}GBjut)8y_k-twl~GsUrZ z{Xvc=IRKJVN3l5gL%B_cjQm+D?jzg<(oC8Arp-(o{zX`qt3-iYosaA8io9IO-hcf> z-kriDdBxI6qOw9`_0^kByY&`JG<#&+K+Es&}}-k9%)Qw*rOyI zx#jgY0gK77a=dEv0CGne+sEq@)wuVh z9uKMW>#a*jIgX12g&gq)rm+L5AL-4#s9twQ*g9ou_pthy%xgwkBvxOzSD7jjKmz3A zRD)7I*~H=w=>&oQr-ym5UF1UD#OVkWAg*q=l}I1G5ZQ}3Aj~0+XtrH8(Ykkj&zTqyQ?d` ztxX`x@rCzaCA;N%@6eF{@`J`o9Zg8GyVQ?`LL1yfJJfPC-q@!2Zj0;jV?XxuQsZL@ zud5dX*>mP^3cmew#_p;Bm$;qsr)l#2X7qb7)Lk()J#_T5wRhI`{`MSvW*Jy=a z-ySKx;z|04lvu87L;Zx-E#`{c!(V96{ah%NVkSdHVYh?B_l!-JBcG6(0Rh(;>pk() z+XOtI#)WUiJ$N=VJ!1Z^zO%bq%JX@OjL{r-5_K>Y>fqY_LznmN8Ur6WMSKTSpJV_a zm9K6``NSlQorB}lv5)b9?oN1t#moOqV3M~`oa)b{mLb7?VK*!DIy@GPA;1$tZ+yDA z96L|7ll$xrl_bRVv;RRhkYv)uN~87=NiKKIo({R(7q8^J2mQaJLYtE?(JW#2 zIXyMC%JQP3Ef$LrOWrmmL9TD|Hc5~67xYT~KfWQ;o-l;`{N}jo^fpPRK*Tdy-sdd?mw@s!_RgpSnj_I31xJO({D6^%OnPMQr>v`y`YgxCd`Z#A$M#f7K z^;fTsX8{pmqaY&_GtKfZiIk%4&LWhMJJzcLT$599@ zO+{)XTTDV=?$k}aW!e@lR_F^qh>xQdI_Zb{BQ}=3H?uY>I|y9~H6$e^Yo>+{wMQ5t zsZEB(5qp`S7%o5E7;4U`tUTJEEYV7-|J7&RxBlAq^Rqsy&5unI+7(Ln9whO*4`~p1 ziF2_1_ljJv)(hG5*qzwAY`ag$M1S!kMl+;vwdZguy|V;B81DxK5=qJb0O zAQk{hS~udz20(=lTTTbjv8hKbwnlT~;ag+tA>nuwOW6lKUtlln?=B8=8l}7`=cq1k zBc3&04uiv{qvj1ldZkj3nvr=T%wG>)pTWY$kW0Yinx^X)by;L`i4+kHbI| zLa>I()Duhn{J|_ZQJ~zs4gjZe!|g5@77;CV|G+@A05xHD0y{WY?~(_(6f!))pA;Zk zoJ911c>Og^oBq-ob93{3EP@Bg$)SyZ#ub%!r^+as_!=7;yy}&Nzzox@b1mAqz6TEN zZ3vKo$iO`BE=obnYKj4VvtRpG?R~mIa4=tAK}Grze};>+9RTmm$-z(AB&c&jJ<1!o z1&ZCnFYywikPzaiy+h`vaAF0Pdw0sX9zL95Fxb@vH?D&`t+(0h_-#N%e>Kd_{jPKp zZ1F5WO`YbsG{k#^Iw!|ZLx|FzeAo-KKsG>nUOWPU?#qV{AACD){Q=^1sF_d^VL3|$ zd{;Hl4ur+$|IefANV{sj$Hz@yK6>;>3Q%SRG1kM*+4V=2168Qbjo-7eJWxDP{Z^_L z$iQ1gXN?cIRn!Hb-RgDzP{6HDk9+8Lr4&}Lxm1T9hrOuI&9J!6DPthN2g)iA&gVG>X*Rj>TWEm78iBX;p^y-(P{43$d z)iqVL6g=#sfMnXt0XWqiPv;1Qw;nbwtAD}(rj!L1%?O3Ja%!#OUvM>TF-}1JeNQ7LuG(7*X?$RN+Xgph z6@mQmVzAU%Ko^Gm;ftG7RSt_yoB@F&V(`>OkNF{F_A?*YtmP1jf(d&b?3I53eHN2skdS-4KbN z=hPS;0hZW&4Ptxv0TPNhu;pqwl5(9fj+_j*0pW~?F5o=Zdh+WBL>ZA$CIFKvIpQb1 zOcp5C_vXzTQM^Ub%dLD15a@>wOx6Ryr)MZ~H8QWl%Gm#GPxO4lHXTqWxg;JgmM}by zaP9N{?Gu_}7%+Ra?-&^E(^^Oswe!zh|597)<{(HNFzqp?HB(>DY}0J$fA+zZ9AXd% zNP9tLWu*si7KlP3t2BKc^Y+s-L-zob&6{_F?af+TocumG0}$5n`n*SCt>`B$X&h_I z#YTn-q{6Um2>?67VO$@869z%4ZDTQ1BaHJJ)SC<);izh6Hww1NDPFq&z5hl z>s{%E4lwb^Q&EMvK80YR9tEBMpTsH^DCvygd@V)xghvc6i&t>XT&u6ACvrt^eE2pt zVQD>*cw=u_HQW~C%W_dP2Z{x_^#Q|LX#`+pe-?S&D-Ga@S z7`PJWE4SefG8BUDqUe8<_>^Tt;8}^`af?00URQy!2<{ytM^m!Jz61Gcnp@vNtGvp# zSV!IZ*$d4&t609aC2f&QF=u6FW=5BM{c2DXVjf4vjY{-ob~i_|4?m&5Gh#GV^bo*d zv>D5j9a_|I;GHLD+XCW2vCvA;?Yc|5^P^Rjr?j36&MM6B%e?l#O%H+qaY$XdJyA&Y z$#CG71Y&k%;ik`nUSpz6jMi%fJ%#06SSc(%;13hvw}+|o4$VWN$DO3ZeasxP9vvcy z^~(Xxs3d6?a6ElYssfd)opQRci-ks4eHd;-T`xwa+qlBFVcz)G_G2@;8Hy3WUJf(& zfxs~*dVRkBEsoD#*m2qz-mf_oSn|pj@%ZYRdMq~nED=}ibdXOOqyzQm68`ww zPHl!5BEjF$_Y>lfk6>v5p+Oi@$x7nSkf8aV$cJx80A^O&hi@xxb8KmCk)p^fJn#~y zJc^7%v!OpE%X4WKlN%?f^9P`@2e1w;dCc6lyo!RaXhlIeI|R#--+9qVhed+#y(cuQ z+P;~gn5qYOH8q+WI)j;7bhMt@xb&7z(&QQ|^gzSgS$sJFVNW5tQ6G?9pp>>IBaD35 zGkES-E@tSQqI7q5*;=Wdm~k5jMc7IP&guMq>t*OIYk!BNuMl`j(kP>KXrcR&&DTaH&Z#c^Tq3EkZ+{n?0q8}{Z`}JI}SaG zU+Aw%(N{e+L#rhV^OHb9OYWi3HGbQ=rbDVVOmpJ^U> zbA5QD7anfe9YgsI5w>-`co?vG>zRfqaq@8+TaHu^5(rGrP;{QbJH%rU%ge_heBzZI zXHt{*e`M@_26~>uO!A>A?hffyPhs9=^a=(dMd|(6GW!Hr?Qu(cy>dT){$<2*_pnON zDV2;fer9-I7U2U$#vBEj=fR^0qgBSG6&7agU|uzy%)IbpFgIpS1PniZkMDlJ&wS{7;bT>EjndvLy- zM;45A{uiH$nVQqE$&k;}U_IaLeUrnQPy9*hS=K3V$ho2u-WkOhLuL2O61at?Tjif3 zk0K=&)0`4k;w}7gaEkev_N??A}{r$UQ{Y z6R*_3Fa~T4f07|6W3>42k}en3LCrM&$SIF#v=M$gCRBb|_6*x(9-*dJ0ZmV!=ig5< zdcU-+;D*QWI^scxr`-^rpz5~>67GDFi1BLz7N5X}jV3Jyl}R>tJZ?&o#y$z6LF{=8 zl5w$)SuCHs3D2~j(n2)rG5TzXUNZU1VTH`HcUSwi@6p)yADo`-9I`sUWXEN5QT3+Z z{Z3-B$M(g4=}86AOX&*&6ROSds{8=EhlqurG0*Y$2R8@y{536ZT#o#oM(7r`S=~Qy z><>xn2*xF5lC&dnJAG=NiW4j*K+K=-+mFJKjavDdrKKR9}aM{vnxaggnhjo!NBmf^{s5q`}Q+!MFBB5yXm`?*?W?vur2W~Kw2^DaEYENRvxhBwfr=v5({-(XQJA~U>--{a)_ip}8q z(p$`Yx|S@VPd540SLJY3bs10IOOh}a(x}ANE(a!N+~+)+>1eiUZnq@wT=yLJoLC8m zJ#1rGStiynxuAdXbjIP=-k&qc6|6QR;0ZYp3r;lpV(9O5m5BI(=ryKj_g9o{LzO2C zI%qFfQ>i;uF@AWl2^YN;NplOa!>QT3+X!0`Ty*LnP%-1}#_x&j75+V)JelNQwmZhZ zeP{L`m09eIw~|dLsq*Jf3TO8xhCaK3;Nre)`C5oogfZiH&yzKt_s1(Dpa67bc^}gX zOCzLPF~E2a*{-1Mlb_C!-3)2c{~Ni-NyMuf8H(f8X~oF=_^QfVia{lQi0-=9pM z$zZp3%ze49*Kc*Ru z5w&wCNx5CdU6)7Xm4~$=zvqel?tPKyfhtNcn8>6Uu(3U<9d$LCZxdV1NoQPlHqDFin$g6}hJF-U)ZHbcQ6vlC1&yLY$O z)F7f2Hdg}U3)67YJXs0TtXjjY>KXB)#iewAz<4AEj8pfL zqmPR|m`PKnvl*B>aeC{;Y?@q=6TVgyl-!=8jm32kJ4w8zX6#JCT+DTQiWX_=?;Fvt z(aX=CX430qjC(R||4PjUk#1g@ewqC+Q`$Y1^hNF${PRr<@&hyk|rH$g!5`R_@ zkSO``ssP+aGWjCDRV-!#Z_{s^4r_-IGm=4iX55H^d%emy-WwiF<_i5@xM#k>=R{EML;w+ke;AO6qx-kAK^U2WsX}VkUa=)(u7V3Zz`J3Mgy> zXkuoF3N2E-&~Nz3rii;Y^k)5_Tvo{XgU=+dOdr8t>-$b}P|;Qh7JfkI6{o{H^5&VF-G;$-Cv7oEiq=VGzy8q`2A zm@S7TfYcwtnF@3_-HVG0$2d9(arSvSaleM*@^YA?0E%w@Uk)gHTW2>r3#>h}Pc4Tt z!yG(2AtVK*rGsrO5847B-b+tM!JXcN|D)M0Eq-HKhW`9U;3_{vxqNoQ2PV7wSJNCG z-ub8+QJ5}euEWg#U%iPtCi=%nia|!M+F~fZ8n!d^V6T^hqr z_0%c>SEZZuPWaK?I8eL@*W~4`)wqfNC4*ak&)@qLp{b$aw$75GmxraQE*JaY4Z;VE zhQOE0>j=00Fyb_&cv`WDxnUo>fPer4U_4U-n!l2QLew_M7L%qdX?Xbpul@LJrydJr z?5uS~hnfy$ni?(B*&7maa&r1V(vK@CE)uIQ`P-$uUC{83)g3^%b}&94B6SdR1{CZS z)+}I1W{px2GlahH^j+*X7wf{Gb-d+!xqLZek6%Y~F+qvKE3MfQyXlK2e`LA7 zN7cX%K%9Jl@-4ksU+1-nPiEcz_vgmGHzV&Kocv=Qxcs$64~OA(6hKY&`#-VYV($nd zJmj0*?7Me9&i^)ThFYd6^QR>>cV0C7q%BtNudM+oxJ=W$fO*SAwp%aAh5qI9{0Bk* zkL~mSfB1j&%L7@I&k)jc=sKDF@6PG`Xa}rqhWE(G_GbaEO_>I)h+%3OOda(*czD?Z zLqn|=V2;*r6te@h=x^Ub%6h8?tjl!133uJuwg$D^K8xbV$J%eQXUfaVq4Uta2Y144 zZn*#2!2TZaQ`x|Ot(mKe^FL2LedVW{i%j;H$ou=WOuCWd7S&!hl{PTfI@)yl{xhU9 zS81l0@F>{fbB?-_2bV4{_E}`)-rIJ;xu)*_sf}2%LR>2~x1<1|z86X){_xEy2(zaT z+1YWm-n>~fH9W9RkuPoaADf%M01$p)5Akx=m?7+iuZYS?iSRiU0;yF-b29@K?dBrV z)YM$c&d3nygo=+`U%Mg@<%#oEyLcecPQ<)NK~Y~PxAL-C&tdtKh2u5F&qq=?V^2#- zr{=HIOlV4*_gv(?y)UM#JAie?+hZa6;6)X3zkYd%mU?0+zg_2>jl28PDO{KXh+7rEEsr6~K>pS#j|gI6!><1;DXu2Ce^gGdEEl_zkJ=i@3=Efw!0ISl@;Q zstNlYK82>F77e;)z4BS|-A)BTo4+lc^;mf4P(95(#Zt!<#R!G33M~rRcraAs**=w< zlkf#Ipmp*Aa1x2|d$?9S5P2j59Fdd`J^S#c4W0hP(KHS&mZRqh9hrz6eDwG!-&9FONVQ8M!s)Bk4 zgl3NwrvA^%sK9ns?RVkQT~+%^5w+f0shdieM}oy{V7~!0F^}Qv{@vGns8?_%XH-#r zn?RESR-JzZjQ6o9eE+Wp|Cy;T{u5t*YzYD2PX4*6scG`FLQ=#CFb<7|VB$4tX=v0M z0OuYnp$+4I%R^seqsbSa`NH<<-3;8JAz>Y>Hs7v3CV%{BarUhk!QZ-9lAwPt&AJEG zcFrF$lzdz*DpKm|}53x~5MZrHQ5vbd}G#RonpQ#vkIG#Q2` z(5P}g1z8P=7Ol@#ZXZ~GDXp@|T$j8z`^Ib;thDCf*N8($Q|}h}cv@-HwTF!&zark? zFo1sTHF{{?ImT2{JtB@MlDvzyFAAi-1d zKKr>^kzp~oo{*1%6F&BT2`V|K>8=0!{ht#8Em9g{V~sr)P|opCEP~eqtiiyu__Nkw zG2L636{W!yoTg`OD%L*CebCGT2*G|h&e|`@hh0%jZ zY8RZe@)l5nB??!}dP8LfUYT+W^nq5s0r%Cv4pn@n-wi7_cC}xc-Ld)T86TnbCb)@ty@Y9m} zw0;G^6V^37^%|O*=?e=Bsn7vtiR^$&>wUzb|Do@Oyu@YVMHhE~v9Q~g8sY}@QU;KF zhWySZwJaiOJa|ytqyFs(Fr+$cjAY+Pgnmr11ZwW;r-~-TL34(X>qaWdgYJIN!yR~` zc)A)%cLK@cyuJZG^+9{zlV5%A*QhjQ>UYS@i(5CRxD>tLt82aP>@b@QICfADF9fBIb=_iTW(L~k#(`YP@3 z%rAR91iH>))u-wDC7%I3-~Dg8SB@$A9?tuJvTv?>7JyCRAdoG~?S11`Ui8AQJe_~? z=1O|@)i1VR;jo?;K>Q z-8{>tzQ<$aTlvHhdQpJjgqOC_0c~jgAR3#_Z**45js-p;iA`e`0L;J5h`x!!5znEJ z{SGXjzh?2hnvteyurUC*uogGLWLqG=2?aW0+Fy_3hQTi=-cm)PC~U^m;RXx;oNIgG zo2}MqeH$|N8Gkf6CohN>d?@!MV&ocnbB%a4Eq%jh-k+S@W*Bbu_?&HF9X}TG0W5Lp zC?0Otyk9r8bPc@lM6N)ra#)>aN%~m5juJ6_*f}|~s0bsMzp4BrgY9!hEda@-X6WSi zzz`5(EL~h&GSTGEO>)5Wx)JUn{1kY7p%Y0E0HlR9Aehy|#PZVJ-GPme@=R6yqVo#8 z>ltuI2mtjf{Q?YL)=EhXfw0WEG)(gD<>x|r(G0=PrpRr z?Y&oXmodU9%=EZ|%{ykLo+Sxk&Yu9WNTAgh?m;NB-*dC?zD0d~IhRp~2_;o_bERDc z2;CWvP#SDkS$t*ySf{6Q<^CrzU*3aBASiaDOp8yYBk+qCD|+Yx7xqs`-XQA^^4vy_&Zt1=|FQk5`FE{-~gJhPMZZ+8kYM!_Y=_9eeF_FfPU z(+<<@{u!pw^IUY_h!4EV7Xo^Vegt!`YT%`MiZ!-O8~4cPnp?c7g7$ldV4(C6A{c*) zUghhtMhpty!YA%G(ycu`FH`M`3dnT(L?U|cKEts8TQKTty+eno4jy9hvSXaF|;Or!kPB8;4n ze6VV%H2C7Uti;d&PQ|qzwZar6*?l+hutfZQ?6-J-dl7wy{on0rCXu*=gmmHyxDJnK ztpa)HG2(F^qt9Al2u%03U7vAl*@ukE7LismzSt^p3qgNSPWsiO0jp)D9Iq}K*=h0K zxTHthV_J?mQBvWNN**r$t%mQ{=g&#=MDH6Zo*~{aM}QF2t)GISjk|!-;L0y=<1F31 zzig3VuP5RE^Obz#jrtc!9ty-cFmpFvhloRh#L0a0JZE}BiLQskM&ZOOY%gSaaOgq< z5)WOLNzm4HU{IWCA^1H+r==f7_U-cs#!MK4z7g2&)$U7t>@Q>sRRxNboO>#n|wtz+>(RCZ_K=L2Xn*#=DqR z7r6(wv$+xi70+~hj_f#Q)M(jXj_M(0;c2_G|K)aJ{dw%+&+Q@->9k(pIa#4L2q9hX zjRH-jRtH5lD?e)b7HZ-1`F8YH-O-nz9h z<6N#HcBVmLCgm1N!45IzjTE#81()+$#vYqAv(p{QkLWl8!??5KD9J;A1R`Q6jNj6> zS3O`u^E`w}@Ds$|4h=5t5BFjGPHRF@6+hGWz&DM=Gr9o>kU?A%1kT zcx24h%v0`uMMcH>`~9!hXM}TAx&{Dr-KBZZVTofMhEFI4=b4Yif?FL0unAJ)PR9^= z-5JvWULHFNuTEM0Dqm~d>cV+$D)AywXZT4LvS{tqFm}%HP>Y^YP$lGB}ldse_r|f zo#vtO(NWSXQfNmdK2&uST||<{2Z+%gb)SN6&#!*!ysiJq0P)~1kL zRH|FA$^r7BcAR^r0jLaxW*&_CmcDvGP8dm7CH4ESaAlWoQXVt zElg1TL`Lb!k>C~1En%TdBt4EGz8GWFLrxkD#p|^;J*@!5}k>m4+22SGvA8fm=-xaP@e)tYXwiFvt-*^9g;b%w!Oqr7~7%PDC3_ zh{CMezW@t;$dTALnUK_t(R7_J79#^k!&#-l)7gQtJYmJov%HndqY74GIrPgy#%PI& zZ+tvXCvU&9UP5rxeaPcrge8RG#gW)D?h+n`GI1+#7Pv`^fc;n69OF!@J|->vlTsMk zeGeI1igO@gH`tr%TazWzny}ESwHejwlK=w(h6lIPOziG?^b&o^eeiBKe)pb)>0xV| zuMRbOe)A!;d1`tk{ZG4@44X;%A(QBZST?6_T`4Spp=g_^70;XlsE`&tR%t^-Gy{q}SGl(TJh@SAAPx3u@Z^%&sW?mY-}&a$|wCtd*EtkJJp!$;+>s z%1P?JuIdG!dGPbTz}=~37Rpf4ZRcyJPdKUcI1SG(>{}FI7k8HU^s>*))B8GC7A_F? ztSk*xlrk_a$5`j3u%b>QCgestMKT3HCmXC$n_&BS2kKAaan3;fpo2@%pB*XD7T6L^ zZ|+)0`cFj#-P?Su(^pJ%pVv}0VFl5Z@>c2DCaahUO~mL?ei_ycWe!^?L@Y_=2x z<#bcq$7vVz7(}UqiFSHUy!9U$$@WXEXz@Q7LlajP$o^14xs8k7N8S;`us-r_M}$1$ zknqEve;LGKr5+0Vc*xWg3jcJ&RX3I5j*VN+(O_@qS(|%*s8Z3vD}pX>wO)RMW-GE- z$HW_yJ$e!ezYtu-9(q7VA|d6EC|2k$W+&{WyFS9+OkRDC$>zq07{aiA-Yp_H6^~D; zV(9dqh+2T!C(~P4KC|BJBYF*;TajRGOd{hNzL^3Ax51u)JXO3BM&^?h!CWYQS=wgJ zY@Cmx;K$?~61}6OVSdbV3JHbRPa*vi2bp*;Qz+Nvc)Fz{f(FqyJ4bA&A9J!ruUO6$ zDm}ybU6Xu`Ns}eG7|8Ao-MMRT_Ow_J!d(4p<`kq|3t2?v&KnN&9Je6$Av`fe77GFi zERN_1a$f7_jC(xVPi`?`q~LhCsEE$!ZcKicGnS`B#OR;Z#JD1Fufv(b(cl>CA|%k5 zZ6Yk{{NR07DiyU4PqN*k9EuJD;7(%IBgxyWE28{vVv`@7sXp$-=n5N$JEYzrM!b(M zQy`bN%d;&T}ak(B7lQP>{l?3t8_} z@0Zbj@*{3fTUzw&r@F4v&Tlr|)1<~pY{I<2KLkJGTzFp6_CeN^)&@@+m{=7VD!&Vw z<%G?S3{&B1Gw?2A(2nDV;0msb>!@1Xj}$)2;e&X0BQ{RDid?*)j*U-u$DQ99^8ynngU z&VYLdtG^b>EV50gLOo0RlFQ#)2u^7l%${qug{^k7MfZ)IAdJi;-Z$*)E$+%RJ8b6- z%m=qxgwQF+crxYp*jZ}u&x`_YS9@XPrn&}~@{%f@2$3?o7*Lu>%96lvD~B{vWrWX^ zM!VPcP5gO2Km1rq4L5Mw!j@5iY-j5D61;jMBlP%pxkADC5}%B=_NPjZ!w0_H`hB0h zH8DPQC*0DHB6#A5ooIq1XHHrFL!6vu#2tL@8-e32+-?XuBFMULHs}LIVsb4B&hWXk3kC^!D zMmX336zC$X4J=V1D+P3akdJrsmR~q|H=^)VXGpd)snc-i8b!ObCWhoa<-ucp-p4Vr zt*a4K3p0xmoqTJfmJ2Oga`ZinO?^RkG0-w!$uLXdOZEi3W*zYKqvZc>?q*QG@EV>J zJo60wHmiyPTk2bmhk4FARvA{CxWtQshwkRGRE%$J?zn?dTpf68g2Bib{G?NSrM=Ve z+F82&u>j+DiKbX2-1K+L?al<8{;#2VBIhk$MhiZyl3&mmV{Fr_Ahk4`neQB&- z8ubj{eXC^FMtreV*%U!XA6N7hXYNcRM~-Ld$Kx|iKUHJ=Hr^$7^`uofC!&`>ORpg^ z5#ROP#$>Pc59 z#(RW=qlDQLQmBKl_)23D!nU#?N5vhRuWS^(r=w3=u^kYbl|GvsU%4wd3~4I=ZCSPw zFni}f_r0^BQ9SW#;wkx2V2HY;Nb18QmIevjcl=naqMhQ{B^^7VMz`U9YB}omQd61F zqTIy-^v&jqZTdV!%0bd2RZB0EVoDkPQ06OXrhL0Jan$O)WBQCPy=v=TxhEd{2J2ek z85p*o$s7h>w|Rb5I!QJO$(Y+{wG+uoF7+=Opk?HUdYZ1 z

mf|*OJ-F{7!z~@Yw0^L(!#%AmXY|I}TwpV#D{j<#w1e~V6I|Gs6D=e^6Syj?g z`bN2O)wYc16v{{>?!F@A-eEB;OoBYiqDG4-F$aGq`?ai7fCdg0Yn<#{beZGeE)$dXP>3*{-20-8?D|$TAB5 zl04R_-Kqn|K}QP@)5K($XS~zb;LRTaMW^Zh{~$-@c!WE!g~n((B(>r~3WyB4Py!1+0wEdQTh0JGs< zs@FJP`nKxF(G?tUFb9W;f}sqhsp)Z83CoD+t<= zGX_KiLpaj!B^d3D|Gzi8Z};18-~6tXd{-mf|5E3fBzvgag|Cu394E=h2 z;jt5)yeLIawj;$XLNtuD7!I_<3`}@u<%N`m}1J6;?b%XPtn?WSU3MOXC2C zU+`|t!z)8#YDw`)XkVxXgzj+Iwewp0ja|PrW>orc*V>()0CD-5fl$B4{^WTy#>^A3 z^zw;NWw>`J9}^8j3>(6R>L;C2ip5=RG;@O(b@PwB58_-81_Eub<7=H}&}S zIuUaxKuaMfP!KfylP(ZZBWeor1?>=~j~zOo@08o=-Yo!Q2_XT`@FUOrxjfaSg$JMj zVN$T5c1+Y|LaBzjIytFJw%O4AE{3}DupXGCvE24fqeK(y=yP2MqS}mVtyJ^BE?Ne4d7Zz?yFcF2awwffqrn>@CZVQn zv8TpTd?z508Q5$8@jIR(P-&37P6XI7Zug5Y_17I`lcReiZ$cb7sK1WADp{>$eI53K zLs|=n(E3gQAuXYiIDz0Da03%wmN8YP-6Q@%6JPyZY4F+H=em>uXM^yXU}{{1+sBbS zr7z+%4?TMMCV&`rw6bxk0yqk5aI!oI8I`1B%mwq4RLT{Zhpp`;4_2TXA@u=Ba#{Ep z-1@#5NkDaCh5Cmbj!(h>|7whQI6d9mBB-0_kIGP#rsN4NiFkH~={tkFHrYQEv;4~^ zWGKiJ*wWGG9Ci;tSGS@w>2$^_*K&0$Q@Tp-6u21 z7a_#T0?$}-yoC9U>Rs)F$aQAwFE}z{Mu$)o`CAuGS%(J__@w-{D4%NxLZeC;8Q5Vhkl%KGgGm)}+F( zeu2*=Z()eKCVG9fIAs-}3MwcodyQsQtwR?e|7VIWdDKFuUz9w&oEWy%e_;GnR>f86 y>{-t5rzvtnW=2+Krob&_DYptrE$Q}@TrIaz<6@P@w~)2A?4bQoy9&aI*#7_us;a60 diff --git a/static/sql-reference/createtable.png b/static/sql-reference/createtable.png deleted file mode 100644 index 4c8bc21bc8c577a4a289e6e961f52b71221258a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37630 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 Omb Date: Mon, 5 Jan 2026 17:00:08 +0800 Subject: [PATCH 3/3] update docs --- db-administration/db-object-mgmt/ts-db/table-mgmt-ts.md | 2 +- sql-reference/ddl/ts-db/ts-table.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/db-administration/db-object-mgmt/ts-db/table-mgmt-ts.md b/db-administration/db-object-mgmt/ts-db/table-mgmt-ts.md index 5f90b3e..acd7695 100644 --- a/db-administration/db-object-mgmt/ts-db/table-mgmt-ts.md +++ b/db-administration/db-object-mgmt/ts-db/table-mgmt-ts.md @@ -31,7 +31,7 @@ PRIMARY [TAGS|ATTRIBUTES] () - 目前,时序表名、列名和标签名称不支持中文字符。 - 配置可选参数时,必须严格按照 `[RETENTIONS ] [DICT ENCODING] [COMMENT [=] <'comment_text'>] [WITH HASH()]` 的顺序,否则系统将会报错。 -- 对于 KWDB 3.1.0,表的分区间隔配置使用所属数据库的时间分区间隔配置。 +- 3.0.0 版本中,表活跃时间和分区间隔的配置不会生效。 ::: | 参数 | 说明 | diff --git a/sql-reference/ddl/ts-db/ts-table.md b/sql-reference/ddl/ts-db/ts-table.md index 491f2e8..2e0d89a 100644 --- a/sql-reference/ddl/ts-db/ts-table.md +++ b/sql-reference/ddl/ts-db/ts-table.md @@ -23,7 +23,7 @@ id: ts-table - 目前,时序表名、列名和标签名称不支持中文字符。 - 配置可选参数时,必须严格按照 `[RETENTIONS ] [DICT ENCODING] [COMMENT [=] <'comment_text'>] [WITH HASH()]` 的顺序,否则系统将会报错。 -- 对于 KWDB 3.1.0,表的分区间隔配置使用所属数据库的时间分区间隔配置。 +- 3.0.0 版本中,表活跃时间和分区间隔的配置不会生效。 ::: -- Gitee