Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
5d398719
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
5d398719
编写于
3月 08, 2021
作者:
E
Elias Soong
提交者:
GitHub
3月 08, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #5379 from taosdata/docs/Update-Latest-Feature
Docs/update latest feature
上级
1d9d7569
86410949
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
85 addition
and
72 deletion
+85
-72
documentation20/cn/11.administrator/docs.md
documentation20/cn/11.administrator/docs.md
+51
-49
documentation20/cn/12.taos-sql/docs.md
documentation20/cn/12.taos-sql/docs.md
+32
-23
documentation20/cn/13.faq/docs.md
documentation20/cn/13.faq/docs.md
+2
-0
未找到文件。
documentation20/cn/11.administrator/docs.md
浏览文件 @
5d398719
...
@@ -432,60 +432,62 @@ TDengine的所有可执行文件默认存放在 _/usr/local/taos/bin_ 目录下
...
@@ -432,60 +432,62 @@ TDengine的所有可执行文件默认存放在 _/usr/local/taos/bin_ 目录下
## <a class="anchor" id="keywords"></a>TDengine参数限制与保留关键字
## <a class="anchor" id="keywords"></a>TDengine参数限制与保留关键字
-
数据库名:不能包含“.”以及特殊字符,不能超过
32
个字符
-
数据库名:不能包含“.”以及特殊字符,不能超过
32
个字符
-
表名:不能包含“.”以及特殊字符,与所属数据库名一起,不能超过
192
个字符
-
表名:不能包含“.”以及特殊字符,与所属数据库名一起,不能超过
192
个字符
-
表的列名:不能包含特殊字符,不能超过
64
个字符
-
表的列名:不能包含特殊字符,不能超过
64
个字符
-
数据库名、表名、列名,都不能以数字开头
-
数据库名、表名、列名,都不能以数字开头
-
表的列数:不能超过
1024
列
-
表的列数:不能超过
1024
列
-
记录的最大长度:包括时间戳
8 byte,不能超过16KB
-
记录的最大长度:包括时间戳
8 byte,不能超过 16KB(每个 BINARY/NCHAR 类型的列还会额外占用 2 个 byte 的存储位置)
-
单条
SQL
语句默认最大字符串长度:65480 byte
-
单条
SQL
语句默认最大字符串长度:65480 byte
-
数据库副本数:不能超过3
-
数据库副本数:不能超过
3
-
用户名:不能超过
23个
byte
-
用户名:不能超过
23 个
byte
-
用户密码:不能超过
15个
byte
-
用户密码:不能超过
15 个
byte
-
标签(Tags)数量:不能超过
128
个
-
标签(Tags)数量:不能超过
128
个
-
标签的总长度:不能超过
16K
byte
-
标签的总长度:不能超过
16K
byte
-
记录条数:仅受存储空间限制
-
记录条数:仅受存储空间限制
-
表的个数:仅受节点个数限制
-
表的个数:仅受节点个数限制
-
库的个数:仅受节点个数限制
-
库的个数:仅受节点个数限制
-
单个库上虚拟节点个数:不能超过
64
个
-
单个库上虚拟节点个数:不能超过
64
个
目前
TDengine有将近200个内部保留关键字,这些关键字无论大小写均不可以用作库名、表名、STable
名、数据列名及标签列名等。这些关键字列表如下:
目前
TDengine 有将近 200 个内部保留关键字,这些关键字无论大小写均不可以用作库名、表名、STable
名、数据列名及标签列名等。这些关键字列表如下:
| 关键字列表 | | | | |
| 关键字列表 | | | | |
| ---------- | ----------- | ------------ | ---------- | --------- |
| ---------- | ----------- | ------------ | ---------- | --------- |
| ABLOCKS | CONNECTION | GROUP | MINUS | SLASH |
| ABLOCKS | CONNECTIONS | GT | MNODES | SLIDING |
| ABORT | CONNECTIONS | GT | MNODES | SLIDING |
| ABORT | COPY | ID | MODULES | SLIMIT |
| ACCOUNT | COPY | ID | MODULES | SMALLINT |
| ACCOUNT | COUNT | IF | NCHAR | SMALLINT |
| ACCOUNTS | COUNT | IF | NCHAR | SPREAD |
| ACCOUNTS | CREATE | IGNORE | NE | SPREAD |
| ADD | CREATE | IGNORE | NE | STABLE |
| ADD | CTIME | IMMEDIATE | NONE | STABLE |
| AFTER | CTIME | IMMEDIATE | NONE | STABLES |
| AFTER | DATABASE | IMPORT | NOT | STABLES |
| ALL | DATABASE | IMPORT | NOT | STAR |
| ALL | DATABASES | IN | NOTNULL | STAR |
| ALTER | DATABASES | IN | NOTNULL | STATEMENT |
| ALTER | DAYS | INITIALLY | NOW | STATEMENT |
| AND | DAYS | INITIALLY | NOW | STDDEV |
| AND | DEFERRED | INSERT | OF | STDDEV |
| AS | DEFERRED | INSERT | OF | STREAM |
| AS | DELIMITERS | INSTEAD | OFFSET | STREAM |
| ASC | DELIMITERS | INSTEAD | OFFSET | STREAMS |
| ASC | DESC | INTEGER | OR | STREAMS |
| ATTACH | DESC | INTEGER | OR | STRING |
| ATTACH | DESCRIBE | INTERVAL | ORDER | STRING |
| AVG | DESCRIBE | INTERVAL | ORDER | SUM |
| AVG | DETACH | INTO | PASS | SUM |
| BEFORE | DETACH | INTO | PASS | TABLE |
| BEFORE | DIFF | IP | PERCENTILE | TABLE |
| BEGIN | DIFF | IP | PERCENTILE | TABLES |
| BEGIN | DISTINCT | IS | PLUS | TABLES |
| BETWEEN | DISTINCT | IS | PLUS | TAG |
| BETWEEN | DIVIDE | ISNULL | PRAGMA | TAG |
| BIGINT | DIVIDE | ISNULL | PRAGMA | TAGS |
| BIGINT | DNODE | JOIN | PREV | TAGS |
| BINARY | DNODE | JOIN | PREV | TBLOCKS |
| BINARY | DNODES | KEEP | PRIVILEGE | TBLOCKS |
| BITAND | DNODES | KEEP | PRIVILEGE | TBNAME |
| BITAND | DOT | KEY | QUERIES | TBNAME |
| BITNOT | DOT | KEY | QUERIES | TIMES |
| BITNOT | DOUBLE | KILL | QUERY | TIMES |
| BITOR | DOUBLE | KILL | QUERY | TIMESTAMP |
| BITOR | DROP | LAST | RAISE | TIMESTAMP |
| BOOL | DROP | LAST | RAISE | TINYINT |
| BOOL | EACH | LE | REM | TINYINT |
| BOTTOM | EACH | LE | REM | TOP |
| BOTTOM | END | LEASTSQUARES | REPLACE | TOP |
| BY | END | LEASTSQUARES | REPLACE | TRIGGER |
| BY | EQ | LIKE | REPLICA | TRIGGER |
| CACHE | EQ | LIKE | REPLICA | UMINUS |
| CACHE | EXISTS | LIMIT | RESET | UMINUS |
| CASCADE | EXISTS | LIMIT | RESET | UPLUS |
| CASCADE | EXPLAIN | LINEAR | RESTRICT | UPLUS |
| CHANGE | EXPLAIN | LINEAR | RESTRICT | USE |
| CHANGE | FAIL | LOCAL | ROW | USE |
| CLOG | FAIL | LOCAL | ROW | USER |
| CLOG | FILL | LP | ROWS | USER |
| CLUSTER | FILL | LP | ROWS | USERS |
| CLUSTER | FIRST | LSHIFT | RP | USERS |
| COLON | FIRST | LSHIFT | RP | USING |
| COLON | FLOAT | LT | RSHIFT | USING |
| COLUMN | FLOAT | LT | RSHIFT | VALUES |
| COLUMN | FOR | MATCH | SCORES | VALUES |
| COMMA | FOR | MATCH | SCORES | VARIABLE |
| COMMA | FROM | MAX | SELECT | VARIABLE |
| COMP | FROM | MAX | SELECT | VGROUPS |
| COMP | GE | METRIC | SEMI | VGROUPS |
| CONCAT | GE | METRIC | SEMI | VIEW |
| CONCAT | GLOB | METRICS | SET | VIEW |
| CONFIGS | GLOB | METRICS | SET | WAVG |
| CONFIGS | GRANTS | MIN | SHOW | WAVG |
| CONFLICT | GRANTS | MIN | SHOW | WHERE |
| CONFLICT | GROUP | MINUS | SLASH | WHERE |
| CONNECTION | | | | |
documentation20/cn/12.taos-sql/docs.md
浏览文件 @
5d398719
# TAOS SQL
# TAOS SQL
本文档说明
TAOS SQL支持的语法规则、主要查询功能、支持的SQL查询函数,以及常用技巧等内容。阅读本文档需要读者具有基本的SQL
语言的基础。
本文档说明
TAOS SQL 支持的语法规则、主要查询功能、支持的 SQL 查询函数,以及常用技巧等内容。阅读本文档需要读者具有基本的 SQL
语言的基础。
TAOS SQL
是用户对TDengine进行数据写入和查询的主要工具。TAOS SQL为了便于用户快速上手,在一定程度上提供类似于标准SQL类似的风格和模式。严格意义上,TAOS SQL并不是也不试图提供SQL标准的语法。此外,由于TDengine针对的时序性结构化数据不提供删除功能,因此在TAO SQL
中不提供数据删除的相关功能。
TAOS SQL
是用户对 TDengine 进行数据写入和查询的主要工具。TAOS SQL 为了便于用户快速上手,在一定程度上提供类似于标准 SQL 类似的风格和模式。严格意义上,TAOS SQL 并不是也不试图提供 SQL 标准的语法。此外,由于 TDengine 针对的时序性结构化数据不提供删除功能,因此在 TAO SQL
中不提供数据删除的相关功能。
本章节SQL语法遵循如下约定:
TAOS SQL 不支持关键字的缩写,例如 DESCRIBE 不能缩写为 DESC。
-
<
>
里的内容是用户需要输入的,但不要输入
<>
本身
本章节 SQL 语法遵循如下约定:
-
[ ]表示内容为可选项,但不能输入[]本身
-
| 表示多选一,选择其中一个即可,但不能输入|本身
-
<
>
里的内容是用户需要输入的,但不要输入
<>
本身
-
[ ] 表示内容为可选项,但不能输入 [] 本身
-
| 表示多选一,选择其中一个即可,但不能输入 | 本身
-
… 表示前面的项可重复多个
-
… 表示前面的项可重复多个
为更好地说明
SQL
语法的规则及其特点,本文假设存在一个数据集。以智能电表(meters)为例,假设每个智能电表采集电流、电压、相位三个量。其建模如下:
为更好地说明
SQL
语法的规则及其特点,本文假设存在一个数据集。以智能电表(meters)为例,假设每个智能电表采集电流、电压、相位三个量。其建模如下:
```
mysql
```
mysql
taos> DESCRIBE meters;
taos> DESCRIBE meters;
Field | Type | Length | Note |
Field | Type | Length | Note |
...
@@ -23,7 +25,7 @@ taos> DESCRIBE meters;
...
@@ -23,7 +25,7 @@ taos> DESCRIBE meters;
location | BINARY | 64 | TAG |
location | BINARY | 64 | TAG |
groupid | INT | 4 | TAG |
groupid | INT | 4 | TAG |
```
```
数据集包含
4个智能电表的数据,按照TDengine的建模规则,对应4
个子表,其名称分别是 d1001, d1002, d1003, d1004。
数据集包含
4 个智能电表的数据,按照 TDengine 的建模规则,对应 4
个子表,其名称分别是 d1001, d1002, d1003, d1004。
## <a class="anchor" id="data-type"></a>支持的数据类型
## <a class="anchor" id="data-type"></a>支持的数据类型
...
@@ -142,15 +144,15 @@ TDengine缺省的时间戳是毫秒精度,但通过修改配置参数enableMic
...
@@ -142,15 +144,15 @@ TDengine缺省的时间戳是毫秒精度,但通过修改配置参数enableMic
```
```
说明:
说明:
1) 表的第一个字段必须是TIMESTAMP,并且系统自动将其设为主键;
1) 表的第一个字段必须是
TIMESTAMP,并且系统自动将其设为主键;
2) 表名最大长度为192;
2) 表名最大长度为
192;
3) 表的每行长度不能超过
16k个字符;
3) 表的每行长度不能超过
16k 个字符;(注意:每个 BINARY/NCHAR 类型的列还会额外占用 2 个字节的存储位置)
4) 子表名只能由字母、数字和下划线组成,且不能以数字开头
4) 子表名只能由字母、数字和下划线组成,且不能以数字开头
5) 使用数据类型
binary或nchar,需指定其最长的字节数,如binary(20),表示20
字节;
5) 使用数据类型
binary 或 nchar,需指定其最长的字节数,如 binary(20),表示 20
字节;
-
**以超级表为模板创建数据表**
-
**以超级表为模板创建数据表**
...
@@ -402,8 +404,8 @@ SELECT select_expr [, select_expr ...]
...
@@ -402,8 +404,8 @@ SELECT select_expr [, select_expr ...]
FROM {tb_name_list}
FROM {tb_name_list}
[WHERE where_condition]
[WHERE where_condition]
[INTERVAL (interval_val [, interval_offset])]
[INTERVAL (interval_val [, interval_offset])]
[SLIDING sliding_val]
[FILL fill_val]
[FILL fill_val]
[SLIDING fill_val]
[GROUP BY col_list]
[GROUP BY col_list]
[ORDER BY col_list { DESC | ASC }]
[ORDER BY col_list { DESC | ASC }]
[SLIMIT limit_val [, SOFFSET offset_val]]
[SLIMIT limit_val [, SOFFSET offset_val]]
...
@@ -619,10 +621,11 @@ taos> SELECT COUNT(tbname) FROM meters WHERE groupId > 2;
...
@@ -619,10 +621,11 @@ taos> SELECT COUNT(tbname) FROM meters WHERE groupId > 2;
Query OK, 1 row(s) in set (0.001091s)
Query OK, 1 row(s) in set (0.001091s)
```
```
- 可以使用* 返回所有列,或指定列名。可以对数字列进行四则运算,可以给输出的列取列名
- 可以使用 * 返回所有列,或指定列名。可以对数字列进行四则运算,可以给输出的列取列名
- where语句可以使用各种逻辑判断来过滤数字值,或使用通配符来过滤字符串
- WHERE 语句可以使用各种逻辑判断来过滤数字值,或使用通配符来过滤字符串
- 输出结果缺省按首列时间戳升序排序,但可以指定按降序排序(_c0指首列时间戳)。使用ORDER BY对其他字段进行排序为非法操作。
- 输出结果缺省按首列时间戳升序排序,但可以指定按降序排序( _c0 指首列时间戳)。使用 ORDER BY 对其他字段进行排序为非法操作。
- 参数LIMIT控制输出条数,OFFSET指定从第几条开始输出。LIMIT/OFFSET对结果集的执行顺序在ORDER BY之后。
- 参数 LIMIT 控制输出条数,OFFSET 指定从第几条开始输出。LIMIT/OFFSET 对结果集的执行顺序在 ORDER BY 之后。
- 参数 SLIMIT 控制由 GROUP BY 指令划分的每个分组中的输出条数。
- 通过”>>"输出结果可以导出到指定文件
- 通过”>>"输出结果可以导出到指定文件
### 支持的条件过滤操作
### 支持的条件过滤操作
...
@@ -1162,17 +1165,20 @@ TDengine支持按时间段进行聚合,可以将表中数据按照时间段进
...
@@ -1162,17 +1165,20 @@ TDengine支持按时间段进行聚合,可以将表中数据按照时间段进
SELECT function_list FROM tb_name
SELECT function_list FROM tb_name
[WHERE where_condition]
[WHERE where_condition]
INTERVAL (interval [, offset])
INTERVAL (interval [, offset])
[SLIDING sliding]
[FILL ({NONE | VALUE | PREV | NULL | LINEAR})]
[FILL ({NONE | VALUE | PREV | NULL | LINEAR})]
SELECT function_list FROM stb_name
SELECT function_list FROM stb_name
[WHERE where_condition]
[WHERE where_condition]
INTERVAL (interval [, offset])
INTERVAL (interval [, offset])
[SLIDING sliding]
[FILL ({ VALUE | PREV | NULL | LINEAR})]
[FILL ({ VALUE | PREV | NULL | LINEAR})]
[GROUP BY tags]
[GROUP BY tags]
```
```
- 聚合时间段的长度由关键词INTERVAL指定,最短时间间隔10毫秒(10a),并且支持偏移(偏移必须小于间隔)。聚合查询中,能够同时执行的聚合和选择函数仅限于单个输出的函数:count、avg、sum 、stddev、leastsquares、percentile、min、max、first、last,不能使用具有多行输出结果的函数(例如:top、bottom、diff以及四则运算)。
- 聚合时间段的长度由关键词INTERVAL指定,最短时间间隔10毫秒(10a),并且支持偏移(偏移必须小于间隔)。聚合查询中,能够同时执行的聚合和选择函数仅限于单个输出的函数:count、avg、sum 、stddev、leastsquares、percentile、min、max、first、last,不能使用具有多行输出结果的函数(例如:top、bottom、diff以及四则运算)。
- WHERE语句可以指定查询的起止时间和其他过滤条件
- WHERE语句可以指定查询的起止时间和其他过滤条件
- SLIDING语句用于指定聚合时间段的前向增量
- FILL语句指定某一时间区间数据缺失的情况下的填充模式。填充模式包括以下几种:
- FILL语句指定某一时间区间数据缺失的情况下的填充模式。填充模式包括以下几种:
* 不进行填充:NONE(默认填充模式)。
* 不进行填充:NONE(默认填充模式)。
* VALUE填充:固定值填充,此时需要指定填充的数值。例如:fill(value, 1.23)。
* VALUE填充:固定值填充,此时需要指定填充的数值。例如:fill(value, 1.23)。
...
@@ -1184,6 +1190,8 @@ SELECT function_list FROM stb_name
...
@@ -1184,6 +1190,8 @@ SELECT function_list FROM stb_name
2. 在时间维度聚合中,返回的结果中时间序列严格单调递增。
2. 在时间维度聚合中,返回的结果中时间序列严格单调递增。
3. 如果查询对象是超级表,则聚合函数会作用于该超级表下满足值过滤条件的所有表的数据。如果查询中没有使用group by语句,则返回的结果按照时间序列严格单调递增;如果查询中使用了group by语句分组,则返回结果中每个group内不按照时间序列严格单调递增。
3. 如果查询对象是超级表,则聚合函数会作用于该超级表下满足值过滤条件的所有表的数据。如果查询中没有使用group by语句,则返回的结果按照时间序列严格单调递增;如果查询中使用了group by语句分组,则返回结果中每个group内不按照时间序列严格单调递增。
时间聚合也常被用于连续查询场景,可以参考文档 [连续查询(Continuous Query)](https://www.taosdata.com/cn/documentation/advanced-features#continuous-query)。
**示例:** 智能电表的建表语句如下:
**示例:** 智能电表的建表语句如下:
```
mysql
```
mysql
...
@@ -1202,11 +1210,11 @@ SELECT AVG(current), MAX(current), LEASTSQUARES(current, start_val, step_val), P
...
@@ -1202,11 +1210,11 @@ SELECT AVG(current), MAX(current), LEASTSQUARES(current, start_val, step_val), P
## <a class="anchor" id="limitation"></a>TAOS SQL 边界限制
## <a class="anchor" id="limitation"></a>TAOS SQL 边界限制
- 数据库名最大长度为32
- 数据库名最大长度为
32
- 表名最大长度为
192,每行数据最大长度16k个字符
- 表名最大长度为
192,每行数据最大长度 16k 个字符(注意:数据行内每个 BINARY/NCHAR 类型的列还会额外占用 2 个字节的存储位置)
- 列名最大长度为
64,最多允许1024列,最少需要2
列,第一列必须是时间戳
- 列名最大长度为
64,最多允许 1024 列,最少需要 2
列,第一列必须是时间戳
- 标签最多允许
128个,可以1个,标签总长度不超过16k
个字符
- 标签最多允许
128 个,可以 1 个,标签总长度不超过 16k
个字符
- SQL
语句最大长度65480个字符,但可通过系统配置参数maxSQLLength修改,最长可配置为
1M
- SQL
语句最大长度 65480 个字符,但可通过系统配置参数 maxSQLLength 修改,最长可配置为
1M
- 库的数目,超级表的数目、表的数目,系统不做限制,仅受系统资源限制
- 库的数目,超级表的数目、表的数目,系统不做限制,仅受系统资源限制
## TAOS SQL其他约定
## TAOS SQL其他约定
...
@@ -1221,4 +1229,5 @@ TAOS SQL支持表之间按主键时间戳来join两张表的列,暂不支持
...
@@ -1221,4 +1229,5 @@ TAOS SQL支持表之间按主键时间戳来join两张表的列,暂不支持
**is not null与不为空的表达式适用范围**
**is not null与不为空的表达式适用范围**
is not null支持所有类型的列。不为空的表达式为 <>"",仅对非数值类型的列适用。
is not null支持所有类型的列。不为空的表达式为 <>"",仅对非数值类型的列适用。
\ No newline at end of file
documentation20/cn/13.faq/docs.md
浏览文件 @
5d398719
...
@@ -92,6 +92,8 @@ TDengine 目前尚不支持删除功能,未来根据用户需求可能会支
...
@@ -92,6 +92,8 @@ TDengine 目前尚不支持删除功能,未来根据用户需求可能会支
从 2.0.8.0 开始,TDengine 支持更新已经写入数据的功能。使用更新功能需要在创建数据库时使用 UPDATE 1 参数,之后可以使用 INSERT INTO 命令更新已经写入的相同时间戳数据。UPDATE 参数不支持 ALTER DATABASE 命令修改。没有使用 UPDATE 1 参数创建的数据库,写入相同时间戳的数据不会修改之前的数据,也不会报错。
从 2.0.8.0 开始,TDengine 支持更新已经写入数据的功能。使用更新功能需要在创建数据库时使用 UPDATE 1 参数,之后可以使用 INSERT INTO 命令更新已经写入的相同时间戳数据。UPDATE 参数不支持 ALTER DATABASE 命令修改。没有使用 UPDATE 1 参数创建的数据库,写入相同时间戳的数据不会修改之前的数据,也不会报错。
另需注意,在 UPDATE 设置为 0 时,后发送的相同时间戳的数据会被直接丢弃,但并不会报错,而且仍然会被计入 affected rows (所以不能利用 INSERT 指令的返回信息进行时间戳查重)。这样设计的主要原因是,TDengine 把写入的数据看做一个数据流,无论时间戳是否出现冲突,TDengine 都认为产生数据的原始设备真实地产生了这样的数据。UPDATE 参数只是控制这样的流数据在进行持久化时要怎样处理——UPDATE 为 0 时,表示先写入的数据覆盖后写入的数据;而 UPDATE 为 1 时,表示后写入的数据覆盖先写入的数据。这种覆盖关系如何选择,取决于对数据的后续使用和统计中,希望以先还是后生成的数据为准。
## 10. 我怎么创建超过1024列的表?
## 10. 我怎么创建超过1024列的表?
使用2.0及其以上版本,默认支持1024列;2.0之前的版本,TDengine最大允许创建250列的表。但是如果确实超过限值,建议按照数据特性,逻辑地将这个宽表分解成几个小表。
使用2.0及其以上版本,默认支持1024列;2.0之前的版本,TDengine最大允许创建250列的表。但是如果确实超过限值,建议按照数据特性,逻辑地将这个宽表分解成几个小表。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录