From 413c4b3517406ab3bd33e69fa7dec92ca8e9e0c9 Mon Sep 17 00:00:00 2001
From: xy720
Date: Mon, 5 Aug 2019 17:07:45 +0800
Subject: [PATCH 1/8] Help document collation (integration of help and
documentation documents)
---
docs/Makefile | 9 +-
.../aggregate-functions/group_concat.md | 21 --
.../cn/sql-reference/sql-functions/cast.md | 6 +-
.../Account Management/help.md | 0
.../Administration/admin_repair_stmt.md | 0
.../Administration/admin_show_stmt.md | 0
.../Administration/admin_stmt.md | 0
.../Administration/small_files.md | 0
.../{ => Data Definition}/create-function.md | 0
.../Data Definition/ddl_stmt.md | 41 ---
.../{ => Data Definition}/drop-function.md | 0
.../{ => Data Definition}/show-function.md | 0
.../Data Manipulation/broker_load.md | 5 +-
.../{ => Data Manipulation}/insert.md | 12 +
.../Data Manipulation/manipulation_stmt.md | 11 +-
.../Data Manipulation/routine_load.md | 2 +-
.../Data Manipulation/streaming.md | 0
.../sql-statements}/Data Types/help.md | 0
.../sql-statements/Utility/util_stmt.md | 11 +
.../Functions/Date and Time Functions/help.md | 310 ------------------
docs/help/Contents/Utility/util_stmt.md | 13 -
docs/script/keyword.sh | 68 ++++
docs/script/merge.sh | 164 +++++++++
docs/script/split.sh | 73 +++++
24 files changed, 344 insertions(+), 402 deletions(-)
delete mode 100755 docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/group_concat.md
rename docs/{help/Contents => documentation/cn/sql-reference/sql-statements}/Account Management/help.md (100%)
rename docs/{help/Contents => documentation/cn/sql-reference/sql-statements}/Administration/admin_repair_stmt.md (100%)
rename docs/{help/Contents => documentation/cn/sql-reference/sql-statements}/Administration/admin_show_stmt.md (100%)
rename docs/{help/Contents => documentation/cn/sql-reference/sql-statements}/Administration/admin_stmt.md (100%)
rename docs/{help/Contents => documentation/cn/sql-reference/sql-statements}/Administration/small_files.md (100%)
rename docs/documentation/cn/sql-reference/sql-statements/{ => Data Definition}/create-function.md (100%)
rename docs/{help/Contents => documentation/cn/sql-reference/sql-statements}/Data Definition/ddl_stmt.md (97%)
rename docs/documentation/cn/sql-reference/sql-statements/{ => Data Definition}/drop-function.md (100%)
rename docs/documentation/cn/sql-reference/sql-statements/{ => Data Definition}/show-function.md (100%)
rename docs/{help/Contents => documentation/cn/sql-reference/sql-statements}/Data Manipulation/broker_load.md (98%)
rename docs/documentation/cn/sql-reference/sql-statements/{ => Data Manipulation}/insert.md (79%)
rename docs/{help/Contents => documentation/cn/sql-reference/sql-statements}/Data Manipulation/manipulation_stmt.md (98%)
rename docs/{help/Contents => documentation/cn/sql-reference/sql-statements}/Data Manipulation/routine_load.md (99%)
rename docs/{help/Contents => documentation/cn/sql-reference/sql-statements}/Data Manipulation/streaming.md (100%)
rename docs/{help/Contents => documentation/cn/sql-reference/sql-statements}/Data Types/help.md (100%)
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Utility/util_stmt.md
delete mode 100644 docs/help/Contents/Functions/Date and Time Functions/help.md
delete mode 100644 docs/help/Contents/Utility/util_stmt.md
create mode 100755 docs/script/keyword.sh
create mode 100755 docs/script/merge.sh
create mode 100755 docs/script/split.sh
diff --git a/docs/Makefile b/docs/Makefile
index d337c2091bdeeb..bad7301708cc65 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -20,17 +20,22 @@
#
BUILD_DIR = ${CURDIR}/build
+HELP_DIR = ${CURDIR}/contents
all: zip_help
.PHONY: all
${BUILD_DIR}:
mkdir -p ${BUILD_DIR}
+${HELP_DIR}:
+ mkdir -p ${HELP_DIR}
# build help zip
HELP_OUTPUT = ${BUILD_DIR}/help-resource.zip
-${HELP_OUTPUT}: help | ${BUILD_DIR}
- zip -r $@ $<
+${HELP_OUTPUT}: documentation/cn/sql-reference ${BUILD_DIR} ${HELP_DIR}
+ cp -r $* ${HELP_DIR} && cp script/*.sh ${HELP_DIR}
+ cd ${HELP_DIR} && sh split.sh && sh merge.sh && sh keyword.sh && rm split.sh && rm merge.sh && rm keyword.sh && cd -
+ zip -r $@ contents && rm -rf contents
.PHONY: zip_help
zip_help: ${HELP_OUTPUT}
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/group_concat.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/group_concat.md
deleted file mode 100755
index c326dbb10a9651..00000000000000
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/group_concat.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# GROUP_CONCAT
-
-## Syntax
-
-`GROUP_CONCAT(expr)`
-
-## Description
-
-用于返回选中字段字符串连接起来的新字符串
-
-使用逗号连接
-
-## Examples
-```
-MySQL> select group_concat(`query_id`) from log_statis group by datetime;
-+---------------------------------------------------------------------------------------------------------+
-| group_concat(`query_id`) |
-+---------------------------------------------------------------------------------------------------------+
-| 445f5875f8854dfa:b9358d5cd86488a2, d5055534e6c04fa0:9b3f645913c4973c, a55801d0764d47fe:a98f3710649dc558 |
-+------------------------------------------------------------------------------------------------ --------+
-```
diff --git a/docs/documentation/cn/sql-reference/sql-functions/cast.md b/docs/documentation/cn/sql-reference/sql-functions/cast.md
index b9898a2f710693..3d07805522a28f 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/cast.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/cast.md
@@ -12,15 +12,15 @@ cast (input as type)
## BIGINT type
-### Syntax
+## Syntax
``` cast (input as BIGINT) ```
-### Description
+## Description
将当前列 input 转换为 BIGINT 类型
-### Examples
+## Examples
1. 转常量,或表中某列
diff --git a/docs/help/Contents/Account Management/help.md b/docs/documentation/cn/sql-reference/sql-statements/Account Management/help.md
similarity index 100%
rename from docs/help/Contents/Account Management/help.md
rename to docs/documentation/cn/sql-reference/sql-statements/Account Management/help.md
diff --git a/docs/help/Contents/Administration/admin_repair_stmt.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/admin_repair_stmt.md
similarity index 100%
rename from docs/help/Contents/Administration/admin_repair_stmt.md
rename to docs/documentation/cn/sql-reference/sql-statements/Administration/admin_repair_stmt.md
diff --git a/docs/help/Contents/Administration/admin_show_stmt.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/admin_show_stmt.md
similarity index 100%
rename from docs/help/Contents/Administration/admin_show_stmt.md
rename to docs/documentation/cn/sql-reference/sql-statements/Administration/admin_show_stmt.md
diff --git a/docs/help/Contents/Administration/admin_stmt.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/admin_stmt.md
similarity index 100%
rename from docs/help/Contents/Administration/admin_stmt.md
rename to docs/documentation/cn/sql-reference/sql-statements/Administration/admin_stmt.md
diff --git a/docs/help/Contents/Administration/small_files.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/small_files.md
similarity index 100%
rename from docs/help/Contents/Administration/small_files.md
rename to docs/documentation/cn/sql-reference/sql-statements/Administration/small_files.md
diff --git a/docs/documentation/cn/sql-reference/sql-statements/create-function.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/create-function.md
similarity index 100%
rename from docs/documentation/cn/sql-reference/sql-statements/create-function.md
rename to docs/documentation/cn/sql-reference/sql-statements/Data Definition/create-function.md
diff --git a/docs/help/Contents/Data Definition/ddl_stmt.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/ddl_stmt.md
similarity index 97%
rename from docs/help/Contents/Data Definition/ddl_stmt.md
rename to docs/documentation/cn/sql-reference/sql-statements/Data Definition/ddl_stmt.md
index e723d24348cc1f..f126b9b7b34b15 100644
--- a/docs/help/Contents/Data Definition/ddl_stmt.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/ddl_stmt.md
@@ -1109,44 +1109,3 @@
## keyword
COLOCATE, JOIN, CREATE TABLE
-
-# CREATE FUNCTION
-## description
- Used to create a UDF/UDAF/UDTF
- Syntax:
- CREATE [AGGREGATE] FUNCTION funcName (argType [, ...])
- RETURNS retType
- PROPERTIES (
- k1=v1 [, k2=v2]
- )
-
- valid PROPERTIES:
- "symbol": UDF's symbol, which Doris call this symbol's function to execute. MUST BE SET
- "object_file": UDF library's URL, Doris use it to download library. MUST BE SET
- "md5": when this property is set, Doris will check library's md5um against this value. This is a option
-
-## example
- 1. create a function "my_func", receive two int and return one int
- CREATE FUNCTION my_func (int, int) RETURNS int
- PROPERTIES ("symbol"="my_func_symbol", "object_file"="http://127.0.0.1/my_func.so")
- 2. create a variadic function "my_func"
- CREATE FUNCTION my_func (int, ...) RETURNS int
- PROPERTIES ("symbol"="my_func_symbol", "object_file"="http://127.0.0.1/my_func.so")
-
-## keyword
- CREATE, FUNCTION
-
-# DROP FUNCTION
-## description
- Used to drop a UDF/UDAF/UDTF
- Syntax:
- DROP FUNCTION funcName (argType [, ...])
-
-## example
- 1. drop a UDF whose name is my_func
- DROP FUNCTION my_func (int, int)
- 2. drop a variadic function
- DROP FUNCTION my_func (int, ...)
-
-## keyword
- DROP, FUNCTION
diff --git a/docs/documentation/cn/sql-reference/sql-statements/drop-function.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/drop-function.md
similarity index 100%
rename from docs/documentation/cn/sql-reference/sql-statements/drop-function.md
rename to docs/documentation/cn/sql-reference/sql-statements/Data Definition/drop-function.md
diff --git a/docs/documentation/cn/sql-reference/sql-statements/show-function.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/show-function.md
similarity index 100%
rename from docs/documentation/cn/sql-reference/sql-statements/show-function.md
rename to docs/documentation/cn/sql-reference/sql-statements/Data Definition/show-function.md
diff --git a/docs/help/Contents/Data Manipulation/broker_load.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/broker_load.md
similarity index 98%
rename from docs/help/Contents/Data Manipulation/broker_load.md
rename to docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/broker_load.md
index 3f83280c16da4d..a40c217ee8d68f 100644
--- a/docs/help/Contents/Data Manipulation/broker_load.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/broker_load.md
@@ -2,7 +2,7 @@
## description
Broker load 通过随 Palo 集群一同部署的 broker 进行,访问对应数据源的数据,进行数据导入。
- 可以通过 show broker 命令查看已经部署的 broker。
+ 不同的数据源需要部署不同的 broker 进程。可以通过 show broker 命令查看已经部署的 broker。
目前支持以下4种数据源:
1. Baidu HDFS:百度内部的 hdfs,仅限于百度内部使用。
@@ -110,7 +110,7 @@
3. broker_name
- 所使用的 broker 名称,可以通过 show broker 命令查看。
+ 所使用的 broker 名称,可以通过 show broker 命令查看。不同的数据源需使用对应的 broker。
4. broker_properties
@@ -161,7 +161,6 @@
max_filter_ratio:最大容忍可过滤(数据不规范等原因)的数据比例。默认零容忍。
exec_mem_limit: 设置导入使用的内存上限。默认为2G,单位字节。这里是指单个 BE 节点的内存上限。
一个导入可能分布于多个BE。我们假设 1GB 数据在单个节点处理需要最大5GB内存。那么假设1GB文件分布在2个节点处理,那么理论上,每个节点需要内存为2.5GB。则该参数可以设置为 2684354560,即2.5GB
- strict mode: 是否对数据进行严格限制。默认为true。
5. 导入数据格式样例
diff --git a/docs/documentation/cn/sql-reference/sql-statements/insert.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/insert.md
similarity index 79%
rename from docs/documentation/cn/sql-reference/sql-statements/insert.md
rename to docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/insert.md
index 6f4cf4b24d4f20..b610e475f2b189 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/insert.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/insert.md
@@ -10,6 +10,18 @@ INSERT INTO table_name
{ VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }
```
+## Description
+
+INSERT 向一张表里插入数据。用户可以通过 VALUES 语法插入一条或者多条数据,或者通过一个查询来插入0条或者多条数据。
+
+partition是目标分区,如果指定目标分区,则只会导入符合目标分区的数据。如果没有指定,则默认值为这张表的所有分区。
+
+column是目标列,可以以任意的顺序存在。如果没有指定目标列,那么默认值是这张表的所有列。
+
+如果表中的某个列没有存在目标列中,那么这个列需要有默认值,否则 INSERT 就会执行失败。
+
+如果表达式的类型与目标列的类型不一致,那么会调用隐式类型转化,如果不能够进行转化,那么 INSERT 语句会报语法解析错误。
+
## Parameters
> tablet_name: 导入数据的目的表。可以是 `db_name.table_name` 形式
diff --git a/docs/help/Contents/Data Manipulation/manipulation_stmt.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/manipulation_stmt.md
similarity index 98%
rename from docs/help/Contents/Data Manipulation/manipulation_stmt.md
rename to docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/manipulation_stmt.md
index cc55e5f25602a9..3e84f50fd989ee 100644
--- a/docs/help/Contents/Data Manipulation/manipulation_stmt.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/manipulation_stmt.md
@@ -622,7 +622,7 @@
[STATE = ["PENDING"|"ETL"|"LOADING"|"FINISHED"|"CANCELLED"|]]
]
[ORDER BY ...]
- [LIMIT limit][OFFSET offset];
+ [LIMIT limit];
说明:
1) 如果不指定 db_name,使用当前默认db
@@ -631,8 +631,7 @@
4) 如果指定了 STATE,则匹配 LOAD 状态
5) 可以使用 ORDER BY 对任意列组合进行排序
6) 如果指定了 LIMIT,则显示 limit 条匹配记录。否则全部显示
- 7) 如果指定了 OFFSET,则从偏移量offset开始显示查询结果。默认情况下偏移量为0。
- 8) 如果是使用 broker/mini load,则 URL 列中的连接可以使用以下命令查看:
+ 7) 如果是使用 broker/mini load,则 URL 列中的连接可以使用以下命令查看:
SHOW LOAD WARNINGS ON 'url'
@@ -648,12 +647,8 @@
4. 展示指定 db 的导入任务,指定 label 为 "load_example_db_20140102" ,state 为 "loading", 并按 LoadStartTime 降序排序
SHOW LOAD FROM example_db WHERE LABEL = "load_example_db_20140102" AND STATE = "loading" ORDER BY LoadStartTime DESC;
-
- 5. 展示指定 db 的导入任务 并按 LoadStartTime 降序排序,并从偏移量5开始显示10条查询结果
- SHOW LOAD FROM example_db ORDER BY LoadStartTime DESC limit 5,10;
- SHOW LOAD FROM example_db ORDER BY LoadStartTime DESC limit 10 offset 5;
- 6. 小批量导入是查看导入状态的命令
+ 5. 小批量导入是查看导入状态的命令
curl --location-trusted -u {user}:{passwd} http://{hostname}:{port}/api/{database}/_load_info?label={labelname}
## keyword
diff --git a/docs/help/Contents/Data Manipulation/routine_load.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/routine_load.md
similarity index 99%
rename from docs/help/Contents/Data Manipulation/routine_load.md
rename to docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/routine_load.md
index 9dcd7d687cc651..4fd4568eddaa47 100644
--- a/docs/help/Contents/Data Manipulation/routine_load.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/routine_load.md
@@ -439,5 +439,5 @@
SHOW ROUTINE LOAD TASK WHERE JobName = "test1";
-# keyword
+## keyword
SHOW,ROUTINE,LOAD,TASK
diff --git a/docs/help/Contents/Data Manipulation/streaming.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/streaming.md
similarity index 100%
rename from docs/help/Contents/Data Manipulation/streaming.md
rename to docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/streaming.md
diff --git a/docs/help/Contents/Data Types/help.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/help.md
similarity index 100%
rename from docs/help/Contents/Data Types/help.md
rename to docs/documentation/cn/sql-reference/sql-statements/Data Types/help.md
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Utility/util_stmt.md b/docs/documentation/cn/sql-reference/sql-statements/Utility/util_stmt.md
new file mode 100644
index 00000000000000..8154a9cdee1f9a
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Utility/util_stmt.md
@@ -0,0 +1,11 @@
+# DESCRIBE
+## description
+ 该语�~O��~T��~N�~U示�~L~G�~Z table �~Z~D schema 信�~A�
+ 语�~U�~Z
+ DESC[RIBE] [db_name.]table_name [ALL];
+
+ 说�~X~N�~Z
+ �~B�~^~\�~L~G�~Z ALL�~L�~H~Y�~X�示该 table �~Z~D�~I~@�~\~I index �~Z~D schema
+
+## keyword
+ DESCRIBE,DESC
diff --git a/docs/help/Contents/Functions/Date and Time Functions/help.md b/docs/help/Contents/Functions/Date and Time Functions/help.md
deleted file mode 100644
index dedb8ca2616e91..00000000000000
--- a/docs/help/Contents/Functions/Date and Time Functions/help.md
+++ /dev/null
@@ -1,310 +0,0 @@
-# unix_timestamp
-## description
-Syntax:
-UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)
-
-将Date或者Datetime类型转化为unix时间戳
-如果没有参数,则是将当前的时间转化为时间戳
-参数需要是Date或者Datetime类型
-
-## example
-mysql> SELECT UNIX_TIMESTAMP();
- -> 1196440210
-mysql> SELECT UNIX_TIMESTAMP('2007-11-30 10:30:19');
- -> 1196418619
-
-# from_unixtime
-## description
-Syntax:
- FROM_UNIXTIME(int unix_timestamp[, string string_format])
-
-将unix时间戳转化位对应的time格式,返回的格式由string_format指定
-默认为yyyy-MM-dd HH:mm:ss
-传入的是整形,返回的是字符串类型
-目前string_format只支持两种类型的格式:yyyy-MM-dd,yyyy-MM-dd HH:mm:ss
-其余string_format格式是非法的,返回NULL
-
-## example
-mysql> SELECT FROM_UNIXTIME(1196440219);
- -> '2007-12-01 00:30:19'
-
-mysql> SELECT FROM_UNIXTIME(1196440219, 'yyyy-MM-dd');
- -> '2007-12-01'
-
-mysql> SELECT FROM_UNIXTIME(1196440219, 'yyyy-MM-dd HH:mm:ss');
- -> '2007-12-01 00:30:19'
-
-# year
-## description
-Syntax:
-YEAR(date)
-
-返回date类型的year部分,范围从1000-9999
-参数为Date或者Datetime类型
-## example
-mysql> SELECT YEAR('1987-01-01');
- -> 1987
-
-# month
-## description
-Syntax:
-MONTH(date)
-
-返回时间类型中的月份信息,范围是1, 12
-参数为Date或者Datetime类型
-
-## example
-mysql> SELECT MONTH('1987-01-02');
- -> 01
-
-# day
-## description
-Syntax:
-DAY(date)
-
-与DAYOFMONTH是同义词,请`help dayofmonth`
-
-# dayofmonth
-## description
-Syntax:
-DAYOFMONTH(date)
-
-获得日期中的天信息,返回值范围从1-31。
-需要传入date类型
-
-## example
-mysql> SELECT DAYOFMONTH('1987-01-02');
- -> 2
-
-# dayofyear
-## description
-Syntax:
-DAYOFYEAR(date)
-
-获得日期中对应当年中的哪一天。
-输入值为date类型
-
-## example
-mysql> SELECT DAYOFYEAR('2007-02-03');
- -> 34
-
-# weekofyear
-## description
-Syntax:
-WEEKOFYEAR(date)
-
-获得一年中的第几周
-输入值为date类型
-
-## example
-mysql> SELECT WEEKOFYEAR('2008-02-20');
- -> 8
-
-# hour
-## description
-Syntax:
-HOUR(date)
-
-获得时间中对应的小时信息
-这里Palo跟MySQL不太一样,因为MySQL是支持Time类型的
-Palo没有Time类型,所以输入的内容是Date或者Datetime。
-
-## example
-mysql> select hour("2000-01-02 12:34:56");
- -> 12
-
-# minute
-## description
-Syntax:
-MINUTE(date)
-
-获得日期中的分钟信息
-这里Palo跟MySQL不太一样,因为MySQL是支持Time类型的
-Palo没有Time类型,所以输入的内容是Date或者Datetime。
-
-## example
-mysql> SELECT MINUTE("2000-01-02 12:34:56");
- -> 34
-
-# second
-## description
-Syntax:
-SECOND(date)
-
-获得时间中的秒信息
-这里Palo跟MySQL不太一样,因为MySQL是支持Time类型的
-Palo没有Time类型,所以输入的内容是Date或者Datetime。
-## example
-mysql> SELECT SECOND("2000-01-02 12:34:56");
- -> 56
-
-# now
-## description
-Syntax:
-NOW()
-
-获得当前的时间,以Datetime类型返回
-
-## example
-mysql> SELECT NOW();
- -> '2007-12-15 23:50:26'
-
-# current_timestamp
-## description
-Syntax:
-CURRENT_TIMESTAMP()
-
-与NOW()是同义词
-
-# datediff
-## description
-Syntax:
-DATEDIFF(expr1,expr2)
-
-计算expr1 - expr2,结果精确到天。
-要求传入的两个值需要是datetime类型。
-
-## example
-mysql> SELECT DATEDIFF(CAST ('2007-12-31 23:59:59' AS DATETIME),CAST ('2007-12-30' AS DATETIME));
- -> 1
-mysql> SELECT DATEDIFF(CAST('2010-11-30 23:59:59' AS DATETIME), CAST('2010-12-31' AS DATETIME));
- -> -31
-
-# date_add
-## description
-Syntax:
-DATE_ADD(date,INTERVAL expr unit)
-
-对时间类型进行加法运算
-支持的time unit包括
-YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
-
-## example
-mysql> DATE_ADD(date,INTERVAL expr unit)
- -> 1987-01-02 00:00:00
-
-# date_sub
-## description
-Syntax:
-DATE_SUB(date,INTERVAL expr unit)
-
-与DATE_ADD相反,对时间类型进行减法运算
-支持的time unit包括
-YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
-
-## example
-mysql> DATE_SUB(date,INTERVAL expr unit)
- -> 1986-12-31 00:00:00
-
-# date_format
-## description
-Syntax:
-DATE_FORMAT(date, format)
-
-将日期类型按照format的类型转化位字符串,
-当前支持最大128字节的字符串,如果返回值长度超过128,则返回NULL
-format的含义如下:
-%a Abbreviated weekday name (Sun..Sat)
-%b Abbreviated month name (Jan..Dec)
-%c Month, numeric (0..12)
-%D Day of the month with English suffix (0th, 1st, 2nd, 3rd, …)
-%d Day of the month, numeric (00..31)
-%e Day of the month, numeric (0..31)
-%f Microseconds (000000..999999)
-%H Hour (00..23)
-%h Hour (01..12)
-%I Hour (01..12)
-%i Minutes, numeric (00..59)
-%j Day of year (001..366)
-%k Hour (0..23)
-%l Hour (1..12)
-%M Month name (January..December)
-%m Month, numeric (00..12)
-%p AM or PM
-%r Time, 12-hour (hh:mm:ss followed by AM or PM)
-%S Seconds (00..59)
-%s Seconds (00..59)
-%T Time, 24-hour (hh:mm:ss)
-%U Week (00..53), where Sunday is the first day of the week; WEEK() mode 0
-%u Week (00..53), where Monday is the first day of the week; WEEK() mode 1
-%V Week (01..53), where Sunday is the first day of the week; WEEK() mode 2; used with %X
-%v Week (01..53), where Monday is the first day of the week; WEEK() mode 3; used with %x
-%W Weekday name (Sunday..Saturday)
-%w Day of the week (0=Sunday..6=Saturday)
-%X Year for the week where Sunday is the first day of the week, numeric, four digits; used with %V
-%x Year for the week, where Monday is the first day of the week, numeric, four digits; used with %v
-%Y Year, numeric, four digits
-%y Year, numeric (two digits)
-%% A literal “%” character
-%x x, for any “x” not listed above
-
-## example
-mysql> SELECT DATE_FORMAT('2009-10-04 22:23:00', '%W %M %Y');
- -> 'Sunday October 2009'
-mysql> SELECT DATE_FORMAT('2007-10-04 22:23:00', '%H:%i:%s');
- -> '22:23:00'
-mysql> SELECT DATE_FORMAT('1900-10-04 22:23:00', '%D %y %a %d %m %b %j');
- -> '4th 00 Thu 04 10 Oct 277'
-mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%H %k %I %r %T %S %w');
- -> '22 22 10 10:23:00 PM 22:23:00 00 6'
-mysql> SELECT DATE_FORMAT('1999-01-01', '%X %V');
- -> '1998 52'
-mysql> SELECT DATE_FORMAT('2006-06-01', '%d');
- -> '01'
-
-# from_days
-## description
-Syntax:
-FROM_DAYS(N)
-通过距离0000-01-01日的天数计算出哪一天
-
-## example
-mysql> SELECT FROM_DAYS(730669);
- -> '2007-07-03'
-
-# to_days
-## description
-Syntax:
-TO_DAYS(date)
-返回date距离0000-01-01的天数
-
-## example
-mysql> SELECT TO_DAYS(950501);
- -> 728779
-mysql> SELECT TO_DAYS('2007-10-07');
- -> 733321
-
-# str_to_date
-## description
-Syntax:
-STR_TO_DATE(str, format)
-通过format指定的方式将str转化为DATE类型,如果转化结果不对返回NULL
-支持的format格式与date_format一致
-
-## example
-mysql> SELECT STR_TO_DATE('2014-12-21 12:34:56', '%Y-%m-%d %H:%i:%s');
- -> 2014-12-21 12:34:56
-mysql> SELECT STR_TO_DATE('200442 Monday', '%X%V %W');
- -> 2004-10-18
-
-# monthname
-## description
-Syntax:
-MONTHNAME(DATE)
-
-返回日期对应的月份名字
-
-## example
-mysql> SELECT MONTHNAME('2008-02-03');
- -> 'February'
-
-# monthname
-## description
-Syntax:
-MONTHNAME(DATE)
-
-返回日期对应的日期名字
-
-## example
-mysql> SELECT DAYNAME('2007-02-03');
- -> 'Saturday'
diff --git a/docs/help/Contents/Utility/util_stmt.md b/docs/help/Contents/Utility/util_stmt.md
deleted file mode 100644
index 2fbafe8295f9b0..00000000000000
--- a/docs/help/Contents/Utility/util_stmt.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# DESCRIBE
-## description
- 该语句用于展示指定 table 的 schema 信息
- 语法:
- DESC[RIBE] [db_name.]table_name [ALL];
-
- 说明:
- 如果指定 ALL,则显示该 table 的所有 index 的 schema
-
-## example
-
-## keyword
- DESCRIBE,DESC
\ No newline at end of file
diff --git a/docs/script/keyword.sh b/docs/script/keyword.sh
new file mode 100755
index 00000000000000..fa34211852746d
--- /dev/null
+++ b/docs/script/keyword.sh
@@ -0,0 +1,68 @@
+#!/bin/bash
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+#this shell adds keywords to MD files without keywords
+
+IFS=`echo -en "\n\b"`
+
+ROOTDIR=`dirname "$0"`
+ROOTDIR=`cd "$ROOT"; pwd`
+
+scandir() {
+ for file in `ls $*`; do
+ if [[ ! -d $*"/"$file ]]; then
+ if [[ $file == *".md" ]]; then
+ readfile $*"/"${file}
+ fi
+ else
+ scandir $*"/"${file}
+ fi
+ done
+}
+
+readfile() {
+ local file=$*
+ local topic=`cat $file | grep "^#[^#].*" | grep -o "[^# ]\+\( \+[^ ]\+\)*"`
+ local keywordNum=`cat $file | grep "^##[^#]*keyword[ ]*$" | wc -l`
+ if [[ $keywordNum != 0 || -z $topic ]]; then
+ return
+ fi
+ local SAVEIFS=$IFS
+ IFS=' '
+ local array=`echo $topic | tr '\`' ' ' | tr ',' ' '`
+ local keywords=
+ for keyword in ${array[*]}; do
+ keywords=$keywords","$keyword
+ done
+ array=`echo $array | tr '_' ' '`
+ for keyword in ${array[*]}; do
+ keywords=$keywords","$keyword
+ done
+ keywords=`echo ${keywords:1} | tr 'a-z' 'A-Z'`
+ IFS=$SAVEIFS
+ file=`echo $file | sed 's/[ \(\)]/\\\&/g'`
+ eval sed -i '"\$a ##keyword"' $file
+ eval sed -i '"\$a ${keywords}"' $file
+}
+
+main() {
+ scandir $ROOTDIR
+}
+
+main "$@"
+exit 0
diff --git a/docs/script/merge.sh b/docs/script/merge.sh
new file mode 100755
index 00000000000000..4fbdf6f9f99501
--- /dev/null
+++ b/docs/script/merge.sh
@@ -0,0 +1,164 @@
+#!/bin/bash
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+#run split.h first
+#this shell merges user-defined heads in the MD file into "description" head
+################ #################
+# #topic # # #topic #
+# # # #
+# ##syntax # # ##descrption #
+# somelines # # somelines #
+# # # #
+# ##descrption # # syntax #
+# somelines # ==> # somelines #
+# # # #
+# ##example # # parameter #
+# somelines # # somelines #
+# # # #
+# ##parameter # # ##example #
+# somelines # # somelines #
+# # # #
+################ #################
+
+IFS=`echo -en "\n\b"`
+
+ROOTDIR=`dirname "$0"`
+ROOTDIR=`cd "$ROOT"; pwd`
+
+keywords="
+examples
+example
+description
+keywords
+keyword
+url
+"
+
+matchKeyword(){
+ for keyword in ${keywords[*]}; do
+ if [[ "$1" == $keyword ]]; then
+ return 0
+ fi
+ done
+ return 1
+}
+
+merge(){
+ file=$*
+ sed -n '/^#[^#]/p' $file > ${ROOTDIR}/tempp
+ sed -n '/^<>TARGET<>/,/^<>END<>/p' $file >> ${ROOTDIR}/tempp
+ sed -n '/^>>>/,/^<<
> ${ROOTDIR}/tempp
+ sed -n '/^\^\^\^/,/^\$\$\$/p' $file >> ${ROOTDIR}/tempp
+ sed -i 's/^<>TARGET<>//;s/^<>END<>//;s/^>>>//;s/^<</;s/^\^\^\^//;s/^\$\$\$//' ${ROOTDIR}/tempp
+}
+
+scandir() {
+ for file in `ls $*`; do
+ if [[ ! -d $*"/"$file ]]; then
+ if [[ $file == *".md" ]]; then
+ readfile $*"/"${file}
+ fi
+ else
+ scandir $*"/"${file}
+ fi
+ done
+}
+
+readfile() {
+ local tempfile=${ROOTDIR}"/temp"
+ cp $* $tempfile
+
+ local row=0
+ local headlevel=0
+ local style=
+ local TotalRow=`wc -l temp | awk '{print $1}'`
+ sed -i 's/##[#]\+/##/' $tempfile
+ while read line; do
+ ((row++))
+
+ if [[ $row != $TotalRow && $line != "#"* ]]; then
+ continue
+ else
+ if [[ $headlevel == 2 ]]; then
+ case $style in
+ "match")
+ eval sed -i '"$(($row==$TotalRow?row:row-1))s/^/\$\$\$/"' $tempfile
+ ;;
+ "unmatch")
+ eval sed -i '"$(($row==$TotalRow?row:row-1))s/^/<<"' $tempfile
+ ;;
+ "description")
+ eval sed -i '"$(($row==$TotalRow?row:row-1))s/^/<>END<>/"' $tempfile
+ ;;
+ *)
+ echo "Internal error" ; exit 1
+ ;;
+ esac
+ fi
+
+ if [[ $row == $TotalRow && headlevel > 0 ]]; then
+ merge $tempfile
+ continue
+ fi
+
+ if [[ $line == "##"* ]]; then
+ headlevel=2
+ line=`echo ${line:2} | tr '[A-Z]' '[a-z]' | grep -o "[^ ]\+\( \+[^ ]\+\)*"`
+ if [[ $line == "description" ]]; then
+ eval sed -i '"${row}s/description/description/i"' $tempfile
+ elif [[ $line == "examples" ]]; then
+ eval sed -i '"${row}s/examples/example/i"' $tempfile
+ elif [[ $line == "keywords" ]]; then
+ eval sed -i '"${row}s/keywords/keyword/i"' $tempfile
+ fi
+ matchKeyword ${line}
+ if [[ $? == 1 ]]; then
+ style="unmatch"
+ eval sed -i '"${row}s/^##/>>>/"' $tempfile
+ else
+ if [[ $line == "description" ]]; then
+ style="description"
+ eval sed -i '"${row}s/^/<>TARGET<>/"' $tempfile
+ continue
+ fi
+ style="match"
+ eval sed -i '"${row}s/^/\^\^\^/"' $tempfile
+ fi
+ elif [[ $line == "#"* ]]; then
+ if [[ headlevel == 0 ]]; then
+ headlevel=1
+ continue
+ fi
+ headleve=1
+ fi
+ fi
+ done < $tempfile
+ if [[ -f $tempfile ]]; then
+ rm $tempfile
+ fi
+ if [[ -f ${ROOTDIR}/tempp ]]; then
+ cp ${ROOTDIR}/tempp $* && rm ${ROOTDIR}/tempp
+ fi
+}
+
+main() {
+ scandir $ROOTDIR
+}
+
+main "$@"
+exit 0
diff --git a/docs/script/split.sh b/docs/script/split.sh
new file mode 100755
index 00000000000000..70f48251f666af
--- /dev/null
+++ b/docs/script/split.sh
@@ -0,0 +1,73 @@
+#!/bin/bash
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+#this shell splits topics in the same MD file
+IFS=`echo -en "\n\b"`
+
+ROOTDIR=`dirname "$0"`
+ROOTDIR=`cd "$ROOT"; pwd`
+
+scandir() {
+ for file in `ls $*`; do
+ if [[ ! -d $*"/"$file ]]; then
+ if [[ $file == *".md" ]]; then
+ splitfile $*"/"${file}
+ fi
+ else
+ scandir $*"/"${file}
+ fi
+ done
+}
+
+splitfile() {
+ local file=$*
+ local filedir=${file%/*}
+ local evalfile=`echo $file | sed 's/[ \(\)]/\\\&/g'`
+
+ local row=0
+ local split=1
+ local name=
+ local TotalRow=`wc -l $file | awk '{print $1}'`
+ local TopicNum=`grep -o '^#[^#].*' $file | wc -l`
+ if [ $TopicNum -lt 2 ]; then
+ return
+ fi
+ while read line; do
+ ((row++))
+
+ if [[ $row == $TotalRow || $line =~ ^#[^#].* ]]; then
+ if [[ -n $name && $split != $row ]]; then
+ eval awk '"NR==${split},NR==$(($row==$TotalRow?row:row-1))"' ${evalfile} > ${ROOTDIR}/tempp
+ cp ${ROOTDIR}/tempp ${filedir}/${name}.md
+ fi
+ name=`echo $line | grep -o "[^# ]\+\( \+[^ ]\+\)*"`
+ split=$row
+ fi
+ done < $file
+ if [[ -f ${ROOTDIR}/tempp ]]; then
+ rm ${ROOTDIR}/tempp
+ fi
+ rm $file
+}
+
+main() {
+ scandir $ROOTDIR
+}
+
+main "$@"
+exit 0
From 71614ac60eb1dd56281740f85a7121d049e5d9c4 Mon Sep 17 00:00:00 2001
From: xy720
Date: Mon, 5 Aug 2019 17:24:44 +0800
Subject: [PATCH 2/8] Help document collation (integration of help and
documentation documents)
---
docs/script/split.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/script/split.sh b/docs/script/split.sh
index 70f48251f666af..52764749936377 100755
--- a/docs/script/split.sh
+++ b/docs/script/split.sh
@@ -16,7 +16,7 @@
# specific language governing permissions and limitations
# under the License.
-#this shell splits topics in the same MD file
+#This shell splits topics in the same MD file
IFS=`echo -en "\n\b"`
ROOTDIR=`dirname "$0"`
From b3cfeb4c6a54b87dddd0aec4c19178bbce6171b3 Mon Sep 17 00:00:00 2001
From: xy720
Date: Tue, 6 Aug 2019 02:59:43 +0800
Subject: [PATCH 3/8] use space instead of tab
---
docs/Makefile | 9 +-
.../aggregate-functions/group_concat.md | 21 --
.../cn/sql-reference/sql-functions/cast.md | 6 +-
.../Account Management/help.md | 0
.../Administration/admin_repair_stmt.md | 0
.../Administration/admin_show_stmt.md | 0
.../Administration/admin_stmt.md | 0
.../Administration/small_files.md | 0
.../{ => Data Definition}/create-function.md | 0
.../Data Definition/ddl_stmt.md | 41 ---
.../{ => Data Definition}/drop-function.md | 0
.../{ => Data Definition}/show-function.md | 0
.../Data Manipulation/broker_load.md | 0
.../{ => Data Manipulation}/insert.md | 2 +
.../Data Manipulation/manipulation_stmt.md | 0
.../Data Manipulation/routine_load.md | 2 +-
.../Data Manipulation/streaming.md | 0
.../sql-statements}/Data Types/help.md | 0
.../sql-statements}/Utility/util_stmt.md | 26 +-
.../Functions/Date and Time Functions/help.md | 310 ------------------
docs/script/keyword.sh | 68 ++++
docs/script/merge.sh | 164 +++++++++
docs/script/split.sh | 73 +++++
23 files changed, 331 insertions(+), 391 deletions(-)
delete mode 100755 docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/group_concat.md
rename docs/{help/Contents => documentation/cn/sql-reference/sql-statements}/Account Management/help.md (100%)
rename docs/{help/Contents => documentation/cn/sql-reference/sql-statements}/Administration/admin_repair_stmt.md (100%)
rename docs/{help/Contents => documentation/cn/sql-reference/sql-statements}/Administration/admin_show_stmt.md (100%)
rename docs/{help/Contents => documentation/cn/sql-reference/sql-statements}/Administration/admin_stmt.md (100%)
rename docs/{help/Contents => documentation/cn/sql-reference/sql-statements}/Administration/small_files.md (100%)
rename docs/documentation/cn/sql-reference/sql-statements/{ => Data Definition}/create-function.md (100%)
rename docs/{help/Contents => documentation/cn/sql-reference/sql-statements}/Data Definition/ddl_stmt.md (97%)
rename docs/documentation/cn/sql-reference/sql-statements/{ => Data Definition}/drop-function.md (100%)
rename docs/documentation/cn/sql-reference/sql-statements/{ => Data Definition}/show-function.md (100%)
rename docs/{help/Contents => documentation/cn/sql-reference/sql-statements}/Data Manipulation/broker_load.md (100%)
rename docs/documentation/cn/sql-reference/sql-statements/{ => Data Manipulation}/insert.md (99%)
rename docs/{help/Contents => documentation/cn/sql-reference/sql-statements}/Data Manipulation/manipulation_stmt.md (100%)
rename docs/{help/Contents => documentation/cn/sql-reference/sql-statements}/Data Manipulation/routine_load.md (99%)
rename docs/{help/Contents => documentation/cn/sql-reference/sql-statements}/Data Manipulation/streaming.md (100%)
rename docs/{help/Contents => documentation/cn/sql-reference/sql-statements}/Data Types/help.md (100%)
rename docs/{help/Contents => documentation/cn/sql-reference/sql-statements}/Utility/util_stmt.md (81%)
delete mode 100644 docs/help/Contents/Functions/Date and Time Functions/help.md
create mode 100755 docs/script/keyword.sh
create mode 100755 docs/script/merge.sh
create mode 100755 docs/script/split.sh
diff --git a/docs/Makefile b/docs/Makefile
index d337c2091bdeeb..bad7301708cc65 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -20,17 +20,22 @@
#
BUILD_DIR = ${CURDIR}/build
+HELP_DIR = ${CURDIR}/contents
all: zip_help
.PHONY: all
${BUILD_DIR}:
mkdir -p ${BUILD_DIR}
+${HELP_DIR}:
+ mkdir -p ${HELP_DIR}
# build help zip
HELP_OUTPUT = ${BUILD_DIR}/help-resource.zip
-${HELP_OUTPUT}: help | ${BUILD_DIR}
- zip -r $@ $<
+${HELP_OUTPUT}: documentation/cn/sql-reference ${BUILD_DIR} ${HELP_DIR}
+ cp -r $* ${HELP_DIR} && cp script/*.sh ${HELP_DIR}
+ cd ${HELP_DIR} && sh split.sh && sh merge.sh && sh keyword.sh && rm split.sh && rm merge.sh && rm keyword.sh && cd -
+ zip -r $@ contents && rm -rf contents
.PHONY: zip_help
zip_help: ${HELP_OUTPUT}
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/group_concat.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/group_concat.md
deleted file mode 100755
index c326dbb10a9651..00000000000000
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/group_concat.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# GROUP_CONCAT
-
-## Syntax
-
-`GROUP_CONCAT(expr)`
-
-## Description
-
-用于返回选中字段字符串连接起来的新字符串
-
-使用逗号连接
-
-## Examples
-```
-MySQL> select group_concat(`query_id`) from log_statis group by datetime;
-+---------------------------------------------------------------------------------------------------------+
-| group_concat(`query_id`) |
-+---------------------------------------------------------------------------------------------------------+
-| 445f5875f8854dfa:b9358d5cd86488a2, d5055534e6c04fa0:9b3f645913c4973c, a55801d0764d47fe:a98f3710649dc558 |
-+------------------------------------------------------------------------------------------------ --------+
-```
diff --git a/docs/documentation/cn/sql-reference/sql-functions/cast.md b/docs/documentation/cn/sql-reference/sql-functions/cast.md
index b9898a2f710693..3d07805522a28f 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/cast.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/cast.md
@@ -12,15 +12,15 @@ cast (input as type)
## BIGINT type
-### Syntax
+## Syntax
``` cast (input as BIGINT) ```
-### Description
+## Description
将当前列 input 转换为 BIGINT 类型
-### Examples
+## Examples
1. 转常量,或表中某列
diff --git a/docs/help/Contents/Account Management/help.md b/docs/documentation/cn/sql-reference/sql-statements/Account Management/help.md
similarity index 100%
rename from docs/help/Contents/Account Management/help.md
rename to docs/documentation/cn/sql-reference/sql-statements/Account Management/help.md
diff --git a/docs/help/Contents/Administration/admin_repair_stmt.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/admin_repair_stmt.md
similarity index 100%
rename from docs/help/Contents/Administration/admin_repair_stmt.md
rename to docs/documentation/cn/sql-reference/sql-statements/Administration/admin_repair_stmt.md
diff --git a/docs/help/Contents/Administration/admin_show_stmt.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/admin_show_stmt.md
similarity index 100%
rename from docs/help/Contents/Administration/admin_show_stmt.md
rename to docs/documentation/cn/sql-reference/sql-statements/Administration/admin_show_stmt.md
diff --git a/docs/help/Contents/Administration/admin_stmt.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/admin_stmt.md
similarity index 100%
rename from docs/help/Contents/Administration/admin_stmt.md
rename to docs/documentation/cn/sql-reference/sql-statements/Administration/admin_stmt.md
diff --git a/docs/help/Contents/Administration/small_files.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/small_files.md
similarity index 100%
rename from docs/help/Contents/Administration/small_files.md
rename to docs/documentation/cn/sql-reference/sql-statements/Administration/small_files.md
diff --git a/docs/documentation/cn/sql-reference/sql-statements/create-function.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/create-function.md
similarity index 100%
rename from docs/documentation/cn/sql-reference/sql-statements/create-function.md
rename to docs/documentation/cn/sql-reference/sql-statements/Data Definition/create-function.md
diff --git a/docs/help/Contents/Data Definition/ddl_stmt.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/ddl_stmt.md
similarity index 97%
rename from docs/help/Contents/Data Definition/ddl_stmt.md
rename to docs/documentation/cn/sql-reference/sql-statements/Data Definition/ddl_stmt.md
index 147511f1e329f1..b0bb79ecd0d7cb 100644
--- a/docs/help/Contents/Data Definition/ddl_stmt.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/ddl_stmt.md
@@ -1110,44 +1110,3 @@
## keyword
COLOCATE, JOIN, CREATE TABLE
-
-# CREATE FUNCTION
-## description
- Used to create a UDF/UDAF/UDTF
- Syntax:
- CREATE [AGGREGATE] FUNCTION funcName (argType [, ...])
- RETURNS retType
- PROPERTIES (
- k1=v1 [, k2=v2]
- )
-
- valid PROPERTIES:
- "symbol": UDF's symbol, which Doris call this symbol's function to execute. MUST BE SET
- "object_file": UDF library's URL, Doris use it to download library. MUST BE SET
- "md5": when this property is set, Doris will check library's md5um against this value. This is a option
-
-## example
- 1. create a function "my_func", receive two int and return one int
- CREATE FUNCTION my_func (int, int) RETURNS int
- PROPERTIES ("symbol"="my_func_symbol", "object_file"="http://127.0.0.1/my_func.so")
- 2. create a variadic function "my_func"
- CREATE FUNCTION my_func (int, ...) RETURNS int
- PROPERTIES ("symbol"="my_func_symbol", "object_file"="http://127.0.0.1/my_func.so")
-
-## keyword
- CREATE, FUNCTION
-
-# DROP FUNCTION
-## description
- Used to drop a UDF/UDAF/UDTF
- Syntax:
- DROP FUNCTION funcName (argType [, ...])
-
-## example
- 1. drop a UDF whose name is my_func
- DROP FUNCTION my_func (int, int)
- 2. drop a variadic function
- DROP FUNCTION my_func (int, ...)
-
-## keyword
- DROP, FUNCTION
diff --git a/docs/documentation/cn/sql-reference/sql-statements/drop-function.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/drop-function.md
similarity index 100%
rename from docs/documentation/cn/sql-reference/sql-statements/drop-function.md
rename to docs/documentation/cn/sql-reference/sql-statements/Data Definition/drop-function.md
diff --git a/docs/documentation/cn/sql-reference/sql-statements/show-function.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/show-function.md
similarity index 100%
rename from docs/documentation/cn/sql-reference/sql-statements/show-function.md
rename to docs/documentation/cn/sql-reference/sql-statements/Data Definition/show-function.md
diff --git a/docs/help/Contents/Data Manipulation/broker_load.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/broker_load.md
similarity index 100%
rename from docs/help/Contents/Data Manipulation/broker_load.md
rename to docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/broker_load.md
diff --git a/docs/documentation/cn/sql-reference/sql-statements/insert.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/insert.md
similarity index 99%
rename from docs/documentation/cn/sql-reference/sql-statements/insert.md
rename to docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/insert.md
index 6f4cf4b24d4f20..d571410ebf459a 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/insert.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/insert.md
@@ -10,6 +10,8 @@ INSERT INTO table_name
{ VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }
```
+## description
+
## Parameters
> tablet_name: 导入数据的目的表。可以是 `db_name.table_name` 形式
diff --git a/docs/help/Contents/Data Manipulation/manipulation_stmt.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/manipulation_stmt.md
similarity index 100%
rename from docs/help/Contents/Data Manipulation/manipulation_stmt.md
rename to docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/manipulation_stmt.md
diff --git a/docs/help/Contents/Data Manipulation/routine_load.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/routine_load.md
similarity index 99%
rename from docs/help/Contents/Data Manipulation/routine_load.md
rename to docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/routine_load.md
index 9dcd7d687cc651..4fd4568eddaa47 100644
--- a/docs/help/Contents/Data Manipulation/routine_load.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/routine_load.md
@@ -439,5 +439,5 @@
SHOW ROUTINE LOAD TASK WHERE JobName = "test1";
-# keyword
+## keyword
SHOW,ROUTINE,LOAD,TASK
diff --git a/docs/help/Contents/Data Manipulation/streaming.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/streaming.md
similarity index 100%
rename from docs/help/Contents/Data Manipulation/streaming.md
rename to docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/streaming.md
diff --git a/docs/help/Contents/Data Types/help.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/help.md
similarity index 100%
rename from docs/help/Contents/Data Types/help.md
rename to docs/documentation/cn/sql-reference/sql-statements/Data Types/help.md
diff --git a/docs/help/Contents/Utility/util_stmt.md b/docs/documentation/cn/sql-reference/sql-statements/Utility/util_stmt.md
similarity index 81%
rename from docs/help/Contents/Utility/util_stmt.md
rename to docs/documentation/cn/sql-reference/sql-statements/Utility/util_stmt.md
index 2fbafe8295f9b0..146a4b68974806 100644
--- a/docs/help/Contents/Utility/util_stmt.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Utility/util_stmt.md
@@ -1,13 +1,13 @@
-# DESCRIBE
-## description
- 该语句用于展示指定 table 的 schema 信息
- 语法:
- DESC[RIBE] [db_name.]table_name [ALL];
-
- 说明:
- 如果指定 ALL,则显示该 table 的所有 index 的 schema
-
-## example
-
-## keyword
- DESCRIBE,DESC
\ No newline at end of file
+# DESCRIBE
+## description
+ 该语句用于展示指定 table 的 schema 信息
+ 语法:
+ DESC[RIBE] [db_name.]table_name [ALL];
+
+ 说明:
+ 如果指定 ALL,则显示该 table 的所有 index 的 schema
+
+## example
+
+## keyword
+ DESCRIBE,DESC
diff --git a/docs/help/Contents/Functions/Date and Time Functions/help.md b/docs/help/Contents/Functions/Date and Time Functions/help.md
deleted file mode 100644
index dedb8ca2616e91..00000000000000
--- a/docs/help/Contents/Functions/Date and Time Functions/help.md
+++ /dev/null
@@ -1,310 +0,0 @@
-# unix_timestamp
-## description
-Syntax:
-UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)
-
-将Date或者Datetime类型转化为unix时间戳
-如果没有参数,则是将当前的时间转化为时间戳
-参数需要是Date或者Datetime类型
-
-## example
-mysql> SELECT UNIX_TIMESTAMP();
- -> 1196440210
-mysql> SELECT UNIX_TIMESTAMP('2007-11-30 10:30:19');
- -> 1196418619
-
-# from_unixtime
-## description
-Syntax:
- FROM_UNIXTIME(int unix_timestamp[, string string_format])
-
-将unix时间戳转化位对应的time格式,返回的格式由string_format指定
-默认为yyyy-MM-dd HH:mm:ss
-传入的是整形,返回的是字符串类型
-目前string_format只支持两种类型的格式:yyyy-MM-dd,yyyy-MM-dd HH:mm:ss
-其余string_format格式是非法的,返回NULL
-
-## example
-mysql> SELECT FROM_UNIXTIME(1196440219);
- -> '2007-12-01 00:30:19'
-
-mysql> SELECT FROM_UNIXTIME(1196440219, 'yyyy-MM-dd');
- -> '2007-12-01'
-
-mysql> SELECT FROM_UNIXTIME(1196440219, 'yyyy-MM-dd HH:mm:ss');
- -> '2007-12-01 00:30:19'
-
-# year
-## description
-Syntax:
-YEAR(date)
-
-返回date类型的year部分,范围从1000-9999
-参数为Date或者Datetime类型
-## example
-mysql> SELECT YEAR('1987-01-01');
- -> 1987
-
-# month
-## description
-Syntax:
-MONTH(date)
-
-返回时间类型中的月份信息,范围是1, 12
-参数为Date或者Datetime类型
-
-## example
-mysql> SELECT MONTH('1987-01-02');
- -> 01
-
-# day
-## description
-Syntax:
-DAY(date)
-
-与DAYOFMONTH是同义词,请`help dayofmonth`
-
-# dayofmonth
-## description
-Syntax:
-DAYOFMONTH(date)
-
-获得日期中的天信息,返回值范围从1-31。
-需要传入date类型
-
-## example
-mysql> SELECT DAYOFMONTH('1987-01-02');
- -> 2
-
-# dayofyear
-## description
-Syntax:
-DAYOFYEAR(date)
-
-获得日期中对应当年中的哪一天。
-输入值为date类型
-
-## example
-mysql> SELECT DAYOFYEAR('2007-02-03');
- -> 34
-
-# weekofyear
-## description
-Syntax:
-WEEKOFYEAR(date)
-
-获得一年中的第几周
-输入值为date类型
-
-## example
-mysql> SELECT WEEKOFYEAR('2008-02-20');
- -> 8
-
-# hour
-## description
-Syntax:
-HOUR(date)
-
-获得时间中对应的小时信息
-这里Palo跟MySQL不太一样,因为MySQL是支持Time类型的
-Palo没有Time类型,所以输入的内容是Date或者Datetime。
-
-## example
-mysql> select hour("2000-01-02 12:34:56");
- -> 12
-
-# minute
-## description
-Syntax:
-MINUTE(date)
-
-获得日期中的分钟信息
-这里Palo跟MySQL不太一样,因为MySQL是支持Time类型的
-Palo没有Time类型,所以输入的内容是Date或者Datetime。
-
-## example
-mysql> SELECT MINUTE("2000-01-02 12:34:56");
- -> 34
-
-# second
-## description
-Syntax:
-SECOND(date)
-
-获得时间中的秒信息
-这里Palo跟MySQL不太一样,因为MySQL是支持Time类型的
-Palo没有Time类型,所以输入的内容是Date或者Datetime。
-## example
-mysql> SELECT SECOND("2000-01-02 12:34:56");
- -> 56
-
-# now
-## description
-Syntax:
-NOW()
-
-获得当前的时间,以Datetime类型返回
-
-## example
-mysql> SELECT NOW();
- -> '2007-12-15 23:50:26'
-
-# current_timestamp
-## description
-Syntax:
-CURRENT_TIMESTAMP()
-
-与NOW()是同义词
-
-# datediff
-## description
-Syntax:
-DATEDIFF(expr1,expr2)
-
-计算expr1 - expr2,结果精确到天。
-要求传入的两个值需要是datetime类型。
-
-## example
-mysql> SELECT DATEDIFF(CAST ('2007-12-31 23:59:59' AS DATETIME),CAST ('2007-12-30' AS DATETIME));
- -> 1
-mysql> SELECT DATEDIFF(CAST('2010-11-30 23:59:59' AS DATETIME), CAST('2010-12-31' AS DATETIME));
- -> -31
-
-# date_add
-## description
-Syntax:
-DATE_ADD(date,INTERVAL expr unit)
-
-对时间类型进行加法运算
-支持的time unit包括
-YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
-
-## example
-mysql> DATE_ADD(date,INTERVAL expr unit)
- -> 1987-01-02 00:00:00
-
-# date_sub
-## description
-Syntax:
-DATE_SUB(date,INTERVAL expr unit)
-
-与DATE_ADD相反,对时间类型进行减法运算
-支持的time unit包括
-YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
-
-## example
-mysql> DATE_SUB(date,INTERVAL expr unit)
- -> 1986-12-31 00:00:00
-
-# date_format
-## description
-Syntax:
-DATE_FORMAT(date, format)
-
-将日期类型按照format的类型转化位字符串,
-当前支持最大128字节的字符串,如果返回值长度超过128,则返回NULL
-format的含义如下:
-%a Abbreviated weekday name (Sun..Sat)
-%b Abbreviated month name (Jan..Dec)
-%c Month, numeric (0..12)
-%D Day of the month with English suffix (0th, 1st, 2nd, 3rd, …)
-%d Day of the month, numeric (00..31)
-%e Day of the month, numeric (0..31)
-%f Microseconds (000000..999999)
-%H Hour (00..23)
-%h Hour (01..12)
-%I Hour (01..12)
-%i Minutes, numeric (00..59)
-%j Day of year (001..366)
-%k Hour (0..23)
-%l Hour (1..12)
-%M Month name (January..December)
-%m Month, numeric (00..12)
-%p AM or PM
-%r Time, 12-hour (hh:mm:ss followed by AM or PM)
-%S Seconds (00..59)
-%s Seconds (00..59)
-%T Time, 24-hour (hh:mm:ss)
-%U Week (00..53), where Sunday is the first day of the week; WEEK() mode 0
-%u Week (00..53), where Monday is the first day of the week; WEEK() mode 1
-%V Week (01..53), where Sunday is the first day of the week; WEEK() mode 2; used with %X
-%v Week (01..53), where Monday is the first day of the week; WEEK() mode 3; used with %x
-%W Weekday name (Sunday..Saturday)
-%w Day of the week (0=Sunday..6=Saturday)
-%X Year for the week where Sunday is the first day of the week, numeric, four digits; used with %V
-%x Year for the week, where Monday is the first day of the week, numeric, four digits; used with %v
-%Y Year, numeric, four digits
-%y Year, numeric (two digits)
-%% A literal “%” character
-%x x, for any “x” not listed above
-
-## example
-mysql> SELECT DATE_FORMAT('2009-10-04 22:23:00', '%W %M %Y');
- -> 'Sunday October 2009'
-mysql> SELECT DATE_FORMAT('2007-10-04 22:23:00', '%H:%i:%s');
- -> '22:23:00'
-mysql> SELECT DATE_FORMAT('1900-10-04 22:23:00', '%D %y %a %d %m %b %j');
- -> '4th 00 Thu 04 10 Oct 277'
-mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%H %k %I %r %T %S %w');
- -> '22 22 10 10:23:00 PM 22:23:00 00 6'
-mysql> SELECT DATE_FORMAT('1999-01-01', '%X %V');
- -> '1998 52'
-mysql> SELECT DATE_FORMAT('2006-06-01', '%d');
- -> '01'
-
-# from_days
-## description
-Syntax:
-FROM_DAYS(N)
-通过距离0000-01-01日的天数计算出哪一天
-
-## example
-mysql> SELECT FROM_DAYS(730669);
- -> '2007-07-03'
-
-# to_days
-## description
-Syntax:
-TO_DAYS(date)
-返回date距离0000-01-01的天数
-
-## example
-mysql> SELECT TO_DAYS(950501);
- -> 728779
-mysql> SELECT TO_DAYS('2007-10-07');
- -> 733321
-
-# str_to_date
-## description
-Syntax:
-STR_TO_DATE(str, format)
-通过format指定的方式将str转化为DATE类型,如果转化结果不对返回NULL
-支持的format格式与date_format一致
-
-## example
-mysql> SELECT STR_TO_DATE('2014-12-21 12:34:56', '%Y-%m-%d %H:%i:%s');
- -> 2014-12-21 12:34:56
-mysql> SELECT STR_TO_DATE('200442 Monday', '%X%V %W');
- -> 2004-10-18
-
-# monthname
-## description
-Syntax:
-MONTHNAME(DATE)
-
-返回日期对应的月份名字
-
-## example
-mysql> SELECT MONTHNAME('2008-02-03');
- -> 'February'
-
-# monthname
-## description
-Syntax:
-MONTHNAME(DATE)
-
-返回日期对应的日期名字
-
-## example
-mysql> SELECT DAYNAME('2007-02-03');
- -> 'Saturday'
diff --git a/docs/script/keyword.sh b/docs/script/keyword.sh
new file mode 100755
index 00000000000000..ceaaa57673610c
--- /dev/null
+++ b/docs/script/keyword.sh
@@ -0,0 +1,68 @@
+#!/bin/bash
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+#this shell adds keywords to MD files without keywords
+
+IFS=`echo -en "\n\b"`
+
+ROOTDIR=`dirname "$0"`
+ROOTDIR=`cd "$ROOT"; pwd`
+
+scandir() {
+ for file in `ls $*`; do
+ if [[ ! -d $*"/"$file ]]; then
+ if [[ $file == *".md" ]]; then
+ readfile $*"/"${file}
+ fi
+ else
+ scandir $*"/"${file}
+ fi
+ done
+}
+
+readfile() {
+ local file=$*
+ local topic=`cat $file | grep "^#[^#].*" | grep -o "[^# ]\+\( \+[^ ]\+\)*"`
+ local keywordNum=`cat $file | grep "^##[^#]*keyword[ ]*$" | wc -l`
+ if [[ $keywordNum != 0 || -z $topic ]]; then
+ return
+ fi
+ local SAVEIFS=$IFS
+ IFS=' '
+ local array=`echo $topic | tr '\`' ' ' | tr ',' ' '`
+ local keywords=
+ for keyword in ${array[*]}; do
+ keywords=$keywords","$keyword
+ done
+ array=`echo $array | tr '_' ' '`
+ for keyword in ${array[*]}; do
+ keywords=$keywords","$keyword
+ done
+ keywords=`echo ${keywords:1} | tr 'a-z' 'A-Z'`
+ IFS=$SAVEIFS
+ file=`echo $file | sed 's/[ \(\)]/\\\&/g'`
+ eval sed -i '"\$a ##keyword"' $file
+ eval sed -i '"\$a ${keywords}"' $file
+}
+
+main() {
+ scandir $ROOTDIR
+}
+
+main "$@"
+exit 0
diff --git a/docs/script/merge.sh b/docs/script/merge.sh
new file mode 100755
index 00000000000000..5d252c7c697b77
--- /dev/null
+++ b/docs/script/merge.sh
@@ -0,0 +1,164 @@
+#!/bin/bash
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+#run split.h first
+#this shell merges user-defined heads in the MD file into "description" head
+################ #################
+# #topic # # #topic #
+# # # #
+# ##syntax # # ##descrption #
+# somelines # # somelines #
+# # # #
+# ##descrption # # syntax #
+# somelines # ==> # somelines #
+# # # #
+# ##example # # parameter #
+# somelines # # somelines #
+# # # #
+# ##parameter # # ##example #
+# somelines # # somelines #
+# # # #
+################ #################
+
+IFS=`echo -en "\n\b"`
+
+ROOTDIR=`dirname "$0"`
+ROOTDIR=`cd "$ROOT"; pwd`
+
+keywords="
+examples
+example
+description
+keywords
+keyword
+url
+"
+
+matchKeyword(){
+ for keyword in ${keywords[*]}; do
+ if [[ "$1" == $keyword ]]; then
+ return 0
+ fi
+ done
+ return 1
+}
+
+merge(){
+ file=$*
+ sed -n '/^#[^#]/p' $file > ${ROOTDIR}/tempp
+ sed -n '/^<>TARGET<>/,/^<>END<>/p' $file >> ${ROOTDIR}/tempp
+ sed -n '/^>>>/,/^<<> ${ROOTDIR}/tempp
+ sed -n '/^\^\^\^/,/^\$\$\$/p' $file >> ${ROOTDIR}/tempp
+ sed -i 's/^<>TARGET<>//;s/^<>END<>//;s/^>>>//;s/^<</;s/^\^\^\^//;s/^\$\$\$//' ${ROOTDIR}/tempp
+}
+
+scandir() {
+ for file in `ls $*`; do
+ if [[ ! -d $*"/"$file ]]; then
+ if [[ $file == *".md" ]]; then
+ readfile $*"/"${file}
+ fi
+ else
+ scandir $*"/"${file}
+ fi
+ done
+}
+
+readfile() {
+ local tempfile=${ROOTDIR}"/temp"
+ cp $* $tempfile
+
+ local row=0
+ local headlevel=0
+ local style=
+ local TotalRow=`wc -l temp | awk '{print $1}'`
+ sed -i 's/##[#]\+/##/' $tempfile
+ while read line; do
+ ((row++))
+
+ if [[ $row != $TotalRow && $line != "#"* ]]; then
+ continue
+ else
+ if [[ $headlevel == 2 ]]; then
+ case $style in
+ "match")
+ eval sed -i '"$(($row==$TotalRow?row:row-1))s/^/\$\$\$/"' $tempfile
+ ;;
+ "unmatch")
+ eval sed -i '"$(($row==$TotalRow?row:row-1))s/^/<<"' $tempfile
+ ;;
+ "description")
+ eval sed -i '"$(($row==$TotalRow?row:row-1))s/^/<>END<>/"' $tempfile
+ ;;
+ *)
+ echo "Internal error" ; exit 1
+ ;;
+ esac
+ fi
+
+ if [[ $row == $TotalRow && headlevel > 0 ]]; then
+ merge $tempfile
+ continue
+ fi
+
+ if [[ $line == "##"* ]]; then
+ headlevel=2
+ line=`echo ${line:2} | tr '[A-Z]' '[a-z]' | grep -o "[^ ]\+\( \+[^ ]\+\)*"`
+ if [[ $line == "description" ]]; then
+ eval sed -i '"${row}s/description/description/i"' $tempfile
+ elif [[ $line == "examples" ]]; then
+ eval sed -i '"${row}s/examples/example/i"' $tempfile
+ elif [[ $line == "keywords" ]]; then
+ eval sed -i '"${row}s/keywords/keyword/i"' $tempfile
+ fi
+ matchKeyword ${line}
+ if [[ $? == 1 ]]; then
+ style="unmatch"
+ eval sed -i '"${row}s/^##/>>>/"' $tempfile
+ else
+ if [[ $line == "description" ]]; then
+ style="description"
+ eval sed -i '"${row}s/^/<>TARGET<>/"' $tempfile
+ continue
+ fi
+ style="match"
+ eval sed -i '"${row}s/^/\^\^\^/"' $tempfile
+ fi
+ elif [[ $line == "#"* ]]; then
+ if [[ headlevel == 0 ]]; then
+ headlevel=1
+ continue
+ fi
+ headleve=1
+ fi
+ fi
+ done < $tempfile
+ if [[ -f $tempfile ]]; then
+ rm $tempfile
+ fi
+ if [[ -f ${ROOTDIR}/tempp ]]; then
+ cp ${ROOTDIR}/tempp $* && rm ${ROOTDIR}/tempp
+ fi
+}
+
+main() {
+ scandir $ROOTDIR
+}
+
+main "$@"
+exit 0
diff --git a/docs/script/split.sh b/docs/script/split.sh
new file mode 100755
index 00000000000000..18c7a6ab997f93
--- /dev/null
+++ b/docs/script/split.sh
@@ -0,0 +1,73 @@
+#!/bin/bash
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+#this shell splits topics in the same MD file
+IFS=`echo -en "\n\b"`
+
+ROOTDIR=`dirname "$0"`
+ROOTDIR=`cd "$ROOT"; pwd`
+
+scandir() {
+ for file in `ls $*`; do
+ if [[ ! -d $*"/"$file ]]; then
+ if [[ $file == *".md" ]]; then
+ splitfile $*"/"${file}
+ fi
+ else
+ scandir $*"/"${file}
+ fi
+ done
+}
+
+splitfile() {
+ local file=$*
+ local filedir=${file%/*}
+ local evalfile=`echo $file | sed 's/[ \(\)]/\\\&/g'`
+
+ local row=0
+ local split=1
+ local name=
+ local TotalRow=`wc -l $file | awk '{print $1}'`
+ local TopicNum=`grep -o '^#[^#].*' $file | wc -l`
+ if [ $TopicNum -lt 2 ]; then
+ return
+ fi
+ while read line; do
+ ((row++))
+
+ if [[ $row == $TotalRow || $line =~ ^#[^#].* ]]; then
+ if [[ -n $name && $split != $row ]]; then
+ eval awk '"NR==${split},NR==$(($row==$TotalRow?row:row-1))"' ${evalfile} > ${ROOTDIR}/tempp
+ cp ${ROOTDIR}/tempp ${filedir}/${name}.md
+ fi
+ name=`echo $line | grep -o "[^# ]\+\( \+[^ ]\+\)*"`
+ split=$row
+ fi
+ done < $file
+ if [[ -f ${ROOTDIR}/tempp ]]; then
+ rm ${ROOTDIR}/tempp
+ fi
+ rm $file
+}
+
+main() {
+ scandir $ROOTDIR
+}
+
+main "$@"
+exit 0
From d0d3b3a937ab44798abbbc3806268810b67623eb Mon Sep 17 00:00:00 2001
From: xy720
Date: Tue, 6 Aug 2019 10:58:08 +0800
Subject: [PATCH 4/8] Change directly without scripting
---
docs/Makefile | 3 +-
.../sql-functions/aggregate-functions/avg.md | 15 +-
.../aggregate-functions/count.md | 13 +-
.../aggregate-functions/count_distinct.md | 13 +-
.../aggregate-functions/hll_union_agg.md | 15 +-
.../sql-functions/aggregate-functions/max.md | 13 +-
.../sql-functions/aggregate-functions/min.md | 13 +-
.../sql-functions/aggregate-functions/ndv.md | 15 +-
.../aggregate-functions/percentile_approx.md | 16 +-
.../aggregate-functions/stddev.md | 13 +-
.../aggregate-functions/stddev_samp.md | 13 +-
.../sql-functions/aggregate-functions/sum.md | 13 +-
.../aggregate-functions/var_samp.md | 14 +-
.../aggregate-functions/variance.md | 14 +-
.../cn/sql-reference/sql-functions/cast.md | 25 +-
.../date-time-functions/current_timestamp.md | 14 +-
.../date-time-functions/date_add.md | 16 +-
.../date-time-functions/date_format.md | 15 +-
.../date-time-functions/date_sub.md | 16 +-
.../date-time-functions/datediff.md | 15 +-
.../sql-functions/date-time-functions/day.md | 16 +-
.../date-time-functions/dayname.md | 16 +-
.../date-time-functions/dayofmonth.md | 16 +-
.../date-time-functions/dayofweek.md | 16 +-
.../date-time-functions/dayofyear.md | 16 +-
.../date-time-functions/from_days.md | 14 +-
.../date-time-functions/from_unixtime.md | 16 +-
.../date-time-functions/month.md | 16 +-
.../date-time-functions/monthname.md | 16 +-
.../sql-functions/date-time-functions/now.md | 14 +-
.../date-time-functions/str_to_date.md | 16 +-
.../date-time-functions/timediff.md | 15 +-
.../date-time-functions/to_days.md | 16 +-
.../date-time-functions/unix_timestamp.md | 16 +-
.../date-time-functions/utc_timestamp.md | 16 +-
.../date-time-functions/workofyear.md | 16 +-
.../sql-functions/date-time-functions/year.md | 16 +-
.../spatial-functions/st_astext.md | 13 +-
.../spatial-functions/st_circle.md | 15 +-
.../spatial-functions/st_contains.md | 13 +-
.../spatial-functions/st_distance_sphere.md | 13 +-
.../spatial-functions/st_geometryfromtext.md | 13 +-
.../spatial-functions/st_linefromtext.md | 13 +-
.../spatial-functions/st_point.md | 15 +-
.../spatial-functions/st_polygon.md | 13 +-
.../sql-functions/spatial-functions/st_x.md | 13 +-
.../sql-functions/spatial-functions/st_y.md | 13 +-
.../sql-functions/string-functions/ascii.md | 13 +-
.../sql-functions/string-functions/concat.md | 13 +-
.../string-functions/concat_ws.md | 15 +-
.../string-functions/find_in_set.md | 13 +-
.../string-functions/get_json_double.md | 15 +-
.../string-functions/get_json_int.md | 15 +-
.../string-functions/get_json_string.md | 15 +-
.../string-functions/group_concat.md | 13 +-
.../sql-functions/string-functions/instr.md | 13 +-
.../sql-functions/string-functions/lcase.md | 11 +-
.../sql-functions/string-functions/left.md | 13 +-
.../sql-functions/string-functions/length.md | 13 +-
.../sql-functions/string-functions/locate.md | 13 +-
.../sql-functions/string-functions/lower.md | 13 +-
.../sql-functions/string-functions/lpad.md | 13 +-
.../sql-functions/string-functions/ltrim.md | 13 +-
.../string-functions/money_format.md | 13 +-
.../string-functions/regexp_extract.md | 13 +-
.../string-functions/regexp_replace.md | 13 +-
.../sql-functions/string-functions/repeat.md | 13 +-
.../sql-functions/string-functions/right.md | 13 +-
.../string-functions/split_part.md | 13 +-
.../sql-functions/string-functions/strleft.md | 13 +-
.../string-functions/strright.md | 13 +-
.../Account Management/CREATE ROLE.md | 19 +
.../Account Management/CREATE USER.md | 49 +
.../Account Management/DROP ROLE.md | 18 +
.../Account Management/DROP USER.md | 18 +
.../Account Management/GRANT.md | 55 +
.../Account Management/REVOKE.md | 23 +
.../Account Management/SET PASSWORD.md | 30 +
.../Account Management/SET PROPERTY.md | 56 +
.../Account Management/SHOW GRANTS.md | 30 +
.../Account Management/SHOW ROLES.md | 33 +
.../sql-statements/Account Management/help.md | 335 -----
.../Administration/ADMIN CANCEL REPAIR.md | 22 +
.../{admin_repair_stmt.md => ADMIN REPAIR.md} | 22 -
.../Administration/ADMIN SET CONFIG.md | 18 +
.../Administration/ADMIN SHOW CONFIG.md | 27 +
.../ADMIN SHOW REPLICA DISTRIBUTION.md | 26 +
.../ADMIN SHOW REPLICA STATUS.md | 39 +
.../Administration/ALTER CLUSTER.md | 28 +
.../Administration/ALTER SYSTEM.md | 94 ++
.../Administration/CANCEL DECOMMISSION.md | 15 +
.../Administration/CREATE CLUSTER.md | 36 +
.../{small_files.md => CREATE FILE.md} | 52 -
.../Administration/DROP CLUSTER.md | 18 +
.../Administration/DROP FILE.md | 25 +
.../sql-statements/Administration/ENTER.md | 18 +
.../Administration/LINK DATABASE.md | 24 +
.../Administration/MIGRATE DATABASE.md | 20 +
.../Administration/SHOW BACKENDS.md | 22 +
.../Administration/SHOW BROKER.md | 15 +
.../Administration/SHOW FILE.md | 27 +
.../Administration/SHOW FRONTENDS.md | 18 +
.../Administration/SHOW MIGRATIONS.md | 12 +
.../Administration/admin_show_stmt.md | 92 --
.../Administration/admin_stmt.md | 338 -----
.../Data Definition/ALTER DATABASE.md | 29 +
.../Data Definition/ALTER TABLE.md | 240 ++++
.../sql-statements/Data Definition/BACKUP.md | 39 +
.../Data Definition/CANCEL ALTER.md | 32 +
.../Data Definition/CANCEL BACKUP.md | 13 +
.../Data Definition/CANCEL RESTORE.md | 16 +
.../Data Definition/CREATE DATABASE.md | 13 +
.../Data Definition/CREATE REPOSITORY.md | 50 +
.../Data Definition/CREATE TABLE.md | 334 +++++
.../Data Definition/CREATE VIEW.md | 22 +
.../Data Definition/Colocate Join.md | 72 ++
.../Data Definition/DROP DATABASE.md | 16 +
.../Data Definition/DROP REPOSITORY.md | 16 +
.../Data Definition/DROP TABLE.md | 19 +
.../Data Definition/DROP VIEW.md | 14 +
.../sql-statements/Data Definition/HLL.md | 80 ++
.../sql-statements/Data Definition/RECOVER.md | 28 +
.../sql-statements/Data Definition/RESTORE.md | 52 +
.../Data Definition/TRUNCATE TABLE.md | 27 +
.../Data Definition/create-function.md | 19 +-
.../Data Definition/ddl_stmt.md | 1112 -----------------
.../Data Definition/drop-function.md | 15 +-
.../Data Definition/show-function.md | 19 +-
.../Data Manipulation/CANCEL DELETE.md | 10 +
.../Data Manipulation/CANCEL LABEL.md | 33 +
.../Data Manipulation/CANCEL LOAD.md | 20 +
.../Data Manipulation/DELETE.md | 36 +
.../Data Manipulation/EXPORT.md | 58 +
.../Data Manipulation/GET LABEL STATE.md | 33 +
.../sql-statements/Data Manipulation/LOAD.md | 284 +++++
.../Data Manipulation/MINI LOAD.md | 104 ++
.../Data Manipulation/MULTI LOAD.md | 82 ++
.../Data Manipulation/PAUSE ROUTINE LOAD.md | 10 +
.../Data Manipulation/RESTORE TABLET.md | 15 +
.../Data Manipulation/RESUME ROUTINE LOAD.md | 10 +
.../{routine_load.md => ROUTINE LOAD.md} | 194 ---
.../Data Manipulation/SHOW ALTER.md | 25 +
.../Data Manipulation/SHOW BACKUP.md | 37 +
.../Data Manipulation/SHOW DATA.md | 21 +
.../Data Manipulation/SHOW DATABASES.md | 9 +
.../Data Manipulation/SHOW DELETE.md | 13 +
.../Data Manipulation/SHOW EXPORT.md | 36 +
.../Data Manipulation/SHOW LOAD.md | 49 +
.../Data Manipulation/SHOW PARTITIONS.md | 16 +
.../Data Manipulation/SHOW PROPERTY.md | 16 +
.../Data Manipulation/SHOW REPOSITORIES.md | 23 +
.../Data Manipulation/SHOW RESTORE.md | 41 +
.../SHOW ROUTINE LOAD TASK.md | 9 +
.../Data Manipulation/SHOW ROUTINE LOAD.md | 32 +
.../Data Manipulation/SHOW SNAPSHOT.md | 31 +
.../Data Manipulation/SHOW TABLES.md | 9 +
.../Data Manipulation/SHOW TABLET.md | 17 +
.../Data Manipulation/STOP ROUTINE LOAD.md | 10 +
.../{streaming.md => STREAM LOAD.md} | 66 -
.../Data Manipulation/insert.md | 13 +-
.../Data Manipulation/manipulation_stmt.md | 950 --------------
.../sql-statements/Data Types/BIGINT.md | 7 +
.../sql-statements/Data Types/BOOLEAN.md | 7 +
.../sql-statements/Data Types/CHAR.md | 7 +
.../sql-statements/Data Types/DATE.md | 15 +
.../sql-statements/Data Types/DATETIME.md | 8 +
.../sql-statements/Data Types/DECIMAL.md | 8 +
.../sql-statements/Data Types/DOUBLE.md | 7 +
.../sql-statements/Data Types/FLOAT.md | 7 +
.../Data Types/HLL(HyperLogLog).md | 9 +
.../sql-statements/Data Types/INT.md | 7 +
.../sql-statements/Data Types/SMALLINT.md | 7 +
.../sql-statements/Data Types/TINYINT.md | 7 +
.../sql-statements/Data Types/VARCHAR.md | 7 +
.../sql-statements/Data Types/help.md | 77 --
docs/script/keyword.sh | 68 -
docs/script/merge.sh | 164 ---
docs/script/split.sh | 73 --
178 files changed, 3699 insertions(+), 4052 deletions(-)
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Account Management/CREATE ROLE.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Account Management/CREATE USER.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Account Management/DROP ROLE.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Account Management/DROP USER.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Account Management/GRANT.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Account Management/REVOKE.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Account Management/SET PASSWORD.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Account Management/SET PROPERTY.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Account Management/SHOW GRANTS.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Account Management/SHOW ROLES.md
delete mode 100644 docs/documentation/cn/sql-reference/sql-statements/Account Management/help.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Administration/ADMIN CANCEL REPAIR.md
rename docs/documentation/cn/sql-reference/sql-statements/Administration/{admin_repair_stmt.md => ADMIN REPAIR.md} (60%)
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Administration/ADMIN SET CONFIG.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Administration/ADMIN SHOW CONFIG.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Administration/ADMIN SHOW REPLICA DISTRIBUTION.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Administration/ADMIN SHOW REPLICA STATUS.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Administration/ALTER CLUSTER.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Administration/ALTER SYSTEM.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Administration/CANCEL DECOMMISSION.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Administration/CREATE CLUSTER.md
rename docs/documentation/cn/sql-reference/sql-statements/Administration/{small_files.md => CREATE FILE.md} (63%)
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Administration/DROP CLUSTER.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Administration/DROP FILE.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Administration/ENTER.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Administration/LINK DATABASE.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Administration/MIGRATE DATABASE.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Administration/SHOW BACKENDS.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Administration/SHOW BROKER.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Administration/SHOW FILE.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Administration/SHOW FRONTENDS.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Administration/SHOW MIGRATIONS.md
delete mode 100644 docs/documentation/cn/sql-reference/sql-statements/Administration/admin_show_stmt.md
delete mode 100644 docs/documentation/cn/sql-reference/sql-statements/Administration/admin_stmt.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Definition/ALTER DATABASE.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Definition/ALTER TABLE.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Definition/BACKUP.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Definition/CANCEL ALTER.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Definition/CANCEL BACKUP.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Definition/CANCEL RESTORE.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Definition/CREATE DATABASE.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Definition/CREATE REPOSITORY.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Definition/CREATE TABLE.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Definition/CREATE VIEW.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Definition/Colocate Join.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Definition/DROP DATABASE.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Definition/DROP REPOSITORY.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Definition/DROP TABLE.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Definition/DROP VIEW.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Definition/HLL.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Definition/RECOVER.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Definition/RESTORE.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Definition/TRUNCATE TABLE.md
delete mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Definition/ddl_stmt.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/CANCEL DELETE.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/CANCEL LABEL.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/CANCEL LOAD.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/DELETE.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/EXPORT.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/GET LABEL STATE.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/LOAD.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/MINI LOAD.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/MULTI LOAD.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/PAUSE ROUTINE LOAD.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/RESTORE TABLET.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/RESUME ROUTINE LOAD.md
rename docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/{routine_load.md => ROUTINE LOAD.md} (62%)
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW ALTER.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW BACKUP.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW DATA.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW DATABASES.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW DELETE.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW EXPORT.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW LOAD.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW PARTITIONS.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW PROPERTY.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW REPOSITORIES.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW RESTORE.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW ROUTINE LOAD TASK.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW ROUTINE LOAD.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW SNAPSHOT.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW TABLES.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW TABLET.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/STOP ROUTINE LOAD.md
rename docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/{streaming.md => STREAM LOAD.md} (78%)
delete mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/manipulation_stmt.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Types/BIGINT.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Types/BOOLEAN.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Types/CHAR.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Types/DATE.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Types/DATETIME.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Types/DECIMAL.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Types/DOUBLE.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Types/FLOAT.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Types/HLL(HyperLogLog).md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Types/INT.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Types/SMALLINT.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Types/TINYINT.md
create mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Types/VARCHAR.md
delete mode 100644 docs/documentation/cn/sql-reference/sql-statements/Data Types/help.md
delete mode 100755 docs/script/keyword.sh
delete mode 100755 docs/script/merge.sh
delete mode 100755 docs/script/split.sh
diff --git a/docs/Makefile b/docs/Makefile
index bad7301708cc65..a51e1336b6c279 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -33,8 +33,7 @@ ${HELP_DIR}:
# build help zip
HELP_OUTPUT = ${BUILD_DIR}/help-resource.zip
${HELP_OUTPUT}: documentation/cn/sql-reference ${BUILD_DIR} ${HELP_DIR}
- cp -r $* ${HELP_DIR} && cp script/*.sh ${HELP_DIR}
- cd ${HELP_DIR} && sh split.sh && sh merge.sh && sh keyword.sh && rm split.sh && rm merge.sh && rm keyword.sh && cd -
+ cp -r $* ${HELP_DIR}
zip -r $@ contents && rm -rf contents
.PHONY: zip_help
zip_help: ${HELP_OUTPUT}
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/avg.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/avg.md
index d73f2a9a8c4070..e10a5c91b1c373 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/avg.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/avg.md
@@ -1,16 +1,15 @@
# AVG
-
-## Syntax
-
-`AVG([DISTINCT] expr)`
-
-## Description
+## description
用于返回选中字段的平均值
可选字段DISTINCT参数可以用来返回去重平均值
-## Examples
+ Syntax
+
+`AVG([DISTINCT] expr)`
+
+## example
```
mysql> SELECT datetime, AVG(cost_time) FROM log_statis group by datetime;
@@ -28,3 +27,5 @@ mysql> SELECT datetime, AVG(distinct cost_time) FROM log_statis group by datetim
+---------------------+---------------------------+
```
+##keyword
+AVG,AVG
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/count.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/count.md
index 507ac1c649b8fb..39562a563b6710 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/count.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/count.md
@@ -1,14 +1,13 @@
# COUNT
+## description
-## Syntax
-
-`COUNT([DISTINCT] expr)`
+用于返回满足要求的行的数目
-## Description
+ Syntax
-用于返回满足要求的行的数目
+`COUNT([DISTINCT] expr)`
-## Examples
+## example
```
MySQL > select count(*) from log_statis group by datetime;
@@ -32,3 +31,5 @@ MySQL > select count(distinct datetime) from log_statis group by datetime;
| 71045 |
+-------------------------------+
```
+##keyword
+COUNT,COUNT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/count_distinct.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/count_distinct.md
index ecaee4400eafd4..b666220ca70185 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/count_distinct.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/count_distinct.md
@@ -1,14 +1,13 @@
# COUNT_DISTINCT
+## description
-## Syntax
-
-`COUNT_DISTINCT(expr)`
+用于返回满足要求的行的数目,或者非NULL行的数目
-## Description
+ Syntax
-用于返回满足要求的行的数目,或者非NULL行的数目
+`COUNT_DISTINCT(expr)`
-## Examples
+## example
```
MySQL > select count_distinct(query_id) from log_statis group by datetime;
@@ -18,3 +17,5 @@ MySQL > select count_distinct(query_id) from log_statis group by datetime;
| 577 |
+----------------------------+
```
+##keyword
+COUNT_DISTINCT,COUNT,DISTINCT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/hll_union_agg.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/hll_union_agg.md
index 69253c8c7289a0..06d27b3ecab07f 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/hll_union_agg.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/hll_union_agg.md
@@ -1,10 +1,5 @@
# HLL_UNION_AGG
-
-## Syntax
-
-`HLL_UNION_AGG(hll)`
-
-## Description
+## description
HLL是基于HyperLogLog算法的工程实现,用于保存HyperLogLog计算过程的中间结果
@@ -14,7 +9,11 @@ HLL是基于HyperLogLog算法的工程实现,用于保存HyperLogLog计算过
导入的时候通过hll_hash函数来指定数据中哪一列用于生成hll列,它常用于替代count distinct,通过结合rollup在业务上用于快速计算uv等
-## Examples
+ Syntax
+
+`HLL_UNION_AGG(hll)`
+
+## example
```
MySQL > select HLL_UNION_AGG(uv_set) from test_uv;;
+-------------------------+
@@ -23,3 +22,5 @@ MySQL > select HLL_UNION_AGG(uv_set) from test_uv;;
| 17721 |
+-------------------------+
```
+##keyword
+HLL_UNION_AGG,HLL,UNION,AGG
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/max.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/max.md
index d4ca2506471650..0cb3acbfad2ebf 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/max.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/max.md
@@ -1,14 +1,13 @@
# MAX
+## description
-## Syntax
-
-`MAX(expr)`
+返回expr表达式的最大值
-## Description
+ Syntax
-返回expr表达式的最大值
+`MAX(expr)`
-## Examples
+## example
```
MySQL > select max(scan_rows) from log_statis group by datetime;
+------------------+
@@ -17,3 +16,5 @@ MySQL > select max(scan_rows) from log_statis group by datetime;
| 4671587 |
+------------------+
```
+##keyword
+MAX,MAX
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/min.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/min.md
index e6c8f18516e4e3..275d9432fa08c9 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/min.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/min.md
@@ -1,14 +1,13 @@
# MIN
+## description
-## Syntax
-
-`MIN(expr)`
+返回expr表达式的最小值
-## Description
+ Syntax
-返回expr表达式的最小值
+`MIN(expr)`
-## Examples
+## example
```
MySQL > select min(scan_rows) from log_statis group by datetime;
+------------------+
@@ -17,3 +16,5 @@ MySQL > select min(scan_rows) from log_statis group by datetime;
| 0 |
+------------------+
```
+##keyword
+MIN,MIN
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/ndv.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/ndv.md
index ff3a08753421e4..3b01515a9379fa 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/ndv.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/ndv.md
@@ -1,16 +1,15 @@
# NDV
-
-## Syntax
-
-`NDV(expr)`
-
-## Description
+## description
返回类似于 COUNT(DISTINCT col) 结果的近似值聚合函数。
它比 COUNT 和 DISTINCT 组合的速度更快,并使用固定大小的内存,因此对于高基数的列可以使用更少的内存。
-## Examples
+ Syntax
+
+`NDV(expr)`
+
+## example
```
MySQL > select ndv(query_id) from log_statis group by datetime;
+-----------------+
@@ -19,3 +18,5 @@ MySQL > select ndv(query_id) from log_statis group by datetime;
| 17721 |
+-----------------+
```
+##keyword
+NDV,NDV
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/percentile_approx.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/percentile_approx.md
index 329f6b104a0071..fef57b4cfc40ee 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/percentile_approx.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/percentile_approx.md
@@ -1,16 +1,15 @@
# PERCENTILE_APPROX
-
-## Syntax
-
-`PERCENTILE_APPROX(expr, DOUBLE p)`
-
-## Description
+## description
返回第p个百分位点的近似值,p的值介于0到1之间
该函数使用固定大小的内存,因此对于高基数的列可以使用更少的内存,可用于计算tp99等统计值
-## Examples
+ Syntax
+
+`PERCENTILE_APPROX(expr, DOUBLE p)`
+
+## example
```
MySQL > select `table`, percentile_approx(cost_time,0.99) from log_statis group by `table`;
+---------------------+---------------------------+
@@ -18,4 +17,5 @@ MySQL > select `table`, percentile_approx(cost_time,0.99) from log_statis group
+----------+--------------------------------------+
| test | 54.22 |
+----------+--------------------------------------+
-```
\ No newline at end of file
+##keyword
+PERCENTILE_APPROX,PERCENTILE,APPROX
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/stddev.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/stddev.md
index 393ffdf1419925..fe1d990bf4ed47 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/stddev.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/stddev.md
@@ -1,14 +1,13 @@
# STDDEV,STDDEV_POP
+## description
-## Syntax
-
-`STDDEV(expr)`
+返回expr表达式的标准差
-## Description
+ Syntax
-返回expr表达式的标准差
+`STDDEV(expr)`
-## Examples
+## example
```
MySQL > select stddev(scan_rows) from log_statis group by datetime;
+---------------------+
@@ -24,3 +23,5 @@ MySQL > select stddev_pop(scan_rows) from log_statis group by datetime;
| 2.3722760595994914 |
+-------------------------+
```
+##keyword
+STDDEV,STDDEV_POP,STDDEV,STDDEV,POP
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/stddev_samp.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/stddev_samp.md
index 5243a99b90d12b..d28123d13745d6 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/stddev_samp.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/stddev_samp.md
@@ -1,14 +1,13 @@
# STDDEV_SAMP
+## description
-## Syntax
-
-`STDDEV_SAMP(expr)`
+返回expr表达式的样本标准差
-## Description
+ Syntax
-返回expr表达式的样本标准差
+`STDDEV_SAMP(expr)`
-## Examples
+## example
```
MySQL > select stddev_samp(scan_rows) from log_statis group by datetime;
+--------------------------+
@@ -17,3 +16,5 @@ MySQL > select stddev_samp(scan_rows) from log_statis group by datetime;
| 2.372044195280762 |
+--------------------------+
```
+##keyword
+STDDEV_SAMP,STDDEV,SAMP
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/sum.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/sum.md
index ad4fe7c9932b59..e69589a2444744 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/sum.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/sum.md
@@ -1,14 +1,13 @@
# SUM
+## description
-## Syntax
-
-`SUM(expr)`
+用于返回选中字段所有值的和
-## Description
+ Syntax
-用于返回选中字段所有值的和
+`SUM(expr)`
-## Examples
+## example
```
MySQL > select sum(scan_rows) from log_statis group by datetime;
+------------------+
@@ -17,3 +16,5 @@ MySQL > select sum(scan_rows) from log_statis group by datetime;
| 8217360135 |
+------------------+
```
+##keyword
+SUM,SUM
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/var_samp.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/var_samp.md
index 5da00ad73daeb3..58ba697e283355 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/var_samp.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/var_samp.md
@@ -1,14 +1,13 @@
# VAR_SAMP,VARIANCE_SAMP
+## description
-## Syntax
-
-`VAR_SAMP(expr)`
+返回expr表达式的样本方差
-## Description
+ Syntax
-返回expr表达式的样本方差
+`VAR_SAMP(expr)`
-## Examples
+## example
```
MySQL > select var_samp(scan_rows) from log_statis group by datetime;
+-----------------------+
@@ -16,4 +15,5 @@ MySQL > select var_samp(scan_rows) from log_statis group by datetime;
+-----------------------+
| 5.6227132145741789 |
+-----------------------+
-```
\ No newline at end of file
+##keyword
+VAR_SAMP,VARIANCE_SAMP,VAR,SAMP,VARIANCE,SAMP
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/variance.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/variance.md
index 27e948f3aec453..a20b18ebad8526 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/variance.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/variance.md
@@ -1,14 +1,13 @@
# VARIANCE,VAR_POP,VARIANCE_POP
+## description
-## Syntax
-
-`VARIANCE(expr)`
+返回expr表达式的方差
-## Description
+ Syntax
-返回expr表达式的方差
+`VARIANCE(expr)`
-## Examples
+## example
```
MySQL > select variance(scan_rows) from log_statis group by datetime;
+-----------------------+
@@ -23,4 +22,5 @@ MySQL > select var_pop(scan_rows) from log_statis group by datetime;
+----------------------+
| 5.6230744719006163 |
+----------------------+
-```
\ No newline at end of file
+##keyword
+VARIANCE,VAR_POP,VARIANCE_POP,VARIANCE,VAR,POP,VARIANCE,POP
diff --git a/docs/documentation/cn/sql-reference/sql-functions/cast.md b/docs/documentation/cn/sql-reference/sql-functions/cast.md
index 3d07805522a28f..ad0b58a79b9e40 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/cast.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/cast.md
@@ -1,26 +1,25 @@
# CAST
+## description
-## Syntax
+将 input 转成 指定的 type
+
+## description
+
+将当前列 input 转换为 BIGINT 类型
+
+ Syntax
```
cast (input as type)
```
-## Description
+ BIGINT type
-将 input 转成 指定的 type
-
-## BIGINT type
-
-## Syntax
+ Syntax
``` cast (input as BIGINT) ```
-## Description
-
-将当前列 input 转换为 BIGINT 类型
-
-## Examples
+## example
1. 转常量,或表中某列
@@ -54,3 +53,5 @@ mysql> select cast(cast ("11.2" as double) as bigint);
+----------------------------------------+
1 row in set (0.00 sec)
```
+##keyword
+CAST,CAST
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/current_timestamp.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/current_timestamp.md
index c73c10a79d579f..2524ad6805eeee 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/current_timestamp.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/current_timestamp.md
@@ -1,14 +1,13 @@
# current_timestamp
+## description
-## Syntax
-
-`DATETIME CURRENT_TIMESTAMP()`
+获得当前的时间,以Datetime类型返回
-## Description
+ Syntax
-获得当前的时间,以Datetime类型返回
+`DATETIME CURRENT_TIMESTAMP()`
-## Examples
+## example
```
mysql> select current_timestamp();
@@ -17,4 +16,5 @@ mysql> select current_timestamp();
+---------------------+
| 2019-05-27 15:59:33 |
+---------------------+
-```
\ No newline at end of file
+##keyword
+CURRENT_TIMESTAMP,CURRENT,TIMESTAMP
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_add.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_add.md
index 1ae067295caeab..e86c1d7ede9179 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_add.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_add.md
@@ -1,10 +1,5 @@
# date_add
-
-## Syntax
-
-`INT DATE_ADD(DATETIME date,INTERVAL expr type)`
-
-## Description
+## description
向日期添加指定的时间间隔。
@@ -14,7 +9,11 @@ expr 参数是您希望添加的时间间隔。
type 参数可以是下列值:YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
-## Examples
+ Syntax
+
+`INT DATE_ADD(DATETIME date,INTERVAL expr type)`
+
+## example
```
mysql> select date_add('2010-11-30 23:59:59', INTERVAL 2 DAY);
@@ -23,4 +22,5 @@ mysql> select date_add('2010-11-30 23:59:59', INTERVAL 2 DAY);
+-------------------------------------------------+
| 2010-12-02 23:59:59 |
+-------------------------------------------------+
-```
\ No newline at end of file
+##keyword
+DATE_ADD,DATE,ADD
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_format.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_format.md
index 95be89645e3066..c90482e4421f05 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_format.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_format.md
@@ -1,10 +1,5 @@
# date_format
-
-## Syntax
-
-`VARCHAR DATE_FORMAT(DATETIME date, VARCHAR format)`
-
-## Description
+## description
将日期类型按照format的类型转化位字符串,
当前支持最大128字节的字符串,如果返回值长度超过128,则返回NULL
@@ -75,7 +70,11 @@ date 参数是合法的日期。format 规定日期/时间的输出格式。
%y | 年,2 位
-## Examples
+ Syntax
+
+`VARCHAR DATE_FORMAT(DATETIME date, VARCHAR format)`
+
+## example
```
mysql> select date_format('2009-10-04 22:23:00', '%W %M %Y');
@@ -120,3 +119,5 @@ mysql> select date_format('2006-06-01', '%d');
| 01 |
+------------------------------------------+
```
+##keyword
+DATE_FORMAT,DATE,FORMAT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_sub.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_sub.md
index 20150ad9b2326c..0f3eb613206f6e 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_sub.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_sub.md
@@ -1,10 +1,5 @@
# date_sub
-
-## Syntax
-
-`INT DATE_SUB(DATETIME date,INTERVAL expr type)`
-
-## Description
+## description
从日期减去指定的时间间隔
@@ -14,7 +9,11 @@ expr 参数是您希望添加的时间间隔。
type 参数可以是下列值:YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
-## Examples
+ Syntax
+
+`INT DATE_SUB(DATETIME date,INTERVAL expr type)`
+
+## example
```
mysql> select date_sub('2010-11-30 23:59:59', INTERVAL 2 DAY);
@@ -23,4 +22,5 @@ mysql> select date_sub('2010-11-30 23:59:59', INTERVAL 2 DAY);
+-------------------------------------------------+
| 2010-11-28 23:59:59 |
+-------------------------------------------------+
-```
\ No newline at end of file
+##keyword
+DATE_SUB,DATE,SUB
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/datediff.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/datediff.md
index 085d1c8930f388..fb6e1a00398452 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/datediff.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/datediff.md
@@ -1,10 +1,5 @@
# datediff
-
-## Syntax
-
-`DATETIME DATEDIFF(DATETIME expr1,DATETIME expr2)`
-
-## Description
+## description
计算expr1 - expr2,结果精确到天。
@@ -12,7 +7,11 @@ expr1 和 expr2 参数是合法的日期或日期/时间表达式。
注释:只有值的日期部分参与计算。
-## Examples
+ Syntax
+
+`DATETIME DATEDIFF(DATETIME expr1,DATETIME expr2)`
+
+## example
```
mysql> select datediff(CAST('2007-12-31 23:59:59' AS DATETIME), CAST('2007-12-30' AS DATETIME));
@@ -29,3 +28,5 @@ mysql> select datediff(CAST('2010-11-30 23:59:59' AS DATETIME), CAST('2010-12-31
| -31 |
+-----------------------------------------------------------------------------------+
```
+##keyword
+DATEDIFF,DATEDIFF
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/day.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/day.md
index 25852adde340c2..a59c3ede489f04 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/day.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/day.md
@@ -1,16 +1,15 @@
# day
-
-## Syntax
-
-`INT DAY(DATETIME date)`
-
-## Description
+## description
获得日期中的天信息,返回值范围从1-31。
参数为Date或者Datetime类型
-## Examples
+ Syntax
+
+`INT DAY(DATETIME date)`
+
+## example
```
mysql> select day('1987-01-31');
@@ -19,4 +18,5 @@ mysql> select day('1987-01-31');
+----------------------------+
| 31 |
+----------------------------+
-```
\ No newline at end of file
+##keyword
+DAY,DAY
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayname.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayname.md
index b6353f609192ab..450d417b798d42 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayname.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayname.md
@@ -1,16 +1,15 @@
# dayname
-
-## Syntax
-
-`VARCHAR DAYNAME(DATE)`
-
-## Description
+## description
返回日期对应的日期名字
参数为Date或者Datetime类型
-## Examples
+ Syntax
+
+`VARCHAR DAYNAME(DATE)`
+
+## example
```
mysql> select dayname('2007-02-03 00:00:00');
@@ -19,4 +18,5 @@ mysql> select dayname('2007-02-03 00:00:00');
+--------------------------------+
| Saturday |
+--------------------------------+
-```
\ No newline at end of file
+##keyword
+DAYNAME,DAYNAME
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofmonth.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofmonth.md
index 40fe41767c0844..a75bd2799e64a9 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofmonth.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofmonth.md
@@ -1,16 +1,15 @@
# dayofmonth
-
-## Syntax
-
-`INT DAYOFMONTH(DATETIME date)`
-
-## Description
+## description
获得日期中的天信息,返回值范围从1-31。
参数为Date或者Datetime类型
-## Examples
+ Syntax
+
+`INT DAYOFMONTH(DATETIME date)`
+
+## example
```
mysql> select dayofmonth('1987-01-31');
@@ -19,4 +18,5 @@ mysql> select dayofmonth('1987-01-31');
+-----------------------------------+
| 31 |
+-----------------------------------+
-```
\ No newline at end of file
+##keyword
+DAYOFMONTH,DAYOFMONTH
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofweek.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofweek.md
index 43e6511600d016..6806d0cc55e5bf 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofweek.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofweek.md
@@ -1,16 +1,15 @@
# dayofweek
-
-## Syntax
-
-`INT dayofweek(DATETIME date)`
-
-## Description
+## description
DAYOFWEEK函数返回日期的工作日索引值,即星期日为1,星期一为2,星期六为7
参数为Date或者Datetime类型
-## Examples
+ Syntax
+
+`INT dayofweek(DATETIME date)`
+
+## example
```
mysql> select dayofweek('2019-06-25');
@@ -19,4 +18,5 @@ mysql> select dayofweek('2019-06-25');
+----------------------------------+
| 3 |
+----------------------------------+
-```
\ No newline at end of file
+##keyword
+DAYOFWEEK,DAYOFWEEK
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofyear.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofyear.md
index 6f91d92e3dd1e4..e060a7326c1ce6 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofyear.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofyear.md
@@ -1,16 +1,15 @@
# dayofyear
-
-## Syntax
-
-`INT DAYOFYEAR(DATETIME date)`
-
-## Description
+## description
获得日期中对应当年中的哪一天。
参数为Date或者Datetime类型
-## Examples
+ Syntax
+
+`INT DAYOFYEAR(DATETIME date)`
+
+## example
```
mysql> select dayofyear('2007-02-03 00:00:00');
@@ -19,4 +18,5 @@ mysql> select dayofyear('2007-02-03 00:00:00');
+----------------------------------+
| 34 |
+----------------------------------+
-```
\ No newline at end of file
+##keyword
+DAYOFYEAR,DAYOFYEAR
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/from_days.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/from_days.md
index abfbdb7216f699..aea93d22683bc0 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/from_days.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/from_days.md
@@ -1,14 +1,13 @@
# from_days
+## description
-## Syntax
-
-`DATE FROM_DAYS(INT N)`
+通过距离0000-01-01日的天数计算出哪一天
-## Description
+ Syntax
-通过距离0000-01-01日的天数计算出哪一天
+`DATE FROM_DAYS(INT N)`
-## Examples
+## example
```
mysql> select from_days(730669);
@@ -17,4 +16,5 @@ mysql> select from_days(730669);
+-------------------+
| 2000-07-03 |
+-------------------+
-```
\ No newline at end of file
+##keyword
+FROM_DAYS,FROM,DAYS
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/from_unixtime.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/from_unixtime.md
index 401362d83578ae..5a9a208d428dd2 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/from_unixtime.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/from_unixtime.md
@@ -1,10 +1,5 @@
# from_unixtime
-
-## Syntax
-
-`DATETIME FROM_UNIXTIME(INT unix_timestamp[, VARCHAR string_format])`
-
-## Description
+## description
将unix时间戳转化位对应的time格式,返回的格式由string_format指定
@@ -16,7 +11,11 @@
其余string_format格式是非法的,返回NULL
-## Examples
+ Syntax
+
+`DATETIME FROM_UNIXTIME(INT unix_timestamp[, VARCHAR string_format])`
+
+## example
```
mysql> select from_unixtime(1196440219);
@@ -39,4 +38,5 @@ mysql> select from_unixtime(1196440219, 'yyyy-MM-dd HH:mm:ss');
+--------------------------------------------------+
| 2007-12-01 00:30:19 |
+--------------------------------------------------+
-```
\ No newline at end of file
+##keyword
+FROM_UNIXTIME,FROM,UNIXTIME
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/month.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/month.md
index b85715b4784bbe..b03bcfeccbf711 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/month.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/month.md
@@ -1,16 +1,15 @@
# month
-
-## Syntax
-
-`INT MONTH(DATETIME date)`
-
-## Description
+## description
返回时间类型中的月份信息,范围是1, 12
参数为Date或者Datetime类型
-## Examples
+ Syntax
+
+`INT MONTH(DATETIME date)`
+
+## example
```
mysql> select month('1987-01-01');
@@ -19,4 +18,5 @@ mysql> select month('1987-01-01');
+-----------------------------+
| 1 |
+-----------------------------+
-```
\ No newline at end of file
+##keyword
+MONTH,MONTH
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/monthname.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/monthname.md
index 6ba49bf6afb03c..54036e0b4b6339 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/monthname.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/monthname.md
@@ -1,16 +1,15 @@
# monthname
-
-## Syntax
-
-`VARCHAR MONTHNAME(DATE)`
-
-## Description
+## description
返回日期对应的月份名字
参数为Date或者Datetime类型
-## Examples
+ Syntax
+
+`VARCHAR MONTHNAME(DATE)`
+
+## example
```
mysql> select monthname('2008-02-03 00:00:00');
@@ -19,4 +18,5 @@ mysql> select monthname('2008-02-03 00:00:00');
+----------------------------------+
| February |
+----------------------------------+
-```
\ No newline at end of file
+##keyword
+MONTHNAME,MONTHNAME
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/now.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/now.md
index ff2a365a92bec7..0a358030b7b926 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/now.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/now.md
@@ -1,14 +1,13 @@
# now
+## description
-## Syntax
-
-`DATETIME NOW()`
+获得当前的时间,以Datetime类型返回
-## Description
+ Syntax
-获得当前的时间,以Datetime类型返回
+`DATETIME NOW()`
-## Examples
+## example
```
mysql> select now();
@@ -17,4 +16,5 @@ mysql> select now();
+---------------------+
| 2019-05-27 15:58:25 |
+---------------------+
-```
\ No newline at end of file
+##keyword
+NOW,NOW
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/str_to_date.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/str_to_date.md
index b44fc84a46cb93..15acc87ac5ecce 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/str_to_date.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/str_to_date.md
@@ -1,16 +1,15 @@
# str_to_date
-
-## Syntax
-
-`DATETIME STR_TO_DATE(VARCHAR str, VARCHAR format)`
-
-## Description
+## description
通过format指定的方式将str转化为DATE类型,如果转化结果不对返回NULL
支持的format格式与date_format一致
-## Examples
+ Syntax
+
+`DATETIME STR_TO_DATE(VARCHAR str, VARCHAR format)`
+
+## example
```
mysql> select str_to_date('2014-12-21 12:34:56', '%Y-%m-%d %H:%i:%s');
@@ -26,4 +25,5 @@ mysql> select str_to_date('200442 Monday', '%X%V %W');
+-----------------------------------------+
| 2004-10-18 |
+-----------------------------------------+
-```
\ No newline at end of file
+##keyword
+STR_TO_DATE,STR,TO,DATE
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/timediff.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/timediff.md
index d45e6b4ef34232..20d3efa76013e6 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/timediff.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/timediff.md
@@ -1,10 +1,5 @@
# timediff
-
-## Syntax
-
-`TIME TIMEDIFF(DATETIME expr1, DATETIME expr2)`
-
-## Description
+## description
TIMEDIFF返回两个DATETIME之间的差值
@@ -12,7 +7,11 @@ TIMEDIFF函数返回表示为时间值的expr1 - expr2的结果,返回值为TI
其结果被限制在从-838:59:59到838:59:59之间的TIME值范围内
-## Examples
+ Syntax
+
+`TIME TIMEDIFF(DATETIME expr1, DATETIME expr2)`
+
+## example
```
mysql> SELECT TIMEDIFF(now(),utc_timestamp());
@@ -43,3 +42,5 @@ mysql> SELECT TIMEDIFF('2019-01-01 00:00:00', NULL);
| NULL |
+---------------------------------------+
```
+##keyword
+TIMEDIFF,TIMEDIFF
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/to_days.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/to_days.md
index 2deb3cc5809684..e95c874914784a 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/to_days.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/to_days.md
@@ -1,16 +1,15 @@
# to_days
-
-## Syntax
-
-`INT TO_DAYS(DATETIME date)`
-
-## Description
+## description
返回date距离0000-01-01的天数
参数为Date或者Datetime类型
-## Examples
+ Syntax
+
+`INT TO_DAYS(DATETIME date)`
+
+## example
```
mysql> select to_days('2007-10-07');
@@ -19,4 +18,5 @@ mysql> select to_days('2007-10-07');
+-----------------------+
| 733321 |
+-----------------------+
-```
\ No newline at end of file
+##keyword
+TO_DAYS,TO,DAYS
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/unix_timestamp.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/unix_timestamp.md
index dfdb0461103973..1bdc57a5490f93 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/unix_timestamp.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/unix_timestamp.md
@@ -1,10 +1,5 @@
# unix_timestamp
-
-## Syntax
-
-`INT UNIX_TIMESTAMP(), UNIX_TIMESTAMP(DATETIME date)`
-
-## Description
+## description
将Date或者Datetime类型转化为unix时间戳
@@ -12,7 +7,11 @@
参数需要是Date或者Datetime类型
-## Examples
+ Syntax
+
+`INT UNIX_TIMESTAMP(), UNIX_TIMESTAMP(DATETIME date)`
+
+## example
```
mysql> select unix_timestamp();
@@ -28,4 +27,5 @@ mysql> select unix_timestamp('2007-11-30 10:30:19');
+---------------------------------------+
| 1196389819 |
+---------------------------------------+
-```
\ No newline at end of file
+##keyword
+UNIX_TIMESTAMP,UNIX,TIMESTAMP
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/utc_timestamp.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/utc_timestamp.md
index a93ed98a139c86..d2cdd5dcd41393 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/utc_timestamp.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/utc_timestamp.md
@@ -1,10 +1,5 @@
# utc_timestamp
-
-## Syntax
-
-`DATETIME UTC_TIMESTAMP()`
-
-## Description
+## description
返回当前UTC日期和时间在 "YYYY-MM-DD HH:MM:SS" 或
@@ -12,7 +7,11 @@
根据该函数是否用在字符串或数字语境中
-## Examples
+ Syntax
+
+`DATETIME UTC_TIMESTAMP()`
+
+## example
```
mysql> select utc_timestamp(),utc_timestamp() + 1;
@@ -21,4 +20,5 @@ mysql> select utc_timestamp(),utc_timestamp() + 1;
+---------------------+---------------------+
| 2019-07-10 12:31:18 | 20190710123119 |
+---------------------+---------------------+
-```
\ No newline at end of file
+##keyword
+UTC_TIMESTAMP,UTC,TIMESTAMP
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/workofyear.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/workofyear.md
index e04f2a45ad84c3..bb904f63425432 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/workofyear.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/workofyear.md
@@ -1,17 +1,16 @@
# weekofyear
-
-## Syntax
-
-`INT WEEKOFYEAR(DATETIME date)`
-
-## Description
+## description
获得一年中的第几周
参数为Date或者Datetime类型
-## Examples
+ Syntax
+
+`INT WEEKOFYEAR(DATETIME date)`
+
+## example
```
mysql> select weekofyear('2008-02-20 00:00:00');
@@ -20,4 +19,5 @@ mysql> select weekofyear('2008-02-20 00:00:00');
+-----------------------------------+
| 8 |
+-----------------------------------+
-```
\ No newline at end of file
+##keyword
+WEEKOFYEAR,WEEKOFYEAR
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/year.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/year.md
index e2511edf4d43cf..324c24cf57e1f7 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/year.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/year.md
@@ -1,16 +1,15 @@
# year
-
-## Syntax
-
-`INT YEAR(DATETIME date)`
-
-## Description
+## description
返回date类型的year部分,范围从1000-9999
参数为Date或者Datetime类型
-## Examples
+ Syntax
+
+`INT YEAR(DATETIME date)`
+
+## example
```
mysql> select year('1987-01-01');
@@ -19,4 +18,5 @@ mysql> select year('1987-01-01');
+-----------------------------+
| 1987 |
+-----------------------------+
-```
\ No newline at end of file
+##keyword
+YEAR,YEAR
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_astext.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_astext.md
index 4b37351235b6f0..a4dc5b6e37a571 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_astext.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_astext.md
@@ -1,14 +1,13 @@
# `ST_AsText`,`ST_AsWKT`
+## description
-## Syntax
-
-`VARCHAR ST_AsText(GEOMETRY geo)`
+将一个几何图形转化为WKT(Well Known Text)的表示形式
-## Description
+ Syntax
-将一个几何图形转化为WKT(Well Known Text)的表示形式
+`VARCHAR ST_AsText(GEOMETRY geo)`
-## Examples
+## example
```
mysql> SELECT ST_AsText(ST_Point(24.7, 56.7));
@@ -18,3 +17,5 @@ mysql> SELECT ST_AsText(ST_Point(24.7, 56.7));
| POINT (24.7 56.7) |
+---------------------------------+
```
+##keyword
+ST_ASTEXT,ST_ASWKT,ST,ASTEXT,ST,ASWKT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_circle.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_circle.md
index 073d49f6c80f86..0c02204403c06b 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_circle.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_circle.md
@@ -1,15 +1,14 @@
# `ST_Circle`
-
-## Syntax
-
-`GEOMETRY ST_Circle(DOUBLE center_lng, DOUBLE center_lat, DOUBLE radius)`
-
-## Description
+## description
将一个WKT(Well Known Text)转化为地球球面上的一个圆。其中`center_lng`表示的圆心的经度,
`center_lat`表示的是圆心的纬度,`radius`表示的是圆的半径,单位是米
-## Examples
+ Syntax
+
+`GEOMETRY ST_Circle(DOUBLE center_lng, DOUBLE center_lat, DOUBLE radius)`
+
+## example
```
mysql> SELECT ST_AsText(ST_Circle(111, 64, 10000));
@@ -19,3 +18,5 @@ mysql> SELECT ST_AsText(ST_Circle(111, 64, 10000));
| CIRCLE ((111 64), 10000) |
+--------------------------------------------+
```
+##keyword
+ST_CIRCLE,ST,CIRCLE
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_contains.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_contains.md
index 47e939f4099609..5269281c0c6254 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_contains.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_contains.md
@@ -1,14 +1,13 @@
# `ST_Contains`
+## description
-## Syntax
-
-`BOOL ST_Contains(GEOMETRY shape1, GEOMETRY shape2)`
+判断几何图形shape1是否完全能够包含几何图形shape2
-## Description
+ Syntax
-判断几何图形shape1是否完全能够包含几何图形shape2
+`BOOL ST_Contains(GEOMETRY shape1, GEOMETRY shape2)`
-## Examples
+## example
```
mysql> SELECT ST_Contains(ST_Polygon("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))"), ST_Point(5, 5));
@@ -25,3 +24,5 @@ mysql> SELECT ST_Contains(ST_Polygon("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))"),
| 0 |
+------------------------------------------------------------------------------------------+
```
+##keyword
+ST_CONTAINS,ST,CONTAINS
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_distance_sphere.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_distance_sphere.md
index 4b5b034f07e814..fc48a1ae2e3e64 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_distance_sphere.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_distance_sphere.md
@@ -1,14 +1,13 @@
# `ST_Distance_Sphere`
+## description
-## Syntax
-
-`DOUBLE ST_Distance_Sphere(DOUBLE x_lng, DOUBLE x_lat, DOUBLE y_lng, DOUBLE x_lat)`
+计算地球两点之间的球面距离,单位为 米。传入的参数分别为X点的经度,X点的纬度,Y点的经度,Y点的纬度。
-## Description
+ Syntax
-计算地球两点之间的球面距离,单位为 米。传入的参数分别为X点的经度,X点的纬度,Y点的经度,Y点的纬度。
+`DOUBLE ST_Distance_Sphere(DOUBLE x_lng, DOUBLE x_lat, DOUBLE y_lng, DOUBLE x_lat)`
-## Examples
+## example
```
mysql> select st_distance_sphere(116.35620117, 39.939093, 116.4274406433, 39.9020987219);
@@ -18,3 +17,5 @@ mysql> select st_distance_sphere(116.35620117, 39.939093, 116.4274406433, 39.902
| 7336.9135549995917 |
+----------------------------------------------------------------------------+
```
+##keyword
+ST_DISTANCE_SPHERE,ST,DISTANCE,SPHERE
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_geometryfromtext.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_geometryfromtext.md
index 577d1558a09ccb..bdd99cbdc759fb 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_geometryfromtext.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_geometryfromtext.md
@@ -1,14 +1,13 @@
# `ST_GeometryFromText`,`ST_GeomFromText`
+## description
-## Syntax
-
-`GEOMETRY ST_GeometryFromText(VARCHAR wkt)`
+将一个WKT(Well Known Text)转化为对应的内存的几何形式
-## Description
+ Syntax
-将一个WKT(Well Known Text)转化为对应的内存的几何形式
+`GEOMETRY ST_GeometryFromText(VARCHAR wkt)`
-## Examples
+## example
```
mysql> SELECT ST_AsText(ST_GeometryFromText("LINESTRING (1 1, 2 2)"));
@@ -18,3 +17,5 @@ mysql> SELECT ST_AsText(ST_GeometryFromText("LINESTRING (1 1, 2 2)"));
| LINESTRING (1 1, 2 2) |
+---------------------------------------------------------+
```
+##keyword
+ST_GEOMETRYFROMTEXT,ST_GEOMFROMTEXT,ST,GEOMETRYFROMTEXT,ST,GEOMFROMTEXT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_linefromtext.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_linefromtext.md
index 40201909932ad3..bad31994e470dd 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_linefromtext.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_linefromtext.md
@@ -1,14 +1,13 @@
# `ST_LineFromText`,`ST_LineStringFromText`
+## description
-## Syntax
-
-`GEOMETRY ST_LineFromText(VARCHAR wkt)`
+将一个WKT(Well Known Text)转化为一个Line形式的内存表现形式
-## Description
+ Syntax
-将一个WKT(Well Known Text)转化为一个Line形式的内存表现形式
+`GEOMETRY ST_LineFromText(VARCHAR wkt)`
-## Examples
+## example
```
mysql> SELECT ST_AsText(ST_LineFromText("LINESTRING (1 1, 2 2)"));
@@ -18,3 +17,5 @@ mysql> SELECT ST_AsText(ST_LineFromText("LINESTRING (1 1, 2 2)"));
| LINESTRING (1 1, 2 2) |
+---------------------------------------------------------+
```
+##keyword
+ST_LINEFROMTEXT,ST_LINESTRINGFROMTEXT,ST,LINEFROMTEXT,ST,LINESTRINGFROMTEXT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_point.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_point.md
index 9bf5e30f2178f8..19a43f9f1a0457 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_point.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_point.md
@@ -1,15 +1,14 @@
# `ST_Point`
-
-## Syntax
-
-`POINT ST_Point(DOUBLE x, DOUBLE y)`
-
-## Description
+## description
通过给定的X坐标值,Y坐标值返回对应的Point。
当前这个值只是在球面集合上有意义,X/Y对应的是经度/纬度(longitude/latitude)
-## Examples
+ Syntax
+
+`POINT ST_Point(DOUBLE x, DOUBLE y)`
+
+## example
```
mysql> SELECT ST_AsText(ST_Point(24.7, 56.7));
@@ -19,3 +18,5 @@ mysql> SELECT ST_AsText(ST_Point(24.7, 56.7));
| POINT (24.7 56.7) |
+---------------------------------+
```
+##keyword
+ST_POINT,ST,POINT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_polygon.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_polygon.md
index 6e5765e3e61918..74cd5a93da14ac 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_polygon.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_polygon.md
@@ -1,14 +1,13 @@
# `ST_Polygon`,`ST_PolyFromText`,`ST_PolygonFromText`
+## description
-## Syntax
-
-`GEOMETRY ST_Polygon(VARCHAR wkt)`
+将一个WKT(Well Known Text)转化为对应的多边形内存形式
-## Description
+ Syntax
-将一个WKT(Well Known Text)转化为对应的多边形内存形式
+`GEOMETRY ST_Polygon(VARCHAR wkt)`
-## Examples
+## example
```
mysql> SELECT ST_AsText(ST_Polygon("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))"));
@@ -18,3 +17,5 @@ mysql> SELECT ST_AsText(ST_Polygon("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))"));
| POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0)) |
+------------------------------------------------------------------+
```
+##keyword
+ST_POLYGON,ST_POLYFROMTEXT,ST_POLYGONFROMTEXT,ST,POLYGON,ST,POLYFROMTEXT,ST,POLYGONFROMTEXT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_x.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_x.md
index 644b9ee11dc1a6..523aecae93f270 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_x.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_x.md
@@ -1,14 +1,13 @@
# `ST_X`
+## description
-## Syntax
-
-`DOUBLE ST_X(POINT point)`
+当point是一个合法的POINT类型时,返回对应的X坐标值
-## Description
+ Syntax
-当point是一个合法的POINT类型时,返回对应的X坐标值
+`DOUBLE ST_X(POINT point)`
-## Examples
+## example
```
mysql> SELECT ST_X(ST_Point(24.7, 56.7));
@@ -18,3 +17,5 @@ mysql> SELECT ST_X(ST_Point(24.7, 56.7));
| 24.7 |
+----------------------------+
```
+##keyword
+ST_X,ST,X
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_y.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_y.md
index fb02ddb102d4c0..6b23348b23a620 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_y.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_y.md
@@ -1,14 +1,13 @@
# `ST_Y`
+## description
-## Syntax
-
-`DOUBLE ST_Y(POINT point)`
+当point是一个合法的POINT类型时,返回对应的Y坐标值
-## Description
+ Syntax
-当point是一个合法的POINT类型时,返回对应的Y坐标值
+`DOUBLE ST_Y(POINT point)`
-## Examples
+## example
```
mysql> SELECT ST_Y(ST_Point(24.7, 56.7));
@@ -18,3 +17,5 @@ mysql> SELECT ST_Y(ST_Point(24.7, 56.7));
| 56.7 |
+----------------------------+
```
+##keyword
+ST_Y,ST,Y
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/ascii.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/ascii.md
index 95debfd84a0a0d..832d791418ae10 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/ascii.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/ascii.md
@@ -1,14 +1,13 @@
# ascii
+## description
-## Syntax
-
-`INT ascii(VARCHAR str)`
+返回字符串第一个字符对应的 ascii 码
-## Description
+ Syntax
-返回字符串第一个字符对应的 ascii 码
+`INT ascii(VARCHAR str)`
-## Examples
+## example
```
mysql> select ascii('1');
@@ -25,3 +24,5 @@ mysql> select ascii('234');
| 50 |
+--------------+
```
+##keyword
+ASCII,ASCII
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/concat.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/concat.md
index 92ba559f613bf5..59600c30a8973c 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/concat.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/concat.md
@@ -1,14 +1,13 @@
# concat
+## description
-## Syntax
-
-`VARCHAR concat(VARCHAR,...)`
+将多个字符串连接起来, 如果参数中任意一个值是 NULL,那么返回的结果就是 NULL
-## Description
+ Syntax
-将多个字符串连接起来, 如果参数中任意一个值是 NULL,那么返回的结果就是 NULL
+`VARCHAR concat(VARCHAR,...)`
-## Examples
+## example
```
mysql> select concat("a", "b");
@@ -32,3 +31,5 @@ mysql> select concat("a", null, "c");
| NULL |
+------------------------+
```
+##keyword
+CONCAT,CONCAT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/concat_ws.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/concat_ws.md
index d72b7fd7e6b816..83e38b7b4e2aaf 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/concat_ws.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/concat_ws.md
@@ -1,16 +1,15 @@
# concat_ws
-
-## Syntax
-
-`VARCHAR concat_ws(VARCHAR sep, VARCHAR str,...)`
-
-## Description
+## description
使用第一个参数 sep 作为连接符,将第二个参数以及后续所有参数拼接成一个字符串.
如果分隔符是 NULL,返回 NULL。
`concat_ws`函数不会跳过空字符串,会跳过 NULL 值
-## Examples
+ Syntax
+
+`VARCHAR concat_ws(VARCHAR sep, VARCHAR str,...)`
+
+## example
```
mysql> select concat_ws("or", "d", "is");
@@ -34,3 +33,5 @@ mysql> select concat_ws("or", "d", NULL,"is");
| doris |
+---------------------------------+
```
+##keyword
+CONCAT_WS,CONCAT,WS
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/find_in_set.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/find_in_set.md
index 121a6672e297f1..15e992ea5642d4 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/find_in_set.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/find_in_set.md
@@ -1,14 +1,13 @@
# find_in_set
+## description
-## Syntax
-
-`INT find_in_set(VARCHAR str, VARCHAR strlist)`
+返回 strlist 中第一次出现 str 的位置(从1开始计数)。strlist 是用逗号分隔的字符串。如果没有找到,返回0。任意参数为 NULL ,返回 NULL。
-## Description
+ Syntax
-返回 strlist 中第一次出现 str 的位置(从1开始计数)。strlist 是用逗号分隔的字符串。如果没有找到,返回0。任意参数为 NULL ,返回 NULL。
+`INT find_in_set(VARCHAR str, VARCHAR strlist)`
-## Examples
+## example
```
mysql> select find_in_set("b", "a,b,c");
@@ -18,3 +17,5 @@ mysql> select find_in_set("b", "a,b,c");
| 2 |
+---------------------------+
```
+##keyword
+FIND_IN_SET,FIND,IN,SET
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_double.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_double.md
index a7b1bd198c7bcd..7eff7cad1eb22f 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_double.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_double.md
@@ -1,10 +1,5 @@
# get_json_double
-
-## Syntax
-
-`DOUBLE get_json_double(VARCHAR json_str, VARCHAR json_path)
-
-## Description
+## description
解析并获取 json 字符串内指定路径的浮点型内容。
其中 json_path 必须以 $ 符号作为开头,使用 . 作为路径分割符。如果路径中包含 . ,则可以使用双引号包围。
@@ -12,7 +7,11 @@
path 的内容不能包含 ", [ 和 ]。
如果 json_string 格式不对,或 json_path 格式不对,或无法找到匹配项,则返回 NULL。
-## Examples
+ Syntax
+
+`DOUBLE get_json_double(VARCHAR json_str, VARCHAR json_path)
+
+## example
1. 获取 key 为 "k1" 的 value
@@ -45,3 +44,5 @@ mysql> SELECT get_json_double('{"k1.key":{"k2":[1.1, 2.2]}}', '$."k1.key".k2[0]'
| 1.1 |
+---------------------------------------------------------------------+
```
+##keyword
+GET_JSON_DOUBLE,GET,JSON,DOUBLE
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_int.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_int.md
index 005fad597c9c48..5b6088223b350b 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_int.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_int.md
@@ -1,10 +1,5 @@
# get_json_int
-
-## Syntax
-
-`INT get_json_int(VARCHAR json_str, VARCHAR json_path)
-
-## Description
+## description
解析并获取 json 字符串内指定路径的整型内容。
其中 json_path 必须以 $ 符号作为开头,使用 . 作为路径分割符。如果路径中包含 . ,则可以使用双引号包围。
@@ -12,7 +7,11 @@
path 的内容不能包含 ", [ 和 ]。
如果 json_string 格式不对,或 json_path 格式不对,或无法找到匹配项,则返回 NULL。
-## Examples
+ Syntax
+
+`INT get_json_int(VARCHAR json_str, VARCHAR json_path)
+
+## example
1. 获取 key 为 "k1" 的 value
@@ -45,3 +44,5 @@ mysql> SELECT get_json_int('{"k1.key":{"k2":[1, 2]}}', '$."k1.key".k2[0]');
| 1 |
+--------------------------------------------------------------+
```
+##keyword
+GET_JSON_INT,GET,JSON,INT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_string.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_string.md
index ab576a8ac189d3..eb377a5bf30e39 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_string.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_string.md
@@ -1,10 +1,5 @@
# get_json_string
-
-## Syntax
-
-`VARCHAR get_json_string(VARCHAR json_str, VARCHAR json_path)
-
-## Description
+## description
解析并获取 json 字符串内指定路径的字符串内容。
其中 json_path 必须以 $ 符号作为开头,使用 . 作为路径分割符。如果路径中包含 . ,则可以使用双引号包围。
@@ -12,7 +7,11 @@
path 的内容不能包含 ", [ 和 ]。
如果 json_string 格式不对,或 json_path 格式不对,或无法找到匹配项,则返回 NULL。
-## Examples
+ Syntax
+
+`VARCHAR get_json_string(VARCHAR json_str, VARCHAR json_path)
+
+## example
1. 获取 key 为 "k1" 的 value
@@ -55,3 +54,5 @@ mysql> SELECT get_json_string('[{"k1":"v1"}, {"k2":"v2"}, {"k1":"v3"}, {"k1":"v4
| ["v1","v3","v4"] |
+---------------------------------------------------------------------------------+
```
+##keyword
+GET_JSON_STRING,GET,JSON,STRING
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/group_concat.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/group_concat.md
index f1a3151516588c..6a6f58d2d862f9 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/group_concat.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/group_concat.md
@@ -1,14 +1,13 @@
# group_concat
+## description
-## Syntax
-
-`VARCHAR group_concat(VARCHAR str[, VARCHAR sep])`
+该函数是类似于 sum() 的聚合函数,group_concat 将结果集中的多行结果连接成一个字符串。第二个参数 sep 为字符串之间的连接符号,该参数可以省略。该函数通常需要和 group by 语句一起使用。
-## Description
+ Syntax
-该函数是类似于 sum() 的聚合函数,group_concat 将结果集中的多行结果连接成一个字符串。第二个参数 sep 为字符串之间的连接符号,该参数可以省略。该函数通常需要和 group by 语句一起使用。
+`VARCHAR group_concat(VARCHAR str[, VARCHAR sep])`
-## Examples
+## example
```
mysql> select value from test;
@@ -34,3 +33,5 @@ mysql> select group_concat(value, " ") from test;
| a b c |
+----------------------------+
```
+##keyword
+GROUP_CONCAT,GROUP,CONCAT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/instr.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/instr.md
index 58276bf4c4c098..8da641329705e6 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/instr.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/instr.md
@@ -1,14 +1,13 @@
# instr
+## description
-## Syntax
-
-`INT instr(VARCHAR str, VARCHAR substr)`
+返回 substr 在 str 中第一次出现的位置(从1开始计数)。如果 substr 不在 str 中出现,则返回0。
-## Description
+ Syntax
-返回 substr 在 str 中第一次出现的位置(从1开始计数)。如果 substr 不在 str 中出现,则返回0。
+`INT instr(VARCHAR str, VARCHAR substr)`
-## Examples
+## example
```
mysql> select instr("abc", "b");
@@ -25,3 +24,5 @@ mysql> select instr("abc", "d");
| 0 |
+-------------------+
```
+##keyword
+INSTR,INSTR
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/lcase.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/lcase.md
index be8464ba14c674..a56b914f568aee 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/lcase.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/lcase.md
@@ -1,10 +1,11 @@
# lcase
+## description
-## Syntax
-
-`INT lcase(VARCHAR str)`
+与`lower`一致
-## Description
+ Syntax
-与`lower`一致
+`INT lcase(VARCHAR str)`
+##keyword
+LCASE,LCASE
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/left.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/left.md
index b8376bfbca0e9e..6279e98aed8f96 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/left.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/left.md
@@ -1,14 +1,13 @@
# left
+## description
-## Syntax
-
-`VARCHAR left(VARCHAR str)`
+它返回具有指定长度的字符串的左边部分
-## Description
+ Syntax
-它返回具有指定长度的字符串的左边部分
+`VARCHAR left(VARCHAR str)`
-## Examples
+## example
```
mysql> select left("Hello doris",5);
@@ -18,3 +17,5 @@ mysql> select left("Hello doris",5);
| Hello |
+------------------------+
```
+##keyword
+LEFT,LEFT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/length.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/length.md
index 03b3ce42bbf534..cc4bf04618c5df 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/length.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/length.md
@@ -1,14 +1,13 @@
# length
+## description
-## Syntax
-
-`INT length(VARCHAR str)`
+返回字符串的长度,对于多字节字符,返回的字符数。比如5个两字节宽度字,返回的长度是10。
-## Description
+ Syntax
-返回字符串的长度,对于多字节字符,返回的字符数。比如5个两字节宽度字,返回的长度是10。
+`INT length(VARCHAR str)`
-## Examples
+## example
```
mysql> select length("abc");
@@ -25,3 +24,5 @@ mysql> select length("中国");
| 6 |
+------------------+
```
+##keyword
+LENGTH,LENGTH
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/locate.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/locate.md
index e6a7704381335f..b7b178e0fa409a 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/locate.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/locate.md
@@ -1,14 +1,13 @@
# locate
+## description
-## Syntax
-
-`INT locate(VARCHAR substr, VARCHAR str[, INT pos])`
+返回 substr 在 str 中出现的位置(从1开始计数)。如果指定第3个参数 pos,则从 str 以 pos 下标开始的字符串处开始查找 substr 出现的位置。如果没有找到,返回0
-## Description
+ Syntax
-返回 substr 在 str 中出现的位置(从1开始计数)。如果指定第3个参数 pos,则从 str 以 pos 下标开始的字符串处开始查找 substr 出现的位置。如果没有找到,返回0
+`INT locate(VARCHAR substr, VARCHAR str[, INT pos])`
-## Examples
+## example
```
mysql> SELECT LOCATE('bar', 'foobarbar');
@@ -32,3 +31,5 @@ mysql> SELECT LOCATE('bar', 'foobarbar', 5);
| 7 |
+-------------------------------+
```
+##keyword
+LOCATE,LOCATE
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/lower.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/lower.md
index 776d559c199f84..fe7c3e4aa606ac 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/lower.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/lower.md
@@ -1,14 +1,13 @@
# lower
+## description
-## Syntax
-
-`INT lower(VARCHAR str)`
+将参数中所有的字符串都转换成小写
-## Description
+ Syntax
-将参数中所有的字符串都转换成小写
+`INT lower(VARCHAR str)`
-## Examples
+## example
```
mysql> SELECT lower("AbC123");
@@ -18,3 +17,5 @@ mysql> SELECT lower("AbC123");
| abc123 |
+-----------------+
```
+##keyword
+LOWER,LOWER
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/lpad.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/lpad.md
index 8ba1176ea5533c..178aa0eebcc954 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/lpad.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/lpad.md
@@ -1,14 +1,13 @@
# lpad
+## description
-## Syntax
-
-`VARCHAR lpad(VARCHAR str, INT len, VARCHAR pad)`
+返回 str 中长度为 len(从首字母开始算起)的字符串。如果 len 大于 str 的长度,则在 str 的前面不断补充 pad 字符,直到该字符串的长度达到 len 为止。如果 len 小于 str 的长度,该函数相当于截断 str 字符串,只返回长度为 len 的字符串。
-## Description
+ Syntax
-返回 str 中长度为 len(从首字母开始算起)的字符串。如果 len 大于 str 的长度,则在 str 的前面不断补充 pad 字符,直到该字符串的长度达到 len 为止。如果 len 小于 str 的长度,该函数相当于截断 str 字符串,只返回长度为 len 的字符串。
+`VARCHAR lpad(VARCHAR str, INT len, VARCHAR pad)`
-## Examples
+## example
```
mysql> SELECT lpad("hi", 5, "xy");
@@ -25,3 +24,5 @@ mysql> SELECT lpad("hi", 1, "xy");
| h |
+---------------------+
```
+##keyword
+LPAD,LPAD
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/ltrim.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/ltrim.md
index 4a265d0868f9f5..e7454e6f8e5aed 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/ltrim.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/ltrim.md
@@ -1,14 +1,13 @@
# ltrim
+## description
-## Syntax
-
-`VARCHAR ltrim(VARCHAR str)`
+将参数 str 中从开始部分连续出现的空格去掉
-## Description
+ Syntax
-将参数 str 中从开始部分连续出现的空格去掉
+`VARCHAR ltrim(VARCHAR str)`
-## Examples
+## example
```
mysql> SELECT ltrim(' ab d');
@@ -18,3 +17,5 @@ mysql> SELECT ltrim(' ab d');
| ab d |
+------------------+
```
+##keyword
+LTRIM,LTRIM
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/money_format.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/money_format.md
index 98da921327d4dd..11824e3fee3d1b 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/money_format.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/money_format.md
@@ -1,14 +1,13 @@
# money_format
+## description
-## Syntax
-
-VARCHAR money_format(Number)
+将数字按照货币格式输出,整数部分每隔3位用逗号分隔,小数部分保留2位
-## Description
+ Syntax
-将数字按照货币格式输出,整数部分每隔3位用逗号分隔,小数部分保留2位
+VARCHAR money_format(Number)
-## Examples
+## example
```
mysql> select money_format(17014116);
@@ -32,3 +31,5 @@ mysql> select money_format(1123.4);
| 1,123.40 |
+----------------------+
```
+##keyword
+MONEY_FORMAT,MONEY,FORMAT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/regexp_extract.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/regexp_extract.md
index 8cbf690eea9cb5..7ca0602a547d9d 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/regexp_extract.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/regexp_extract.md
@@ -1,14 +1,13 @@
# regexp_extract
+## description
-## Syntax
-
-`VARCHAR regexp_extract(VARCHAR str, VARCHAR pattern, int pos)`
+对字符串 str 进行正则匹配,抽取符合 pattern 的第 pos 个匹配部分。需要 pattern 完全匹配 str 中的某部分,这样才能返回 pattern 部分中需匹配部分。如果没有匹配,返回空字符串。
-## Description
+ Syntax
-对字符串 str 进行正则匹配,抽取符合 pattern 的第 pos 个匹配部分。需要 pattern 完全匹配 str 中的某部分,这样才能返回 pattern 部分中需匹配部分。如果没有匹配,返回空字符串。
+`VARCHAR regexp_extract(VARCHAR str, VARCHAR pattern, int pos)`
-## Examples
+## example
```
mysql> SELECT regexp_extract('AbCdE', '([[:lower:]]+)C([[:lower:]]+)', 1);
@@ -25,3 +24,5 @@ mysql> SELECT regexp_extract('AbCdE', '([[:lower:]]+)C([[:lower:]]+)', 2);
| d |
+-------------------------------------------------------------+
```
+##keyword
+REGEXP_EXTRACT,REGEXP,EXTRACT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/regexp_replace.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/regexp_replace.md
index c131996cdc4760..f4fc3b70f4e6c1 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/regexp_replace.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/regexp_replace.md
@@ -1,14 +1,13 @@
# regexp_replace
+## description
-## Syntax
-
-`VARCHAR regexp_replace(VARCHAR str, VARCHAR pattern, VARCHAR repl)
+对字符串 str 进行正则匹配, 将命中 pattern 的部分使用 repl 来进行替换
-## Description
+ Syntax
-对字符串 str 进行正则匹配, 将命中 pattern 的部分使用 repl 来进行替换
+`VARCHAR regexp_replace(VARCHAR str, VARCHAR pattern, VARCHAR repl)
-## Examples
+## example
```
mysql> SELECT regexp_replace('a b c', " ", "-");
@@ -25,3 +24,5 @@ mysql> SELECT regexp_replace('a b c','(b)','<\\1>');
| a c |
+----------------------------------------+
```
+##keyword
+REGEXP_REPLACE,REGEXP,REPLACE
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/repeat.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/repeat.md
index 4ef1eeb2f70acb..14a9a59d785434 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/repeat.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/repeat.md
@@ -1,14 +1,13 @@
# repeat
+## description
-## Syntax
-
-`VARCHAR repeat(VARCHAR str, INT count)
+将字符串 str 重复 count 次输出,count 小于1时返回空串,str,count 任一为NULL时,返回 NULL
-## Description
+ Syntax
-将字符串 str 重复 count 次输出,count 小于1时返回空串,str,count 任一为NULL时,返回 NULL
+`VARCHAR repeat(VARCHAR str, INT count)
-## Examples
+## example
```
mysql> SELECT repeat("a", 3);
@@ -25,3 +24,5 @@ mysql> SELECT repeat("a", -1);
| |
+-----------------+
```
+##keyword
+REPEAT,REPEAT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/right.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/right.md
index 832a124619d9f2..4c01a89bd05c79 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/right.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/right.md
@@ -1,14 +1,13 @@
# right
+## description
-## Syntax
-
-`VARCHAR right(VARCHAR str)`
+它返回具有指定长度的字符串的右边部分
-## Description
+ Syntax
-它返回具有指定长度的字符串的右边部分
+`VARCHAR right(VARCHAR str)`
-## Examples
+## example
```
mysql> select right("Hello doris",5);
@@ -18,3 +17,5 @@ mysql> select right("Hello doris",5);
| doris |
+-------------------------+
```
+##keyword
+RIGHT,RIGHT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/split_part.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/split_part.md
index 142a567c4104f8..c2ef720da13f0c 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/split_part.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/split_part.md
@@ -1,14 +1,13 @@
# split_part
+## description
-## Syntax
-
-`VARCHAR split_part(VARCHAR content, VARCHAR delimiter, INT field)`
+根据分割符拆分字符串, 返回指定的分割部分(从一开始计数)。
-## Description
+ Syntax
-根据分割符拆分字符串, 返回指定的分割部分(从一开始计数)。
+`VARCHAR split_part(VARCHAR content, VARCHAR delimiter, INT field)`
-## Examples
+## example
```
mysql> select split_part("hello world", " ", 1);
@@ -40,3 +39,5 @@ mysql> select split_part("abca", "a", 1);
| |
+----------------------------+
```
+##keyword
+SPLIT_PART,SPLIT,PART
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/strleft.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/strleft.md
index 2f7f62027e581a..95cf82da514dbd 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/strleft.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/strleft.md
@@ -1,14 +1,13 @@
# strleft
+## description
-## Syntax
-
-`VARCHAR strleft(VARCHAR str)`
+它返回具有指定长度的字符串的左边部分
-## Description
+ Syntax
-它返回具有指定长度的字符串的左边部分
+`VARCHAR strleft(VARCHAR str)`
-## Examples
+## example
```
mysql> select strleft("Hello doris",5);
@@ -18,3 +17,5 @@ mysql> select strleft("Hello doris",5);
| Hello |
+------------------------+
```
+##keyword
+STRLEFT,STRLEFT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/strright.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/strright.md
index aeea95ee3ada3d..56ebc34020153f 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/strright.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/strright.md
@@ -1,14 +1,13 @@
# strright
+## description
-## Syntax
-
-`VARCHAR strright(VARCHAR str)`
+它返回具有指定长度的字符串的右边部分
-## Description
+ Syntax
-它返回具有指定长度的字符串的右边部分
+`VARCHAR strright(VARCHAR str)`
-## Examples
+## example
```
mysql> select strright("Hello doris",5);
@@ -18,3 +17,5 @@ mysql> select strright("Hello doris",5);
| doris |
+-------------------------+
```
+##keyword
+STRRIGHT,STRRIGHT
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Account Management/CREATE ROLE.md b/docs/documentation/cn/sql-reference/sql-statements/Account Management/CREATE ROLE.md
new file mode 100644
index 00000000000000..5af07a5342ba86
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Account Management/CREATE ROLE.md
@@ -0,0 +1,19 @@
+# CREATE ROLE
+## description
+ 该语句用户创建一个角色
+
+ 语法:
+ CREATE ROLE role1;
+
+ 该语句创建一个无权限的角色,可以后续通过 GRANT 命令赋予该角色权限。
+
+## example
+
+ 1. 创建一个角色
+
+ CREATE ROLE role1;
+
+## keyword
+ CREATE, ROLE
+
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Account Management/CREATE USER.md b/docs/documentation/cn/sql-reference/sql-statements/Account Management/CREATE USER.md
new file mode 100644
index 00000000000000..d3f891c4be4e55
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Account Management/CREATE USER.md
@@ -0,0 +1,49 @@
+# CREATE USER
+## description
+
+Syntax:
+
+ CREATE USER user_identity [IDENTIFIED BY 'password'] [DEFAULT ROLE 'role_name']
+
+ user_identity:
+ 'user_name'@'host'
+
+CREATE USER 命令用于创建一个 Doris 用户。在 Doris 中,一个 user_identity 唯一标识一个用户。user_identity 由两部分组成,user_name 和 host,其中 username 为用户名。host 标识用户端连接所在的主机地址。host 部分可以使用 % 进行模糊匹配。如果不指定 host,默认为 '%',即表示该用户可以从任意 host 连接到 Doris。
+
+host 部分也可指定为 domain,语法为:'user_name'@['domain'],即使用中括号包围,则 Doris 会认为这个是一个 domain,并尝试解析其 ip 地址。目前仅支持百度内部的 BNS 解析。
+
+如果指定了角色(ROLE),则会自动将该角色所拥有的权限赋予新创建的这个用户。如果不指定,则该用户默认没有任何权限。指定的 ROLE 必须已经存在。
+
+## example
+
+1. 创建一个无密码用户(不指定 host,则等价于 jack@'%')
+
+ CREATE USER 'jack';
+
+2. 创建一个有密码用户,允许从 '172.10.1.10' 登陆
+
+ CREATE USER jack@'172.10.1.10' IDENTIFIED BY '123456';
+
+3. 为了避免传递明文,用例2也可以使用下面的方式来创建
+
+ CREATE USER jack@'172.10.1.10' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';
+
+ 后面加密的内容可以通过PASSWORD()获得到,例如:
+
+ SELECT PASSWORD('123456');
+
+4. 创建一个允许从 '192.168' 子网登陆的用户,同时指定其角色为 example_role
+
+ CREATE USER 'jack'@'192.168.%' DEFAULT ROLE 'example_role';
+
+5. 创建一个允许从域名 'example_domain' 登陆的用户
+
+ CREATE USER 'jack'@['example_domain'] IDENTIFIED BY '12345';
+
+6. 创建一个用户,并指定一个角色
+
+ CREATE USER 'jack'@'%' IDENTIFIED BY '12345' DEFAULT ROLE 'my_role';
+
+## keyword
+ CREATE, USER
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Account Management/DROP ROLE.md b/docs/documentation/cn/sql-reference/sql-statements/Account Management/DROP ROLE.md
new file mode 100644
index 00000000000000..b7d7e248b96843
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Account Management/DROP ROLE.md
@@ -0,0 +1,18 @@
+# DROP ROLE
+## description
+ 该语句用户删除一个角色
+
+ 语法:
+ DROP ROLE role1;
+
+ 删除一个角色,不会影响之前属于该角色的用户的权限。仅相当于将该角色与用户解耦。用户已经从该角色中获取到的权限,不会改变。
+
+## example
+
+ 1. 删除一个角色
+
+ DROP ROLE role1;
+
+## keyword
+ DROP, ROLE
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Account Management/DROP USER.md b/docs/documentation/cn/sql-reference/sql-statements/Account Management/DROP USER.md
new file mode 100644
index 00000000000000..3711947d5ce9cf
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Account Management/DROP USER.md
@@ -0,0 +1,18 @@
+# DROP USER
+## description
+
+Syntax:
+
+ DROP USER 'user_name'
+
+ DROP USER 命令会删除一个 palo 用户。这里 Doris 不支持删除指定的 user_identity。当删除一个指定用户后,该用户所对应的所有 user_identity 都会被删除。比如之前通过 CREATE USER 语句创建了 jack@'192.%' 以及 jack@['domain'] 两个用户,则在执行 DROP USER 'jack' 后,jack@'192.%' 以及 jack@['domain'] 都将被删除。
+
+## example
+
+1. 删除用户 jack
+
+ DROP USER 'jack'
+
+## keyword
+ DROP, USER
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Account Management/GRANT.md b/docs/documentation/cn/sql-reference/sql-statements/Account Management/GRANT.md
new file mode 100644
index 00000000000000..725ee855335a03
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Account Management/GRANT.md
@@ -0,0 +1,55 @@
+# GRANT
+## description
+
+GRANT 命令用于赋予指定用户或角色指定的权限。
+
+Syntax:
+
+ GRANT privilege_list ON db_name[.tbl_name] TO user_identity [ROLE role_name]
+
+
+privilege_list 是需要赋予的权限列表,以逗号分隔。当前 Doris 支持如下权限:
+
+ NODE_PRIV:集群节点操作权限,包括节点上下线等操作,只有 root 用户有该权限,不可赋予其他用户。
+ ADMIN_PRIV:除 NODE_PRIV 以外的所有权限。
+ GRANT_PRIV: 操作权限的权限。包括创建删除用户、角色,授权和撤权,设置密码等。
+ SELECT_PRIV:对指定的库或表的读取权限
+ LOAD_PRIV:对指定的库或表的导入权限
+ ALTER_PRIV:对指定的库或表的schema变更权限
+ CREATE_PRIV:对指定的库或表的创建权限
+ DROP_PRIV:对指定的库或表的删除权限
+
+ 旧版权限中的 ALL 和 READ_WRITE 会被转换成:SELECT_PRIV,LOAD_PRIV,ALTER_PRIV,CREATE_PRIV,DROP_PRIV;
+ READ_ONLY 会被转换为 SELECT_PRIV。
+
+db_name[.tbl_name] 支持以下三种形式:
+
+ 1. *.* 权限可以应用于所有库及其中所有表
+ 2. db.* 权限可以应用于指定库下的所有表
+ 3. db.tbl 权限可以应用于指定库下的指定表
+
+ 这里指定的库或表可以是不存在的库和表。
+
+user_identity:
+
+ 这里的 user_identity 语法同 CREATE USER。且必须为使用 CREATE USER 创建过的 user_identity。user_identity 中的host可以是域名,如果是域名的话,权限的生效时间可能会有1分钟左右的延迟。
+
+ 也可以将权限赋予指定的 ROLE,如果指定的 ROLE 不存在,则会自动创建。
+
+## example
+
+ 1. 授予所有库和表的权限给用户
+
+ GRANT SELECT_PRIV ON *.* TO 'jack'@'%';
+
+ 2. 授予指定库表的权限给用户
+
+ GRANT SELECT_PRIV,ALTER_PRIVS,LOAD_PRIV ON db1.tbl1 TO 'jack'@'192.8.%';
+
+ 3. 授予指定库表的权限给角色
+
+ GRANT LOAD_PRIV ON db1.* TO ROLE 'my_role';
+
+## keyword
+ GRANT
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Account Management/REVOKE.md b/docs/documentation/cn/sql-reference/sql-statements/Account Management/REVOKE.md
new file mode 100644
index 00000000000000..bb377051d69829
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Account Management/REVOKE.md
@@ -0,0 +1,23 @@
+# REVOKE
+## description
+
+ REVOKE 命令用于撤销指定用户或角色指定的权限。
+ Syntax:
+ REVOKE privilege_list ON db_name[.tbl_name] FROM user_identity [ROLE role_name]
+
+ user_identity:
+
+ 这里的 user_identity 语法同 CREATE USER。且必须为使用 CREATE USER 创建过的 user_identity。user_identity 中的host可以是域名,如果是域名的话,权限的撤销时间可能会有1分钟左右的延迟。
+
+ 也可以撤销指定的 ROLE 的权限,执行的 ROLE 必须存在。
+
+## example
+
+ 1. 撤销用户 jack 数据库 testDb 的权限
+
+ REVOKE SELECT_PRIV ON db1.* FROM 'jack'@'192.%';
+
+## keyword
+
+ REVOKE
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Account Management/SET PASSWORD.md b/docs/documentation/cn/sql-reference/sql-statements/Account Management/SET PASSWORD.md
new file mode 100644
index 00000000000000..27eac65537f586
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Account Management/SET PASSWORD.md
@@ -0,0 +1,30 @@
+# SET PASSWORD
+## description
+
+Syntax:
+
+ SET PASSWORD [FOR user_identity] =
+ [PASSWORD('plain password')]|['hashed password']
+
+ SET PASSWORD 命令可以用于修改一个用户的登录密码。如果 [FOR user_identity] 字段不存在,那么修改当前用户的密码。
+
+ 注意这里的 user_identity 必须完全匹配在使用 CREATE USER 创建用户时指定的 user_identity,否则会报错用户不存在。如果不指定 user_identity,则当前用户为 'username'@'ip',这个当前用户,可能无法匹配任何 user_identity。可以通过 SHOW GRANTS 查看当前用户。
+
+ PASSWORD() 方式输入的是明文密码; 而直接使用字符串,需要传递的是已加密的密码。
+ 如果修改其他用户的密码,需要具有管理员权限。
+
+## example
+
+1. 修改当前用户的密码
+
+ SET PASSWORD = PASSWORD('123456')
+ SET PASSWORD = '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9'
+
+2. 修改指定用户密码
+
+ SET PASSWORD FOR 'jack'@'192.%' = PASSWORD('123456')
+ SET PASSWORD FOR 'jack'@['domain'] = '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9'
+
+## keyword
+ SET, PASSWORD
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Account Management/SET PROPERTY.md b/docs/documentation/cn/sql-reference/sql-statements/Account Management/SET PROPERTY.md
new file mode 100644
index 00000000000000..f324ffaacfa786
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Account Management/SET PROPERTY.md
@@ -0,0 +1,56 @@
+# SET PROPERTY
+## description
+
+ Syntax:
+
+ SET PROPERTY [FOR 'user'] 'key' = 'value' [, 'key' = 'value']
+
+ 设置用户的属性,包括分配给用户的资源、导入cluster等。这里设置的用户属性,是针对 user 的,而不是 user_identity。即假设通过 CREATE USER 语句创建了两个用户 'jack'@'%' 和 'jack'@'192.%',则使用 SET PROPERTY 语句,只能针对 jack 这个用户,而不是 'jack'@'%' 或 'jack'@'192.%'
+
+ 导入 cluster 仅适用于百度内部用户。
+
+ key:
+
+ 超级用户权限:
+ max_user_connections: 最大连接数。
+ resource.cpu_share: cpu资源分配。
+ load_cluster.{cluster_name}.priority: 为指定的cluster分配优先级,可以为 HIGH 或 NORMAL
+
+ 普通用户权限:
+ quota.normal: normal级别的资源分配。
+ quota.high: high级别的资源分配。
+ quota.low: low级别的资源分配。
+
+ load_cluster.{cluster_name}.hadoop_palo_path: palo使用的hadoop目录,需要存放etl程序及etl生成的中间数据供palo导入。导入完成后会自动清理中间数据,etl程序自动保留下次使用。
+ load_cluster.{cluster_name}.hadoop_configs: hadoop的配置,其中fs.default.name、mapred.job.tracker、hadoop.job.ugi必须填写。
+ load_cluster.{cluster_name}.hadoop_http_port: hadoop hdfs name node http端口。其中 hdfs 默认为8070,afs 默认 8010。
+ default_load_cluster: 默认的导入cluster。
+
+## example
+
+ 1. 修改用户 jack 最大连接数为1000
+ SET PROPERTY FOR 'jack' 'max_user_connections' = '1000';
+
+ 2. 修改用户 jack 的cpu_share为1000
+ SET PROPERTY FOR 'jack' 'resource.cpu_share' = '1000';
+
+ 3. 修改 jack 用户的normal组的权重
+ SET PROPERTY FOR 'jack' 'quota.normal' = '400';
+
+ 4. 为用户 jack 添加导入cluster
+ SET PROPERTY FOR 'jack'
+ 'load_cluster.{cluster_name}.hadoop_palo_path' = '/user/palo/palo_path',
+ 'load_cluster.{cluster_name}.hadoop_configs' = 'fs.default.name=hdfs://dpp.cluster.com:port;mapred.job.tracker=dpp.cluster.com:port;hadoop.job.ugi=user,password;mapred.job.queue.name=job_queue_name_in_hadoop;mapred.job.priority=HIGH;';
+
+ 5. 删除用户 jack 下的导入cluster。
+ SET PROPERTY FOR 'jack' 'load_cluster.{cluster_name}' = '';
+
+ 6. 修改用户 jack 默认的导入cluster
+ SET PROPERTY FOR 'jack' 'default_load_cluster' = '{cluster_name}';
+
+ 7. 修改用户 jack 的集群优先级为 HIGH
+ SET PROPERTY FOR 'jack' 'load_cluster.{cluster_name}.priority' = 'HIGH';
+
+## keyword
+ SET, PROPERTY
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Account Management/SHOW GRANTS.md b/docs/documentation/cn/sql-reference/sql-statements/Account Management/SHOW GRANTS.md
new file mode 100644
index 00000000000000..16d65357292ce1
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Account Management/SHOW GRANTS.md
@@ -0,0 +1,30 @@
+# SHOW GRANTS
+## description
+
+ 该语句用于查看用户权限。
+
+ 语法:
+ SHOW [ALL] GRANTS [FOR user_identity];
+
+ 说明:
+ 1. SHOW ALL GRANTS 可以查看所有用户的权限。
+ 2. 如果指定 user_identity,则查看该指定用户的权限。且该 user_identity 必须为通过 CREATE USER 命令创建的。
+ 3. 如果不指定 user_identity,则查看当前用户的权限。
+
+
+## example
+
+ 1. 查看所有用户权限信息
+
+ SHOW ALL GRANTS;
+
+ 2. 查看指定 user 的权限
+
+ SHOW GRANTS FOR jack@'%';
+
+ 3. 查看当前用户的权限
+
+ SHOW GRANTS;
+
+## keyword
+ SHOW, GRANTS
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Account Management/SHOW ROLES.md b/docs/documentation/cn/sql-reference/sql-statements/Account Management/SHOW ROLES.md
new file mode 100644
index 00000000000000..1b51f48b0799bd
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Account Management/SHOW ROLES.md
@@ -0,0 +1,33 @@
+# SHOW ROLES
+## description
+ 该语句用于展示所有已创建的角色信息,包括角色名称,包含的用户以及权限。
+
+ 语法:
+ SHOW ROLES;
+
+## description
+ 该语句用户删除一个角色
+
+ 语法:
+ DROP ROLE role1;
+
+ 删除一个角色,不会影响之前属于该角色的用户的权限。仅相当于将该角色与用户解耦。用户已经从该角色中获取到的权限,不会改变。
+
+## example
+
+ 1. 查看已创建的角色:
+
+ SHOW ROLES;
+
+## keyword
+ SHOW,ROLES
+
+## example
+
+ 1. 删除一个角色
+
+ DROP ROLE role1;
+
+## keyword
+ DROP, ROLE
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Account Management/help.md b/docs/documentation/cn/sql-reference/sql-statements/Account Management/help.md
deleted file mode 100644
index c3b81a6ee40d6f..00000000000000
--- a/docs/documentation/cn/sql-reference/sql-statements/Account Management/help.md
+++ /dev/null
@@ -1,335 +0,0 @@
-# CREATE USER
-## description
-
-Syntax:
-
- CREATE USER user_identity [IDENTIFIED BY 'password'] [DEFAULT ROLE 'role_name']
-
- user_identity:
- 'user_name'@'host'
-
-CREATE USER 命令用于创建一个 Doris 用户。在 Doris 中,一个 user_identity 唯一标识一个用户。user_identity 由两部分组成,user_name 和 host,其中 username 为用户名。host 标识用户端连接所在的主机地址。host 部分可以使用 % 进行模糊匹配。如果不指定 host,默认为 '%',即表示该用户可以从任意 host 连接到 Doris。
-
-host 部分也可指定为 domain,语法为:'user_name'@['domain'],即使用中括号包围,则 Doris 会认为这个是一个 domain,并尝试解析其 ip 地址。目前仅支持百度内部的 BNS 解析。
-
-如果指定了角色(ROLE),则会自动将该角色所拥有的权限赋予新创建的这个用户。如果不指定,则该用户默认没有任何权限。指定的 ROLE 必须已经存在。
-
-## example
-
-1. 创建一个无密码用户(不指定 host,则等价于 jack@'%')
-
- CREATE USER 'jack';
-
-2. 创建一个有密码用户,允许从 '172.10.1.10' 登陆
-
- CREATE USER jack@'172.10.1.10' IDENTIFIED BY '123456';
-
-3. 为了避免传递明文,用例2也可以使用下面的方式来创建
-
- CREATE USER jack@'172.10.1.10' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';
-
- 后面加密的内容可以通过PASSWORD()获得到,例如:
-
- SELECT PASSWORD('123456');
-
-4. 创建一个允许从 '192.168' 子网登陆的用户,同时指定其角色为 example_role
-
- CREATE USER 'jack'@'192.168.%' DEFAULT ROLE 'example_role';
-
-5. 创建一个允许从域名 'example_domain' 登陆的用户
-
- CREATE USER 'jack'@['example_domain'] IDENTIFIED BY '12345';
-
-6. 创建一个用户,并指定一个角色
-
- CREATE USER 'jack'@'%' IDENTIFIED BY '12345' DEFAULT ROLE 'my_role';
-
-## keyword
- CREATE, USER
-
-# DROP USER
-## description
-
-Syntax:
-
- DROP USER 'user_name'
-
- DROP USER 命令会删除一个 palo 用户。这里 Doris 不支持删除指定的 user_identity。当删除一个指定用户后,该用户所对应的所有 user_identity 都会被删除。比如之前通过 CREATE USER 语句创建了 jack@'192.%' 以及 jack@['domain'] 两个用户,则在执行 DROP USER 'jack' 后,jack@'192.%' 以及 jack@['domain'] 都将被删除。
-
-## example
-
-1. 删除用户 jack
-
- DROP USER 'jack'
-
-## keyword
- DROP, USER
-
-# SET PASSWORD
-## description
-
-Syntax:
-
- SET PASSWORD [FOR user_identity] =
- [PASSWORD('plain password')]|['hashed password']
-
- SET PASSWORD 命令可以用于修改一个用户的登录密码。如果 [FOR user_identity] 字段不存在,那么修改当前用户的密码。
-
- 注意这里的 user_identity 必须完全匹配在使用 CREATE USER 创建用户时指定的 user_identity,否则会报错用户不存在。如果不指定 user_identity,则当前用户为 'username'@'ip',这个当前用户,可能无法匹配任何 user_identity。可以通过 SHOW GRANTS 查看当前用户。
-
- PASSWORD() 方式输入的是明文密码; 而直接使用字符串,需要传递的是已加密的密码。
- 如果修改其他用户的密码,需要具有管理员权限。
-
-## example
-
-1. 修改当前用户的密码
-
- SET PASSWORD = PASSWORD('123456')
- SET PASSWORD = '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9'
-
-2. 修改指定用户密码
-
- SET PASSWORD FOR 'jack'@'192.%' = PASSWORD('123456')
- SET PASSWORD FOR 'jack'@['domain'] = '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9'
-
-## keyword
- SET, PASSWORD
-
-# GRANT
-## description
-
-GRANT 命令用于赋予指定用户或角色指定的权限。
-
-Syntax:
-
- GRANT privilege_list ON db_name[.tbl_name] TO user_identity [ROLE role_name]
-
-
-privilege_list 是需要赋予的权限列表,以逗号分隔。当前 Doris 支持如下权限:
-
- NODE_PRIV:集群节点操作权限,包括节点上下线等操作,只有 root 用户有该权限,不可赋予其他用户。
- ADMIN_PRIV:除 NODE_PRIV 以外的所有权限。
- GRANT_PRIV: 操作权限的权限。包括创建删除用户、角色,授权和撤权,设置密码等。
- SELECT_PRIV:对指定的库或表的读取权限
- LOAD_PRIV:对指定的库或表的导入权限
- ALTER_PRIV:对指定的库或表的schema变更权限
- CREATE_PRIV:对指定的库或表的创建权限
- DROP_PRIV:对指定的库或表的删除权限
-
- 旧版权限中的 ALL 和 READ_WRITE 会被转换成:SELECT_PRIV,LOAD_PRIV,ALTER_PRIV,CREATE_PRIV,DROP_PRIV;
- READ_ONLY 会被转换为 SELECT_PRIV。
-
-db_name[.tbl_name] 支持以下三种形式:
-
- 1. *.* 权限可以应用于所有库及其中所有表
- 2. db.* 权限可以应用于指定库下的所有表
- 3. db.tbl 权限可以应用于指定库下的指定表
-
- 这里指定的库或表可以是不存在的库和表。
-
-user_identity:
-
- 这里的 user_identity 语法同 CREATE USER。且必须为使用 CREATE USER 创建过的 user_identity。user_identity 中的host可以是域名,如果是域名的话,权限的生效时间可能会有1分钟左右的延迟。
-
- 也可以将权限赋予指定的 ROLE,如果指定的 ROLE 不存在,则会自动创建。
-
-## example
-
- 1. 授予所有库和表的权限给用户
-
- GRANT SELECT_PRIV ON *.* TO 'jack'@'%';
-
- 2. 授予指定库表的权限给用户
-
- GRANT SELECT_PRIV,ALTER_PRIVS,LOAD_PRIV ON db1.tbl1 TO 'jack'@'192.8.%';
-
- 3. 授予指定库表的权限给角色
-
- GRANT LOAD_PRIV ON db1.* TO ROLE 'my_role';
-
-## keyword
- GRANT
-
-# REVOKE
-## description
-
- REVOKE 命令用于撤销指定用户或角色指定的权限。
- Syntax:
- REVOKE privilege_list ON db_name[.tbl_name] FROM user_identity [ROLE role_name]
-
- user_identity:
-
- 这里的 user_identity 语法同 CREATE USER。且必须为使用 CREATE USER 创建过的 user_identity。user_identity 中的host可以是域名,如果是域名的话,权限的撤销时间可能会有1分钟左右的延迟。
-
- 也可以撤销指定的 ROLE 的权限,执行的 ROLE 必须存在。
-
-## example
-
- 1. 撤销用户 jack 数据库 testDb 的权限
-
- REVOKE SELECT_PRIV ON db1.* FROM 'jack'@'192.%';
-
-## keyword
-
- REVOKE
-
-# SET PROPERTY
-## description
-
- Syntax:
-
- SET PROPERTY [FOR 'user'] 'key' = 'value' [, 'key' = 'value']
-
- 设置用户的属性,包括分配给用户的资源、导入cluster等。这里设置的用户属性,是针对 user 的,而不是 user_identity。即假设通过 CREATE USER 语句创建了两个用户 'jack'@'%' 和 'jack'@'192.%',则使用 SET PROPERTY 语句,只能针对 jack 这个用户,而不是 'jack'@'%' 或 'jack'@'192.%'
-
- 导入 cluster 仅适用于百度内部用户。
-
- key:
-
- 超级用户权限:
- max_user_connections: 最大连接数。
- resource.cpu_share: cpu资源分配。
- load_cluster.{cluster_name}.priority: 为指定的cluster分配优先级,可以为 HIGH 或 NORMAL
-
- 普通用户权限:
- quota.normal: normal级别的资源分配。
- quota.high: high级别的资源分配。
- quota.low: low级别的资源分配。
-
- load_cluster.{cluster_name}.hadoop_palo_path: palo使用的hadoop目录,需要存放etl程序及etl生成的中间数据供palo导入。导入完成后会自动清理中间数据,etl程序自动保留下次使用。
- load_cluster.{cluster_name}.hadoop_configs: hadoop的配置,其中fs.default.name、mapred.job.tracker、hadoop.job.ugi必须填写。
- load_cluster.{cluster_name}.hadoop_http_port: hadoop hdfs name node http端口。其中 hdfs 默认为8070,afs 默认 8010。
- default_load_cluster: 默认的导入cluster。
-
-## example
-
- 1. 修改用户 jack 最大连接数为1000
- SET PROPERTY FOR 'jack' 'max_user_connections' = '1000';
-
- 2. 修改用户 jack 的cpu_share为1000
- SET PROPERTY FOR 'jack' 'resource.cpu_share' = '1000';
-
- 3. 修改 jack 用户的normal组的权重
- SET PROPERTY FOR 'jack' 'quota.normal' = '400';
-
- 4. 为用户 jack 添加导入cluster
- SET PROPERTY FOR 'jack'
- 'load_cluster.{cluster_name}.hadoop_palo_path' = '/user/palo/palo_path',
- 'load_cluster.{cluster_name}.hadoop_configs' = 'fs.default.name=hdfs://dpp.cluster.com:port;mapred.job.tracker=dpp.cluster.com:port;hadoop.job.ugi=user,password;mapred.job.queue.name=job_queue_name_in_hadoop;mapred.job.priority=HIGH;';
-
- 5. 删除用户 jack 下的导入cluster。
- SET PROPERTY FOR 'jack' 'load_cluster.{cluster_name}' = '';
-
- 6. 修改用户 jack 默认的导入cluster
- SET PROPERTY FOR 'jack' 'default_load_cluster' = '{cluster_name}';
-
- 7. 修改用户 jack 的集群优先级为 HIGH
- SET PROPERTY FOR 'jack' 'load_cluster.{cluster_name}.priority' = 'HIGH';
-
-## keyword
- SET, PROPERTY
-
-# CREATE ROLE
-
-## description
- 该语句用户创建一个角色
-
- 语法:
- CREATE ROLE role1;
-
- 该语句创建一个无权限的角色,可以后续通过 GRANT 命令赋予该角色权限。
-
-## example
-
- 1. 创建一个角色
-
- CREATE ROLE role1;
-
-## keyword
- CREATE, ROLE
-
-
-# DROP ROLE
-
-## description
- 该语句用户删除一个角色
-
- 语法:
- DROP ROLE role1;
-
- 删除一个角色,不会影响之前属于该角色的用户的权限。仅相当于将该角色与用户解耦。用户已经从该角色中获取到的权限,不会改变。
-
-## example
-
- 1. 删除一个角色
-
- DROP ROLE role1;
-
-## keyword
- DROP, ROLE
-
-# SHOW ROLES
-
-## description
- 该语句用于展示所有已创建的角色信息,包括角色名称,包含的用户以及权限。
-
- 语法:
- SHOW ROLES;
-
-## example
-
- 1. 查看已创建的角色:
-
- SHOW ROLES;
-
-## keyword
- SHOW,ROLES
-
-## description
- 该语句用户删除一个角色
-
- 语法:
- DROP ROLE role1;
-
- 删除一个角色,不会影响之前属于该角色的用户的权限。仅相当于将该角色与用户解耦。用户已经从该角色中获取到的权限,不会改变。
-
-## example
-
- 1. 删除一个角色
-
- DROP ROLE role1;
-
-## keyword
- DROP, ROLE
-
-# SHOW GRANTS
-
-## description
-
- 该语句用于查看用户权限。
-
- 语法:
- SHOW [ALL] GRANTS [FOR user_identity];
-
- 说明:
- 1. SHOW ALL GRANTS 可以查看所有用户的权限。
- 2. 如果指定 user_identity,则查看该指定用户的权限。且该 user_identity 必须为通过 CREATE USER 命令创建的。
- 3. 如果不指定 user_identity,则查看当前用户的权限。
-
-
-## example
-
- 1. 查看所有用户权限信息
-
- SHOW ALL GRANTS;
-
- 2. 查看指定 user 的权限
-
- SHOW GRANTS FOR jack@'%';
-
- 3. 查看当前用户的权限
-
- SHOW GRANTS;
-
-## keyword
- SHOW, GRANTS
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Administration/ADMIN CANCEL REPAIR.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/ADMIN CANCEL REPAIR.md
new file mode 100644
index 00000000000000..52e521b254979e
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Administration/ADMIN CANCEL REPAIR.md
@@ -0,0 +1,22 @@
+# ADMIN CANCEL REPAIR
+## description
+
+ 该语句用于取消以高优先级修复指定表或分区
+
+ 语法:
+
+ ADMIN CANCEL REPAIR TABLE table_name[ PARTITION (p1,...)];
+
+ 说明:
+
+ 1. 该语句仅表示系统不再以高优先级修复指定表或分区的分片副本。系统仍会以默认调度方式修复副本。
+
+## example
+
+ 1. 取消高优先级修复
+
+ ADMIN CANCEL REPAIR TABLE tbl PARTITION(p1);
+
+## keyword
+ ADMIN,CANCEL,REPAIR
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Administration/admin_repair_stmt.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/ADMIN REPAIR.md
similarity index 60%
rename from docs/documentation/cn/sql-reference/sql-statements/Administration/admin_repair_stmt.md
rename to docs/documentation/cn/sql-reference/sql-statements/Administration/ADMIN REPAIR.md
index 1549c65b539bdd..2ae44aed4a7412 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Administration/admin_repair_stmt.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Administration/ADMIN REPAIR.md
@@ -25,25 +25,3 @@
## keyword
ADMIN,REPAIR
-# ADMIN CANCEL REPAIR
-## description
-
- 该语句用于取消以高优先级修复指定表或分区
-
- 语法:
-
- ADMIN CANCEL REPAIR TABLE table_name[ PARTITION (p1,...)];
-
- 说明:
-
- 1. 该语句仅表示系统不再以高优先级修复指定表或分区的分片副本。系统仍会以默认调度方式修复副本。
-
-## example
-
- 1. 取消高优先级修复
-
- ADMIN CANCEL REPAIR TABLE tbl PARTITION(p1);
-
-## keyword
- ADMIN,CANCEL,REPAIR
-
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Administration/ADMIN SET CONFIG.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/ADMIN SET CONFIG.md
new file mode 100644
index 00000000000000..b6e277dcaba36b
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Administration/ADMIN SET CONFIG.md
@@ -0,0 +1,18 @@
+# ADMIN SET CONFIG
+## description
+
+ 该语句用于设置集群的配置项(当前仅支持设置FE的配置项)。
+ 可设置的配置项,可以通过 AMDIN SHOW FRONTEND CONFIG; 命令查看。
+
+ 语法:
+
+ ADMIN SET FRONTEND CONFIG ("key" = "value");
+
+## example
+
+ 1. 设置 'disable_balance' 为 true
+
+ ADMIN SET FRONTEND CONFIG ("disable_balance" = "true");
+
+## keyword
+ ADMIN,SET,CONFIG
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Administration/ADMIN SHOW CONFIG.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/ADMIN SHOW CONFIG.md
new file mode 100644
index 00000000000000..c8ee9e6672dc95
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Administration/ADMIN SHOW CONFIG.md
@@ -0,0 +1,27 @@
+# ADMIN SHOW CONFIG
+## description
+
+ 该语句用于展示当前集群的配置(当前仅支持展示 FE 的配置项)
+
+ 语法:
+
+ ADMIN SHOW FRONTEND CONFIG;
+
+ 说明:
+
+ 结果中的各列含义如下:
+ 1. Key: 配置项名称
+ 2. Value: 配置项值
+ 3. Type: 配置项类型
+ 4. IsMutable: 是否可以通过 ADMIN SET CONFIG 命令设置
+ 5. MasterOnly: 是否仅适用于 Master FE
+ 6. Comment: 配置项说明
+
+## example
+
+ 1. 查看当前FE节点的配置
+
+ ADMIN SHOW FRONTEND CONFIG;
+
+## keyword
+ ADMIN,SHOW,CONFIG
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Administration/ADMIN SHOW REPLICA DISTRIBUTION.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/ADMIN SHOW REPLICA DISTRIBUTION.md
new file mode 100644
index 00000000000000..c948e0cf2f238c
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Administration/ADMIN SHOW REPLICA DISTRIBUTION.md
@@ -0,0 +1,26 @@
+# ADMIN SHOW REPLICA DISTRIBUTION
+## description
+
+ 该语句用于展示一个表或分区副本分布状态
+
+ 语法:
+
+ ADMIN SHOW REPLICA DISTRIBUTION FROM [db_name.]tbl_name [PARTITION (p1, ...)];
+
+ 说明:
+
+ 结果中的 Graph 列以图形的形式展示副本分布比例
+
+## example
+
+ 1. 查看表的副本分布
+
+ ADMIN SHOW REPLICA DISTRIBUTION FROM tbl1;
+
+ 2. 查看表的分区的副本分布
+
+ ADMIN SHOW REPLICA DISTRIBUTION FROM db1.tbl1 PARTITION(p1, p2);
+
+## keyword
+ ADMIN,SHOW,REPLICA,DISTRIBUTION
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Administration/ADMIN SHOW REPLICA STATUS.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/ADMIN SHOW REPLICA STATUS.md
new file mode 100644
index 00000000000000..93e00335d37a96
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Administration/ADMIN SHOW REPLICA STATUS.md
@@ -0,0 +1,39 @@
+# ADMIN SHOW REPLICA STATUS
+## description
+
+ 该语句用于展示一个表或分区的副本状态信息
+
+ 语法:
+
+ ADMIN SHOW REPLICA STATUS FROM [db_name.]tbl_name [PARTITION (p1, ...)]
+ [where_clause];
+
+ where_clause:
+ WHERE STATUS [!]= "replica_status"
+
+ replica_status:
+ OK: replica 处于健康状态
+ DEAD: replica 所在 Backend 不可用
+ VERSION_ERROR: replica 数据版本有缺失
+ SCHEMA_ERROR: replica 的 schema hash 不正确
+ MISSING: replica 不存在
+
+## example
+
+ 1. 查看表全部的副本状态
+
+ ADMIN SHOW REPLICA STATUS FROM db1.tbl1;
+
+ 2. 查看表某个分区状态为 VERSION_ERROR 的副本
+
+ ADMIN SHOW REPLICA STATUS FROM tbl1 PARTITION (p1, p2)
+ WHERE STATUS = "VERSION_ERROR";
+
+ 3. 查看表所有状态不健康的副本
+
+ ADMIN SHOW REPLICA STATUS FROM tbl1
+ WHERE STATUS != "OK";
+
+## keyword
+ ADMIN,SHOW,REPLICA,STATUS
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Administration/ALTER CLUSTER.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/ALTER CLUSTER.md
new file mode 100644
index 00000000000000..b9de2e3a683b9f
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Administration/ALTER CLUSTER.md
@@ -0,0 +1,28 @@
+# ALTER CLUSTER
+## description
+
+ 该语句用于更新逻辑集群。需要有管理员权限
+
+ 语法
+
+ ALTER CLUSTER cluster_name PROPERTIES ("key"="value", ...);
+
+ 1. 缩容,扩容 (根据集群现有的be数目,大则为扩容,小则为缩容), 扩容为同步操作,缩容为异步操作,通过backend的状态可以得知是否缩容完成
+
+ PROERTIES ("instance_num" = "3")
+
+ instance_num 逻辑集群节点树
+
+## example
+
+ 1. 缩容,减少含有3个be的逻辑集群test_cluster的be数为2
+
+ ALTER CLUSTER test_cluster PROPERTIES ("instance_num"="2");
+
+ 2. 扩容,增加含有3个be的逻辑集群test_cluster的be数为4
+
+ ALTER CLUSTER test_cluster PROPERTIES ("instance_num"="4");
+
+## keyword
+ ALTER,CLUSTER
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Administration/ALTER SYSTEM.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/ALTER SYSTEM.md
new file mode 100644
index 00000000000000..d6a35691951061
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Administration/ALTER SYSTEM.md
@@ -0,0 +1,94 @@
+# ALTER SYSTEM
+## description
+
+ 该语句用于操作一个系统内的节点。(仅管理员使用!)
+ 语法:
+ 1) 增加节点(不使用多租户功能则按照此方法添加)
+ ALTER SYSTEM ADD BACKEND "host:heartbeat_port"[,"host:heartbeat_port"...];
+ 2) 增加空闲节点(即添加不属于任何cluster的BACKEND)
+ ALTER SYSTEM ADD FREE BACKEND "host:heartbeat_port"[,"host:heartbeat_port"...];
+ 3) 增加节点到某个cluster
+ ALTER SYSTEM ADD BACKEND TO cluster_name "host:heartbeat_port"[,"host:heartbeat_port"...];
+ 4) 删除节点
+ ALTER SYSTEM DROP BACKEND "host:heartbeat_port"[,"host:heartbeat_port"...];
+ 5) 节点下线
+ ALTER SYSTEM DECOMMISSION BACKEND "host:heartbeat_port"[,"host:heartbeat_port"...];
+ 6) 增加Broker
+ ALTER SYSTEM ADD BROKER broker_name "host:port"[,"host:port"...];
+ 7) 减少Broker
+ ALTER SYSTEM DROP BROKER broker_name "host:port"[,"host:port"...];
+ 8) 删除所有Broker
+ ALTER SYSTEM DROP ALL BROKER broker_name
+ 9) 设置一个 Load error hub,用于集中展示导入时的错误信息
+ ALTER SYSTEM SET LOAD ERRORS HUB PROPERTIES ("key" = "value"[, ...]);
+
+ 说明:
+ 1) host 可以是主机名或者ip地址
+ 2) heartbeat_port 为该节点的心跳端口
+ 3) 增加和删除节点为同步操作。这两种操作不考虑节点上已有的数据,节点直接从元数据中删除,请谨慎使用。
+ 4) 节点下线操作用于安全下线节点。该操作为异步操作。如果成功,节点最终会从元数据中删除。如果失败,则不会完成下线。
+ 5) 可以手动取消节点下线操作。详见 CANCEL DECOMMISSION
+ 6) Load error hub:
+ 当前支持两种类型的 Hub:Mysql 和 Broker。需在 PROPERTIES 中指定 "type" = "mysql" 或 "type" = "broker"。
+ 如果需要删除当前的 load error hub,可以将 type 设为 null。
+ 1) 当使用 Mysql 类型时,导入时产生的错误信息将会插入到指定的 mysql 库表中,之后可以通过 show load warnings 语句直接查看错误信息。
+
+ Mysql 类型的 Hub 需指定以下参数:
+ host:mysql host
+ port:mysql port
+ user:mysql user
+ password:mysql password
+ database:mysql database
+ table:mysql table
+
+ 2) 当使用 Broker 类型时,导入时产生的错误信息会形成一个文件,通过 broker,写入到指定的远端存储系统中。须确保已经部署对应的 broker
+ Broker 类型的 Hub 需指定以下参数:
+ broker: broker 的名称
+ path: 远端存储路径
+ other properties: 其他访问远端存储所必须的信息,比如认证信息等。
+
+## example
+
+ 1. 增加一个节点
+ ALTER SYSTEM ADD BACKEND "host:port";
+
+ 2. 增加一个空闲节点
+ ALTER SYSTEM ADD FREE BACKEND "host:port";
+
+ 3. 删除两个节点
+ ALTER SYSTEM DROP BACKEND "host1:port", "host2:port";
+
+ 4. 下线两个节点
+ ALTER SYSTEM DECOMMISSION BACKEND "host1:port", "host2:port";
+
+ 5. 增加两个Hdfs Broker
+ ALTER SYSTEM ADD BROKER hdfs "host1:port", "host2:port";
+
+ 6. 添加一个 Mysql 类型的 load error hub
+ ALTER SYSTEM SET LOAD ERRORS HUB PROPERTIES
+ ("type"= "mysql",
+ "host" = "192.168.1.17"
+ "port" = "3306",
+ "user" = "my_name",
+ "password" = "my_passwd",
+ "database" = "doris_load",
+ "table" = "load_errors"
+ );
+
+ 7. 添加一个 Broker 类型的 load error hub
+ ALTER SYSTEM SET LOAD ERRORS HUB PROPERTIES
+ ("type"= "broker",
+ "name" = "bos",
+ "path" = "bos://backup-cmy/logs",
+ "bos_endpoint" = "http://gz.bcebos.com",
+ "bos_accesskey" = "069fc278xxxxxx24ddb522",
+ "bos_secret_accesskey"="700adb0c6xxxxxx74d59eaa980a"
+ );
+
+ 8. 删除当前的 load error hub
+ ALTER SYSTEM SET LOAD ERRORS HUB PROPERTIES
+ ("type"= "null");
+
+## keyword
+ ALTER,SYSTEM,BACKEND,BROKER,FREE
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Administration/CANCEL DECOMMISSION.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/CANCEL DECOMMISSION.md
new file mode 100644
index 00000000000000..54d76fa7292ba2
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Administration/CANCEL DECOMMISSION.md
@@ -0,0 +1,15 @@
+# CANCEL DECOMMISSION
+## description
+
+ 该语句用于撤销一个节点下线操作。(仅管理员使用!)
+ 语法:
+ CANCEL DECOMMISSION BACKEND "host:heartbeat_port"[,"host:heartbeat_port"...];
+
+## example
+
+ 1. 取消两个节点的下线操作:
+ CANCEL DECOMMISSION BACKEND "host1:port", "host2:port";
+
+## keyword
+ CANCEL,DECOMMISSION,BACKEND
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Administration/CREATE CLUSTER.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/CREATE CLUSTER.md
new file mode 100644
index 00000000000000..6ff866f6c78df7
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Administration/CREATE CLUSTER.md
@@ -0,0 +1,36 @@
+# CREATE CLUSTER
+## description
+
+ 该语句用于新建逻辑集群 (cluster), 需要管理员权限。如果不使用多租户,直接创建一个名称为default_cluster的cluster。否则创建一个自定义名称的cluster。
+
+ 语法
+
+ CREATE CLUSTER [IF NOT EXISTS] cluster_name
+
+ PROPERTIES ("key"="value", ...)
+
+ IDENTIFIED BY 'password'
+
+ 1. PROPERTIES
+
+ 指定逻辑集群的属性
+
+ PROPERTIES ("instance_num" = "3")
+
+ instance_num 逻辑集群节点树
+
+ 2. identified by ‘password' 每个逻辑集群含有一个superuser,创建逻辑集群时必须指定其密码
+
+## example
+
+ 1. 新建一个含有3个be节点逻辑集群 test_cluster, 并指定其superuser用户密码
+
+ CREATE CLUSTER test_cluster PROPERTIES("instance_num"="3") IDENTIFIED BY 'test';
+
+ 2. 新建一个含有3个be节点逻辑集群 default_cluster(不使用多租户), 并指定其superuser用户密码
+
+ CREATE CLUSTER default_cluster PROPERTIES("instance_num"="3") IDENTIFIED BY 'test';
+
+## keyword
+ CREATE,CLUSTER
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Administration/small_files.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/CREATE FILE.md
similarity index 63%
rename from docs/documentation/cn/sql-reference/sql-statements/Administration/small_files.md
rename to docs/documentation/cn/sql-reference/sql-statements/Administration/CREATE FILE.md
index 631c125d75769a..bc3bc395e4e81b 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Administration/small_files.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Administration/CREATE FILE.md
@@ -49,55 +49,3 @@
## keyword
CREATE,FILE
-# SHOW FILE
-## description
-
- 该语句用于展示一个 database 内创建的文件
-
- 语法:
-
- SHOW FILE [FROM database];
-
- 说明:
-
- FileId: 文件ID,全局唯一
- DbName: 所属数据库名称
- Catalog: 自定义分类
- FileName: 文件名
- FileSize: 文件大小,单位字节
- MD5: 文件的 MD5
-
-## example
-
- 1. 查看数据库 my_database 中已上传的文件
-
- SHOW FILE FROM my_database;
-
-## keyword
- SHOW,FILE
-
-# DROP FILE
-## description
-
- 该语句用于删除一个已上传的文件。
-
- 语法:
-
- DROP FILE "file_name" [FROM database]
- [properties]
-
- 说明:
- file_name: 文件名。
- database: 文件归属的某一个 db,如果没有指定,则使用当前 session 的 db。
- properties 支持以下参数:
-
- catalog: 必须。文件所属分类。
-
-## example
-
- 1. 删除文件 ca.pem
-
- DROP FILE "ca.pem" properties("catalog" = "kafka");
-
-## keyword
- DROP,FILE
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Administration/DROP CLUSTER.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/DROP CLUSTER.md
new file mode 100644
index 00000000000000..d755037b5e7537
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Administration/DROP CLUSTER.md
@@ -0,0 +1,18 @@
+# DROP CLUSTER
+## description
+
+ 该语句用于删除逻辑集群,成功删除逻辑集群需要首先删除集群内的db,需要管理员权限
+
+ 语法
+
+ DROP CLUSTER [IF EXISTS] cluster_name
+
+## example
+
+ 删除逻辑集群 test_cluster
+
+ DROP CLUSTER test_cluster;
+
+## keyword
+ DROP,CLUSTER
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Administration/DROP FILE.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/DROP FILE.md
new file mode 100644
index 00000000000000..205f4a53167f35
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Administration/DROP FILE.md
@@ -0,0 +1,25 @@
+# DROP FILE
+## description
+
+ 该语句用于删除一个已上传的文件。
+
+ 语法:
+
+ DROP FILE "file_name" [FROM database]
+ [properties]
+
+ 说明:
+ file_name: 文件名。
+ database: 文件归属的某一个 db,如果没有指定,则使用当前 session 的 db。
+ properties 支持以下参数:
+
+ catalog: 必须。文件所属分类。
+
+## example
+
+ 1. 删除文件 ca.pem
+
+ DROP FILE "ca.pem" properties("catalog" = "kafka");
+
+## keyword
+ DROP,FILE
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Administration/ENTER.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/ENTER.md
new file mode 100644
index 00000000000000..cf21a7e041ad55
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Administration/ENTER.md
@@ -0,0 +1,18 @@
+# ENTER
+## description
+
+ 该语句用于进入一个逻辑集群, 所有创建用户、创建数据库都需要在一个逻辑集群内执行,创建后并且隶属于这个逻
+
+ 辑集群,需要管理员权限
+
+ ENTER cluster_name
+
+## example
+
+ 1. 进入逻辑集群test_cluster
+
+ ENTER test_cluster;
+
+## keyword
+ ENTER
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Administration/LINK DATABASE.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/LINK DATABASE.md
new file mode 100644
index 00000000000000..580d0a952dd884
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Administration/LINK DATABASE.md
@@ -0,0 +1,24 @@
+# LINK DATABASE
+## description
+
+ 该语句用户链接一个逻辑集群的数据库到另外一个逻辑集群, 一个数据库只允许同时被链接一次,删除链接的数据库
+
+ 并不会删除数据,并且被链接的数据库不能被删除, 需要管理员权限
+
+ 语法
+
+ LINK DATABASE src_cluster_name.src_db_name des_cluster_name.des_db_name
+
+## example
+
+ 1. 链接test_clusterA中的test_db到test_clusterB,并命名为link_test_db
+
+ LINK DATABASE test_clusterA.test_db test_clusterB.link_test_db;
+
+ 2. 删除链接的数据库link_test_db
+
+ DROP DATABASE link_test_db;
+
+## keyword
+ LINK,DATABASE
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Administration/MIGRATE DATABASE.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/MIGRATE DATABASE.md
new file mode 100644
index 00000000000000..fce717142514c9
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Administration/MIGRATE DATABASE.md
@@ -0,0 +1,20 @@
+# MIGRATE DATABASE
+## description
+
+ 该语句用于迁移一个逻辑集群的数据库到另外一个逻辑集群,执行此操作前数据库必须已经处于链接状态, 需要管理
+
+ 员权限
+
+ 语法
+
+ MIGRATE DATABASE src_cluster_name.src_db_name des_cluster_name.des_db_name
+
+## example
+
+ 1. 迁移test_clusterA中的test_db到test_clusterB
+
+ MIGRATE DATABASE test_clusterA.test_db test_clusterB.link_test_db;
+
+## keyword
+ MIGRATE,DATABASE
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Administration/SHOW BACKENDS.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/SHOW BACKENDS.md
new file mode 100644
index 00000000000000..ae96e8d46e7163
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Administration/SHOW BACKENDS.md
@@ -0,0 +1,22 @@
+# SHOW BACKENDS
+## description
+ 该语句用于查看 cluster 内的 BE 节点
+ 语法:
+ SHOW BACKENDS;
+
+ 说明:
+ 1. LastStartTime 表示最近一次 BE 启动时间。
+ 2. LastHeartbeat 表示最近一次心跳。
+ 3. Alive 表示节点是否存活。
+ 4. SystemDecommissioned 为 true 表示节点正在安全下线中。
+ 5. ClusterDecommissioned 为 true 表示节点正在冲当前cluster中下线。
+ 6. TabletNum 表示该节点上分片数量。
+ 7. DataUsedCapacity 表示实际用户数据所占用的空间。
+ 8. AvailCapacity 表示磁盘的可使用空间。
+ 9. TotalCapacity 表示总磁盘空间。TotalCapacity = AvailCapacity + DataUsedCapacity + 其他非用户数据文件占用空间。
+ 10. UsedPct 表示磁盘已使用量百分比。
+ 11. ErrMsg 用于显示心跳失败时的错误信息。
+
+## keyword
+ SHOW, BACKENDS
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Administration/SHOW BROKER.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/SHOW BROKER.md
new file mode 100644
index 00000000000000..82bf99bca13f79
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Administration/SHOW BROKER.md
@@ -0,0 +1,15 @@
+# SHOW BROKER
+## description
+ 该语句用于查看当前存在的 broker
+ 语法:
+ SHOW BROKER;
+
+ 说明:
+ 1. LastStartTime 表示最近一次 BE 启动时间。
+ 2. LastHeartbeat 表示最近一次心跳。
+ 3. Alive 表示节点是否存活。
+ 4. ErrMsg 用于显示心跳失败时的错误信息。
+
+## keyword
+ SHOW, BROKER
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Administration/SHOW FILE.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/SHOW FILE.md
new file mode 100644
index 00000000000000..b25b72690da94a
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Administration/SHOW FILE.md
@@ -0,0 +1,27 @@
+# SHOW FILE
+## description
+
+ 该语句用于展示一个 database 内创建的文件
+
+ 语法:
+
+ SHOW FILE [FROM database];
+
+ 说明:
+
+ FileId: 文件ID,全局唯一
+ DbName: 所属数据库名称
+ Catalog: 自定义分类
+ FileName: 文件名
+ FileSize: 文件大小,单位字节
+ MD5: 文件的 MD5
+
+## example
+
+ 1. 查看数据库 my_database 中已上传的文件
+
+ SHOW FILE FROM my_database;
+
+## keyword
+ SHOW,FILE
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Administration/SHOW FRONTENDS.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/SHOW FRONTENDS.md
new file mode 100644
index 00000000000000..1b96368b6325e5
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Administration/SHOW FRONTENDS.md
@@ -0,0 +1,18 @@
+# SHOW FRONTENDS
+## description
+ 该语句用于查看 FE 节点
+ 语法:
+ SHOW FRONTENDS;
+
+ 说明:
+ 1. name 表示该 FE 节点在 bdbje 中的名称。
+ 2. Join 为 true 表示该节点曾经加入过集群。但不代表当前还在集群内(可能已失联)
+ 3. Alive 表示节点是否存活。
+ 4. ReplayedJournalId 表示该节点当前已经回放的最大元数据日志id。
+ 5. LastHeartbeat 是最近一次心跳。
+ 6. IsHelper 表示该节点是否是 bdbje 中的 helper 节点。
+ 7. ErrMsg 用于显示心跳失败时的错误信息。
+
+## keyword
+ SHOW, FRONTENDS
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Administration/SHOW MIGRATIONS.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/SHOW MIGRATIONS.md
new file mode 100644
index 00000000000000..87cb4dc8302f93
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Administration/SHOW MIGRATIONS.md
@@ -0,0 +1,12 @@
+# SHOW MIGRATIONS
+## description
+
+ 该语句用于查看数据库迁移的进度
+
+ 语法
+
+ SHOW MIGRATIONS
+
+## keyword
+ SHOW,MIGRATIONS
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Administration/admin_show_stmt.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/admin_show_stmt.md
deleted file mode 100644
index 1ee64b1e5b6808..00000000000000
--- a/docs/documentation/cn/sql-reference/sql-statements/Administration/admin_show_stmt.md
+++ /dev/null
@@ -1,92 +0,0 @@
-# ADMIN SHOW REPLICA STATUS
-## description
-
- 该语句用于展示一个表或分区的副本状态信息
-
- 语法:
-
- ADMIN SHOW REPLICA STATUS FROM [db_name.]tbl_name [PARTITION (p1, ...)]
- [where_clause];
-
- where_clause:
- WHERE STATUS [!]= "replica_status"
-
- replica_status:
- OK: replica 处于健康状态
- DEAD: replica 所在 Backend 不可用
- VERSION_ERROR: replica 数据版本有缺失
- SCHEMA_ERROR: replica 的 schema hash 不正确
- MISSING: replica 不存在
-
-## example
-
- 1. 查看表全部的副本状态
-
- ADMIN SHOW REPLICA STATUS FROM db1.tbl1;
-
- 2. 查看表某个分区状态为 VERSION_ERROR 的副本
-
- ADMIN SHOW REPLICA STATUS FROM tbl1 PARTITION (p1, p2)
- WHERE STATUS = "VERSION_ERROR";
-
- 3. 查看表所有状态不健康的副本
-
- ADMIN SHOW REPLICA STATUS FROM tbl1
- WHERE STATUS != "OK";
-
-## keyword
- ADMIN,SHOW,REPLICA,STATUS
-
-# ADMIN SHOW REPLICA DISTRIBUTION
-## description
-
- 该语句用于展示一个表或分区副本分布状态
-
- 语法:
-
- ADMIN SHOW REPLICA DISTRIBUTION FROM [db_name.]tbl_name [PARTITION (p1, ...)];
-
- 说明:
-
- 结果中的 Graph 列以图形的形式展示副本分布比例
-
-## example
-
- 1. 查看表的副本分布
-
- ADMIN SHOW REPLICA DISTRIBUTION FROM tbl1;
-
- 2. 查看表的分区的副本分布
-
- ADMIN SHOW REPLICA DISTRIBUTION FROM db1.tbl1 PARTITION(p1, p2);
-
-## keyword
- ADMIN,SHOW,REPLICA,DISTRIBUTION
-
-# ADMIN SHOW CONFIG
-## description
-
- 该语句用于展示当前集群的配置(当前仅支持展示 FE 的配置项)
-
- 语法:
-
- ADMIN SHOW FRONTEND CONFIG;
-
- 说明:
-
- 结果中的各列含义如下:
- 1. Key: 配置项名称
- 2. Value: 配置项值
- 3. Type: 配置项类型
- 4. IsMutable: 是否可以通过 ADMIN SET CONFIG 命令设置
- 5. MasterOnly: 是否仅适用于 Master FE
- 6. Comment: 配置项说明
-
-## example
-
- 1. 查看当前FE节点的配置
-
- ADMIN SHOW FRONTEND CONFIG;
-
-## keyword
- ADMIN,SHOW,CONFIG
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Administration/admin_stmt.md b/docs/documentation/cn/sql-reference/sql-statements/Administration/admin_stmt.md
deleted file mode 100644
index 97ae32fdd5ea75..00000000000000
--- a/docs/documentation/cn/sql-reference/sql-statements/Administration/admin_stmt.md
+++ /dev/null
@@ -1,338 +0,0 @@
-# ALTER SYSTEM
-## description
-
- 该语句用于操作一个系统内的节点。(仅管理员使用!)
- 语法:
- 1) 增加节点(不使用多租户功能则按照此方法添加)
- ALTER SYSTEM ADD BACKEND "host:heartbeat_port"[,"host:heartbeat_port"...];
- 2) 增加空闲节点(即添加不属于任何cluster的BACKEND)
- ALTER SYSTEM ADD FREE BACKEND "host:heartbeat_port"[,"host:heartbeat_port"...];
- 3) 增加节点到某个cluster
- ALTER SYSTEM ADD BACKEND TO cluster_name "host:heartbeat_port"[,"host:heartbeat_port"...];
- 4) 删除节点
- ALTER SYSTEM DROP BACKEND "host:heartbeat_port"[,"host:heartbeat_port"...];
- 5) 节点下线
- ALTER SYSTEM DECOMMISSION BACKEND "host:heartbeat_port"[,"host:heartbeat_port"...];
- 6) 增加Broker
- ALTER SYSTEM ADD BROKER broker_name "host:port"[,"host:port"...];
- 7) 减少Broker
- ALTER SYSTEM DROP BROKER broker_name "host:port"[,"host:port"...];
- 8) 删除所有Broker
- ALTER SYSTEM DROP ALL BROKER broker_name
- 9) 设置一个 Load error hub,用于集中展示导入时的错误信息
- ALTER SYSTEM SET LOAD ERRORS HUB PROPERTIES ("key" = "value"[, ...]);
-
- 说明:
- 1) host 可以是主机名或者ip地址
- 2) heartbeat_port 为该节点的心跳端口
- 3) 增加和删除节点为同步操作。这两种操作不考虑节点上已有的数据,节点直接从元数据中删除,请谨慎使用。
- 4) 节点下线操作用于安全下线节点。该操作为异步操作。如果成功,节点最终会从元数据中删除。如果失败,则不会完成下线。
- 5) 可以手动取消节点下线操作。详见 CANCEL DECOMMISSION
- 6) Load error hub:
- 当前支持两种类型的 Hub:Mysql 和 Broker。需在 PROPERTIES 中指定 "type" = "mysql" 或 "type" = "broker"。
- 如果需要删除当前的 load error hub,可以将 type 设为 null。
- 1) 当使用 Mysql 类型时,导入时产生的错误信息将会插入到指定的 mysql 库表中,之后可以通过 show load warnings 语句直接查看错误信息。
-
- Mysql 类型的 Hub 需指定以下参数:
- host:mysql host
- port:mysql port
- user:mysql user
- password:mysql password
- database:mysql database
- table:mysql table
-
- 2) 当使用 Broker 类型时,导入时产生的错误信息会形成一个文件,通过 broker,写入到指定的远端存储系统中。须确保已经部署对应的 broker
- Broker 类型的 Hub 需指定以下参数:
- broker: broker 的名称
- path: 远端存储路径
- other properties: 其他访问远端存储所必须的信息,比如认证信息等。
-
-## example
-
- 1. 增加一个节点
- ALTER SYSTEM ADD BACKEND "host:port";
-
- 2. 增加一个空闲节点
- ALTER SYSTEM ADD FREE BACKEND "host:port";
-
- 3. 删除两个节点
- ALTER SYSTEM DROP BACKEND "host1:port", "host2:port";
-
- 4. 下线两个节点
- ALTER SYSTEM DECOMMISSION BACKEND "host1:port", "host2:port";
-
- 5. 增加两个Hdfs Broker
- ALTER SYSTEM ADD BROKER hdfs "host1:port", "host2:port";
-
- 6. 添加一个 Mysql 类型的 load error hub
- ALTER SYSTEM SET LOAD ERRORS HUB PROPERTIES
- ("type"= "mysql",
- "host" = "192.168.1.17"
- "port" = "3306",
- "user" = "my_name",
- "password" = "my_passwd",
- "database" = "doris_load",
- "table" = "load_errors"
- );
-
- 7. 添加一个 Broker 类型的 load error hub
- ALTER SYSTEM SET LOAD ERRORS HUB PROPERTIES
- ("type"= "broker",
- "name" = "bos",
- "path" = "bos://backup-cmy/logs",
- "bos_endpoint" = "http://gz.bcebos.com",
- "bos_accesskey" = "069fc278xxxxxx24ddb522",
- "bos_secret_accesskey"="700adb0c6xxxxxx74d59eaa980a"
- );
-
- 8. 删除当前的 load error hub
- ALTER SYSTEM SET LOAD ERRORS HUB PROPERTIES
- ("type"= "null");
-
-## keyword
- ALTER,SYSTEM,BACKEND,BROKER,FREE
-
-# CANCEL DECOMMISSION
-## description
-
- 该语句用于撤销一个节点下线操作。(仅管理员使用!)
- 语法:
- CANCEL DECOMMISSION BACKEND "host:heartbeat_port"[,"host:heartbeat_port"...];
-
-## example
-
- 1. 取消两个节点的下线操作:
- CANCEL DECOMMISSION BACKEND "host1:port", "host2:port";
-
-## keyword
- CANCEL,DECOMMISSION,BACKEND
-
-# CREATE CLUSTER
-## description
-
- 该语句用于新建逻辑集群 (cluster), 需要管理员权限。如果不使用多租户,直接创建一个名称为default_cluster的cluster。否则创建一个自定义名称的cluster。
-
- 语法
-
- CREATE CLUSTER [IF NOT EXISTS] cluster_name
-
- PROPERTIES ("key"="value", ...)
-
- IDENTIFIED BY 'password'
-
- 1. PROPERTIES
-
- 指定逻辑集群的属性
-
- PROPERTIES ("instance_num" = "3")
-
- instance_num 逻辑集群节点树
-
- 2. identified by ‘password' 每个逻辑集群含有一个superuser,创建逻辑集群时必须指定其密码
-
-## example
-
- 1. 新建一个含有3个be节点逻辑集群 test_cluster, 并指定其superuser用户密码
-
- CREATE CLUSTER test_cluster PROPERTIES("instance_num"="3") IDENTIFIED BY 'test';
-
- 2. 新建一个含有3个be节点逻辑集群 default_cluster(不使用多租户), 并指定其superuser用户密码
-
- CREATE CLUSTER default_cluster PROPERTIES("instance_num"="3") IDENTIFIED BY 'test';
-
-## keyword
- CREATE,CLUSTER
-
-# ALTER CLUSTER
-## description
-
- 该语句用于更新逻辑集群。需要有管理员权限
-
- 语法
-
- ALTER CLUSTER cluster_name PROPERTIES ("key"="value", ...);
-
- 1. 缩容,扩容 (根据集群现有的be数目,大则为扩容,小则为缩容), 扩容为同步操作,缩容为异步操作,通过backend的状态可以得知是否缩容完成
-
- PROERTIES ("instance_num" = "3")
-
- instance_num 逻辑集群节点树
-
-## example
-
- 1. 缩容,减少含有3个be的逻辑集群test_cluster的be数为2
-
- ALTER CLUSTER test_cluster PROPERTIES ("instance_num"="2");
-
- 2. 扩容,增加含有3个be的逻辑集群test_cluster的be数为4
-
- ALTER CLUSTER test_cluster PROPERTIES ("instance_num"="4");
-
-## keyword
- ALTER,CLUSTER
-
-# DROP CLUSTER
-## description
-
- 该语句用于删除逻辑集群,成功删除逻辑集群需要首先删除集群内的db,需要管理员权限
-
- 语法
-
- DROP CLUSTER [IF EXISTS] cluster_name
-
-## example
-
- 删除逻辑集群 test_cluster
-
- DROP CLUSTER test_cluster;
-
-## keyword
- DROP,CLUSTER
-
-# LINK DATABASE
-## description
-
- 该语句用户链接一个逻辑集群的数据库到另外一个逻辑集群, 一个数据库只允许同时被链接一次,删除链接的数据库
-
- 并不会删除数据,并且被链接的数据库不能被删除, 需要管理员权限
-
- 语法
-
- LINK DATABASE src_cluster_name.src_db_name des_cluster_name.des_db_name
-
-## example
-
- 1. 链接test_clusterA中的test_db到test_clusterB,并命名为link_test_db
-
- LINK DATABASE test_clusterA.test_db test_clusterB.link_test_db;
-
- 2. 删除链接的数据库link_test_db
-
- DROP DATABASE link_test_db;
-
-## keyword
- LINK,DATABASE
-
-# MIGRATE DATABASE
-## description
-
- 该语句用于迁移一个逻辑集群的数据库到另外一个逻辑集群,执行此操作前数据库必须已经处于链接状态, 需要管理
-
- 员权限
-
- 语法
-
- MIGRATE DATABASE src_cluster_name.src_db_name des_cluster_name.des_db_name
-
-## example
-
- 1. 迁移test_clusterA中的test_db到test_clusterB
-
- MIGRATE DATABASE test_clusterA.test_db test_clusterB.link_test_db;
-
-## keyword
- MIGRATE,DATABASE
-
-# SHOW MIGRATIONS
-## description
-
- 该语句用于查看数据库迁移的进度
-
- 语法
-
- SHOW MIGRATIONS
-
-## keyword
- SHOW,MIGRATIONS
-
-# ENTER
-## description
-
- 该语句用于进入一个逻辑集群, 所有创建用户、创建数据库都需要在一个逻辑集群内执行,创建后并且隶属于这个逻
-
- 辑集群,需要管理员权限
-
- ENTER cluster_name
-
-## example
-
- 1. 进入逻辑集群test_cluster
-
- ENTER test_cluster;
-
-## keyword
- ENTER
-
-# SHOW BACKENDS
-## description
- 该语句用于查看 cluster 内的 BE 节点
- 语法:
- SHOW BACKENDS;
-
- 说明:
- 1. LastStartTime 表示最近一次 BE 启动时间。
- 2. LastHeartbeat 表示最近一次心跳。
- 3. Alive 表示节点是否存活。
- 4. SystemDecommissioned 为 true 表示节点正在安全下线中。
- 5. ClusterDecommissioned 为 true 表示节点正在冲当前cluster中下线。
- 6. TabletNum 表示该节点上分片数量。
- 7. DataUsedCapacity 表示实际用户数据所占用的空间。
- 8. AvailCapacity 表示磁盘的可使用空间。
- 9. TotalCapacity 表示总磁盘空间。TotalCapacity = AvailCapacity + DataUsedCapacity + 其他非用户数据文件占用空间。
- 10. UsedPct 表示磁盘已使用量百分比。
- 11. ErrMsg 用于显示心跳失败时的错误信息。
-
-## keyword
- SHOW, BACKENDS
-
-# SHOW FRONTENDS
-## description
- 该语句用于查看 FE 节点
- 语法:
- SHOW FRONTENDS;
-
- 说明:
- 1. name 表示该 FE 节点在 bdbje 中的名称。
- 2. Join 为 true 表示该节点曾经加入过集群。但不代表当前还在集群内(可能已失联)
- 3. Alive 表示节点是否存活。
- 4. ReplayedJournalId 表示该节点当前已经回放的最大元数据日志id。
- 5. LastHeartbeat 是最近一次心跳。
- 6. IsHelper 表示该节点是否是 bdbje 中的 helper 节点。
- 7. ErrMsg 用于显示心跳失败时的错误信息。
-
-## keyword
- SHOW, FRONTENDS
-
-# SHOW BROKER
-## description
- 该语句用于查看当前存在的 broker
- 语法:
- SHOW BROKER;
-
- 说明:
- 1. LastStartTime 表示最近一次 BE 启动时间。
- 2. LastHeartbeat 表示最近一次心跳。
- 3. Alive 表示节点是否存活。
- 4. ErrMsg 用于显示心跳失败时的错误信息。
-
-## keyword
- SHOW, BROKER
-
-# ADMIN SET CONFIG
-## description
-
- 该语句用于设置集群的配置项(当前仅支持设置FE的配置项)。
- 可设置的配置项,可以通过 AMDIN SHOW FRONTEND CONFIG; 命令查看。
-
- 语法:
-
- ADMIN SET FRONTEND CONFIG ("key" = "value");
-
-## example
-
- 1. 设置 'disable_balance' 为 true
-
- ADMIN SET FRONTEND CONFIG ("disable_balance" = "true");
-
-## keyword
- ADMIN,SET,CONFIG
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/ALTER DATABASE.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/ALTER DATABASE.md
new file mode 100644
index 00000000000000..a020eceff735f3
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/ALTER DATABASE.md
@@ -0,0 +1,29 @@
+# ALTER DATABASE
+## description
+ 该语句用于设置指定数据库的属性。(仅管理员使用)
+ 语法:
+ 1) 设置数据库数据量配额,单位为B/K/KB/M/MB/G/GB/T/TB/P/PB
+ ALTER DATABASE db_name SET DATA QUOTA quota;
+
+ 2) 重命名数据库
+ ALTER DATABASE db_name RENAME new_db_name;
+
+ 说明:
+ 重命名数据库后,如需要,请使用 REVOKE 和 GRANT 命令修改相应的用户权限。
+
+## example
+ 1. 设置指定数据库数据量配额
+ ALTER DATABASE example_db SET DATA QUOTA 10995116277760;
+ 上述单位为字节,等价于
+ ALTER DATABASE example_db SET DATA QUOTA 10T;
+
+ ALTER DATABASE example_db SET DATA QUOTA 100G;
+
+ ALTER DATABASE example_db SET DATA QUOTA 200M;
+
+ 2. 将数据库 example_db 重命名为 example_db2
+ ALTER DATABASE example_db RENAME example_db2;
+
+## keyword
+ ALTER,DATABASE,RENAME
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/ALTER TABLE.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/ALTER TABLE.md
new file mode 100644
index 00000000000000..e6a8099b18cef0
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/ALTER TABLE.md
@@ -0,0 +1,240 @@
+# ALTER TABLE
+## description
+ 该语句用于对已有的 table 进行修改。如果没有指定 rollup index,默认操作 base index。
+ 该语句分为三种操作类型: schema change 、rollup 、partition
+ 这三种操作类型不能同时出现在一条 ALTER TABLE 语句中。
+ 其中 schema change 和 rollup 是异步操作,任务提交成功则返回。之后可使用 SHOW ALTER 命令查看进度。
+ partition 是同步操作,命令返回表示执行完毕。
+
+ 语法:
+ ALTER TABLE [database.]table
+ alter_clause1[, alter_clause2, ...];
+
+ alter_clause 分为 partition 、rollup、schema change 和 rename 四种。
+
+ partition 支持如下几种修改方式
+ 1. 增加分区
+ 语法:
+ ADD PARTITION [IF NOT EXISTS] partition_name VALUES LESS THAN [MAXVALUE|("value1")] ["key"="value"]
+ [DISTRIBUTED BY HASH (k1[,k2 ...]) [BUCKETS num]]
+ 注意:
+ 1) 分区为左闭右开区间,用户指定右边界,系统自动确定左边界
+ 2) 如果没有指定分桶方式,则自动使用建表使用的分桶方式
+ 3) 如指定分桶方式,只能修改分桶数,不可修改分桶方式或分桶列
+ 4) ["key"="value"] 部分可以设置分区的一些属性,具体说明见 CREATE TABLE
+
+ 2. 删除分区
+ 语法:
+ DROP PARTITION [IF EXISTS] partition_name
+ 注意:
+ 1) 使用分区方式的表至少要保留一个分区。
+ 2) 执行 DROP PARTITION 一段时间内,可以通过 RECOVER 语句恢复被删除的 partition。详见 RECOVER 语句
+
+ 3. 修改分区属性
+ 语法:
+ MODIFY PARTITION partition_name SET ("key" = "value", ...)
+ 说明:
+ 1) 当前支持修改分区的 storage_medium、storage_cooldown_time 和 replication_num 三个属性。
+ 2) 对于单分区表,partition_name 同表名。
+
+ rollup 支持如下几种创建方式:
+ 1. 创建 rollup index
+ 语法:
+ ADD ROLLUP rollup_name (column_name1, column_name2, ...)
+ [FROM from_index_name]
+ [PROPERTIES ("key"="value", ...)]
+ 注意:
+ 1) 如果没有指定 from_index_name,则默认从 base index 创建
+ 2) rollup 表中的列必须是 from_index 中已有的列
+ 3) 在 properties 中,可以指定存储格式。具体请参阅 CREATE TABLE
+
+ 2. 删除 rollup index
+ 语法:
+ DROP ROLLUP rollup_name
+ [PROPERTIES ("key"="value", ...)]
+ 注意:
+ 1) 不能删除 base index
+ 2) 执行 DROP ROLLUP 一段时间内,可以通过 RECOVER 语句恢复被删除的 rollup index。详见 RECOVER 语句
+
+
+ schema change 支持如下几种修改方式:
+ 1. 向指定 index 的指定位置添加一列
+ 语法:
+ ADD COLUMN column_name column_type [KEY | agg_type] [DEFAULT "default_value"]
+ [AFTER column_name|FIRST]
+ [TO rollup_index_name]
+ [PROPERTIES ("key"="value", ...)]
+ 注意:
+ 1) 聚合模型如果增加 value 列,需要指定 agg_type
+ 2) 非聚合模型如果增加key列,需要指定KEY关键字
+ 3) 不能在 rollup index 中增加 base index 中已经存在的列
+ 如有需要,可以重新创建一个 rollup index)
+
+ 2. 向指定 index 添加多列
+ 语法:
+ ADD COLUMN (column_name1 column_type [KEY | agg_type] DEFAULT "default_value", ...)
+ [TO rollup_index_name]
+ [PROPERTIES ("key"="value", ...)]
+ 注意:
+ 1) 聚合模型如果增加 value 列,需要指定agg_type
+ 2) 非聚合模型如果增加key列,需要指定KEY关键字
+ 3) 不能在 rollup index 中增加 base index 中已经存在的列
+ (如有需要,可以重新创建一个 rollup index)
+
+ 3. 从指定 index 中删除一列
+ 语法:
+ DROP COLUMN column_name
+ [FROM rollup_index_name]
+ 注意:
+ 1) 不能删除分区列
+ 2) 如果是从 base index 中删除列,则如果 rollup index 中包含该列,也会被删除
+
+ 4. 修改指定 index 的列类型以及列位置
+ 语法:
+ MODIFY COLUMN column_name column_type [KEY | agg_type] [NULL | NOT NULL] [DEFAULT "default_value"]
+ [AFTER column_name|FIRST]
+ [FROM rollup_index_name]
+ [PROPERTIES ("key"="value", ...)]
+ 注意:
+ 1) 聚合模型如果修改 value 列,需要指定 agg_type
+ 2) 非聚合类型如果修改key列,需要指定KEY关键字
+ 3) 只能修改列的类型,列的其他属性维持原样(即其他属性需在语句中按照原属性显式的写出,参见 example 8)
+ 4) 分区列不能做任何修改
+ 5) 目前支持以下类型的转换(精度损失由用户保证)
+ TINYINT/SMALLINT/INT/BIGINT 转换成 TINYINT/SMALLINT/INT/BIGINT/DOUBLE。
+ LARGEINT 转换成 DOUBLE
+ VARCHAR 支持修改最大长度
+ 6) 不支持从NULL转为NOT NULL
+
+ 5. 对指定 index 的列进行重新排序
+ 语法:
+ ORDER BY (column_name1, column_name2, ...)
+ [FROM rollup_index_name]
+ [PROPERTIES ("key"="value", ...)]
+ 注意:
+ 1) index 中的所有列都要写出来
+ 2) value 列在 key 列之后
+
+ 6. 修改table的属性,目前支持修改bloom filter列和colocate_with 属性
+ 语法:
+ PROPERTIES ("key"="value")
+ 注意:
+ 也可以合并到上面的schema change操作中来修改,见下面例子
+
+
+ rename 支持对以下名称进行修改:
+ 1. 修改表名
+ 语法:
+ RENAME new_table_name;
+
+ 2. 修改 rollup index 名称
+ 语法:
+ RENAME ROLLUP old_rollup_name new_rollup_name;
+
+ 3. 修改 partition 名称
+ 语法:
+ RENAME PARTITION old_partition_name new_partition_name;
+
+## example
+ [partition]
+ 1. 增加分区, 现有分区 [MIN, 2013-01-01),增加分区 [2013-01-01, 2014-01-01),使用默认分桶方式
+ ALTER TABLE example_db.my_table
+ ADD PARTITION p1 VALUES LESS THAN ("2014-01-01");
+
+ 2. 增加分区,使用新的分桶数
+ ALTER TABLE example_db.my_table
+ ADD PARTITION p1 VALUES LESS THAN ("2015-01-01")
+ DISTRIBUTED BY HASH(k1) BUCKETS 20;
+
+ 3. 删除分区
+ ALTER TABLE example_db.my_table
+ DROP PARTITION p1;
+
+ [rollup]
+ 1. 创建 index: example_rollup_index,基于 base index(k1,k2,k3,v1,v2)。列式存储。
+ ALTER TABLE example_db.my_table
+ ADD ROLLUP example_rollup_index(k1, k3, v1, v2)
+ PROPERTIES("storage_type"="column");
+
+ 2. 创建 index: example_rollup_index2,基于 example_rollup_index(k1,k3,v1,v2)
+ ALTER TABLE example_db.my_table
+ ADD ROLLUP example_rollup_index2 (k1, v1)
+ FROM example_rollup_index;
+
+ 3. 删除 index: example_rollup_index2
+ ALTER TABLE example_db.my_table
+ DROP ROLLUP example_rollup_index2;
+
+ [schema change]
+ 1. 向 example_rollup_index 的 col1 后添加一个key列 new_col(非聚合模型)
+ ALTER TABLE example_db.my_table
+ ADD COLUMN new_col INT KEY DEFAULT "0" AFTER col1
+ TO example_rollup_index;
+
+ 2. 向example_rollup_index的col1后添加一个value列new_col(非聚合模型)
+ ALTER TABLE example_db.my_table
+ ADD COLUMN new_col INT DEFAULT "0" AFTER col1
+ TO example_rollup_index;
+
+ 3. 向example_rollup_index的col1后添加一个key列new_col(聚合模型)
+ ALTER TABLE example_db.my_table
+ ADD COLUMN new_col INT DEFAULT "0" AFTER col1
+ TO example_rollup_index;
+
+ 4. 向example_rollup_index的col1后添加一个value列new_col SUM聚合类型(聚合模型)
+ ALTER TABLE example_db.my_table
+ ADD COLUMN new_col INT SUM DEFAULT "0" AFTER col1
+ TO example_rollup_index;
+
+ 5. 向 example_rollup_index 添加多列(聚合模型)
+ ALTER TABLE example_db.my_table
+ ADD COLUMN (col1 INT DEFAULT "1", col2 FLOAT SUM DEFAULT "2.3")
+ TO example_rollup_index;
+
+ 6. 从 example_rollup_index 删除一列
+ ALTER TABLE example_db.my_table
+ DROP COLUMN col2
+ FROM example_rollup_index;
+
+ 7. 修改 base index 的 col1 列的类型为 BIGINT,并移动到 col2 列后面
+ ALTER TABLE example_db.my_table
+ MODIFY COLUMN col1 BIGINT DEFAULT "1" AFTER col2;
+
+ 8. 修改 base index 的 val1 列最大长度。原 val1 为 (val1 VARCHAR(32) REPLACE DEFAULT "abc")
+ ALTER TABLE example_db.my_table
+ MODIFY COLUMN val1 VARCHAR(64) REPLACE DEFAULT "abc";
+
+ 9. 重新排序 example_rollup_index 中的列(设原列顺序为:k1,k2,k3,v1,v2)
+ ALTER TABLE example_db.my_table
+ ORDER BY (k3,k1,k2,v2,v1)
+ FROM example_rollup_index;
+
+ 10. 同时执行两种操作
+ ALTER TABLE example_db.my_table
+ ADD COLUMN v2 INT MAX DEFAULT "0" AFTER k2 TO example_rollup_index,
+ ORDER BY (k3,k1,k2,v2,v1) FROM example_rollup_index;
+
+ 11. 修改表的 bloom filter 列
+ ALTER TABLE example_db.my_table SET ("bloom_filter_columns"="k1,k2,k3");
+
+ 也可以合并到上面的 schema change 操作中(注意多子句的语法有少许区别)
+ ALTER TABLE example_db.my_table
+ DROP COLUMN col2
+ PROPERTIES ("bloom_filter_columns"="k1,k2,k3");
+
+ 12. 修改表的Colocate 属性
+ ALTER TABLE example_db.my_table set ("colocate_with"="t1");
+
+ [rename]
+ 1. 将名为 table1 的表修改为 table2
+ ALTER TABLE table1 RENAME table2;
+
+ 2. 将表 example_table 中名为 rollup1 的 rollup index 修改为 rollup2
+ ALTER TABLE example_table RENAME ROLLUP rollup1 rollup2;
+
+ 3. 将表 example_table 中名为 p1 的 partition 修改为 p2
+ ALTER TABLE example_table RENAME PARTITION p1 p2;
+
+## keyword
+ ALTER,TABLE,ROLLUP,COLUMN,PARTITION,RENAME
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/BACKUP.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/BACKUP.md
new file mode 100644
index 00000000000000..19c5137ce1b42e
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/BACKUP.md
@@ -0,0 +1,39 @@
+# BACKUP
+## description
+ 该语句用于备份指定数据库下的数据。该命令为异步操作。提交成功后,需通过 SHOW BACKUP 命令查看进度。仅支持备份 OLAP 类型的表。
+ 语法:
+ BACKUP SNAPSHOT [db_name].{snapshot_name}
+ TO `repository_name`
+ ON (
+ `table_name` [PARTITION (`p1`, ...)],
+ ...
+ )
+ PROPERTIES ("key"="value", ...);
+
+ 说明:
+ 1. 同一数据库下只能有一个正在执行的 BACKUP 或 RESTORE 任务。
+ 2. ON 子句中标识需要备份的表和分区。如果不指定分区,则默认备份该表的所有分区。
+ 3. PROPERTIES 目前支持以下属性:
+ "type" = "full":表示这是一次全量更新(默认)。
+ "timeout" = "3600":任务超时时间,默认为一天。单位秒。
+
+## example
+
+ 1. 全量备份 example_db 下的表 example_tbl 到仓库 example_repo 中:
+ BACKUP SNAPSHOT example_db.snapshot_label1
+ TO example_repo
+ ON (example_tbl)
+ PROPERTIES ("type" = "full");
+
+ 2. 全量备份 example_db 下,表 example_tbl 的 p1, p2 分区,以及表 example_tbl2 到仓库 example_repo 中:
+ BACKUP SNAPSHOT example_db.snapshot_label2
+ TO example_repo
+ ON
+ (
+ example_tbl PARTITION (p1,p2),
+ example_tbl2
+ );
+
+## keyword
+ BACKUP
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/CANCEL ALTER.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/CANCEL ALTER.md
new file mode 100644
index 00000000000000..93c17f921a3379
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/CANCEL ALTER.md
@@ -0,0 +1,32 @@
+# CANCEL ALTER
+## description
+ 该语句用于撤销一个 ALTER 操作。
+ 1. 撤销 ALTER TABLE COLUMN 操作
+ 语法:
+ CANCEL ALTER TABLE COLUMN
+ FROM db_name.table_name
+
+ 2. 撤销 ALTER TABLE ROLLUP 操作
+ 语法:
+ CANCEL ALTER TABLE ROLLUP
+ FROM db_name.table_name
+
+ 2. 撤销 ALTER CLUSTER 操作
+ 语法:
+ (待实现...)
+
+
+## example
+ [CANCEL ALTER TABLE COLUMN]
+ 1. 撤销针对 my_table 的 ALTER COLUMN 操作。
+ CANCEL ALTER TABLE COLUMN
+ FROM example_db.my_table;
+
+ [CANCEL ALTER TABLE ROLLUP]
+ 1. 撤销 my_table 下的 ADD ROLLUP 操作。
+ CANCEL ALTER TABLE ROLLUP
+ FROM example_db.my_table;
+
+## keyword
+ CANCEL,ALTER,TABLE,COLUMN,ROLLUP
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/CANCEL BACKUP.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/CANCEL BACKUP.md
new file mode 100644
index 00000000000000..b6451b99fe7931
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/CANCEL BACKUP.md
@@ -0,0 +1,13 @@
+# CANCEL BACKUP
+## description
+ 该语句用于取消一个正在进行的 BACKUP 任务。
+ 语法:
+ CANCEL BACKUP FROM db_name;
+
+## example
+ 1. 取消 example_db 下的 BACKUP 任务。
+ CANCEL BACKUP FROM example_db;
+
+## keyword
+ CANCEL, BACKUP
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/CANCEL RESTORE.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/CANCEL RESTORE.md
new file mode 100644
index 00000000000000..b2b52bedbc3c7b
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/CANCEL RESTORE.md
@@ -0,0 +1,16 @@
+# CANCEL RESTORE
+## description
+ 该语句用于取消一个正在进行的 RESTORE 任务。
+ 语法:
+ CANCEL RESTORE FROM db_name;
+
+ 注意:
+ 当取消处于 COMMIT 或之后阶段的恢复左右时,可能导致被恢复的表无法访问。此时只能通过再次执行恢复作业进行数据恢复。
+
+## example
+ 1. 取消 example_db 下的 RESTORE 任务。
+ CANCEL RESTORE FROM example_db;
+
+## keyword
+ CANCEL, RESTORE
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/CREATE DATABASE.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/CREATE DATABASE.md
new file mode 100644
index 00000000000000..00938857f6ce70
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/CREATE DATABASE.md
@@ -0,0 +1,13 @@
+# CREATE DATABASE
+## description
+ 该语句用于新建数据库(database)
+ 语法:
+ CREATE DATABASE [IF NOT EXISTS] db_name;
+
+## example
+ 1. 新建数据库 db_test
+ CREATE DATABASE db_test;
+
+## keyword
+ CREATE,DATABASE
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/CREATE REPOSITORY.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/CREATE REPOSITORY.md
new file mode 100644
index 00000000000000..68ca39141597d6
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/CREATE REPOSITORY.md
@@ -0,0 +1,50 @@
+# CREATE REPOSITORY
+## description
+ 该语句用于创建仓库。仓库用于属于备份或恢复。仅 root 或 superuser 用户可以创建仓库。
+ 语法:
+ CREATE [READ ONLY] REPOSITORY `repo_name`
+ WITH BROKER `broker_name`
+ ON LOCATION `repo_location`
+ PROPERTIES ("key"="value", ...);
+
+ 说明:
+ 1. 仓库的创建,依赖于已存在的 broker
+ 2. 如果是只读仓库,则只能在仓库上进行恢复。如果不是,则可以进行备份和恢复操作。
+ 3. 根据 broker 的不同类型,PROPERTIES 有所不同,具体见示例。
+
+## example
+ 1. 创建名为 bos_repo 的仓库,依赖 BOS broker "bos_broker",数据根目录为:bos://palo_backup
+ CREATE REPOSITORY `bos_repo`
+ WITH BROKER `bos_broker`
+ ON LOCATION "bos://palo_backup"
+ PROPERTIES
+ (
+ "bos_endpoint" = "http://gz.bcebos.com",
+ "bos_accesskey" = "069fc2786e664e63a5f111111114ddbs22",
+ "bos_secret_accesskey"="70999999999999de274d59eaa980a"
+ );
+
+ 2. 创建和示例 1 相同的仓库,但属性为只读:
+ CREATE READ ONLY REPOSITORY `bos_repo`
+ WITH BROKER `bos_broker`
+ ON LOCATION "bos://palo_backup"
+ PROPERTIES
+ (
+ "bos_endpoint" = "http://gz.bcebos.com",
+ "bos_accesskey" = "069fc2786e664e63a5f111111114ddbs22",
+ "bos_secret_accesskey"="70999999999999de274d59eaa980a"
+ );
+
+ 3. 创建名为 hdfs_repo 的仓库,依赖 Baidu hdfs broker "hdfs_broker",数据根目录为:hdfs://hadoop-name-node:54310/path/to/repo/
+ CREATE REPOSITORY `hdfs_repo`
+ WITH BROKER `hdfs_broker`
+ ON LOCATION "hdfs://hadoop-name-node:54310/path/to/repo/"
+ PROPERTIES
+ (
+ "username" = "user",
+ "password" = "password"
+ );
+
+## keyword
+ CREATE REPOSITORY
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/CREATE TABLE.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/CREATE TABLE.md
new file mode 100644
index 00000000000000..1af44e7ce4d756
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/CREATE TABLE.md
@@ -0,0 +1,334 @@
+# CREATE TABLE
+## description
+ 该语句用于创建 table。
+ 语法:
+ CREATE [EXTERNAL] TABLE [IF NOT EXISTS] [database.]table_name
+ (column_definition1[, column_definition2, ...])
+ [ENGINE = [olap|mysql|broker]]
+ [key_desc]
+ [partition_desc]
+ [distribution_desc]
+ [PROPERTIES ("key"="value", ...)];
+ [BROKER PROPERTIES ("key"="value", ...)];
+
+ 1. column_definition
+ 语法:
+ col_name col_type [agg_type] [NULL | NOT NULL] [DEFAULT "default_value"]
+
+ 说明:
+ col_name:列名称
+ col_type:列类型
+ TINYINT(1字节)
+ 范围:-2^7 + 1 ~ 2^7 - 1
+ SMALLINT(2字节)
+ 范围:-2^15 + 1 ~ 2^15 - 1
+ INT(4字节)
+ 范围:-2^31 + 1 ~ 2^31 - 1
+ BIGINT(8字节)
+ 范围:-2^63 + 1 ~ 2^63 - 1
+ LARGEINT(16字节)
+ 范围:0 ~ 2^127 - 1
+ FLOAT(4字节)
+ 支持科学计数法
+ DOUBLE(12字节)
+ 支持科学计数法
+ DECIMAL[(precision, scale)] (40字节)
+ 保证精度的小数类型。默认是 DECIMAL(10, 0)
+ precision: 1 ~ 27
+ scale: 0 ~ 9
+ 其中整数部分为 1 ~ 18
+ 不支持科学计数法
+ DATE(3字节)
+ 范围:1900-01-01 ~ 9999-12-31
+ DATETIME(8字节)
+ 范围:1900-01-01 00:00:00 ~ 9999-12-31 23:59:59
+ CHAR[(length)]
+ 定长字符串。长度范围:1 ~ 255。默认为1
+ VARCHAR[(length)]
+ 变长字符串。长度范围:1 ~ 65533
+ HLL (1~16385个字节)
+ hll列类型,不需要指定长度和默认值、长度根据数据的聚合
+ 程度系统内控制,并且HLL列只能通过配套的hll_union_agg、Hll_cardinality、hll_hash进行查询或使用
+
+ agg_type:聚合类型,如果不指定,则该列为 key 列。否则,该列为 value 列
+ SUM、MAX、MIN、REPLACE、HLL_UNION(仅用于HLL列,为HLL独有的聚合方式)
+ 该类型只对聚合模型(key_desc的type为AGGREGATE KEY)有用,其它模型不需要指定这个。
+
+ 是否允许为NULL: 默认不允许为 NULL。NULL 值在导入数据中用 \N 来表示
+
+ 2. ENGINE 类型
+ 默认为 olap。可选 mysql, broker
+ 1) 如果是 mysql,则需要在 properties 提供以下信息:
+
+ PROPERTIES (
+ "host" = "mysql_server_host",
+ "port" = "mysql_server_port",
+ "user" = "your_user_name",
+ "password" = "your_password",
+ "database" = "database_name",
+ "table" = "table_name"
+ )
+
+ 注意:
+ "table" 条目中的 "table_name" 是 mysql 中的真实表名。
+ 而 CREATE TABLE 语句中的 table_name 是该 mysql 表在 Palo 中的名字,可以不同。
+
+ 在 Palo 创建 mysql 表的目的是可以通过 Palo 访问 mysql 数据库。
+ 而 Palo 本身并不维护、存储任何 mysql 数据。
+ 2) 如果是 broker,表示表的访问需要通过指定的broker, 需要在 properties 提供以下信息:
+ PROPERTIES (
+ "broker_name" = "broker_name",
+ "paths" = "file_path1[,file_path2]",
+ "column_separator" = "value_separator"
+ "line_delimiter" = "value_delimiter"
+ )
+ 另外还需要提供Broker需要的Property信息,通过BROKER PROPERTIES来传递,例如HDFS需要传入
+ BROKER PROPERTIES(
+ "username" = "name",
+ "password" = "password"
+ )
+ 这个根据不同的Broker类型,需要传入的内容也不相同
+ 注意:
+ "paths" 中如果有多个文件,用逗号[,]分割。如果文件名中包含逗号,那么使用 %2c 来替代。如果文件名中包含 %,使用 %25 代替
+ 现在文件内容格式支持CSV,支持GZ,BZ2,LZ4,LZO(LZOP) 压缩格式。
+
+ 3. key_desc
+ 语法:
+ key_type(k1[,k2 ...])
+ 说明:
+ 数据按照指定的key列进行排序,且根据不同的key_type具有不同特性。
+ key_type支持一下类型:
+ AGGREGATE KEY:key列相同的记录,value列按照指定的聚合类型进行聚合,
+ 适合报表、多维分析等业务场景。
+ UNIQUE KEY:key列相同的记录,value列按导入顺序进行覆盖,
+ 适合按key列进行增删改查的点查询业务。
+ DUPLICATE KEY:key列相同的记录,同时存在于Palo中,
+ 适合存储明细数据或者数据无聚合特性的业务场景。
+ 注意:
+ 除AGGREGATE KEY外,其他key_type在建表时,value列不需要指定聚合类型。
+
+ 4. partition_desc
+ 1) Range 分区
+ 语法:
+ PARTITION BY RANGE (k1, k2, ...)
+ (
+ PARTITION partition_name VALUES LESS THAN MAXVALUE|("value1", "value2", ...)
+ PARTITION partition_name VALUES LESS THAN MAXVALUE|("value1", "value2", ...)
+ ...
+ )
+ 说明:
+ 使用指定的 key 列和指定的数值范围进行分区。
+ 1) 分区名称仅支持字母开头,字母、数字和下划线组成
+ 2) 目前仅支持以下类型的列作为 Range 分区列,且只能指定一个分区列
+ TINYINT, SMALLINT, INT, BIGINT, LARGEINT, DATE, DATETIME
+ 3) 分区为左闭右开区间,首个分区的左边界为做最小值
+ 4) NULL 值只会存放在包含最小值的分区中。当包含最小值的分区被删除后,NULL 值将无法导入。
+ 5) 可以指定一列或多列作为分区列。如果分区值缺省,则会默认填充最小值。
+
+ 注意:
+ 1) 分区一般用于时间维度的数据管理
+ 2) 有数据回溯需求的,可以考虑首个分区为空分区,以便后续增加分区
+
+ 5. distribution_desc
+ 1) Hash 分桶
+ 语法:
+ DISTRIBUTED BY HASH (k1[,k2 ...]) [BUCKETS num]
+ 说明:
+ 使用指定的 key 列进行哈希分桶。默认分区数为10
+
+ 建议:建议使用Hash分桶方式
+
+ 6. PROPERTIES
+ 1) 如果 ENGINE 类型为 olap,则可以在 properties 中指定列存(目前我们仅支持列存)
+
+ PROPERTIES (
+ "storage_type" = "[column]",
+ )
+
+ 2) 如果 ENGINE 类型为 olap
+ 可以在 properties 设置该表数据的初始存储介质、存储到期时间和副本数。
+
+ PROPERTIES (
+ "storage_medium" = "[SSD|HDD]",
+ ["storage_cooldown_time" = "yyyy-MM-dd HH:mm:ss"],
+ ["replication_num" = "3"]
+ )
+
+ storage_medium: 用于指定该分区的初始存储介质,可选择 SSD 或 HDD。默认为 HDD。
+ storage_cooldown_time: 当设置存储介质为 SSD 时,指定该分区在 SSD 上的存储到期时间。
+ 默认存放 7 天。
+ 格式为:"yyyy-MM-dd HH:mm:ss"
+ replication_num: 指定分区的副本数。默认为 3
+
+ 当表为单分区表时,这些属性为表的属性。
+ 当表为两级分区时,这些属性为附属于每一个分区。
+ 如果希望不同分区有不同属性。可以通过 ADD PARTITION 或 MODIFY PARTITION 进行操作
+
+ 3) 如果 Engine 类型为 olap, 并且 storage_type 为 column, 可以指定某列使用 bloom filter 索引
+ bloom filter 索引仅适用于查询条件为 in 和 equal 的情况,该列的值越分散效果越好
+ 目前只支持以下情况的列:除了 TINYINT FLOAT DOUBLE 类型以外的 key 列及聚合方法为 REPLACE 的 value 列
+
+ PROPERTIES (
+ "bloom_filter_columns"="k1,k2,k3"
+ )
+ 4) 如果希望使用Colocate Join 特性,需要在 properties 中指定
+
+ PROPERTIES (
+ "colocate_with"="table1"
+ )
+
+## example
+ 1. 创建一个 olap 表,使用 HASH 分桶,使用列存,相同key的记录进行聚合
+ CREATE TABLE example_db.table_hash
+ (
+ k1 TINYINT,
+ k2 DECIMAL(10, 2) DEFAULT "10.5",
+ v1 CHAR(10) REPLACE,
+ v2 INT SUM
+ )
+ ENGINE=olap
+ AGGREGATE KEY(k1, k2)
+ DISTRIBUTED BY HASH(k1) BUCKETS 32
+ PROPERTIES ("storage_type"="column");
+
+ 2. 创建一个 olap 表,使用 Hash 分桶,使用列存,相同key的记录进行覆盖,
+ 设置初始存储介质和冷却时间
+ CREATE TABLE example_db.table_hash
+ (
+ k1 BIGINT,
+ k2 LARGEINT,
+ v1 VARCHAR(2048) REPLACE,
+ v2 SMALLINT SUM DEFAULT "10"
+ )
+ ENGINE=olap
+ UNIQUE KEY(k1, k2)
+ DISTRIBUTED BY HASH (k1, k2) BUCKETS 32
+ PROPERTIES(
+ "storage_type"="column",
+ "storage_medium" = "SSD",
+ "storage_cooldown_time" = "2015-06-04 00:00:00"
+ );
+
+ 3. 创建一个 olap 表,使用 Key Range 分区,使用Hash分桶,默认使用列存,
+ 相同key的记录同时存在,设置初始存储介质和冷却时间
+ CREATE TABLE example_db.table_range
+ (
+ k1 DATE,
+ k2 INT,
+ k3 SMALLINT,
+ v1 VARCHAR(2048),
+ v2 DATETIME DEFAULT "2014-02-04 15:36:00"
+ )
+ ENGINE=olap
+ DUPLICATE KEY(k1, k2, k3)
+ PARTITION BY RANGE (k1)
+ (
+ PARTITION p1 VALUES LESS THAN ("2014-01-01"),
+ PARTITION p2 VALUES LESS THAN ("2014-06-01"),
+ PARTITION p3 VALUES LESS THAN ("2014-12-01")
+ )
+ DISTRIBUTED BY HASH(k2) BUCKETS 32
+ PROPERTIES(
+ "storage_medium" = "SSD", "storage_cooldown_time" = "2015-06-04 00:00:00"
+ );
+
+ 说明:
+ 这个语句会将数据划分成如下3个分区:
+ ( { MIN }, {"2014-01-01"} )
+ [ {"2014-01-01"}, {"2014-06-01"} )
+ [ {"2014-06-01"}, {"2014-12-01"} )
+
+ 不在这些分区范围内的数据将视为非法数据被过滤
+
+ 4. 创建一个 mysql 表
+ CREATE TABLE example_db.table_mysql
+ (
+ k1 DATE,
+ k2 INT,
+ k3 SMALLINT,
+ k4 VARCHAR(2048),
+ k5 DATETIME
+ )
+ ENGINE=mysql
+ PROPERTIES
+ (
+ "host" = "127.0.0.1",
+ "port" = "8239",
+ "user" = "mysql_user",
+ "password" = "mysql_passwd",
+ "database" = "mysql_db_test",
+ "table" = "mysql_table_test"
+ )
+
+ 5. 创建一个数据文件存储在HDFS上的 broker 外部表, 数据使用 "|" 分割,"\n" 换行
+ CREATE EXTERNAL TABLE example_db.table_broker (
+ k1 DATE,
+ k2 INT,
+ k3 SMALLINT,
+ k4 VARCHAR(2048),
+ k5 DATETIME
+ )
+ ENGINE=broker
+ PROPERTIES (
+ "broker_name" = "hdfs",
+ "path" = "hdfs://hdfs_host:hdfs_port/data1,hdfs://hdfs_host:hdfs_port/data2,hdfs://hdfs_host:hdfs_port/data3%2c4",
+ "column_separator" = "|",
+ "line_delimiter" = "\n"
+ )
+ BROKER PROPERTIES (
+ "username" = "hdfs_user",
+ "password" = "hdfs_password"
+ )
+
+ 6. 创建一张含有HLL列的表
+ CREATE TABLE example_db.example_table
+ (
+ k1 TINYINT,
+ k2 DECIMAL(10, 2) DEFAULT "10.5",
+ v1 HLL HLL_UNION,
+ v2 HLL HLL_UNION
+ )
+ ENGINE=olap
+ AGGREGATE KEY(k1, k2)
+ DISTRIBUTED BY HASH(k1) BUCKETS 32
+ PROPERTIES ("storage_type"="column");
+
+ 7. 创建两张支持Colocat Join的表t1 和t2
+ CREATE TABLE `t1` (
+ `id` int(11) COMMENT "",
+ `value` varchar(8) COMMENT ""
+ ) ENGINE=OLAP
+ DUPLICATE KEY(`id`)
+ DISTRIBUTED BY HASH(`id`) BUCKETS 10
+ PROPERTIES (
+ "colocate_with" = "t1"
+ );
+
+ CREATE TABLE `t2` (
+ `id` int(11) COMMENT "",
+ `value` varchar(8) COMMENT ""
+ ) ENGINE=OLAP
+ DUPLICATE KEY(`id`)
+ DISTRIBUTED BY HASH(`id`) BUCKETS 10
+ PROPERTIES (
+ "colocate_with" = "t1"
+ );
+
+ 8. 创建一个数据文件存储在BOS上的 broker 外部表
+ CREATE EXTERNAL TABLE example_db.table_broker (
+ k1 DATE
+ )
+ ENGINE=broker
+ PROPERTIES (
+ "broker_name" = "bos",
+ "path" = "bos://my_bucket/input/file",
+ )
+ BROKER PROPERTIES (
+ "bos_endpoint" = "http://bj.bcebos.com",
+ "bos_accesskey" = "xxxxxxxxxxxxxxxxxxxxxxxxxx",
+ "bos_secret_accesskey"="yyyyyyyyyyyyyyyyyyyy"
+ )
+
+## keyword
+ CREATE,TABLE
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/CREATE VIEW.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/CREATE VIEW.md
new file mode 100644
index 00000000000000..a64e611f0b5c25
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/CREATE VIEW.md
@@ -0,0 +1,22 @@
+# CREATE VIEW
+## description
+ 该语句用于创建一个逻辑视图
+ 语法:
+ CREATE VIEW [IF NOT EXISTS]
+ [db_name.]view_name (column1[, column2, ...])
+ AS query_stmt
+
+ 说明:
+ 1. 视图为逻辑视图,没有物理存储。所有在视图上的查询相当于在视图对应的子查询上进行。
+ 2. query_stmt 为任意支持的 SQL
+
+## example
+ 1. 在 example_db 上创建视图 example_view
+ CREATE VIEW example_db.example_view (k1, k2, k3, v1)
+ AS
+ SELECT c1 as k1, k2, k3, SUM(v1) FROM example_table
+ WHERE k1 = 20160112 GROUP BY k1,k2,k3;
+
+## keyword
+ CREATE,VIEW
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/Colocate Join.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/Colocate Join.md
new file mode 100644
index 00000000000000..9a8529ffb0ed76
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/Colocate Join.md
@@ -0,0 +1,72 @@
+# Colocate Join
+## description
+ Colocate/Local Join 就是指多个节点Join时没有数据移动和网络传输,每个节点只在本地进行Join,
+ 能够本地进行Join的前提是相同Join Key的数据导入时按照相同规则导入到固定的节点。
+
+ 1 How To Use:
+
+ 只需要在建表时增加 colocate_with 这个属性即可,colocate_with的值 可以设置成同一组colocate 表中的任意一个,
+ 不过需要保证colocate_with属性中的表要先建立。
+
+ 假如需要对table t1 和t2 进行Colocate Join,可以按以下语句建表:
+
+ CREATE TABLE `t1` (
+ `id` int(11) COMMENT "",
+ `value` varchar(8) COMMENT ""
+ ) ENGINE=OLAP
+ DUPLICATE KEY(`id`)
+ DISTRIBUTED BY HASH(`id`) BUCKETS 10
+ PROPERTIES (
+ "colocate_with" = "t1"
+ );
+
+ CREATE TABLE `t2` (
+ `id` int(11) COMMENT "",
+ `value` varchar(8) COMMENT ""
+ ) ENGINE=OLAP
+ DUPLICATE KEY(`id`)
+ DISTRIBUTED BY HASH(`id`) BUCKETS 10
+ PROPERTIES (
+ "colocate_with" = "t1"
+ );
+
+ 2 Colocate Join 目前的限制:
+
+ 1. Colcoate Table 必须是OLAP类型的表
+ 2. 相同colocate_with 属性的表的 BUCKET 数必须一样
+ 3. 相同colocate_with 属性的表的 副本数必须一样
+ 4. 相同colocate_with 属性的表的 DISTRIBUTED Columns的数据类型必须一样
+
+ 3 Colocate Join的适用场景:
+
+ Colocate Join 十分适合几张表按照相同字段分桶,并高频根据相同字段Join的场景。
+
+ 4 FAQ:
+
+ Q: 支持多张表进行Colocate Join 吗?
+
+ A: 支持
+
+ Q: 支持Colocate 表和正常表 Join 吗?
+
+ A: 支持
+
+ Q: Colocate 表支持用非分桶的Key进行Join吗?
+
+ A: 支持:不符合Colocate Join条件的Join会使用Shuffle Join或Broadcast Join
+
+ Q: 如何确定Join 是按照Colocate Join 执行的?
+
+ A: explain的结果中Hash Join的孩子节点如果直接是OlapScanNode, 没有Exchange Node,就说明是Colocate Join
+
+ Q: 如何修改colocate_with 属性?
+
+ A: ALTER TABLE example_db.my_table set ("colocate_with"="target_table");
+
+ Q: 如何禁用colcoate join?
+
+ A: set disable_colocate_join = true; 就可以禁用Colocate Join,查询时就会使用Shuffle Join 和Broadcast Join
+
+## keyword
+
+ COLOCATE, JOIN, CREATE TABLE
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/DROP DATABASE.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/DROP DATABASE.md
new file mode 100644
index 00000000000000..7ad5ba06bdddb2
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/DROP DATABASE.md
@@ -0,0 +1,16 @@
+# DROP DATABASE
+## description
+ 该语句用于删除数据库(database)
+ 语法:
+ DROP DATABASE [IF EXISTS] db_name;
+
+ 说明:
+ 执行 DROP DATABASE 一段时间内,可以通过 RECOVER 语句恢复被删除的 database。详见 RECOVER 语句
+
+## example
+ 1. 删除数据库 db_test
+ DROP DATABASE db_test;
+
+## keyword
+ DROP,DATABASE
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/DROP REPOSITORY.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/DROP REPOSITORY.md
new file mode 100644
index 00000000000000..1ecdc6a30a65ce
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/DROP REPOSITORY.md
@@ -0,0 +1,16 @@
+# DROP REPOSITORY
+## description
+ 该语句用于删除一个已创建的仓库。仅 root 或 superuser 用户可以删除仓库。
+ 语法:
+ DROP REPOSITORY `repo_name`;
+
+ 说明:
+ 1. 删除仓库,仅仅是删除该仓库在 Palo 中的映射,不会删除实际的仓库数据。删除后,可以再次通过指定相同的 broker 和 LOCATION 映射到该仓库。
+
+## example
+ 1. 删除名为 bos_repo 的仓库:
+ DROP REPOSITORY `bos_repo`;
+
+## keyword
+ DROP REPOSITORY
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/DROP TABLE.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/DROP TABLE.md
new file mode 100644
index 00000000000000..9f1473b9a2fef5
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/DROP TABLE.md
@@ -0,0 +1,19 @@
+# DROP TABLE
+## description
+ 该语句用于删除 table 。
+ 语法:
+ DROP TABLE [IF EXISTS] [db_name.]table_name;
+
+ 说明:
+ 执行 DROP TABLE 一段时间内,可以通过 RECOVER 语句恢复被删除的 table。详见 RECOVER 语句
+
+## example
+ 1. 删除一个 table
+ DROP TABLE my_table;
+
+ 2. 如果存在,删除指定 database 的 table
+ DROP TABLE IF EXISTS example_db.my_table;
+
+## keyword
+ DROP,TABLE
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/DROP VIEW.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/DROP VIEW.md
new file mode 100644
index 00000000000000..e2feb735b4c5ca
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/DROP VIEW.md
@@ -0,0 +1,14 @@
+# DROP VIEW
+## description
+ 该语句用于删除一个逻辑视图 VIEW
+ 语法:
+ DROP VIEW [IF EXISTS]
+ [db_name.]view_name;
+
+## example
+ 1. 如果存在,删除 example_db 上的视图 example_view
+ DROP VIEW IF EXISTS example_db.example_view;
+
+## keyword
+ DROP,VIEW
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/HLL.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/HLL.md
new file mode 100644
index 00000000000000..16b40d7fbb444e
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/HLL.md
@@ -0,0 +1,80 @@
+# HLL
+## description
+ HLL是基于HyperLogLog算法的工程实现,用于保存HyperLogLog计算过程的中间结果,它只能作为表的value列类型
+ 通过聚合来不断的减少数据量,以此来实现加快查询的目的,基于它到的是一个估算结果,误差大概在1%左右
+ hll列是通过其它列或者导入数据里面的数据生成的,导入的时候通过hll_hash函数来指定数据中哪一列用于生成hll列
+ 它常用于替代count distinct,通过结合rollup在业务上用于快速计算uv等
+
+ 相关函数:
+
+ HLL_UNION_AGG(hll)
+ 此函数为聚合函数,用于计算满足条件的所有数据的基数估算。此函数还可用于分析函数,只支持默认窗口,不支持window从句。
+
+ HLL_RAW_AGG(hll)
+ 此函数为聚合函数,用于聚合hll类型字段,并且返回的还是hll类型。
+
+ HLL_CARDINALITY(hll)
+ 此函数用于计算单条hll列的基数估算
+
+ HLL_HASH(column_name)
+ 生成HLL列类型,用于insert或导入的时候,导入的使用见相关说明
+
+## example
+ 1. 首先创建一张含有hll列的表
+ create table test(
+ dt date,
+ id int,
+ name char(10),
+ province char(10),
+ os char(1),
+ set1 hll hll_union,
+ set2 hll hll_union)
+ distributed by hash(id) buckets 32;
+
+ 2. 导入数据,导入的方式见相关help curl
+
+ a. 使用表中的列生成hll列
+ curl --location-trusted -uname:password -T data http://host/api/test_db/test/_load?label=load_1\&hll=set1,id:set2,name
+
+ b. 使用数据中的某一列生成hll列
+ curl --location-trusted -uname:password -T data http://host/api/test_db/test/_load?label=load_1\&hll=set1,cuid:set2,os
+ \&columns=dt,id,name,province,sex,cuid,os
+
+ 3. 聚合数据,常用方式3种:(如果不聚合直接对base表查询,速度可能跟直接使用ndv速度差不多)
+
+ a. 创建一个rollup,让hll列产生聚合,
+ alter table test add rollup test_rollup(dt, set1);
+
+ b. 创建另外一张专门计算uv的表,然后insert数据)
+
+ create table test_uv(
+ dt date,
+ uv_set hll hll_union)
+ distributed by hash(id) buckets 32;
+
+ insert into test_uv select dt, set1 from test;
+
+ c. 创建另外一张专门计算uv的表,然后insert并通过hll_hash根据test其它非hll列生成hll列
+
+ create table test_uv(
+ dt date,
+ id_set hll hll_union)
+ distributed by hash(id) buckets 32;
+
+ insert into test_uv select dt, hll_hash(id) from test;
+
+ 4. 查询,hll列不允许直接查询它的原始值,可以通过配套的函数进行查询
+
+ a. 求总uv
+ select HLL_UNION_AGG(uv_set) from test_uv;
+
+ b. 求每一天的uv
+ select dt, HLL_CARDINALITY(uv_set) from test_uv;
+
+ c. 求test表中set1的聚合值
+ select dt, HLL_CARDINALITY(uv) from (select dt, HLL_RAW_AGG(set1) as uv from test group by dt) tmp;
+ select dt, HLL_UNION_AGG(set1) as uv from test group by dt;
+
+## keyword
+ HLL
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/RECOVER.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/RECOVER.md
new file mode 100644
index 00000000000000..73b52ae2942516
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/RECOVER.md
@@ -0,0 +1,28 @@
+# RECOVER
+## description
+ 该语句用于恢复之前删除的 database、table 或者 partition
+ 语法:
+ 1) 恢复 database
+ RECOVER DATABASE db_name;
+ 2) 恢复 table
+ RECOVER TABLE [db_name.]table_name;
+ 3) 恢复 partition
+ RECOVER PARTITION partition_name FROM [db_name.]table_name;
+
+ 说明:
+ 1. 该操作仅能恢复之前一段时间内删除的元信息。默认为 3600 秒。
+ 2. 如果删除元信息后新建立了同名同类型的元信息,则之前删除的元信息不能被恢复
+
+## example
+ 1. 恢复名为 example_db 的 database
+ RECOVER DATABASE example_db;
+
+ 2. 恢复名为 example_tbl 的 table
+ RECOVER TABLE example_db.example_tbl;
+
+ 3. 恢复表 example_tbl 中名为 p1 的 partition
+ RECOVER PARTITION p1 FROM example_tbl;
+
+## keyword
+ RECOVER
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/RESTORE.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/RESTORE.md
new file mode 100644
index 00000000000000..0f6f71e3a52319
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/RESTORE.md
@@ -0,0 +1,52 @@
+# RESTORE
+## description
+ 1. RESTORE
+ 该语句用于将之前通过 BACKUP 命令备份的数据,恢复到指定数据库下。该命令为异步操作。提交成功后,需通过 SHOW RESTORE 命令查看进度。仅支持恢复 OLAP 类型的表。
+ 语法:
+ RESTORE SNAPSHOT [db_name].{snapshot_name}
+ FROM `repository_name`
+ ON (
+ `table_name` [PARTITION (`p1`, ...)] [AS `tbl_alias`],
+ ...
+ )
+ PROPERTIES ("key"="value", ...);
+
+ 说明:
+ 1. 同一数据库下只能有一个正在执行的 BACKUP 或 RESTORE 任务。
+ 2. ON 子句中标识需要恢复的表和分区。如果不指定分区,则默认恢复该表的所有分区。所指定的表和分区必须已存在于仓库备份中。
+ 3. 可以通过 AS 语句将仓库中备份的表名恢复为新的表。但新表名不能已存在于数据库中。分区名称不能修改。
+ 4. 可以将仓库中备份的表恢复替换数据库中已有的同名表,但须保证两张表的表结构完全一致。表结构包括:表名、列、分区、Rollup等等。
+ 5. 可以指定恢复表的部分分区,系统会检查分区 Range 是否能够匹配。
+ 6. PROPERTIES 目前支持以下属性:
+ "backup_timestamp" = "2018-05-04-16-45-08":指定了恢复对应备份的哪个时间版本,必填。该信息可以通过 `SHOW SNAPSHOT ON repo;` 语句获得。
+ "replication_num" = "3":指定恢复的表或分区的副本数。默认为3。若恢复已存在的表或分区,则副本数必须和已存在表或分区的副本数相同。同时,必须有足够的 host 容纳多个副本。
+ "timeout" = "3600":任务超时时间,默认为一天。单位秒。
+ "meta_version" = 40:使用指定的 meta_version 来读取之前备份的元数据。注意,该参数作为临时方案,仅用于恢复老版本 Doris 备份的数据。最新版本的备份数据中已经包含 meta version,无需再指定。
+
+## example
+ 1. 从 example_repo 中恢复备份 snapshot_1 中的表 backup_tbl 到数据库 example_db1,时间版本为 "2018-05-04-16-45-08"。恢复为 1 个副本:
+ RESTORE SNAPSHOT example_db1.`snapshot_1`
+ FROM `example_repo`
+ ON ( `backup_tbl` )
+ PROPERTIES
+ (
+ "backup_timestamp"="2018-05-04-16-45-08",
+ "replication_num" = "1"
+ );
+
+ 2. 从 example_repo 中恢复备份 snapshot_2 中的表 backup_tbl 的分区 p1,p2,以及表 backup_tbl2 到数据库 example_db1,并重命名为 new_tbl,时间版本为 "2018-05-04-17-11-01"。默认恢复为 3 个副本:
+ RESTORE SNAPSHOT example_db1.`snapshot_2`
+ FROM `example_repo`
+ ON
+ (
+ `backup_tbl` PARTITION (`p1`, `p2`),
+ `backup_tbl2` AS `new_tbl`
+ )
+ PROPERTIES
+ (
+ "backup_timestamp"="2018-05-04-17-11-01"
+ );
+
+## keyword
+ RESTORE
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/TRUNCATE TABLE.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/TRUNCATE TABLE.md
new file mode 100644
index 00000000000000..28c68c5bc24675
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/TRUNCATE TABLE.md
@@ -0,0 +1,27 @@
+# TRUNCATE TABLE
+## description
+ 该语句用于清空指定表和分区的数据
+ 语法:
+
+ TRUNCATE TABLE [db.]tbl[ PARTITION(p1, p2, ...)];
+
+ 说明:
+ 1. 该语句清空数据,但保留表或分区。
+ 2. 不同于 DELETE,该语句只能整体清空指定的表或分区,不能添加过滤条件。
+ 3. 不同于 DELETE,使用该方式清空数据不会对查询性能造成影响。
+ 4. 该操作删除的数据不可恢复。
+ 5. 使用该命令时,表状态需为 NORMAL,即不允许正在进行 SCHEMA CHANGE 等操作。
+
+## example
+
+ 1. 清空 example_db 下的表 tbl
+
+ TRUNCATE TABLE example_db.tbl;
+
+ 2. 清空表 tbl 的 p1 和 p2 分区
+
+ TRUNCATE TABLE tbl PARTITION(p1, p2);
+
+## keyword
+ TRUNCATE,TABLE
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/create-function.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/create-function.md
index b2dbd9954f4b71..f2bf7953928c04 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/create-function.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/create-function.md
@@ -1,6 +1,11 @@
# CREATE FUNCTION
+## description
-## Syntax
+此语句创建一个自定义函数。执行此命令需要用户拥有 `ADMIN` 权限。
+
+如果 `function_name` 中包含了数据库名字,那么这个自定义函数会创建在对应的数据库中,否则这个函数将会创建在当前会话所在的数据库。新函数的名字与参数不能够与当前命名空间中已存在的函数相同,否则会创建失败。但是只有名字相同,参数不同是能够创建成功的。
+
+ Syntax
```
CREATE [AGGREGATE] FUNCTION function_name
@@ -10,13 +15,7 @@ CREATE [AGGREGATE] FUNCTION function_name
[PROPERTIES ("key" = "value" [, ...]) ]
```
-## Description
-
-此语句创建一个自定义函数。执行此命令需要用户拥有 `ADMIN` 权限。
-
-如果 `function_name` 中包含了数据库名字,那么这个自定义函数会创建在对应的数据库中,否则这个函数将会创建在当前会话所在的数据库。新函数的名字与参数不能够与当前命名空间中已存在的函数相同,否则会创建失败。但是只有名字相同,参数不同是能够创建成功的。
-
-## Parameters
+ Parameters
> `AGGREGATE`: 如果有此项,表示的是创建的函数是一个聚合函数,否则创建的是一个标量函数。
>
@@ -46,7 +45,7 @@ CREATE [AGGREGATE] FUNCTION function_name
>
> "md5": 函数动态链接库的MD5值,用于校验下载的内容是否正确。此选项是可选项
-## Examples
+## example
1. 创建一个自定义标量函数
@@ -68,3 +67,5 @@ CREATE AGGREGATE FUNCTION my_count (BIGINT) RETURNS BIGINT PROPERTIES (
"object_file"="http://host:port/libudasample.so"
);
```
+##keyword
+CREATE,FUNCTION,CREATE,FUNCTION
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/ddl_stmt.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/ddl_stmt.md
deleted file mode 100644
index b0bb79ecd0d7cb..00000000000000
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/ddl_stmt.md
+++ /dev/null
@@ -1,1112 +0,0 @@
-# CREATE DATABASE
-## description
- 该语句用于新建数据库(database)
- 语法:
- CREATE DATABASE [IF NOT EXISTS] db_name;
-
-## example
- 1. 新建数据库 db_test
- CREATE DATABASE db_test;
-
-## keyword
- CREATE,DATABASE
-
-# DROP DATABASE
-## description
- 该语句用于删除数据库(database)
- 语法:
- DROP DATABASE [IF EXISTS] db_name;
-
- 说明:
- 执行 DROP DATABASE 一段时间内,可以通过 RECOVER 语句恢复被删除的 database。详见 RECOVER 语句
-
-## example
- 1. 删除数据库 db_test
- DROP DATABASE db_test;
-
-## keyword
- DROP,DATABASE
-
-# CREATE TABLE
-## description
- 该语句用于创建 table。
- 语法:
- CREATE [EXTERNAL] TABLE [IF NOT EXISTS] [database.]table_name
- (column_definition1[, column_definition2, ...])
- [ENGINE = [olap|mysql|broker]]
- [key_desc]
- [partition_desc]
- [distribution_desc]
- [PROPERTIES ("key"="value", ...)];
- [BROKER PROPERTIES ("key"="value", ...)];
-
- 1. column_definition
- 语法:
- col_name col_type [agg_type] [NULL | NOT NULL] [DEFAULT "default_value"]
-
- 说明:
- col_name:列名称
- col_type:列类型
- TINYINT(1字节)
- 范围:-2^7 + 1 ~ 2^7 - 1
- SMALLINT(2字节)
- 范围:-2^15 + 1 ~ 2^15 - 1
- INT(4字节)
- 范围:-2^31 + 1 ~ 2^31 - 1
- BIGINT(8字节)
- 范围:-2^63 + 1 ~ 2^63 - 1
- LARGEINT(16字节)
- 范围:0 ~ 2^127 - 1
- FLOAT(4字节)
- 支持科学计数法
- DOUBLE(12字节)
- 支持科学计数法
- DECIMAL[(precision, scale)] (40字节)
- 保证精度的小数类型。默认是 DECIMAL(10, 0)
- precision: 1 ~ 27
- scale: 0 ~ 9
- 其中整数部分为 1 ~ 18
- 不支持科学计数法
- DATE(3字节)
- 范围:1900-01-01 ~ 9999-12-31
- DATETIME(8字节)
- 范围:1900-01-01 00:00:00 ~ 9999-12-31 23:59:59
- CHAR[(length)]
- 定长字符串。长度范围:1 ~ 255。默认为1
- VARCHAR[(length)]
- 变长字符串。长度范围:1 ~ 65533
- HLL (1~16385个字节)
- hll列类型,不需要指定长度和默认值、长度根据数据的聚合
- 程度系统内控制,并且HLL列只能通过配套的hll_union_agg、Hll_cardinality、hll_hash进行查询或使用
-
- agg_type:聚合类型,如果不指定,则该列为 key 列。否则,该列为 value 列
- SUM、MAX、MIN、REPLACE、HLL_UNION(仅用于HLL列,为HLL独有的聚合方式)
- 该类型只对聚合模型(key_desc的type为AGGREGATE KEY)有用,其它模型不需要指定这个。
-
- 是否允许为NULL: 默认不允许为 NULL。NULL 值在导入数据中用 \N 来表示
-
- 2. ENGINE 类型
- 默认为 olap。可选 mysql, broker
- 1) 如果是 mysql,则需要在 properties 提供以下信息:
-
- PROPERTIES (
- "host" = "mysql_server_host",
- "port" = "mysql_server_port",
- "user" = "your_user_name",
- "password" = "your_password",
- "database" = "database_name",
- "table" = "table_name"
- )
-
- 注意:
- "table" 条目中的 "table_name" 是 mysql 中的真实表名。
- 而 CREATE TABLE 语句中的 table_name 是该 mysql 表在 Palo 中的名字,可以不同。
-
- 在 Palo 创建 mysql 表的目的是可以通过 Palo 访问 mysql 数据库。
- 而 Palo 本身并不维护、存储任何 mysql 数据。
- 2) 如果是 broker,表示表的访问需要通过指定的broker, 需要在 properties 提供以下信息:
- PROPERTIES (
- "broker_name" = "broker_name",
- "paths" = "file_path1[,file_path2]",
- "column_separator" = "value_separator"
- "line_delimiter" = "value_delimiter"
- )
- 另外还需要提供Broker需要的Property信息,通过BROKER PROPERTIES来传递,例如HDFS需要传入
- BROKER PROPERTIES(
- "username" = "name",
- "password" = "password"
- )
- 这个根据不同的Broker类型,需要传入的内容也不相同
- 注意:
- "paths" 中如果有多个文件,用逗号[,]分割。如果文件名中包含逗号,那么使用 %2c 来替代。如果文件名中包含 %,使用 %25 代替
- 现在文件内容格式支持CSV,支持GZ,BZ2,LZ4,LZO(LZOP) 压缩格式。
-
- 3. key_desc
- 语法:
- key_type(k1[,k2 ...])
- 说明:
- 数据按照指定的key列进行排序,且根据不同的key_type具有不同特性。
- key_type支持一下类型:
- AGGREGATE KEY:key列相同的记录,value列按照指定的聚合类型进行聚合,
- 适合报表、多维分析等业务场景。
- UNIQUE KEY:key列相同的记录,value列按导入顺序进行覆盖,
- 适合按key列进行增删改查的点查询业务。
- DUPLICATE KEY:key列相同的记录,同时存在于Palo中,
- 适合存储明细数据或者数据无聚合特性的业务场景。
- 注意:
- 除AGGREGATE KEY外,其他key_type在建表时,value列不需要指定聚合类型。
-
- 4. partition_desc
- 1) Range 分区
- 语法:
- PARTITION BY RANGE (k1, k2, ...)
- (
- PARTITION partition_name VALUES LESS THAN MAXVALUE|("value1", "value2", ...)
- PARTITION partition_name VALUES LESS THAN MAXVALUE|("value1", "value2", ...)
- ...
- )
- 说明:
- 使用指定的 key 列和指定的数值范围进行分区。
- 1) 分区名称仅支持字母开头,字母、数字和下划线组成
- 2) 目前仅支持以下类型的列作为 Range 分区列,且只能指定一个分区列
- TINYINT, SMALLINT, INT, BIGINT, LARGEINT, DATE, DATETIME
- 3) 分区为左闭右开区间,首个分区的左边界为做最小值
- 4) NULL 值只会存放在包含最小值的分区中。当包含最小值的分区被删除后,NULL 值将无法导入。
- 5) 可以指定一列或多列作为分区列。如果分区值缺省,则会默认填充最小值。
-
- 注意:
- 1) 分区一般用于时间维度的数据管理
- 2) 有数据回溯需求的,可以考虑首个分区为空分区,以便后续增加分区
-
- 5. distribution_desc
- 1) Hash 分桶
- 语法:
- DISTRIBUTED BY HASH (k1[,k2 ...]) [BUCKETS num]
- 说明:
- 使用指定的 key 列进行哈希分桶。默认分区数为10
-
- 建议:建议使用Hash分桶方式
-
- 6. PROPERTIES
- 1) 如果 ENGINE 类型为 olap,则可以在 properties 中指定列存(目前我们仅支持列存)
-
- PROPERTIES (
- "storage_type" = "[column]",
- )
-
- 2) 如果 ENGINE 类型为 olap
- 可以在 properties 设置该表数据的初始存储介质、存储到期时间和副本数。
-
- PROPERTIES (
- "storage_medium" = "[SSD|HDD]",
- ["storage_cooldown_time" = "yyyy-MM-dd HH:mm:ss"],
- ["replication_num" = "3"]
- )
-
- storage_medium: 用于指定该分区的初始存储介质,可选择 SSD 或 HDD。默认为 HDD。
- storage_cooldown_time: 当设置存储介质为 SSD 时,指定该分区在 SSD 上的存储到期时间。
- 默认存放 7 天。
- 格式为:"yyyy-MM-dd HH:mm:ss"
- replication_num: 指定分区的副本数。默认为 3
-
- 当表为单分区表时,这些属性为表的属性。
- 当表为两级分区时,这些属性为附属于每一个分区。
- 如果希望不同分区有不同属性。可以通过 ADD PARTITION 或 MODIFY PARTITION 进行操作
-
- 3) 如果 Engine 类型为 olap, 并且 storage_type 为 column, 可以指定某列使用 bloom filter 索引
- bloom filter 索引仅适用于查询条件为 in 和 equal 的情况,该列的值越分散效果越好
- 目前只支持以下情况的列:除了 TINYINT FLOAT DOUBLE 类型以外的 key 列及聚合方法为 REPLACE 的 value 列
-
- PROPERTIES (
- "bloom_filter_columns"="k1,k2,k3"
- )
- 4) 如果希望使用Colocate Join 特性,需要在 properties 中指定
-
- PROPERTIES (
- "colocate_with"="table1"
- )
-
-## example
- 1. 创建一个 olap 表,使用 HASH 分桶,使用列存,相同key的记录进行聚合
- CREATE TABLE example_db.table_hash
- (
- k1 TINYINT,
- k2 DECIMAL(10, 2) DEFAULT "10.5",
- v1 CHAR(10) REPLACE,
- v2 INT SUM
- )
- ENGINE=olap
- AGGREGATE KEY(k1, k2)
- DISTRIBUTED BY HASH(k1) BUCKETS 32
- PROPERTIES ("storage_type"="column");
-
- 2. 创建一个 olap 表,使用 Hash 分桶,使用列存,相同key的记录进行覆盖,
- 设置初始存储介质和冷却时间
- CREATE TABLE example_db.table_hash
- (
- k1 BIGINT,
- k2 LARGEINT,
- v1 VARCHAR(2048) REPLACE,
- v2 SMALLINT SUM DEFAULT "10"
- )
- ENGINE=olap
- UNIQUE KEY(k1, k2)
- DISTRIBUTED BY HASH (k1, k2) BUCKETS 32
- PROPERTIES(
- "storage_type"="column",
- "storage_medium" = "SSD",
- "storage_cooldown_time" = "2015-06-04 00:00:00"
- );
-
- 3. 创建一个 olap 表,使用 Key Range 分区,使用Hash分桶,默认使用列存,
- 相同key的记录同时存在,设置初始存储介质和冷却时间
- CREATE TABLE example_db.table_range
- (
- k1 DATE,
- k2 INT,
- k3 SMALLINT,
- v1 VARCHAR(2048),
- v2 DATETIME DEFAULT "2014-02-04 15:36:00"
- )
- ENGINE=olap
- DUPLICATE KEY(k1, k2, k3)
- PARTITION BY RANGE (k1)
- (
- PARTITION p1 VALUES LESS THAN ("2014-01-01"),
- PARTITION p2 VALUES LESS THAN ("2014-06-01"),
- PARTITION p3 VALUES LESS THAN ("2014-12-01")
- )
- DISTRIBUTED BY HASH(k2) BUCKETS 32
- PROPERTIES(
- "storage_medium" = "SSD", "storage_cooldown_time" = "2015-06-04 00:00:00"
- );
-
- 说明:
- 这个语句会将数据划分成如下3个分区:
- ( { MIN }, {"2014-01-01"} )
- [ {"2014-01-01"}, {"2014-06-01"} )
- [ {"2014-06-01"}, {"2014-12-01"} )
-
- 不在这些分区范围内的数据将视为非法数据被过滤
-
- 4. 创建一个 mysql 表
- CREATE TABLE example_db.table_mysql
- (
- k1 DATE,
- k2 INT,
- k3 SMALLINT,
- k4 VARCHAR(2048),
- k5 DATETIME
- )
- ENGINE=mysql
- PROPERTIES
- (
- "host" = "127.0.0.1",
- "port" = "8239",
- "user" = "mysql_user",
- "password" = "mysql_passwd",
- "database" = "mysql_db_test",
- "table" = "mysql_table_test"
- )
-
- 5. 创建一个数据文件存储在HDFS上的 broker 外部表, 数据使用 "|" 分割,"\n" 换行
- CREATE EXTERNAL TABLE example_db.table_broker (
- k1 DATE,
- k2 INT,
- k3 SMALLINT,
- k4 VARCHAR(2048),
- k5 DATETIME
- )
- ENGINE=broker
- PROPERTIES (
- "broker_name" = "hdfs",
- "path" = "hdfs://hdfs_host:hdfs_port/data1,hdfs://hdfs_host:hdfs_port/data2,hdfs://hdfs_host:hdfs_port/data3%2c4",
- "column_separator" = "|",
- "line_delimiter" = "\n"
- )
- BROKER PROPERTIES (
- "username" = "hdfs_user",
- "password" = "hdfs_password"
- )
-
- 6. 创建一张含有HLL列的表
- CREATE TABLE example_db.example_table
- (
- k1 TINYINT,
- k2 DECIMAL(10, 2) DEFAULT "10.5",
- v1 HLL HLL_UNION,
- v2 HLL HLL_UNION
- )
- ENGINE=olap
- AGGREGATE KEY(k1, k2)
- DISTRIBUTED BY HASH(k1) BUCKETS 32
- PROPERTIES ("storage_type"="column");
-
- 7. 创建两张支持Colocat Join的表t1 和t2
- CREATE TABLE `t1` (
- `id` int(11) COMMENT "",
- `value` varchar(8) COMMENT ""
- ) ENGINE=OLAP
- DUPLICATE KEY(`id`)
- DISTRIBUTED BY HASH(`id`) BUCKETS 10
- PROPERTIES (
- "colocate_with" = "t1"
- );
-
- CREATE TABLE `t2` (
- `id` int(11) COMMENT "",
- `value` varchar(8) COMMENT ""
- ) ENGINE=OLAP
- DUPLICATE KEY(`id`)
- DISTRIBUTED BY HASH(`id`) BUCKETS 10
- PROPERTIES (
- "colocate_with" = "t1"
- );
-
- 8. 创建一个数据文件存储在BOS上的 broker 外部表
- CREATE EXTERNAL TABLE example_db.table_broker (
- k1 DATE
- )
- ENGINE=broker
- PROPERTIES (
- "broker_name" = "bos",
- "path" = "bos://my_bucket/input/file",
- )
- BROKER PROPERTIES (
- "bos_endpoint" = "http://bj.bcebos.com",
- "bos_accesskey" = "xxxxxxxxxxxxxxxxxxxxxxxxxx",
- "bos_secret_accesskey"="yyyyyyyyyyyyyyyyyyyy"
- )
-
-## keyword
- CREATE,TABLE
-
-# DROP TABLE
-## description
- 该语句用于删除 table 。
- 语法:
- DROP TABLE [IF EXISTS] [db_name.]table_name;
-
- 说明:
- 执行 DROP TABLE 一段时间内,可以通过 RECOVER 语句恢复被删除的 table。详见 RECOVER 语句
-
-## example
- 1. 删除一个 table
- DROP TABLE my_table;
-
- 2. 如果存在,删除指定 database 的 table
- DROP TABLE IF EXISTS example_db.my_table;
-
-## keyword
- DROP,TABLE
-
-# ALTER TABLE
-## description
- 该语句用于对已有的 table 进行修改。如果没有指定 rollup index,默认操作 base index。
- 该语句分为三种操作类型: schema change 、rollup 、partition
- 这三种操作类型不能同时出现在一条 ALTER TABLE 语句中。
- 其中 schema change 和 rollup 是异步操作,任务提交成功则返回。之后可使用 SHOW ALTER 命令查看进度。
- partition 是同步操作,命令返回表示执行完毕。
-
- 语法:
- ALTER TABLE [database.]table
- alter_clause1[, alter_clause2, ...];
-
- alter_clause 分为 partition 、rollup、schema change 和 rename 四种。
-
- partition 支持如下几种修改方式
- 1. 增加分区
- 语法:
- ADD PARTITION [IF NOT EXISTS] partition_name VALUES LESS THAN [MAXVALUE|("value1")] ["key"="value"]
- [DISTRIBUTED BY HASH (k1[,k2 ...]) [BUCKETS num]]
- 注意:
- 1) 分区为左闭右开区间,用户指定右边界,系统自动确定左边界
- 2) 如果没有指定分桶方式,则自动使用建表使用的分桶方式
- 3) 如指定分桶方式,只能修改分桶数,不可修改分桶方式或分桶列
- 4) ["key"="value"] 部分可以设置分区的一些属性,具体说明见 CREATE TABLE
-
- 2. 删除分区
- 语法:
- DROP PARTITION [IF EXISTS] partition_name
- 注意:
- 1) 使用分区方式的表至少要保留一个分区。
- 2) 执行 DROP PARTITION 一段时间内,可以通过 RECOVER 语句恢复被删除的 partition。详见 RECOVER 语句
-
- 3. 修改分区属性
- 语法:
- MODIFY PARTITION partition_name SET ("key" = "value", ...)
- 说明:
- 1) 当前支持修改分区的 storage_medium、storage_cooldown_time 和 replication_num 三个属性。
- 2) 对于单分区表,partition_name 同表名。
-
- rollup 支持如下几种创建方式:
- 1. 创建 rollup index
- 语法:
- ADD ROLLUP rollup_name (column_name1, column_name2, ...)
- [FROM from_index_name]
- [PROPERTIES ("key"="value", ...)]
- 注意:
- 1) 如果没有指定 from_index_name,则默认从 base index 创建
- 2) rollup 表中的列必须是 from_index 中已有的列
- 3) 在 properties 中,可以指定存储格式。具体请参阅 CREATE TABLE
-
- 2. 删除 rollup index
- 语法:
- DROP ROLLUP rollup_name
- [PROPERTIES ("key"="value", ...)]
- 注意:
- 1) 不能删除 base index
- 2) 执行 DROP ROLLUP 一段时间内,可以通过 RECOVER 语句恢复被删除的 rollup index。详见 RECOVER 语句
-
-
- schema change 支持如下几种修改方式:
- 1. 向指定 index 的指定位置添加一列
- 语法:
- ADD COLUMN column_name column_type [KEY | agg_type] [DEFAULT "default_value"]
- [AFTER column_name|FIRST]
- [TO rollup_index_name]
- [PROPERTIES ("key"="value", ...)]
- 注意:
- 1) 聚合模型如果增加 value 列,需要指定 agg_type
- 2) 非聚合模型如果增加key列,需要指定KEY关键字
- 3) 不能在 rollup index 中增加 base index 中已经存在的列
- 如有需要,可以重新创建一个 rollup index)
-
- 2. 向指定 index 添加多列
- 语法:
- ADD COLUMN (column_name1 column_type [KEY | agg_type] DEFAULT "default_value", ...)
- [TO rollup_index_name]
- [PROPERTIES ("key"="value", ...)]
- 注意:
- 1) 聚合模型如果增加 value 列,需要指定agg_type
- 2) 非聚合模型如果增加key列,需要指定KEY关键字
- 3) 不能在 rollup index 中增加 base index 中已经存在的列
- (如有需要,可以重新创建一个 rollup index)
-
- 3. 从指定 index 中删除一列
- 语法:
- DROP COLUMN column_name
- [FROM rollup_index_name]
- 注意:
- 1) 不能删除分区列
- 2) 如果是从 base index 中删除列,则如果 rollup index 中包含该列,也会被删除
-
- 4. 修改指定 index 的列类型以及列位置
- 语法:
- MODIFY COLUMN column_name column_type [KEY | agg_type] [NULL | NOT NULL] [DEFAULT "default_value"]
- [AFTER column_name|FIRST]
- [FROM rollup_index_name]
- [PROPERTIES ("key"="value", ...)]
- 注意:
- 1) 聚合模型如果修改 value 列,需要指定 agg_type
- 2) 非聚合类型如果修改key列,需要指定KEY关键字
- 3) 只能修改列的类型,列的其他属性维持原样(即其他属性需在语句中按照原属性显式的写出,参见 example 8)
- 4) 分区列不能做任何修改
- 5) 目前支持以下类型的转换(精度损失由用户保证)
- TINYINT/SMALLINT/INT/BIGINT 转换成 TINYINT/SMALLINT/INT/BIGINT/DOUBLE。
- LARGEINT 转换成 DOUBLE
- VARCHAR 支持修改最大长度
- 6) 不支持从NULL转为NOT NULL
-
- 5. 对指定 index 的列进行重新排序
- 语法:
- ORDER BY (column_name1, column_name2, ...)
- [FROM rollup_index_name]
- [PROPERTIES ("key"="value", ...)]
- 注意:
- 1) index 中的所有列都要写出来
- 2) value 列在 key 列之后
-
- 6. 修改table的属性,目前支持修改bloom filter列和colocate_with 属性
- 语法:
- PROPERTIES ("key"="value")
- 注意:
- 也可以合并到上面的schema change操作中来修改,见下面例子
-
-
- rename 支持对以下名称进行修改:
- 1. 修改表名
- 语法:
- RENAME new_table_name;
-
- 2. 修改 rollup index 名称
- 语法:
- RENAME ROLLUP old_rollup_name new_rollup_name;
-
- 3. 修改 partition 名称
- 语法:
- RENAME PARTITION old_partition_name new_partition_name;
-
-## example
- [partition]
- 1. 增加分区, 现有分区 [MIN, 2013-01-01),增加分区 [2013-01-01, 2014-01-01),使用默认分桶方式
- ALTER TABLE example_db.my_table
- ADD PARTITION p1 VALUES LESS THAN ("2014-01-01");
-
- 2. 增加分区,使用新的分桶数
- ALTER TABLE example_db.my_table
- ADD PARTITION p1 VALUES LESS THAN ("2015-01-01")
- DISTRIBUTED BY HASH(k1) BUCKETS 20;
-
- 3. 删除分区
- ALTER TABLE example_db.my_table
- DROP PARTITION p1;
-
- [rollup]
- 1. 创建 index: example_rollup_index,基于 base index(k1,k2,k3,v1,v2)。列式存储。
- ALTER TABLE example_db.my_table
- ADD ROLLUP example_rollup_index(k1, k3, v1, v2)
- PROPERTIES("storage_type"="column");
-
- 2. 创建 index: example_rollup_index2,基于 example_rollup_index(k1,k3,v1,v2)
- ALTER TABLE example_db.my_table
- ADD ROLLUP example_rollup_index2 (k1, v1)
- FROM example_rollup_index;
-
- 3. 删除 index: example_rollup_index2
- ALTER TABLE example_db.my_table
- DROP ROLLUP example_rollup_index2;
-
- [schema change]
- 1. 向 example_rollup_index 的 col1 后添加一个key列 new_col(非聚合模型)
- ALTER TABLE example_db.my_table
- ADD COLUMN new_col INT KEY DEFAULT "0" AFTER col1
- TO example_rollup_index;
-
- 2. 向example_rollup_index的col1后添加一个value列new_col(非聚合模型)
- ALTER TABLE example_db.my_table
- ADD COLUMN new_col INT DEFAULT "0" AFTER col1
- TO example_rollup_index;
-
- 3. 向example_rollup_index的col1后添加一个key列new_col(聚合模型)
- ALTER TABLE example_db.my_table
- ADD COLUMN new_col INT DEFAULT "0" AFTER col1
- TO example_rollup_index;
-
- 4. 向example_rollup_index的col1后添加一个value列new_col SUM聚合类型(聚合模型)
- ALTER TABLE example_db.my_table
- ADD COLUMN new_col INT SUM DEFAULT "0" AFTER col1
- TO example_rollup_index;
-
- 5. 向 example_rollup_index 添加多列(聚合模型)
- ALTER TABLE example_db.my_table
- ADD COLUMN (col1 INT DEFAULT "1", col2 FLOAT SUM DEFAULT "2.3")
- TO example_rollup_index;
-
- 6. 从 example_rollup_index 删除一列
- ALTER TABLE example_db.my_table
- DROP COLUMN col2
- FROM example_rollup_index;
-
- 7. 修改 base index 的 col1 列的类型为 BIGINT,并移动到 col2 列后面
- ALTER TABLE example_db.my_table
- MODIFY COLUMN col1 BIGINT DEFAULT "1" AFTER col2;
-
- 8. 修改 base index 的 val1 列最大长度。原 val1 为 (val1 VARCHAR(32) REPLACE DEFAULT "abc")
- ALTER TABLE example_db.my_table
- MODIFY COLUMN val1 VARCHAR(64) REPLACE DEFAULT "abc";
-
- 9. 重新排序 example_rollup_index 中的列(设原列顺序为:k1,k2,k3,v1,v2)
- ALTER TABLE example_db.my_table
- ORDER BY (k3,k1,k2,v2,v1)
- FROM example_rollup_index;
-
- 10. 同时执行两种操作
- ALTER TABLE example_db.my_table
- ADD COLUMN v2 INT MAX DEFAULT "0" AFTER k2 TO example_rollup_index,
- ORDER BY (k3,k1,k2,v2,v1) FROM example_rollup_index;
-
- 11. 修改表的 bloom filter 列
- ALTER TABLE example_db.my_table SET ("bloom_filter_columns"="k1,k2,k3");
-
- 也可以合并到上面的 schema change 操作中(注意多子句的语法有少许区别)
- ALTER TABLE example_db.my_table
- DROP COLUMN col2
- PROPERTIES ("bloom_filter_columns"="k1,k2,k3");
-
- 12. 修改表的Colocate 属性
- ALTER TABLE example_db.my_table set ("colocate_with"="t1");
-
- [rename]
- 1. 将名为 table1 的表修改为 table2
- ALTER TABLE table1 RENAME table2;
-
- 2. 将表 example_table 中名为 rollup1 的 rollup index 修改为 rollup2
- ALTER TABLE example_table RENAME ROLLUP rollup1 rollup2;
-
- 3. 将表 example_table 中名为 p1 的 partition 修改为 p2
- ALTER TABLE example_table RENAME PARTITION p1 p2;
-
-## keyword
- ALTER,TABLE,ROLLUP,COLUMN,PARTITION,RENAME
-
-# CANCEL ALTER
-## description
- 该语句用于撤销一个 ALTER 操作。
- 1. 撤销 ALTER TABLE COLUMN 操作
- 语法:
- CANCEL ALTER TABLE COLUMN
- FROM db_name.table_name
-
- 2. 撤销 ALTER TABLE ROLLUP 操作
- 语法:
- CANCEL ALTER TABLE ROLLUP
- FROM db_name.table_name
-
- 2. 撤销 ALTER CLUSTER 操作
- 语法:
- (待实现...)
-
-
-## example
- [CANCEL ALTER TABLE COLUMN]
- 1. 撤销针对 my_table 的 ALTER COLUMN 操作。
- CANCEL ALTER TABLE COLUMN
- FROM example_db.my_table;
-
- [CANCEL ALTER TABLE ROLLUP]
- 1. 撤销 my_table 下的 ADD ROLLUP 操作。
- CANCEL ALTER TABLE ROLLUP
- FROM example_db.my_table;
-
-## keyword
- CANCEL,ALTER,TABLE,COLUMN,ROLLUP
-
-# CREATE VIEW
-## description
- 该语句用于创建一个逻辑视图
- 语法:
- CREATE VIEW [IF NOT EXISTS]
- [db_name.]view_name (column1[, column2, ...])
- AS query_stmt
-
- 说明:
- 1. 视图为逻辑视图,没有物理存储。所有在视图上的查询相当于在视图对应的子查询上进行。
- 2. query_stmt 为任意支持的 SQL
-
-## example
- 1. 在 example_db 上创建视图 example_view
- CREATE VIEW example_db.example_view (k1, k2, k3, v1)
- AS
- SELECT c1 as k1, k2, k3, SUM(v1) FROM example_table
- WHERE k1 = 20160112 GROUP BY k1,k2,k3;
-
-## keyword
- CREATE,VIEW
-
-# DROP VIEW
-## description
- 该语句用于删除一个逻辑视图 VIEW
- 语法:
- DROP VIEW [IF EXISTS]
- [db_name.]view_name;
-
-## example
- 1. 如果存在,删除 example_db 上的视图 example_view
- DROP VIEW IF EXISTS example_db.example_view;
-
-## keyword
- DROP,VIEW
-
-# RECOVER
-## description
- 该语句用于恢复之前删除的 database、table 或者 partition
- 语法:
- 1) 恢复 database
- RECOVER DATABASE db_name;
- 2) 恢复 table
- RECOVER TABLE [db_name.]table_name;
- 3) 恢复 partition
- RECOVER PARTITION partition_name FROM [db_name.]table_name;
-
- 说明:
- 1. 该操作仅能恢复之前一段时间内删除的元信息。默认为 3600 秒。
- 2. 如果删除元信息后新建立了同名同类型的元信息,则之前删除的元信息不能被恢复
-
-## example
- 1. 恢复名为 example_db 的 database
- RECOVER DATABASE example_db;
-
- 2. 恢复名为 example_tbl 的 table
- RECOVER TABLE example_db.example_tbl;
-
- 3. 恢复表 example_tbl 中名为 p1 的 partition
- RECOVER PARTITION p1 FROM example_tbl;
-
-## keyword
- RECOVER
-
-# ALTER DATABASE
-## description
- 该语句用于设置指定数据库的属性。(仅管理员使用)
- 语法:
- 1) 设置数据库数据量配额,单位为B/K/KB/M/MB/G/GB/T/TB/P/PB
- ALTER DATABASE db_name SET DATA QUOTA quota;
-
- 2) 重命名数据库
- ALTER DATABASE db_name RENAME new_db_name;
-
- 说明:
- 重命名数据库后,如需要,请使用 REVOKE 和 GRANT 命令修改相应的用户权限。
-
-## example
- 1. 设置指定数据库数据量配额
- ALTER DATABASE example_db SET DATA QUOTA 10995116277760;
- 上述单位为字节,等价于
- ALTER DATABASE example_db SET DATA QUOTA 10T;
-
- ALTER DATABASE example_db SET DATA QUOTA 100G;
-
- ALTER DATABASE example_db SET DATA QUOTA 200M;
-
- 2. 将数据库 example_db 重命名为 example_db2
- ALTER DATABASE example_db RENAME example_db2;
-
-## keyword
- ALTER,DATABASE,RENAME
-
-# CREATE REPOSITORY
-## description
- 该语句用于创建仓库。仓库用于属于备份或恢复。仅 root 或 superuser 用户可以创建仓库。
- 语法:
- CREATE [READ ONLY] REPOSITORY `repo_name`
- WITH BROKER `broker_name`
- ON LOCATION `repo_location`
- PROPERTIES ("key"="value", ...);
-
- 说明:
- 1. 仓库的创建,依赖于已存在的 broker
- 2. 如果是只读仓库,则只能在仓库上进行恢复。如果不是,则可以进行备份和恢复操作。
- 3. 根据 broker 的不同类型,PROPERTIES 有所不同,具体见示例。
-
-## example
- 1. 创建名为 bos_repo 的仓库,依赖 BOS broker "bos_broker",数据根目录为:bos://palo_backup
- CREATE REPOSITORY `bos_repo`
- WITH BROKER `bos_broker`
- ON LOCATION "bos://palo_backup"
- PROPERTIES
- (
- "bos_endpoint" = "http://gz.bcebos.com",
- "bos_accesskey" = "069fc2786e664e63a5f111111114ddbs22",
- "bos_secret_accesskey"="70999999999999de274d59eaa980a"
- );
-
- 2. 创建和示例 1 相同的仓库,但属性为只读:
- CREATE READ ONLY REPOSITORY `bos_repo`
- WITH BROKER `bos_broker`
- ON LOCATION "bos://palo_backup"
- PROPERTIES
- (
- "bos_endpoint" = "http://gz.bcebos.com",
- "bos_accesskey" = "069fc2786e664e63a5f111111114ddbs22",
- "bos_secret_accesskey"="70999999999999de274d59eaa980a"
- );
-
- 3. 创建名为 hdfs_repo 的仓库,依赖 Baidu hdfs broker "hdfs_broker",数据根目录为:hdfs://hadoop-name-node:54310/path/to/repo/
- CREATE REPOSITORY `hdfs_repo`
- WITH BROKER `hdfs_broker`
- ON LOCATION "hdfs://hadoop-name-node:54310/path/to/repo/"
- PROPERTIES
- (
- "username" = "user",
- "password" = "password"
- );
-
-## keyword
- CREATE REPOSITORY
-
-# DROP REPOSITORY
-## description
- 该语句用于删除一个已创建的仓库。仅 root 或 superuser 用户可以删除仓库。
- 语法:
- DROP REPOSITORY `repo_name`;
-
- 说明:
- 1. 删除仓库,仅仅是删除该仓库在 Palo 中的映射,不会删除实际的仓库数据。删除后,可以再次通过指定相同的 broker 和 LOCATION 映射到该仓库。
-
-## example
- 1. 删除名为 bos_repo 的仓库:
- DROP REPOSITORY `bos_repo`;
-
-## keyword
- DROP REPOSITORY
-
-# BACKUP
-## description
- 该语句用于备份指定数据库下的数据。该命令为异步操作。提交成功后,需通过 SHOW BACKUP 命令查看进度。仅支持备份 OLAP 类型的表。
- 语法:
- BACKUP SNAPSHOT [db_name].{snapshot_name}
- TO `repository_name`
- ON (
- `table_name` [PARTITION (`p1`, ...)],
- ...
- )
- PROPERTIES ("key"="value", ...);
-
- 说明:
- 1. 同一数据库下只能有一个正在执行的 BACKUP 或 RESTORE 任务。
- 2. ON 子句中标识需要备份的表和分区。如果不指定分区,则默认备份该表的所有分区。
- 3. PROPERTIES 目前支持以下属性:
- "type" = "full":表示这是一次全量更新(默认)。
- "timeout" = "3600":任务超时时间,默认为一天。单位秒。
-
-## example
-
- 1. 全量备份 example_db 下的表 example_tbl 到仓库 example_repo 中:
- BACKUP SNAPSHOT example_db.snapshot_label1
- TO example_repo
- ON (example_tbl)
- PROPERTIES ("type" = "full");
-
- 2. 全量备份 example_db 下,表 example_tbl 的 p1, p2 分区,以及表 example_tbl2 到仓库 example_repo 中:
- BACKUP SNAPSHOT example_db.snapshot_label2
- TO example_repo
- ON
- (
- example_tbl PARTITION (p1,p2),
- example_tbl2
- );
-
-## keyword
- BACKUP
-
-# RESTORE
-## description
- 1. RESTORE
- 该语句用于将之前通过 BACKUP 命令备份的数据,恢复到指定数据库下。该命令为异步操作。提交成功后,需通过 SHOW RESTORE 命令查看进度。仅支持恢复 OLAP 类型的表。
- 语法:
- RESTORE SNAPSHOT [db_name].{snapshot_name}
- FROM `repository_name`
- ON (
- `table_name` [PARTITION (`p1`, ...)] [AS `tbl_alias`],
- ...
- )
- PROPERTIES ("key"="value", ...);
-
- 说明:
- 1. 同一数据库下只能有一个正在执行的 BACKUP 或 RESTORE 任务。
- 2. ON 子句中标识需要恢复的表和分区。如果不指定分区,则默认恢复该表的所有分区。所指定的表和分区必须已存在于仓库备份中。
- 3. 可以通过 AS 语句将仓库中备份的表名恢复为新的表。但新表名不能已存在于数据库中。分区名称不能修改。
- 4. 可以将仓库中备份的表恢复替换数据库中已有的同名表,但须保证两张表的表结构完全一致。表结构包括:表名、列、分区、Rollup等等。
- 5. 可以指定恢复表的部分分区,系统会检查分区 Range 是否能够匹配。
- 6. PROPERTIES 目前支持以下属性:
- "backup_timestamp" = "2018-05-04-16-45-08":指定了恢复对应备份的哪个时间版本,必填。该信息可以通过 `SHOW SNAPSHOT ON repo;` 语句获得。
- "replication_num" = "3":指定恢复的表或分区的副本数。默认为3。若恢复已存在的表或分区,则副本数必须和已存在表或分区的副本数相同。同时,必须有足够的 host 容纳多个副本。
- "timeout" = "3600":任务超时时间,默认为一天。单位秒。
- "meta_version" = 40:使用指定的 meta_version 来读取之前备份的元数据。注意,该参数作为临时方案,仅用于恢复老版本 Doris 备份的数据。最新版本的备份数据中已经包含 meta version,无需再指定。
-
-## example
- 1. 从 example_repo 中恢复备份 snapshot_1 中的表 backup_tbl 到数据库 example_db1,时间版本为 "2018-05-04-16-45-08"。恢复为 1 个副本:
- RESTORE SNAPSHOT example_db1.`snapshot_1`
- FROM `example_repo`
- ON ( `backup_tbl` )
- PROPERTIES
- (
- "backup_timestamp"="2018-05-04-16-45-08",
- "replication_num" = "1"
- );
-
- 2. 从 example_repo 中恢复备份 snapshot_2 中的表 backup_tbl 的分区 p1,p2,以及表 backup_tbl2 到数据库 example_db1,并重命名为 new_tbl,时间版本为 "2018-05-04-17-11-01"。默认恢复为 3 个副本:
- RESTORE SNAPSHOT example_db1.`snapshot_2`
- FROM `example_repo`
- ON
- (
- `backup_tbl` PARTITION (`p1`, `p2`),
- `backup_tbl2` AS `new_tbl`
- )
- PROPERTIES
- (
- "backup_timestamp"="2018-05-04-17-11-01"
- );
-
-## keyword
- RESTORE
-
-# CANCEL BACKUP
-## description
- 该语句用于取消一个正在进行的 BACKUP 任务。
- 语法:
- CANCEL BACKUP FROM db_name;
-
-## example
- 1. 取消 example_db 下的 BACKUP 任务。
- CANCEL BACKUP FROM example_db;
-
-## keyword
- CANCEL, BACKUP
-
-# CANCEL RESTORE
-## description
- 该语句用于取消一个正在进行的 RESTORE 任务。
- 语法:
- CANCEL RESTORE FROM db_name;
-
- 注意:
- 当取消处于 COMMIT 或之后阶段的恢复左右时,可能导致被恢复的表无法访问。此时只能通过再次执行恢复作业进行数据恢复。
-
-## example
- 1. 取消 example_db 下的 RESTORE 任务。
- CANCEL RESTORE FROM example_db;
-
-## keyword
- CANCEL, RESTORE
-
-# HLL
-## description
- HLL是基于HyperLogLog算法的工程实现,用于保存HyperLogLog计算过程的中间结果,它只能作为表的value列类型
- 通过聚合来不断的减少数据量,以此来实现加快查询的目的,基于它到的是一个估算结果,误差大概在1%左右
- hll列是通过其它列或者导入数据里面的数据生成的,导入的时候通过hll_hash函数来指定数据中哪一列用于生成hll列
- 它常用于替代count distinct,通过结合rollup在业务上用于快速计算uv等
-
- 相关函数:
-
- HLL_UNION_AGG(hll)
- 此函数为聚合函数,用于计算满足条件的所有数据的基数估算。此函数还可用于分析函数,只支持默认窗口,不支持window从句。
-
- HLL_RAW_AGG(hll)
- 此函数为聚合函数,用于聚合hll类型字段,并且返回的还是hll类型。
-
- HLL_CARDINALITY(hll)
- 此函数用于计算单条hll列的基数估算
-
- HLL_HASH(column_name)
- 生成HLL列类型,用于insert或导入的时候,导入的使用见相关说明
-
-## example
- 1. 首先创建一张含有hll列的表
- create table test(
- dt date,
- id int,
- name char(10),
- province char(10),
- os char(1),
- set1 hll hll_union,
- set2 hll hll_union)
- distributed by hash(id) buckets 32;
-
- 2. 导入数据,导入的方式见相关help curl
-
- a. 使用表中的列生成hll列
- curl --location-trusted -uname:password -T data http://host/api/test_db/test/_load?label=load_1\&hll=set1,id:set2,name
-
- b. 使用数据中的某一列生成hll列
- curl --location-trusted -uname:password -T data http://host/api/test_db/test/_load?label=load_1\&hll=set1,cuid:set2,os
- \&columns=dt,id,name,province,sex,cuid,os
-
- 3. 聚合数据,常用方式3种:(如果不聚合直接对base表查询,速度可能跟直接使用ndv速度差不多)
-
- a. 创建一个rollup,让hll列产生聚合,
- alter table test add rollup test_rollup(dt, set1);
-
- b. 创建另外一张专门计算uv的表,然后insert数据)
-
- create table test_uv(
- dt date,
- uv_set hll hll_union)
- distributed by hash(id) buckets 32;
-
- insert into test_uv select dt, set1 from test;
-
- c. 创建另外一张专门计算uv的表,然后insert并通过hll_hash根据test其它非hll列生成hll列
-
- create table test_uv(
- dt date,
- id_set hll hll_union)
- distributed by hash(id) buckets 32;
-
- insert into test_uv select dt, hll_hash(id) from test;
-
- 4. 查询,hll列不允许直接查询它的原始值,可以通过配套的函数进行查询
-
- a. 求总uv
- select HLL_UNION_AGG(uv_set) from test_uv;
-
- b. 求每一天的uv
- select dt, HLL_CARDINALITY(uv_set) from test_uv;
-
- c. 求test表中set1的聚合值
- select dt, HLL_CARDINALITY(uv) from (select dt, HLL_RAW_AGG(set1) as uv from test group by dt) tmp;
- select dt, HLL_UNION_AGG(set1) as uv from test group by dt;
-
-## keyword
- HLL
-
-# TRUNCATE TABLE
-## description
- 该语句用于清空指定表和分区的数据
- 语法:
-
- TRUNCATE TABLE [db.]tbl[ PARTITION(p1, p2, ...)];
-
- 说明:
- 1. 该语句清空数据,但保留表或分区。
- 2. 不同于 DELETE,该语句只能整体清空指定的表或分区,不能添加过滤条件。
- 3. 不同于 DELETE,使用该方式清空数据不会对查询性能造成影响。
- 4. 该操作删除的数据不可恢复。
- 5. 使用该命令时,表状态需为 NORMAL,即不允许正在进行 SCHEMA CHANGE 等操作。
-
-## example
-
- 1. 清空 example_db 下的表 tbl
-
- TRUNCATE TABLE example_db.tbl;
-
- 2. 清空表 tbl 的 p1 和 p2 分区
-
- TRUNCATE TABLE tbl PARTITION(p1, p2);
-
-## keyword
- TRUNCATE,TABLE
-
-# Colocate Join
-## description
- Colocate/Local Join 就是指多个节点Join时没有数据移动和网络传输,每个节点只在本地进行Join,
- 能够本地进行Join的前提是相同Join Key的数据导入时按照相同规则导入到固定的节点。
-
- 1 How To Use:
-
- 只需要在建表时增加 colocate_with 这个属性即可,colocate_with的值 可以设置成同一组colocate 表中的任意一个,
- 不过需要保证colocate_with属性中的表要先建立。
-
- 假如需要对table t1 和t2 进行Colocate Join,可以按以下语句建表:
-
- CREATE TABLE `t1` (
- `id` int(11) COMMENT "",
- `value` varchar(8) COMMENT ""
- ) ENGINE=OLAP
- DUPLICATE KEY(`id`)
- DISTRIBUTED BY HASH(`id`) BUCKETS 10
- PROPERTIES (
- "colocate_with" = "t1"
- );
-
- CREATE TABLE `t2` (
- `id` int(11) COMMENT "",
- `value` varchar(8) COMMENT ""
- ) ENGINE=OLAP
- DUPLICATE KEY(`id`)
- DISTRIBUTED BY HASH(`id`) BUCKETS 10
- PROPERTIES (
- "colocate_with" = "t1"
- );
-
- 2 Colocate Join 目前的限制:
-
- 1. Colcoate Table 必须是OLAP类型的表
- 2. 相同colocate_with 属性的表的 BUCKET 数必须一样
- 3. 相同colocate_with 属性的表的 副本数必须一样
- 4. 相同colocate_with 属性的表的 DISTRIBUTED Columns的数据类型必须一样
-
- 3 Colocate Join的适用场景:
-
- Colocate Join 十分适合几张表按照相同字段分桶,并高频根据相同字段Join的场景。
-
- 4 FAQ:
-
- Q: 支持多张表进行Colocate Join 吗?
-
- A: 支持
-
- Q: 支持Colocate 表和正常表 Join 吗?
-
- A: 支持
-
- Q: Colocate 表支持用非分桶的Key进行Join吗?
-
- A: 支持:不符合Colocate Join条件的Join会使用Shuffle Join或Broadcast Join
-
- Q: 如何确定Join 是按照Colocate Join 执行的?
-
- A: explain的结果中Hash Join的孩子节点如果直接是OlapScanNode, 没有Exchange Node,就说明是Colocate Join
-
- Q: 如何修改colocate_with 属性?
-
- A: ALTER TABLE example_db.my_table set ("colocate_with"="target_table");
-
- Q: 如何禁用colcoate join?
-
- A: set disable_colocate_join = true; 就可以禁用Colocate Join,查询时就会使用Shuffle Join 和Broadcast Join
-
-## keyword
-
- COLOCATE, JOIN, CREATE TABLE
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/drop-function.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/drop-function.md
index f228d11a3f444c..b0ee8166cc893f 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/drop-function.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/drop-function.md
@@ -1,27 +1,28 @@
# DROP FUNCTION
+## description
-## Syntax
+删除一个自定义函数。函数的名字、参数类型完全一致才能够被删除
+
+ Syntax
```
DROP FUNCTION function_name
(arg_type [, ...])
```
-## Description
-
-删除一个自定义函数。函数的名字、参数类型完全一致才能够被删除
-
-## Parameters
+ Parameters
> `function_name`: 要删除函数的名字
>
> `arg_type`: 要删除函数的参数列表
>
-## Examples
+## example
1. 删除掉一个函数
```
DROP FUNCTION my_add(INT, INT)
```
+##keyword
+DROP,FUNCTION,DROP,FUNCTION
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/show-function.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/show-function.md
index ec1818d6de30d9..eeb84e0ff79631 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/show-function.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/show-function.md
@@ -1,22 +1,21 @@
# SHOW FUNCTION
+## description
-## Syntax
+查看数据库下所有的自定义函数。如果用户指定了数据库,那么查看对应数据库的,否则直接查询当前会话所在数据库
+
+需要对这个数据库拥有 `SHOW` 权限
+
+ Syntax
```
SHOW FUNCTION [FROM db]
```
-## Description
-
-查看数据库下所有的自定义函数。如果用户指定了数据库,那么查看对应数据库的,否则直接查询当前会话所在数据库
-
-需要对这个数据库拥有 `SHOW` 权限
-
-## Parameters
+ Parameters
> `db`: 要查询的数据库名字
-## Examples
+## example
```
mysql> show function in testDb\G
@@ -34,3 +33,5 @@ Intermediate Type: NULL
Properties: {"symbol":"_ZN9doris_udf6AddUdfEPNS_15FunctionContextERKNS_6IntValES4_","object_file":"http://host:port/libudfsample.so","md5":"cfe7a362d10f3aaf6c49974ee0f1f878"}
2 rows in set (0.00 sec)
```
+##keyword
+SHOW,FUNCTION,SHOW,FUNCTION
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/CANCEL DELETE.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/CANCEL DELETE.md
new file mode 100644
index 00000000000000..31f83bf6e793e4
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/CANCEL DELETE.md
@@ -0,0 +1,10 @@
+# CANCEL DELETE
+## description
+
+ 该语句用于撤销一个 DELETE 操作。(仅管理员使用!)(待实现)
+
+## example
+
+## keyword
+ CANCEL,DELETE
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/CANCEL LABEL.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/CANCEL LABEL.md
new file mode 100644
index 00000000000000..c94a0aa232065f
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/CANCEL LABEL.md
@@ -0,0 +1,33 @@
+# CANCEL LABEL
+## description
+ NAME:
+ cancel_label: cancel a transaction with label
+
+ SYNOPSIS
+ curl -u user:passwd -XPOST http://host:port/api/{db}/{label}/_cancel
+
+ DESCRIPTION
+ 该命令用于cancel一个指定Label对应的事务,事务在Prepare阶段能够被成功cancel
+
+ RETURN VALUES
+ 执行完成后,会以Json格式返回这次导入的相关内容。当前包括一下字段
+ Status: 是否成功cancel
+ Success: 成功cancel事务
+ 其他: cancel失败
+ Message: 具体的失败信息
+
+ ERRORS
+
+## example
+
+ 1. cancel testDb, testLabel的作业
+ curl -u root -XPOST http://host:port/api/testDb/testLabel/_cancel
+
+## keyword
+ CANCEL,LABEL
+
+
+
+
+
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/CANCEL LOAD.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/CANCEL LOAD.md
new file mode 100644
index 00000000000000..02dbb25e66bbe1
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/CANCEL LOAD.md
@@ -0,0 +1,20 @@
+# CANCEL LOAD
+## description
+
+ 该语句用于撤销指定 load label 的批次的导入作业。
+ 这是一个异步操作,任务提交成功则返回。执行后可使用 SHOW LOAD 命令查看进度。
+ 语法:
+ CANCEL LOAD
+ [FROM db_name]
+ WHERE LABEL = "load_label";
+
+## example
+
+ 1. 撤销数据库 example_db 上, label 为 example_db_test_load_label 的导入作业
+ CANCEL LOAD
+ FROM example_db
+ WHERE LABEL = "example_db_test_load_label";
+
+## keyword
+ CANCEL,LOAD
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/DELETE.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/DELETE.md
new file mode 100644
index 00000000000000..2ed78e10c8e8b9
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/DELETE.md
@@ -0,0 +1,36 @@
+# DELETE
+## description
+
+ 该语句用于按条件删除指定 table(base index) partition 中的数据。
+ 该操作会同时删除和此 base index 相关的 rollup index 的数据。
+ 语法:
+ DELETE FROM table_name [PARTITION partition_name]
+ WHERE
+ column_name1 op value[ AND column_name2 op value ...];
+
+ 说明:
+ 1) op 的可选类型包括:=, >, <, >=, <=, !=
+ 2) 只能指定 key 列上的条件。
+ 2) 当选定的 key 列不存在于某个 rollup 中时,无法进行 delete。
+ 3) 条件之间只能是“与”的关系。
+ 若希望达成“或”的关系,需要将条件分写在两个 DELETE 语句中。
+ 4) 如果为RANGE分区表,则必须指定 PARTITION。如果是单分区表,可以不指定。
+
+ 注意:
+ 该语句可能会降低执行后一段时间内的查询效率。
+ 影响程度取决于语句中指定的删除条件的数量。
+ 指定的条件越多,影响越大。
+
+## example
+
+ 1. 删除 my_table partition p1 中 k1 列值为 3 的数据行
+ DELETE FROM my_table PARTITION p1
+ WHERE k1 = 3;
+
+ 2. 删除 my_table partition p1 中 k1 列值大于等于 3 且 k2 列值为 "abc" 的数据行
+ DELETE FROM my_table PARTITION p1
+ WHERE k1 >= 3 AND k2 = "abc";
+
+## keyword
+ DELETE
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/EXPORT.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/EXPORT.md
new file mode 100644
index 00000000000000..61fc286aef4422
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/EXPORT.md
@@ -0,0 +1,58 @@
+# EXPORT
+## description
+
+ 该语句用于将指定表的数据导出到指定位置。
+ 该功能通过 broker 进程实现。对于不同的目的存储系统,需要部署不同的 broker。可以通过 SHOW BROKER 查看已部署的 broker。
+ 这是一个异步操作,任务提交成功则返回。执行后可使用 SHOW EXPORT 命令查看进度。
+
+ 语法:
+ EXPORT TABLE table_name
+ [PARTITION (p1[,p2])]
+ TO export_path
+ [opt_properties]
+ broker;
+
+ 1. table_name
+ 当前要导出的表的表名,目前支持engine为olap和mysql的表的导出。
+
+ 2. partition
+ 可以只导出指定表的某些指定分区
+
+ 3. export_path
+ 导出的路径,需为目录。目前不能导出到本地,需要导出到broker。
+
+ 4. opt_properties
+ 用于指定一些特殊参数。
+ 语法:
+ [PROPERTIES ("key"="value", ...)]
+
+ 可以指定如下参数:
+ column_separator: 指定导出的列分隔符,默认为\t。
+ line_delimiter: 指定导出的行分隔符,默认为\n。
+ exec_mem_limit: 导出在单个 BE 节点的内存使用上限,默认为 2GB,单位为字节。
+ timeout:导入作业的超时时间,默认为1天,单位是秒。
+ tablet_num_per_task:每个子任务能分配的最大 Tablet 数量。
+
+ 5. broker
+ 用于指定导出使用的broker
+ 语法:
+ WITH BROKER broker_name ("key"="value"[,...])
+ 这里需要指定具体的broker name, 以及所需的broker属性
+
+ 对于不同存储系统对应的 broker,这里需要输入的参数不同。具体参数可以参阅:`help broker load` 中 broker 所需属性。
+
+## example
+
+ 1. 将 testTbl 表中的所有数据导出到 hdfs 上
+ EXPORT TABLE testTbl TO "hdfs://hdfs_host:port/a/b/c" WITH BROKER "broker_name" ("username"="xxx", "password"="yyy");
+
+ 2. 将 testTbl 表中的分区p1,p2导出到 hdfs 上
+
+ EXPORT TABLE testTbl PARTITION (p1,p2) TO "hdfs://hdfs_host:port/a/b/c" WITH BROKER "broker_name" ("username"="xxx", "password"="yyy");
+ 3. 将 testTbl 表中的所有数据导出到 hdfs 上,以","作为列分隔符
+
+ EXPORT TABLE testTbl TO "hdfs://hdfs_host:port/a/b/c" PROPERTIES ("column_separator"=",") WITH BROKER "broker_name" ("username"="xxx", "password"="yyy");
+
+## keyword
+ EXPORT
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/GET LABEL STATE.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/GET LABEL STATE.md
new file mode 100644
index 00000000000000..069a86dc7bde5e
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/GET LABEL STATE.md
@@ -0,0 +1,33 @@
+# GET LABEL STATE
+## description
+ NAME:
+ get_label_state: get label's state
+
+ SYNOPSIS
+ curl -u user:passwd http://host:port/api/{db}/{label}/_state
+
+ DESCRIPTION
+ 该命令用于查看一个Label对应的事务状态
+
+ RETURN VALUES
+ 执行完毕后,会以Json格式返回这次导入的相关内容。当前包括一下字段
+ Label:本次导入的 label,如果没有指定,则为一个 uuid。
+ Status:此命令是否成功执行,Success表示成功执行
+ Message: 具体的执行信息
+ State: 只有在Status为Success时才有意义
+ UNKNOWN: 没有找到对应的Label
+ PREPARE: 对应的事务已经prepare,但尚未提交
+ COMMITTED: 事务已经提交,不能被cancel
+ VISIBLE: 事务提交,并且数据可见,不能被cancel
+ ABORTED: 事务已经被ROLLBACK,导入已经失败。
+
+ ERRORS
+
+## example
+
+ 1. 获得testDb, testLabel的状态
+ curl -u root http://host:port/api/testDb/testLabel/_state
+
+## keyword
+ GET, LABEL, STATE
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/LOAD.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/LOAD.md
new file mode 100644
index 00000000000000..34a7c8c8ad5690
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/LOAD.md
@@ -0,0 +1,284 @@
+# LOAD
+## description
+
+ Palo 目前支持以下4种导入方式:
+
+ 1. Hadoop Load:基于 MR 进行 ETL 的导入。
+ 2. Broker Load:使用 broker 进行进行数据导入。
+ 3. Mini Load:通过 http 协议上传文件进行批量数据导入。
+ 4. Stream Load:通过 http 协议进行流式数据导入。
+
+ 本帮助主要描述第一种导入方式,即 Hadoop Load 相关帮助信息。其余导入方式可以使用以下命令查看帮助:
+
+ !!!该导入方式可能在后续某个版本即不再支持,建议使用其他导入方式进行数据导入。!!!
+
+ 1. help broker load;
+ 2. help mini load;
+ 3. help stream load;
+
+ Hadoop Load 仅适用于百度内部环境。公有云、私有云以及开源环境无法使用这种导入方式。
+ 该导入方式必须设置用于 ETL 的 Hadoop 计算队列,设置方式可以通过 help set property 命令查看帮助。
+
+ Stream load 暂时只支持百度内部用户使用。开源社区和公有云用户将在后续版本更新中支持。
+
+语法:
+
+ LOAD LABEL load_label
+ (
+ data_desc1[, data_desc2, ...]
+ )
+ [opt_properties];
+
+ 1. load_label
+
+ 当前导入批次的标签。在一个 database 内唯一。
+ 语法:
+ [database_name.]your_label
+
+ 2. data_desc
+
+ 用于描述一批导入数据。
+ 语法:
+ DATA INFILE
+ (
+ "file_path1"[, file_path2, ...]
+ )
+ [NEGATIVE]
+ INTO TABLE `table_name`
+ [PARTITION (p1, p2)]
+ [COLUMNS TERMINATED BY "column_separator"]
+ [FORMAT AS "file_type"]
+ [(column_list)]
+ [SET (k1 = func(k2))]
+
+ 说明:
+ file_path:
+
+ 文件路径,可以指定到一个文件,也可以用 * 通配符指定某个目录下的所有文件。通配符必须匹配到文件,而不能是目录。
+
+ PARTITION:
+
+ 如果指定此参数,则只会导入指定的分区,导入分区以外的数据会被过滤掉。
+ 如果不指定,默认导入table的所有分区。
+
+ NEGATIVE:
+ 如果指定此参数,则相当于导入一批“负”数据。用于抵消之前导入的同一批数据。
+ 该参数仅适用于存在 value 列,并且 value 列的聚合类型仅为 SUM 的情况。
+
+ column_separator:
+
+ 用于指定导入文件中的列分隔符。默认为 \t
+ 如果是不可见字符,则需要加\\x作为前缀,使用十六进制来表示分隔符。
+ 如hive文件的分隔符\x01,指定为"\\x01"
+
+ file_type:
+
+ 用于指定导入文件的类型,例如:parquet、csv。默认值通过文件后缀名判断。
+
+ column_list:
+
+ 用于指定导入文件中的列和 table 中的列的对应关系。
+ 当需要跳过导入文件中的某一列时,将该列指定为 table 中不存在的列名即可。
+ 语法:
+ (col_name1, col_name2, ...)
+
+ SET:
+
+ 如果指定此参数,可以将源文件某一列按照函数进行转化,然后将转化后的结果导入到table中。
+ 目前支持的函数有:
+
+ strftime(fmt, column) 日期转换函数
+ fmt: 日期格式,形如%Y%m%d%H%M%S (年月日时分秒)
+ column: column_list中的列,即输入文件中的列。存储内容应为数字型的时间戳。
+ 如果没有column_list,则按照palo表的列顺序默认输入文件的列。
+
+ time_format(output_fmt, input_fmt, column) 日期格式转化
+ output_fmt: 转化后的日期格式,形如%Y%m%d%H%M%S (年月日时分秒)
+ input_fmt: 转化前column列的日期格式,形如%Y%m%d%H%M%S (年月日时分秒)
+ column: column_list中的列,即输入文件中的列。存储内容应为input_fmt格式的日期字符串。
+ 如果没有column_list,则按照palo表的列顺序默认输入文件的列。
+
+ alignment_timestamp(precision, column) 将时间戳对齐到指定精度
+ precision: year|month|day|hour
+ column: column_list中的列,即输入文件中的列。存储内容应为数字型的时间戳。
+ 如果没有column_list,则按照palo表的列顺序默认输入文件的列。
+ 注意:对齐精度为year、month的时候,只支持20050101~20191231范围内的时间戳。
+
+ default_value(value) 设置某一列导入的默认值
+ 不指定则使用建表时列的默认值
+
+ md5sum(column1, column2, ...) 将指定的导入列的值求md5sum,返回32位16进制字符串
+
+ replace_value(old_value[, new_value]) 将导入文件中指定的old_value替换为new_value
+ new_value如不指定则使用建表时列的默认值
+
+ hll_hash(column) 用于将表或数据里面的某一列转化成HLL列的数据结构
+
+ 3. opt_properties
+
+ 用于指定一些特殊参数。
+ 语法:
+ [PROPERTIES ("key"="value", ...)]
+
+ 可以指定如下参数:
+ cluster: 导入所使用的 Hadoop 计算队列。
+ timeout: 指定导入操作的超时时间。默认超时为3天。单位秒。
+ max_filter_ratio:最大容忍可过滤(数据不规范等原因)的数据比例。默认零容忍。
+ load_delete_flag:指定该导入是否通过导入key列的方式删除数据,仅适用于UNIQUE KEY,
+ 导入时可不指定value列。默认为false。
+
+ 5. 导入数据格式样例
+
+ 整型类(TINYINT/SMALLINT/INT/BIGINT/LARGEINT):1, 1000, 1234
+ 浮点类(FLOAT/DOUBLE/DECIMAL):1.1, 0.23, .356
+ 日期类(DATE/DATETIME):2017-10-03, 2017-06-13 12:34:03。
+ (注:如果是其他日期格式,可以在导入命令中,使用 strftime 或者 time_format 函数进行转换)
+ 字符串类(CHAR/VARCHAR):"I am a student", "a"
+ NULL值:\N
+
+## example
+
+ 1. 导入一批数据,指定超时时间和过滤比例。指定导入队列为 my_cluster。
+
+ LOAD LABEL example_db.label1
+ (
+ DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file")
+ INTO TABLE `my_table`
+ )
+ PROPERTIES
+ (
+ "cluster" = "my_cluster",
+ "timeout" = "3600",
+ "max_filter_ratio" = "0.1"
+ );
+
+ 其中 hdfs_host 为 namenode 的 host,hdfs_port 为 fs.defaultFS 端口(默认9000)
+
+ 2. 导入一批数据,包含多个文件。导入不同的 table,指定分隔符,指定列对应关系
+
+ LOAD LABEL example_db.label2
+ (
+ DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file1")
+ INTO TABLE `my_table_1`
+ COLUMNS TERMINATED BY ","
+ (k1, k3, k2, v1, v2),
+ DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file2")
+ INTO TABLE `my_table_2`
+ COLUMNS TERMINATED BY "\t"
+ (k1, k2, k3, v2, v1)
+ );
+
+ 3. 导入一批数据,指定hive的默认分隔符\x01,并使用通配符*指定目录下的所有文件
+
+ LOAD LABEL example_db.label3
+ (
+ DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/*")
+ NEGATIVE
+ INTO TABLE `my_table`
+ COLUMNS TERMINATED BY "\\x01"
+ );
+
+ 4. 导入一批“负”数据
+
+ LOAD LABEL example_db.label4
+ (
+ DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/old_file)
+ NEGATIVE
+ INTO TABLE `my_table`
+ COLUMNS TERMINATED BY "\t"
+ );
+
+ 5. 导入一批数据,指定分区
+
+ LOAD LABEL example_db.label5
+ (
+ DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file")
+ INTO TABLE `my_table`
+ PARTITION (p1, p2)
+ COLUMNS TERMINATED BY ","
+ (k1, k3, k2, v1, v2)
+ );
+
+ 6. 导入一批数据,指定分区, 并对导入文件的列做一些转化,如下:
+ 表结构为:
+ k1 datetime
+ k2 date
+ k3 bigint
+ k4 varchar(20)
+ k5 varchar(64)
+ k6 int
+
+ 假设数据文件只有一行数据,5列,逗号分隔:
+
+ 1537002087,2018-08-09 11:12:13,1537002087,-,1
+
+ 数据文件中各列,对应导入语句中指定的各列:
+ tmp_k1, tmp_k2, tmp_k3, k6, v1
+
+ 转换如下:
+
+ 1) k1:将 tmp_k1 时间戳列转化为 datetime 类型的数据
+ 2) k2:将 tmp_k2 datetime 类型的数据转化为 date 的数据
+ 3) k3:将 tmp_k3 时间戳列转化为天级别时间戳
+ 4) k4:指定导入默认值为1
+ 5) k5:将 tmp_k1、tmp_k2、tmp_k3 列计算 md5 值
+ 6) k6:将导入文件中的 - 值替换为 10
+
+ LOAD LABEL example_db.label6
+ (
+ DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file")
+ INTO TABLE `my_table`
+ PARTITION (p1, p2)
+ COLUMNS TERMINATED BY ","
+ (tmp_k1, tmp_k2, tmp_k3, k6, v1)
+ SET (
+ k1 = strftime("%Y-%m-%d %H:%M:%S", tmp_k1),
+ k2 = time_format("%Y-%m-%d %H:%M:%S", "%Y-%m-%d", tmp_k2),
+ k3 = alignment_timestamp("day", tmp_k3),
+ k4 = default_value("1"),
+ k5 = md5sum(tmp_k1, tmp_k2, tmp_k3),
+ k6 = replace_value("-", "10")
+ )
+ );
+
+ 7. 导入数据到含有HLL列的表,可以是表中的列或者数据里面的列
+
+ LOAD LABEL example_db.label7
+ (
+ DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file")
+ INTO TABLE `my_table`
+ PARTITION (p1, p2)
+ COLUMNS TERMINATED BY ","
+ SET (
+ v1 = hll_hash(k1),
+ v2 = hll_hash(k2)
+ )
+ );
+
+ LOAD LABEL example_db.label8
+ (
+ DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file")
+ INTO TABLE `my_table`
+ PARTITION (p1, p2)
+ COLUMNS TERMINATED BY ","
+ (k1, k2, tmp_k3, tmp_k4, v1, v2)
+ SET (
+ v1 = hll_hash(tmp_k3),
+ v2 = hll_hash(tmp_k4)
+ )
+ )
+ WITH BROKER hdfs ("username"="hdfs_user", "password"="hdfs_password");
+
+ 8. 导入Parquet文件中数据 指定FORMAT 为parquet, 默认是通过文件后缀判断
+ LOAD LABEL example_db.label9
+ (
+ DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file")
+ INTO TABLE `my_table`
+ FORMAT AS "parquet"
+ (k1, k2, k3)
+ )
+ WITH BROKER hdfs ("username"="hdfs_user", "password"="hdfs_password");
+
+## keyword
+ LOAD
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/MINI LOAD.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/MINI LOAD.md
new file mode 100644
index 00000000000000..81a63f73bdbf93
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/MINI LOAD.md
@@ -0,0 +1,104 @@
+# MINI LOAD
+## description
+
+ MINI LOAD 和 STREAM LOAD 的导入实现方式完全一致。在导入功能支持上,MINI LOAD 的功能是 STREAM LOAD 的子集。
+ 后续的导入新功能只会在 STREAM LOAD 中支持,MINI LOAD 将不再新增功能。建议改用 STREAM LOAD,具体使用方式请 HELP STREAM LOAD。
+
+ MINI LOAD 是 通过 http 协议完成的导入方式。用户可以不依赖 Hadoop,也无需通过 Mysql 客户端,即可完成导入。
+ 用户通过 http 协议描述导入,数据在接受 http 请求的过程中被流式的导入 Doris , **导入作业完成后** 返回给用户导入的结果。
+
+ * 注:为兼容旧版本 mini load 使用习惯,用户依旧可以通过 'SHOW LOAD' 命令来查看导入结果。
+
+ 语法:
+ 导入:
+
+ curl --location-trusted -u user:passwd -T data.file http://host:port/api/{db}/{table}/_load?label=xxx
+
+ 查看导入信息
+
+ curl -u user:passwd http://host:port/api/{db}/_load_info?label=xxx
+
+ HTTP协议相关说明
+
+ 权限认证 当前 Doris 使用 http 的 Basic 方式权限认证。所以在导入的时候需要指定用户名密码
+ 这种方式是明文传递密码的,暂不支持加密传输。
+
+ Expect Doris 需要发送过来的 http 请求带有 'Expect' 头部信息,内容为 '100-continue'。
+ 为什么呢?因为我们需要将请求进行 redirect,那么必须在传输数据内容之前,
+ 这样可以避免造成数据的多次传输,从而提高效率。
+
+ Content-Length Doris 需要在发送请求时带有 'Content-Length' 这个头部信息。如果发送的内容比
+ 'Content-Length' 要少,那么 Doris 认为传输出现问题,则提交此次任务失败。
+ NOTE: 如果,发送的数据比 'Content-Length' 要多,那么 Doris 只读取 'Content-Length'
+ 长度的内容,并进行导入
+
+
+ 参数说明:
+
+ user: 用户如果是在default_cluster中的,user即为user_name。否则为user_name@cluster_name。
+
+ label: 用于指定这一批次导入的 label,用于后期进行作业查询等。
+ 这个参数是必须传入的。
+
+ columns: 用于描述导入文件中对应的列名字。
+ 如果不传入,那么认为文件中的列顺序与建表的顺序一致,
+ 指定的方式为逗号分隔,例如:columns=k1,k2,k3,k4
+
+ column_separator: 用于指定列与列之间的分隔符,默认的为'\t'
+ NOTE: 需要进行url编码,譬如
+ 需要指定'\t'为分隔符,那么应该传入'column_separator=%09'
+ 需要指定'\x01'为分隔符,那么应该传入'column_separator=%01'
+ 需要指定','为分隔符,那么应该传入'column_separator=%2c'
+
+
+ max_filter_ratio: 用于指定允许过滤不规范数据的最大比例,默认是0,不允许过滤
+ 自定义指定应该如下:'max_filter_ratio=0.2',含义是允许20%的错误率
+
+ timeout: 指定 load 作业的超时时间,单位是秒。当load执行时间超过该阈值时,会自动取消。默认超时时间是 86400 秒。
+ 建议指定 timeout 时间小于 86400 秒。
+
+ hll: 用于指定数据里面和表里面的HLL列的对应关系,表中的列和数据里面指定的列
+ (如果不指定columns,则数据列面的列也可以是表里面的其它非HLL列)通过","分割
+ 指定多个hll列使用“:”分割,例如: 'hll1,cuid:hll2,device'
+
+ NOTE:
+ 1. 此种导入方式当前是在一台机器上完成导入工作,因而不宜进行数据量较大的导入工作。
+ 建议导入数据量不要超过 1 GB
+
+ 2. 当前无法使用 `curl -T "{file1, file2}"` 这样的方式提交多个文件,因为curl是将其拆成多个
+ 请求发送的,多个请求不能共用一个label号,所以无法使用
+
+ 3. mini load 的导入方式和 streaming 完全一致,都是在流式的完成导入后,同步的返回结果给用户。
+ 后续查询虽可以查到 mini load 的信息,但不能对其进行操作,查询只为兼容旧的使用方式。
+
+ 4. 当使用 curl 命令行导入时,需要在 & 前加入 \ 转义,否则参数信息会丢失。
+
+## example
+
+ 1. 将本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表(用户是defalut_cluster中的)
+ curl --location-trusted -u root -T testData http://host:port/api/testDb/testTbl/_load?label=123
+
+ 2. 将本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表(用户是test_cluster中的)。超时时间是 3600 秒
+ curl --location-trusted -u root@test_cluster:root -T testData http://fe.host:port/api/testDb/testTbl/_load?label=123&timeout=3600
+
+ 3. 将本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表, 允许20%的错误率(用户是defalut_cluster中的)
+ curl --location-trusted -u root -T testData http://host:port/api/testDb/testTbl/_load?label=123\&max_filter_ratio=0.2
+
+ 4. 将本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表, 允许20%的错误率,并且指定文件的列名(用户是defalut_cluster中的)
+ curl --location-trusted -u root -T testData http://host:port/api/testDb/testTbl/_load?label=123\&max_filter_ratio=0.2\&columns=k1,k2,k3
+
+ 5. 使用streaming方式导入(用户是defalut_cluster中的)
+ seq 1 10 | awk '{OFS="\t"}{print $1, $1 * 10}' | curl --location-trusted -u root -T - http://host:port/api/testDb/testTbl/_load?label=123
+
+ 6. 导入含有HLL列的表,可以是表中的列或者数据中的列用于生成HLL列(用户是defalut_cluster中的
+
+ curl --location-trusted -u root -T testData http://host:port/api/testDb/testTbl/_load?label=123\&max_filter_ratio=0.2
+ \&hll=hll_column1,tmp_k4:hll_column2,tmp_k5\&columns=k1,k2,k3,tmp_k4,tmp_k5
+
+ 7. 查看提交后的导入情况
+
+ curl -u root http://host:port/api/testDb/_load_info?label=123
+
+## keyword
+ MINI, LOAD
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/MULTI LOAD.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/MULTI LOAD.md
new file mode 100644
index 00000000000000..dc58fb39d75992
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/MULTI LOAD.md
@@ -0,0 +1,82 @@
+# MULTI LOAD
+## description
+
+ Syntax:
+ curl --location-trusted -u user:passwd -XPOST http://host:port/api/{db}/_multi_start?label=xxx
+ curl --location-trusted -u user:passwd -T data.file http://host:port/api/{db}/{table1}/_load?label=xxx\&sub_label=yyy
+ curl --location-trusted -u user:passwd -T data.file http://host:port/api/{db}/{table2}/_load?label=xxx\&sub_label=zzz
+ curl --location-trusted -u user:passwd -XPOST http://host:port/api/{db}/_multi_commit?label=xxx
+ curl --location-trusted -u user:passwd -XPOST http://host:port/api/{db}/_multi_desc?label=xxx
+
+ 'MULTI LOAD'在'MINI LOAD'的基础上,可以支持用户同时向多个表进行导入,具体的命令如上面所示
+ '/api/{db}/_multi_start' 开始一个多表导入任务
+ '/api/{db}/{table}/_load' 向一个导入任务添加一个要导入的表,与'MINI LOAD'的主要区别是,需要传入'sub_label'参数
+ '/api/{db}/_multi_commit' 提交整个多表导入任务,后台开始进行处理
+ '/api/{db}/_multi_abort' 放弃一个多表导入任务
+ '/api/{db}/_multi_desc' 可以展示某个多表导入任务已经提交的作业数
+
+ HTTP协议相关说明
+ 权限认证 当前 Doris 使用http的Basic方式权限认证。所以在导入的时候需要指定用户名密码
+ 这种方式是明文传递密码的,鉴于我们当前都是内网环境。。。
+
+ Expect Doris 需要发送过来的http请求,需要有'Expect'头部信息,内容为'100-continue'
+ 为什么呢?因为我们需要将请求进行redirect,那么必须在传输数据内容之前,
+ 这样可以避免造成数据的多次传输,从而提高效率。
+
+ Content-Length Doris 需要在发送请求是带有'Content-Length'这个头部信息。如果发送的内容比
+ 'Content-Length'要少,那么Palo认为传输出现问题,则提交此次任务失败。
+ NOTE: 如果,发送的数据比'Content-Length'要多,那么 Doris 只读取'Content-Length'
+ 长度的内容,并进行导入
+
+ 参数说明:
+ user: 用户如果是在default_cluster中的,user即为user_name。否则为user_name@cluster_name。
+
+ label: 用于指定这一批次导入的label号,用于后期进行作业状态查询等。
+ 这个参数是必须传入的。
+
+ sub_label: 用于指定一个多表导入任务内部的子版本号。对于多表导入的load, 这个参数是必须传入的。
+
+ columns: 用于描述导入文件中对应的列名字。
+ 如果不传入,那么认为文件中的列顺序与建表的顺序一致,
+ 指定的方式为逗号分隔,例如:columns=k1,k2,k3,k4
+
+ column_separator: 用于指定列与列之间的分隔符,默认的为'\t'
+ NOTE: 需要进行url编码,譬如需要指定'\t'为分隔符,
+ 那么应该传入'column_separator=%09'
+
+ max_filter_ratio: 用于指定允许过滤不规范数据的最大比例,默认是0,不允许过滤
+ 自定义指定应该如下:'max_filter_ratio=0.2',含义是允许20%的错误率
+ 在'_multi_start'时传入有效果
+
+ NOTE:
+ 1. 此种导入方式当前是在一台机器上完成导入工作,因而不宜进行数据量较大的导入工作。
+ 建议导入数据量不要超过1GB
+
+ 2. 当前无法使用`curl -T "{file1, file2}"`这样的方式提交多个文件,因为curl是将其拆成多个
+ 请求发送的,多个请求不能共用一个label号,所以无法使用
+
+ 3. 支持类似streaming的方式使用curl来向 Doris 中导入数据,但是,只有等这个streaming结束后 Doris
+ 才会发生真实的导入行为,这中方式数据量也不能过大。
+
+## example
+
+ 1. 将本地文件'testData1'中的数据导入到数据库'testDb'中'testTbl1'的表,并且
+ 把'testData2'的数据导入到'testDb'中的表'testTbl2'(用户是defalut_cluster中的)
+ curl --location-trusted -u root -XPOST http://host:port/api/testDb/_multi_start?label=123
+ curl --location-trusted -u root -T testData1 http://host:port/api/testDb/testTbl1/_load?label=123\&sub_label=1
+ curl --location-trusted -u root -T testData2 http://host:port/api/testDb/testTbl2/_load?label=123\&sub_label=2
+ curl --location-trusted -u root -XPOST http://host:port/api/testDb/_multi_commit?label=123
+
+ 2. 多表导入中途放弃(用户是defalut_cluster中的)
+ curl --location-trusted -u root -XPOST http://host:port/api/testDb/_multi_start?label=123
+ curl --location-trusted -u root -T testData1 http://host:port/api/testDb/testTbl1/_load?label=123\&sub_label=1
+ curl --location-trusted -u root -XPOST http://host:port/api/testDb/_multi_abort?label=123
+
+ 3. 多表导入查看已经提交多少内容(用户是defalut_cluster中的)
+ curl --location-trusted -u root -XPOST http://host:port/api/testDb/_multi_start?label=123
+ curl --location-trusted -u root -T testData1 http://host:port/api/testDb/testTbl1/_load?label=123\&sub_label=1
+ curl --location-trusted -u root -XPOST http://host:port/api/testDb/_multi_desc?label=123
+
+## keyword
+ MULTI, MINI, LOAD
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/PAUSE ROUTINE LOAD.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/PAUSE ROUTINE LOAD.md
new file mode 100644
index 00000000000000..13a371d05291b3
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/PAUSE ROUTINE LOAD.md
@@ -0,0 +1,10 @@
+# PAUSE ROUTINE LOAD
+## example
+
+1. 暂停名称为 test1 的例行导入作业。
+
+ PAUSE ROUTINE LOAD FOR test1;
+
+## keyword
+ PAUSE,ROUTINE,LOAD
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/RESTORE TABLET.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/RESTORE TABLET.md
new file mode 100644
index 00000000000000..1693bbc71ad6f8
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/RESTORE TABLET.md
@@ -0,0 +1,15 @@
+# RESTORE TABLET
+## description
+
+ 该功能用于恢复trash目录中被误删的tablet数据。
+
+ 说明:这个功能暂时只在be服务中提供一个http接口。如果要使用,
+ 需要向要进行数据恢复的那台be机器的http端口发送restore tablet api请求。api格式如下:
+ METHOD: POST
+ URI: http://be_host:be_http_port/api/restore_tablet?tablet_id=xxx&schema_hash=xxx
+
+## example
+
+ curl -X POST "http://hostname:8088/api/restore_tablet?tablet_id=123456&schema_hash=1111111"
+##keyword
+RESTORE,TABLET,RESTORE,TABLET
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/RESUME ROUTINE LOAD.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/RESUME ROUTINE LOAD.md
new file mode 100644
index 00000000000000..2401b627ef6e10
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/RESUME ROUTINE LOAD.md
@@ -0,0 +1,10 @@
+# RESUME ROUTINE LOAD
+## example
+
+1. 恢复名称为 test1 的例行导入作业。
+
+ RESUME ROUTINE LOAD FOR test1;
+
+## keyword
+ RESUME,ROUTINE,LOAD
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/routine_load.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/ROUTINE LOAD.md
similarity index 62%
rename from docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/routine_load.md
rename to docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/ROUTINE LOAD.md
index 4fd4568eddaa47..66cd410b1eb78d 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/routine_load.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/ROUTINE LOAD.md
@@ -247,197 +247,3 @@
## keyword
CREATE,ROUTINE,LOAD
-# PAUSE ROUTINE LOAD
-
- 该语句用于暂停一个指定的例行导入作业。
-
-语法:
-
- PAUSE ROUTINE LOAD FOR [db.]name;
-
-## example
-
-1. 暂停名称为 test1 的例行导入作业。
-
- PAUSE ROUTINE LOAD FOR test1;
-
-## keyword
- PAUSE,ROUTINE,LOAD
-
-# RESUME ROUTINE LOAD
-
- 该语句用于恢复一个被暂停的例行导入作业。
-
-语法:
-
- RESUME ROUTINE LOAD FOR [db.]name;
-
-## example
-
-1. 恢复名称为 test1 的例行导入作业。
-
- RESUME ROUTINE LOAD FOR test1;
-
-## keyword
- RESUME,ROUTINE,LOAD
-
-# STOP ROUTINE LOAD
-
- 该语句用于停止一个被暂停的例行导入作业。
-
-语法:
-
- STOP ROUTINE LOAD FOR [db.]name;
-
- 被停止的作业无法再恢复运行。
-
-## example
-
-1. 停止名称为 test1 的例行导入作业。
-
- STOP ROUTINE LOAD FOR test1;
-
-## keyword
- STOP,ROUTINE,LOAD
-
-# SHOW ROUTINE LOAD
-
- 该语句用于展示指定名称的例行导入作业的详细信息。
-
-语法:
-
- SHOW [ALL] ROUTINE LOAD FOR [[db.]name]
-
-展示结果包括如下信息:
-
- 1. Id:作业id。
- 2. Name:作业的名称。
- 3. CreateTime:作业创建时间。
- 4. PauseTime:作业暂停时间。
- 5. EndTime:作业结束时间。
- 6. DdName:数据库名称。
- 7. TableName:目的表名称。
- 8. State:作业状态。
-
- NEED_SCHEDULE:等待被调度。
- RUNNING:运行中。
- PAUSE:暂停中。
- STOPPED:作业由用户停止。
- CANCELLED:作业因失败停止。
-
- 9. DataSourceType:数据源类型。
-
- KAFKA
-
- 10. CurrentTaskNum:当前正在运行的子任务的个数
- 11. JobProperties:作业相关配置信息,对应创建语句中的 load_properties 和 job_properties。以 json 格式表示。
-
- {
- "partitions": "*", // 目的表的分区,星号表示没有指定。
- "columnToColumnExpr": "k1,yyy,v1,v2,v3,v4,v5,v6,k2=`k1` + 1",
- "maxBatchIntervalS": "10",
- "whereExpr": "`k1` > 100",
- "maxBatchSizeBytes": "104857600",
- "columnSeparator": "\t",
- "maxErrorNum": "0",
- "currentTaskConcurrentNum": "3", // 当前例行作业的子任务并发数
- "maxBatchRows": "200000"
- }
-
- 12. Statistic:作业运行状态的统计信息。以 json 格式表示。
-
- {
- "errorRows": 0, // 总的错误行数
- "loadedRows": 6584959, // 总导入的行数
- "unselectedRows": 2392, // 被 where 条件过滤的行数
- "totalRows": 6587351, // 总消费的行数,totalRows = errorRows + loadedRows + unselectedRows
- "loadRowsRate": 91000, // 导入速率(rows/s)
- "receivedBytes": 861626324, // 总消费的字节数
- "receivedBytesRate": 11915000, // 消费速率 (Bytes/s)
- "committedTaskNum": 33, // 提交成功的子任务数
- "abortedTaskNum": 2, // 失败的子任务数
- "taskExecuteTaskMs": 72312 // 子任务执行时间,单位毫秒
- }
-
- 13. Progress:作业进度。以 json 格式表示。
-
- 如果数据源是 Kafka,则显示每个 kafka partition,当前已经被消费的 offset。
-
- {
- "0": 2199288,
- "1": 2194329,
- "2": 2193731
- }
-
- OFFSET_BEGINNING: 表示用户指定了从头开始消费,并且还未开始消费。
- OFFSET_END: 表示用户指定了从末尾开始消费,并且还未开始消费。
- OFFSET_ZERO: 表示用户指定了从 0 开始消费,并且还未开始消费。
-
- 14. CustomProperties: 自定义参数。
-
-## example
-
-1. 展示名称为 test1 的所有例行导入作业(包括已停止或取消的作业)。结果为一行或多行。
-
- SHOW ALL ROUTINE LOAD FOR test1;
-
-2. 展示名称为 test1 的当前正在运行的例行导入作业
-
- SHOW ROUTINE LOAD FOR test1;
-
-3. 显示 example_db 下,所有的例行导入作业(包括已停止或取消的作业)。结果为一行或多行。
-
- use example_db;
- SHOW ALL ROUTINE LOAD;
-
-4. 显示 example_db 下,所有正在运行的例行导入作业
-
- use example_db;
- SHOW ROUTINE LOAD;
-
-5. 显示 example_db 下,名称为 test1 的当前正在运行的例行导入作业
-
- SHOW ROUTINE LOAD FOR example_db.test1;
-
-6. 显示 example_db 下,名称为 test1 的所有例行导入作业(包括已停止或取消的作业)。结果为一行或多行。
-
- SHOW ALL ROUTINE LOAD FOR example_db.test1;
-
-## keyword
- SHOW,ROUTINE,LOAD
-
-# SHOW ROUTINE LOAD TASK
-
- 该语句用于展示指定例行导入作业,当前正在运行的子任务信息。
-
-语法:
-
- SHOW ROUTINE LOAD TASK [FROM db] WHERE JobName = "name";
-
-展示结果包括如下信息:
-
- TaskId:task id。
- TxnId:task 对应的事务id。
- JobId:作业id。
- CreateTime:任务创建时间。
- ExecuteStartTime:任务开始执行的时间。
- BeId:任务所在的 Backend id。
- DataSourceProperties:
-
- 任务的参数,以 json 格式展示。
- 当数据源为 Kafka 时,显示如下:
-
- {
- "2":2193732
- }
-
- 表示该任务准备消费的 kafka partition 和起始 offset。
-
-## example
-
-1. 展示名为 test1 的例行导入任务的子任务信息。
-
- SHOW ROUTINE LOAD TASK WHERE JobName = "test1";
-
-## keyword
- SHOW,ROUTINE,LOAD,TASK
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW ALTER.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW ALTER.md
new file mode 100644
index 00000000000000..54d1d51fe619f7
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW ALTER.md
@@ -0,0 +1,25 @@
+# SHOW ALTER
+## description
+ 该语句用于展示当前正在进行的各类修改任务的执行情况
+ 语法:
+ SHOW ALTER [CLUSTER | TABLE [COLUMN | ROLLUP] [FROM db_name]];
+
+ 说明:
+ TABLE COLUMN:展示修改列的 ALTER 任务
+ TABLE ROLLUP:展示创建或删除 ROLLUP index 的任务
+ 如果不指定 db_name,使用当前默认 db
+ CLUSTER: 展示集群操作相关任务情况(仅管理员使用!待实现...)
+
+## example
+ 1. 展示默认 db 的所有修改列的任务执行情况
+ SHOW ALTER TABLE COLUMN;
+
+ 2. 展示指定 db 的创建或删除 ROLLUP index 的任务执行情况
+ SHOW ALTER TABLE ROLLUP FROM example_db;
+
+ 3. 展示集群操作相关任务(仅管理员使用!待实现...)
+ SHOW ALTER CLUSTER;
+
+## keyword
+ SHOW,ALTER
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW BACKUP.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW BACKUP.md
new file mode 100644
index 00000000000000..97ad8c193fc7ae
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW BACKUP.md
@@ -0,0 +1,37 @@
+# SHOW BACKUP
+## description
+ 该语句用于查看 BACKUP 任务
+ 语法:
+ SHOW BACKUP [FROM db_name]
+
+ 说明:
+ 1. Palo 中仅保存最近一次 BACKUP 任务。
+ 2. 各列含义如下:
+ JobId: 唯一作业id
+ SnapshotName: 备份的名称
+ DbName: 所属数据库
+ State: 当前阶段
+ PENDING: 提交作业后的初始状态
+ SNAPSHOTING: 执行快照中
+ UPLOAD_SNAPSHOT:快照完成,准备上传
+ UPLOADING: 快照上传中
+ SAVE_META: 将作业元信息保存为本地文件
+ UPLOAD_INFO: 上传作业元信息
+ FINISHED: 作业成功
+ CANCELLED: 作业失败
+ BackupObjs: 备份的表和分区
+ CreateTime: 任务提交时间
+ SnapshotFinishedTime: 快照完成时间
+ UploadFinishedTime: 快照上传完成时间
+ FinishedTime: 作业结束时间
+ UnfinishedTasks: 在 SNAPSHOTING 和 UPLOADING 阶段会显示还未完成的子任务id
+ Status: 如果作业失败,显示失败信息
+ Timeout: 作业超时时间,单位秒
+
+## example
+ 1. 查看 example_db 下最后一次 BACKUP 任务。
+ SHOW BACKUP FROM example_db;
+
+## keyword
+ SHOW, BACKUP
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW DATA.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW DATA.md
new file mode 100644
index 00000000000000..961758677ed0cc
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW DATA.md
@@ -0,0 +1,21 @@
+# SHOW DATA
+## description
+ 该语句用于展示数据量
+ 语法:
+ SHOW DATA [FROM db_name[.table_name]];
+
+ 说明:
+ 1. 如果不指定 FROM 子句,使用展示当前 db 下细分到各个 table 的数据量
+ 2. 如果指定 FROM 子句,则展示 table 下细分到各个 index 的数据量
+ 3. 如果想查看各个 Partition 的大小,请参阅 help show partitions
+
+## example
+ 1. 展示默认 db 的各个 table 的数据量及汇总数据量
+ SHOW DATA;
+
+ 2. 展示指定 db 的下指定表的细分数据量
+ SHOW DATA FROM example_db.table_name;
+
+## keyword
+ SHOW,DATA
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW DATABASES.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW DATABASES.md
new file mode 100644
index 00000000000000..bc46fd04ba83c2
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW DATABASES.md
@@ -0,0 +1,9 @@
+# SHOW DATABASES
+## description
+ 该语句用于展示当前可见的 db
+ 语法:
+ SHOW DATABASES;
+
+## keyword
+ SHOW,DATABASES
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW DELETE.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW DELETE.md
new file mode 100644
index 00000000000000..89af796c75bc63
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW DELETE.md
@@ -0,0 +1,13 @@
+# SHOW DELETE
+## description
+ 该语句用于展示已执行成功的历史 delete 任务
+ 语法:
+ SHOW DELETE [FROM db_name]
+
+## example
+ 1. 展示数据库 database 的所有历史 delete 任务
+ SHOW DELETE FROM database;
+
+## keyword
+ SHOW,DELETE
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW EXPORT.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW EXPORT.md
new file mode 100644
index 00000000000000..54de1c9b64fc06
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW EXPORT.md
@@ -0,0 +1,36 @@
+# SHOW EXPORT
+## description
+ 该语句用于展示指定的导出任务的执行情况
+ 语法:
+ SHOW EXPORT
+ [FROM db_name]
+ [
+ WHERE
+ [EXPORT_JOB_ID = your_job_id]
+ [STATE = ["PENDING"|"EXPORTING"|"FINISHED"|"CANCELLED"]]
+ ]
+ [ORDER BY ...]
+ [LIMIT limit];
+
+ 说明:
+ 1) 如果不指定 db_name,使用当前默认db
+ 2) 如果指定了 STATE,则匹配 EXPORT 状态
+ 3) 可以使用 ORDER BY 对任意列组合进行排序
+ 4) 如果指定了 LIMIT,则显示 limit 条匹配记录。否则全部显示
+
+## example
+ 1. 展示默认 db 的所有导出任务
+ SHOW EXPORT;
+
+ 2. 展示指定 db 的导出任务,按 StartTime 降序排序
+ SHOW EXPORT FROM example_db ORDER BY StartTime DESC;
+
+ 3. 展示指定 db 的导出任务,state 为 "exporting", 并按 StartTime 降序排序
+ SHOW EXPORT FROM example_db WHERE STATE = "exporting" ORDER BY StartTime DESC;
+
+ 4. 展示指定db,指定job_id的导出任务
+ SHOW EXPORT FROM example_db WHERE EXPORT_JOB_ID = job_id;
+
+## keyword
+ SHOW,EXPORT
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW LOAD.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW LOAD.md
new file mode 100644
index 00000000000000..c4b56bd2c0340b
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW LOAD.md
@@ -0,0 +1,49 @@
+# SHOW LOAD
+## description
+ 该语句用于展示指定的导入任务的执行情况
+ 语法:
+ SHOW LOAD
+ [FROM db_name]
+ [
+ WHERE
+ [LABEL [ = "your_label" | LIKE "label_matcher"]]
+ [STATE = ["PENDING"|"ETL"|"LOADING"|"FINISHED"|"CANCELLED"|]]
+ ]
+ [ORDER BY ...]
+ [LIMIT limit][OFFSET offset];
+
+ 说明:
+ 1) 如果不指定 db_name,使用当前默认db
+ 2) 如果使用 LABEL LIKE,则会匹配导入任务的 label 包含 label_matcher 的导入任务
+ 3) 如果使用 LABEL = ,则精确匹配指定的 label
+ 4) 如果指定了 STATE,则匹配 LOAD 状态
+ 5) 可以使用 ORDER BY 对任意列组合进行排序
+ 6) 如果指定了 LIMIT,则显示 limit 条匹配记录。否则全部显示
+ 7) 如果指定了 OFFSET,则从偏移量offset开始显示查询结果。默认情况下偏移量为0。
+ 8) 如果是使用 broker/mini load,则 URL 列中的连接可以使用以下命令查看:
+
+ SHOW LOAD WARNINGS ON 'url'
+
+## example
+ 1. 展示默认 db 的所有导入任务
+ SHOW LOAD;
+
+ 2. 展示指定 db 的导入任务,label 中包含字符串 "2014_01_02",展示最老的10个
+ SHOW LOAD FROM example_db WHERE LABEL LIKE "2014_01_02" LIMIT 10;
+
+ 3. 展示指定 db 的导入任务,指定 label 为 "load_example_db_20140102" 并按 LoadStartTime 降序排序
+ SHOW LOAD FROM example_db WHERE LABEL = "load_example_db_20140102" ORDER BY LoadStartTime DESC;
+
+ 4. 展示指定 db 的导入任务,指定 label 为 "load_example_db_20140102" ,state 为 "loading", 并按 LoadStartTime 降序排序
+ SHOW LOAD FROM example_db WHERE LABEL = "load_example_db_20140102" AND STATE = "loading" ORDER BY LoadStartTime DESC;
+
+ 5. 展示指定 db 的导入任务 并按 LoadStartTime 降序排序,并从偏移量5开始显示10条查询结果
+ SHOW LOAD FROM example_db ORDER BY LoadStartTime DESC limit 5,10;
+ SHOW LOAD FROM example_db ORDER BY LoadStartTime DESC limit 10 offset 5;
+
+ 6. 小批量导入是查看导入状态的命令
+ curl --location-trusted -u {user}:{passwd} http://{hostname}:{port}/api/{database}/_load_info?label={labelname}
+
+## keyword
+ SHOW,LOAD
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW PARTITIONS.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW PARTITIONS.md
new file mode 100644
index 00000000000000..44e959b55bbed5
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW PARTITIONS.md
@@ -0,0 +1,16 @@
+# SHOW PARTITIONS
+## description
+ 该语句用于展示分区信息
+ 语法:
+ SHOW PARTITIONS FROM [db_name.]table_name [PARTITION partition_name];
+
+## example
+ 1. 展示指定 db 的下指定表的分区信息
+ SHOW PARTITIONS FROM example_db.table_name;
+
+ 1. 展示指定 db 的下指定表的指定分区的信息
+ SHOW PARTITIONS FROM example_db.table_name PARTITION p1;
+
+## keyword
+ SHOW,PARTITIONS
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW PROPERTY.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW PROPERTY.md
new file mode 100644
index 00000000000000..17ca6eea5bd1e4
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW PROPERTY.md
@@ -0,0 +1,16 @@
+# SHOW PROPERTY
+## description
+ 该语句用于查看用户的属性
+ 语法:
+ SHOW PROPERTY [FOR user] [LIKE key]
+
+## example
+ 1. 查看 jack 用户的属性
+ SHOW PROPERTY FOR 'jack'
+
+ 2. 查看 jack 用户导入cluster相关属性
+ SHOW PROPERTY FOR 'jack' LIKE '%load_cluster%'
+
+## keyword
+ SHOW, PROPERTY
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW REPOSITORIES.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW REPOSITORIES.md
new file mode 100644
index 00000000000000..9fb7f159938d25
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW REPOSITORIES.md
@@ -0,0 +1,23 @@
+# SHOW REPOSITORIES
+## description
+ 该语句用于查看当前已创建的仓库。
+ 语法:
+ SHOW REPOSITORIES;
+
+ 说明:
+ 1. 各列含义如下:
+ RepoId: 唯一的仓库ID
+ RepoName: 仓库名称
+ CreateTime: 第一次创建该仓库的时间
+ IsReadOnly: 是否为只读仓库
+ Location: 仓库中用于备份数据的根目录
+ Broker: 依赖的 Broker
+ ErrMsg: Palo 会定期检查仓库的连通性,如果出现问题,这里会显示错误信息
+
+## example
+ 1. 查看已创建的仓库:
+ SHOW REPOSITORIES;
+
+## keyword
+ SHOW, REPOSITORY, REPOSITORIES
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW RESTORE.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW RESTORE.md
new file mode 100644
index 00000000000000..1139a627977e45
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW RESTORE.md
@@ -0,0 +1,41 @@
+# SHOW RESTORE
+## description
+ 该语句用于查看 RESTORE 任务
+ 语法:
+ SHOW RESTORE [FROM db_name]
+
+ 说明:
+ 1. Palo 中仅保存最近一次 RESTORE 任务。
+ 2. 各列含义如下:
+ JobId: 唯一作业id
+ Label: 要恢复的备份的名称
+ Timestamp: 要恢复的备份的时间版本
+ DbName: 所属数据库
+ State: 当前阶段
+ PENDING: 提交作业后的初始状态
+ SNAPSHOTING: 执行快照中
+ DOWNLOAD: 快照完成,准备下载仓库中的快照
+ DOWNLOADING: 快照下载中
+ COMMIT: 快照下载完成,准备生效
+ COMMITING: 生效中
+ FINISHED: 作业成功
+ CANCELLED: 作业失败
+ AllowLoad: 恢复时是否允许导入(当前不支持)
+ ReplicationNum: 指定恢复的副本数
+ RestoreJobs: 要恢复的表和分区
+ CreateTime: 任务提交时间
+ MetaPreparedTime: 元数据准备完成时间
+ SnapshotFinishedTime: 快照完成时间
+ DownloadFinishedTime: 快照下载完成时间
+ FinishedTime: 作业结束时间
+ UnfinishedTasks: 在 SNAPSHOTING、DOWNLOADING 和 COMMITING 阶段会显示还未完成的子任务id
+ Status: 如果作业失败,显示失败信息
+ Timeout: 作业超时时间,单位秒
+
+## example
+ 1. 查看 example_db 下最近一次 RESTORE 任务。
+ SHOW RESTORE FROM example_db;
+
+## keyword
+ SHOW, RESTORE
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW ROUTINE LOAD TASK.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW ROUTINE LOAD TASK.md
new file mode 100644
index 00000000000000..d01e3bb3c5b1af
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW ROUTINE LOAD TASK.md
@@ -0,0 +1,9 @@
+# SHOW ROUTINE LOAD TASK
+## example
+
+1. 展示名为 test1 的例行导入任务的子任务信息。
+
+ SHOW ROUTINE LOAD TASK WHERE JobName = "test1";
+
+## keyword
+ SHOW,ROUTINE,LOAD,TASK
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW ROUTINE LOAD.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW ROUTINE LOAD.md
new file mode 100644
index 00000000000000..f453e6c2ca5b96
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW ROUTINE LOAD.md
@@ -0,0 +1,32 @@
+# SHOW ROUTINE LOAD
+## example
+
+1. 展示名称为 test1 的所有例行导入作业(包括已停止或取消的作业)。结果为一行或多行。
+
+ SHOW ALL ROUTINE LOAD FOR test1;
+
+2. 展示名称为 test1 的当前正在运行的例行导入作业
+
+ SHOW ROUTINE LOAD FOR test1;
+
+3. 显示 example_db 下,所有的例行导入作业(包括已停止或取消的作业)。结果为一行或多行。
+
+ use example_db;
+ SHOW ALL ROUTINE LOAD;
+
+4. 显示 example_db 下,所有正在运行的例行导入作业
+
+ use example_db;
+ SHOW ROUTINE LOAD;
+
+5. 显示 example_db 下,名称为 test1 的当前正在运行的例行导入作业
+
+ SHOW ROUTINE LOAD FOR example_db.test1;
+
+6. 显示 example_db 下,名称为 test1 的所有例行导入作业(包括已停止或取消的作业)。结果为一行或多行。
+
+ SHOW ALL ROUTINE LOAD FOR example_db.test1;
+
+## keyword
+ SHOW,ROUTINE,LOAD
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW SNAPSHOT.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW SNAPSHOT.md
new file mode 100644
index 00000000000000..6758e865c32839
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW SNAPSHOT.md
@@ -0,0 +1,31 @@
+# SHOW SNAPSHOT
+## description
+ 该语句用于查看仓库中已存在的备份。
+ 语法:
+ SHOW SNAPSHOT ON `repo_name`
+ [WHERE SNAPSHOT = "snapshot" [AND TIMESTAMP = "backup_timestamp"]];
+
+ 说明:
+ 1. 各列含义如下:
+ Snapshot: 备份的名称
+ Timestamp: 对应备份的时间版本
+ Status: 如果备份正常,则显示 OK,否则显示错误信息
+
+ 2. 如果指定了 TIMESTAMP,则会额外显示如下信息:
+ Database: 备份数据原属的数据库名称
+ Details: 以 Json 的形式,展示整个备份的数据目录及文件结构
+
+## example
+ 1. 查看仓库 example_repo 中已有的备份:
+ SHOW SNAPSHOT ON example_repo;
+
+ 2. 仅查看仓库 example_repo 中名称为 backup1 的备份:
+ SHOW SNAPSHOT ON example_repo WHERE SNAPSHOT = "backup1";
+
+ 2. 查看仓库 example_repo 中名称为 backup1 的备份,时间版本为 "2018-05-05-15-34-26" 的详细信息:
+ SHOW SNAPSHOT ON example_repo
+ WHERE SNAPSHOT = "backup1" AND TIMESTAMP = "2018-05-05-15-34-26";
+
+## keyword
+ SHOW, SNAPSHOT
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW TABLES.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW TABLES.md
new file mode 100644
index 00000000000000..b2670efd724338
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW TABLES.md
@@ -0,0 +1,9 @@
+# SHOW TABLES
+## description
+ 该语句用于展示当前 db 下所有的 table
+ 语法:
+ SHOW TABLES;
+
+## keyword
+ SHOW,TABLES
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW TABLET.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW TABLET.md
new file mode 100644
index 00000000000000..29452c5e34d901
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/SHOW TABLET.md
@@ -0,0 +1,17 @@
+# SHOW TABLET
+## description
+ 该语句用于显示 tablet 相关的信息(仅管理员使用)
+ 语法:
+ SHOW TABLET
+ [FROM [db_name.]table_name | tablet_id]
+
+## example
+ 1. 显示指定 db 的下指定表所有 tablet 信息
+ SHOW TABLET FROM example_db.table_name;
+
+ 2. 显示指定 tablet id 为 10000 的 tablet 的父层级 id 信息
+ SHOW TABLET 10000;
+
+## keyword
+ SHOW,TABLET
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/STOP ROUTINE LOAD.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/STOP ROUTINE LOAD.md
new file mode 100644
index 00000000000000..3e7cd6f7ca0f17
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/STOP ROUTINE LOAD.md
@@ -0,0 +1,10 @@
+# STOP ROUTINE LOAD
+## example
+
+1. 停止名称为 test1 的例行导入作业。
+
+ STOP ROUTINE LOAD FOR test1;
+
+## keyword
+ STOP,ROUTINE,LOAD
+
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/streaming.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/STREAM LOAD.md
similarity index 78%
rename from docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/streaming.md
rename to docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/STREAM LOAD.md
index 3a279e2d0c94ac..e8298dae3c063f 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/streaming.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/STREAM LOAD.md
@@ -90,69 +90,3 @@
## keyword
STREAM,LOAD
-# GET LABEL STATE
-## description
- NAME:
- get_label_state: get label's state
-
- SYNOPSIS
- curl -u user:passwd http://host:port/api/{db}/{label}/_state
-
- DESCRIPTION
- 该命令用于查看一个Label对应的事务状态
-
- RETURN VALUES
- 执行完毕后,会以Json格式返回这次导入的相关内容。当前包括一下字段
- Label:本次导入的 label,如果没有指定,则为一个 uuid。
- Status:此命令是否成功执行,Success表示成功执行
- Message: 具体的执行信息
- State: 只有在Status为Success时才有意义
- UNKNOWN: 没有找到对应的Label
- PREPARE: 对应的事务已经prepare,但尚未提交
- COMMITTED: 事务已经提交,不能被cancel
- VISIBLE: 事务提交,并且数据可见,不能被cancel
- ABORTED: 事务已经被ROLLBACK,导入已经失败。
-
- ERRORS
-
-## example
-
- 1. 获得testDb, testLabel的状态
- curl -u root http://host:port/api/testDb/testLabel/_state
-
-## keyword
- GET, LABEL, STATE
-
-# CANCEL LABEL
-## description
- NAME:
- cancel_label: cancel a transaction with label
-
- SYNOPSIS
- curl -u user:passwd -XPOST http://host:port/api/{db}/{label}/_cancel
-
- DESCRIPTION
- 该命令用于cancel一个指定Label对应的事务,事务在Prepare阶段能够被成功cancel
-
- RETURN VALUES
- 执行完成后,会以Json格式返回这次导入的相关内容。当前包括一下字段
- Status: 是否成功cancel
- Success: 成功cancel事务
- 其他: cancel失败
- Message: 具体的失败信息
-
- ERRORS
-
-## example
-
- 1. cancel testDb, testLabel的作业
- curl -u root -XPOST http://host:port/api/testDb/testLabel/_cancel
-
-## keyword
- CANCEL,LABEL
-
-
-
-
-
-
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/insert.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/insert.md
index d571410ebf459a..91ed85227e019f 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/insert.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/insert.md
@@ -1,6 +1,7 @@
# INSERT
+## description
-## Syntax
+ Syntax
```
INSERT INTO table_name
@@ -10,9 +11,7 @@ INSERT INTO table_name
{ VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }
```
-## description
-
-## Parameters
+ Parameters
> tablet_name: 导入数据的目的表。可以是 `db_name.table_name` 形式
>
@@ -29,11 +28,11 @@ INSERT INTO table_name
> hint: 用于指示 `INSERT` 执行行为的一些指示符。`streaming` 和 默认的非 `streaming` 方式均会使用同步方式完成 `INSERT` 语句执行
> 非 `streaming` 方式在执行完成后会返回一个 label 方便用户通过 `SHOW LOAD` 查询导入的状态
-## Note
+ Note
当前执行 `INSERT` 语句时,对于有不符合目标表格式的数据,默认的行为是过滤,比如字符串超长等。但是对于有要求数据不能够被过滤的业务场景,可以通过设置会话变量 `enable_insert_strict` 为 `true` 来确保当有数据被过滤掉的时候,`INSERT` 不会被执行成功。
-## Examples
+## example
`test` 表包含两个列`c1`, `c2`。
@@ -78,3 +77,5 @@ INSERT INTO test (c1, c2) SELECT * from test2
异步的导入其实是,一个同步的导入封装成了异步。填写 streaming 和不填写的*执行效率是一样*的。
由于Doris之前的导入方式都是异步导入方式,为了兼容旧有的使用习惯,不加 streaming 的 `INSERT` 语句依旧会返回一个 label,用户需要通过`SHOW LOAD`命令查看此`label`导入作业的状态。
+##keyword
+INSERT,INSERT
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/manipulation_stmt.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/manipulation_stmt.md
deleted file mode 100644
index cc55e5f25602a9..00000000000000
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/manipulation_stmt.md
+++ /dev/null
@@ -1,950 +0,0 @@
-# LOAD
-## description
-
- Palo 目前支持以下4种导入方式:
-
- 1. Hadoop Load:基于 MR 进行 ETL 的导入。
- 2. Broker Load:使用 broker 进行进行数据导入。
- 3. Mini Load:通过 http 协议上传文件进行批量数据导入。
- 4. Stream Load:通过 http 协议进行流式数据导入。
-
- 本帮助主要描述第一种导入方式,即 Hadoop Load 相关帮助信息。其余导入方式可以使用以下命令查看帮助:
-
- !!!该导入方式可能在后续某个版本即不再支持,建议使用其他导入方式进行数据导入。!!!
-
- 1. help broker load;
- 2. help mini load;
- 3. help stream load;
-
- Hadoop Load 仅适用于百度内部环境。公有云、私有云以及开源环境无法使用这种导入方式。
- 该导入方式必须设置用于 ETL 的 Hadoop 计算队列,设置方式可以通过 help set property 命令查看帮助。
-
- Stream load 暂时只支持百度内部用户使用。开源社区和公有云用户将在后续版本更新中支持。
-
-语法:
-
- LOAD LABEL load_label
- (
- data_desc1[, data_desc2, ...]
- )
- [opt_properties];
-
- 1. load_label
-
- 当前导入批次的标签。在一个 database 内唯一。
- 语法:
- [database_name.]your_label
-
- 2. data_desc
-
- 用于描述一批导入数据。
- 语法:
- DATA INFILE
- (
- "file_path1"[, file_path2, ...]
- )
- [NEGATIVE]
- INTO TABLE `table_name`
- [PARTITION (p1, p2)]
- [COLUMNS TERMINATED BY "column_separator"]
- [FORMAT AS "file_type"]
- [(column_list)]
- [SET (k1 = func(k2))]
-
- 说明:
- file_path:
-
- 文件路径,可以指定到一个文件,也可以用 * 通配符指定某个目录下的所有文件。通配符必须匹配到文件,而不能是目录。
-
- PARTITION:
-
- 如果指定此参数,则只会导入指定的分区,导入分区以外的数据会被过滤掉。
- 如果不指定,默认导入table的所有分区。
-
- NEGATIVE:
- 如果指定此参数,则相当于导入一批“负”数据。用于抵消之前导入的同一批数据。
- 该参数仅适用于存在 value 列,并且 value 列的聚合类型仅为 SUM 的情况。
-
- column_separator:
-
- 用于指定导入文件中的列分隔符。默认为 \t
- 如果是不可见字符,则需要加\\x作为前缀,使用十六进制来表示分隔符。
- 如hive文件的分隔符\x01,指定为"\\x01"
-
- file_type:
-
- 用于指定导入文件的类型,例如:parquet、csv。默认值通过文件后缀名判断。
-
- column_list:
-
- 用于指定导入文件中的列和 table 中的列的对应关系。
- 当需要跳过导入文件中的某一列时,将该列指定为 table 中不存在的列名即可。
- 语法:
- (col_name1, col_name2, ...)
-
- SET:
-
- 如果指定此参数,可以将源文件某一列按照函数进行转化,然后将转化后的结果导入到table中。
- 目前支持的函数有:
-
- strftime(fmt, column) 日期转换函数
- fmt: 日期格式,形如%Y%m%d%H%M%S (年月日时分秒)
- column: column_list中的列,即输入文件中的列。存储内容应为数字型的时间戳。
- 如果没有column_list,则按照palo表的列顺序默认输入文件的列。
-
- time_format(output_fmt, input_fmt, column) 日期格式转化
- output_fmt: 转化后的日期格式,形如%Y%m%d%H%M%S (年月日时分秒)
- input_fmt: 转化前column列的日期格式,形如%Y%m%d%H%M%S (年月日时分秒)
- column: column_list中的列,即输入文件中的列。存储内容应为input_fmt格式的日期字符串。
- 如果没有column_list,则按照palo表的列顺序默认输入文件的列。
-
- alignment_timestamp(precision, column) 将时间戳对齐到指定精度
- precision: year|month|day|hour
- column: column_list中的列,即输入文件中的列。存储内容应为数字型的时间戳。
- 如果没有column_list,则按照palo表的列顺序默认输入文件的列。
- 注意:对齐精度为year、month的时候,只支持20050101~20191231范围内的时间戳。
-
- default_value(value) 设置某一列导入的默认值
- 不指定则使用建表时列的默认值
-
- md5sum(column1, column2, ...) 将指定的导入列的值求md5sum,返回32位16进制字符串
-
- replace_value(old_value[, new_value]) 将导入文件中指定的old_value替换为new_value
- new_value如不指定则使用建表时列的默认值
-
- hll_hash(column) 用于将表或数据里面的某一列转化成HLL列的数据结构
-
- 3. opt_properties
-
- 用于指定一些特殊参数。
- 语法:
- [PROPERTIES ("key"="value", ...)]
-
- 可以指定如下参数:
- cluster: 导入所使用的 Hadoop 计算队列。
- timeout: 指定导入操作的超时时间。默认超时为3天。单位秒。
- max_filter_ratio:最大容忍可过滤(数据不规范等原因)的数据比例。默认零容忍。
- load_delete_flag:指定该导入是否通过导入key列的方式删除数据,仅适用于UNIQUE KEY,
- 导入时可不指定value列。默认为false。
-
- 5. 导入数据格式样例
-
- 整型类(TINYINT/SMALLINT/INT/BIGINT/LARGEINT):1, 1000, 1234
- 浮点类(FLOAT/DOUBLE/DECIMAL):1.1, 0.23, .356
- 日期类(DATE/DATETIME):2017-10-03, 2017-06-13 12:34:03。
- (注:如果是其他日期格式,可以在导入命令中,使用 strftime 或者 time_format 函数进行转换)
- 字符串类(CHAR/VARCHAR):"I am a student", "a"
- NULL值:\N
-
-## example
-
- 1. 导入一批数据,指定超时时间和过滤比例。指定导入队列为 my_cluster。
-
- LOAD LABEL example_db.label1
- (
- DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file")
- INTO TABLE `my_table`
- )
- PROPERTIES
- (
- "cluster" = "my_cluster",
- "timeout" = "3600",
- "max_filter_ratio" = "0.1"
- );
-
- 其中 hdfs_host 为 namenode 的 host,hdfs_port 为 fs.defaultFS 端口(默认9000)
-
- 2. 导入一批数据,包含多个文件。导入不同的 table,指定分隔符,指定列对应关系
-
- LOAD LABEL example_db.label2
- (
- DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file1")
- INTO TABLE `my_table_1`
- COLUMNS TERMINATED BY ","
- (k1, k3, k2, v1, v2),
- DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file2")
- INTO TABLE `my_table_2`
- COLUMNS TERMINATED BY "\t"
- (k1, k2, k3, v2, v1)
- );
-
- 3. 导入一批数据,指定hive的默认分隔符\x01,并使用通配符*指定目录下的所有文件
-
- LOAD LABEL example_db.label3
- (
- DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/*")
- NEGATIVE
- INTO TABLE `my_table`
- COLUMNS TERMINATED BY "\\x01"
- );
-
- 4. 导入一批“负”数据
-
- LOAD LABEL example_db.label4
- (
- DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/old_file)
- NEGATIVE
- INTO TABLE `my_table`
- COLUMNS TERMINATED BY "\t"
- );
-
- 5. 导入一批数据,指定分区
-
- LOAD LABEL example_db.label5
- (
- DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file")
- INTO TABLE `my_table`
- PARTITION (p1, p2)
- COLUMNS TERMINATED BY ","
- (k1, k3, k2, v1, v2)
- );
-
- 6. 导入一批数据,指定分区, 并对导入文件的列做一些转化,如下:
- 表结构为:
- k1 datetime
- k2 date
- k3 bigint
- k4 varchar(20)
- k5 varchar(64)
- k6 int
-
- 假设数据文件只有一行数据,5列,逗号分隔:
-
- 1537002087,2018-08-09 11:12:13,1537002087,-,1
-
- 数据文件中各列,对应导入语句中指定的各列:
- tmp_k1, tmp_k2, tmp_k3, k6, v1
-
- 转换如下:
-
- 1) k1:将 tmp_k1 时间戳列转化为 datetime 类型的数据
- 2) k2:将 tmp_k2 datetime 类型的数据转化为 date 的数据
- 3) k3:将 tmp_k3 时间戳列转化为天级别时间戳
- 4) k4:指定导入默认值为1
- 5) k5:将 tmp_k1、tmp_k2、tmp_k3 列计算 md5 值
- 6) k6:将导入文件中的 - 值替换为 10
-
- LOAD LABEL example_db.label6
- (
- DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file")
- INTO TABLE `my_table`
- PARTITION (p1, p2)
- COLUMNS TERMINATED BY ","
- (tmp_k1, tmp_k2, tmp_k3, k6, v1)
- SET (
- k1 = strftime("%Y-%m-%d %H:%M:%S", tmp_k1),
- k2 = time_format("%Y-%m-%d %H:%M:%S", "%Y-%m-%d", tmp_k2),
- k3 = alignment_timestamp("day", tmp_k3),
- k4 = default_value("1"),
- k5 = md5sum(tmp_k1, tmp_k2, tmp_k3),
- k6 = replace_value("-", "10")
- )
- );
-
- 7. 导入数据到含有HLL列的表,可以是表中的列或者数据里面的列
-
- LOAD LABEL example_db.label7
- (
- DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file")
- INTO TABLE `my_table`
- PARTITION (p1, p2)
- COLUMNS TERMINATED BY ","
- SET (
- v1 = hll_hash(k1),
- v2 = hll_hash(k2)
- )
- );
-
- LOAD LABEL example_db.label8
- (
- DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file")
- INTO TABLE `my_table`
- PARTITION (p1, p2)
- COLUMNS TERMINATED BY ","
- (k1, k2, tmp_k3, tmp_k4, v1, v2)
- SET (
- v1 = hll_hash(tmp_k3),
- v2 = hll_hash(tmp_k4)
- )
- )
- WITH BROKER hdfs ("username"="hdfs_user", "password"="hdfs_password");
-
- 8. 导入Parquet文件中数据 指定FORMAT 为parquet, 默认是通过文件后缀判断
- LOAD LABEL example_db.label9
- (
- DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file")
- INTO TABLE `my_table`
- FORMAT AS "parquet"
- (k1, k2, k3)
- )
- WITH BROKER hdfs ("username"="hdfs_user", "password"="hdfs_password");
-
-## keyword
- LOAD
-
-# CANCEL LOAD
-## description
-
- 该语句用于撤销指定 load label 的批次的导入作业。
- 这是一个异步操作,任务提交成功则返回。执行后可使用 SHOW LOAD 命令查看进度。
- 语法:
- CANCEL LOAD
- [FROM db_name]
- WHERE LABEL = "load_label";
-
-## example
-
- 1. 撤销数据库 example_db 上, label 为 example_db_test_load_label 的导入作业
- CANCEL LOAD
- FROM example_db
- WHERE LABEL = "example_db_test_load_label";
-
-## keyword
- CANCEL,LOAD
-
-# DELETE
-## description
-
- 该语句用于按条件删除指定 table(base index) partition 中的数据。
- 该操作会同时删除和此 base index 相关的 rollup index 的数据。
- 语法:
- DELETE FROM table_name [PARTITION partition_name]
- WHERE
- column_name1 op value[ AND column_name2 op value ...];
-
- 说明:
- 1) op 的可选类型包括:=, >, <, >=, <=, !=
- 2) 只能指定 key 列上的条件。
- 2) 当选定的 key 列不存在于某个 rollup 中时,无法进行 delete。
- 3) 条件之间只能是“与”的关系。
- 若希望达成“或”的关系,需要将条件分写在两个 DELETE 语句中。
- 4) 如果为RANGE分区表,则必须指定 PARTITION。如果是单分区表,可以不指定。
-
- 注意:
- 该语句可能会降低执行后一段时间内的查询效率。
- 影响程度取决于语句中指定的删除条件的数量。
- 指定的条件越多,影响越大。
-
-## example
-
- 1. 删除 my_table partition p1 中 k1 列值为 3 的数据行
- DELETE FROM my_table PARTITION p1
- WHERE k1 = 3;
-
- 2. 删除 my_table partition p1 中 k1 列值大于等于 3 且 k2 列值为 "abc" 的数据行
- DELETE FROM my_table PARTITION p1
- WHERE k1 >= 3 AND k2 = "abc";
-
-## keyword
- DELETE
-
-# CANCEL DELETE
-## description
-
- 该语句用于撤销一个 DELETE 操作。(仅管理员使用!)(待实现)
-
-## example
-
-## keyword
- CANCEL,DELETE
-
-# MINI LOAD
-## description
-
- MINI LOAD 和 STREAM LOAD 的导入实现方式完全一致。在导入功能支持上,MINI LOAD 的功能是 STREAM LOAD 的子集。
- 后续的导入新功能只会在 STREAM LOAD 中支持,MINI LOAD 将不再新增功能。建议改用 STREAM LOAD,具体使用方式请 HELP STREAM LOAD。
-
- MINI LOAD 是 通过 http 协议完成的导入方式。用户可以不依赖 Hadoop,也无需通过 Mysql 客户端,即可完成导入。
- 用户通过 http 协议描述导入,数据在接受 http 请求的过程中被流式的导入 Doris , **导入作业完成后** 返回给用户导入的结果。
-
- * 注:为兼容旧版本 mini load 使用习惯,用户依旧可以通过 'SHOW LOAD' 命令来查看导入结果。
-
- 语法:
- 导入:
-
- curl --location-trusted -u user:passwd -T data.file http://host:port/api/{db}/{table}/_load?label=xxx
-
- 查看导入信息
-
- curl -u user:passwd http://host:port/api/{db}/_load_info?label=xxx
-
- HTTP协议相关说明
-
- 权限认证 当前 Doris 使用 http 的 Basic 方式权限认证。所以在导入的时候需要指定用户名密码
- 这种方式是明文传递密码的,暂不支持加密传输。
-
- Expect Doris 需要发送过来的 http 请求带有 'Expect' 头部信息,内容为 '100-continue'。
- 为什么呢?因为我们需要将请求进行 redirect,那么必须在传输数据内容之前,
- 这样可以避免造成数据的多次传输,从而提高效率。
-
- Content-Length Doris 需要在发送请求时带有 'Content-Length' 这个头部信息。如果发送的内容比
- 'Content-Length' 要少,那么 Doris 认为传输出现问题,则提交此次任务失败。
- NOTE: 如果,发送的数据比 'Content-Length' 要多,那么 Doris 只读取 'Content-Length'
- 长度的内容,并进行导入
-
-
- 参数说明:
-
- user: 用户如果是在default_cluster中的,user即为user_name。否则为user_name@cluster_name。
-
- label: 用于指定这一批次导入的 label,用于后期进行作业查询等。
- 这个参数是必须传入的。
-
- columns: 用于描述导入文件中对应的列名字。
- 如果不传入,那么认为文件中的列顺序与建表的顺序一致,
- 指定的方式为逗号分隔,例如:columns=k1,k2,k3,k4
-
- column_separator: 用于指定列与列之间的分隔符,默认的为'\t'
- NOTE: 需要进行url编码,譬如
- 需要指定'\t'为分隔符,那么应该传入'column_separator=%09'
- 需要指定'\x01'为分隔符,那么应该传入'column_separator=%01'
- 需要指定','为分隔符,那么应该传入'column_separator=%2c'
-
-
- max_filter_ratio: 用于指定允许过滤不规范数据的最大比例,默认是0,不允许过滤
- 自定义指定应该如下:'max_filter_ratio=0.2',含义是允许20%的错误率
-
- timeout: 指定 load 作业的超时时间,单位是秒。当load执行时间超过该阈值时,会自动取消。默认超时时间是 86400 秒。
- 建议指定 timeout 时间小于 86400 秒。
-
- hll: 用于指定数据里面和表里面的HLL列的对应关系,表中的列和数据里面指定的列
- (如果不指定columns,则数据列面的列也可以是表里面的其它非HLL列)通过","分割
- 指定多个hll列使用“:”分割,例如: 'hll1,cuid:hll2,device'
-
- NOTE:
- 1. 此种导入方式当前是在一台机器上完成导入工作,因而不宜进行数据量较大的导入工作。
- 建议导入数据量不要超过 1 GB
-
- 2. 当前无法使用 `curl -T "{file1, file2}"` 这样的方式提交多个文件,因为curl是将其拆成多个
- 请求发送的,多个请求不能共用一个label号,所以无法使用
-
- 3. mini load 的导入方式和 streaming 完全一致,都是在流式的完成导入后,同步的返回结果给用户。
- 后续查询虽可以查到 mini load 的信息,但不能对其进行操作,查询只为兼容旧的使用方式。
-
- 4. 当使用 curl 命令行导入时,需要在 & 前加入 \ 转义,否则参数信息会丢失。
-
-## example
-
- 1. 将本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表(用户是defalut_cluster中的)
- curl --location-trusted -u root -T testData http://host:port/api/testDb/testTbl/_load?label=123
-
- 2. 将本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表(用户是test_cluster中的)。超时时间是 3600 秒
- curl --location-trusted -u root@test_cluster:root -T testData http://fe.host:port/api/testDb/testTbl/_load?label=123&timeout=3600
-
- 3. 将本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表, 允许20%的错误率(用户是defalut_cluster中的)
- curl --location-trusted -u root -T testData http://host:port/api/testDb/testTbl/_load?label=123\&max_filter_ratio=0.2
-
- 4. 将本地文件'testData'中的数据导入到数据库'testDb'中'testTbl'的表, 允许20%的错误率,并且指定文件的列名(用户是defalut_cluster中的)
- curl --location-trusted -u root -T testData http://host:port/api/testDb/testTbl/_load?label=123\&max_filter_ratio=0.2\&columns=k1,k2,k3
-
- 5. 使用streaming方式导入(用户是defalut_cluster中的)
- seq 1 10 | awk '{OFS="\t"}{print $1, $1 * 10}' | curl --location-trusted -u root -T - http://host:port/api/testDb/testTbl/_load?label=123
-
- 6. 导入含有HLL列的表,可以是表中的列或者数据中的列用于生成HLL列(用户是defalut_cluster中的
-
- curl --location-trusted -u root -T testData http://host:port/api/testDb/testTbl/_load?label=123\&max_filter_ratio=0.2
- \&hll=hll_column1,tmp_k4:hll_column2,tmp_k5\&columns=k1,k2,k3,tmp_k4,tmp_k5
-
- 7. 查看提交后的导入情况
-
- curl -u root http://host:port/api/testDb/_load_info?label=123
-
-## keyword
- MINI, LOAD
-
-# MULTI LOAD
-## description
-
- Syntax:
- curl --location-trusted -u user:passwd -XPOST http://host:port/api/{db}/_multi_start?label=xxx
- curl --location-trusted -u user:passwd -T data.file http://host:port/api/{db}/{table1}/_load?label=xxx\&sub_label=yyy
- curl --location-trusted -u user:passwd -T data.file http://host:port/api/{db}/{table2}/_load?label=xxx\&sub_label=zzz
- curl --location-trusted -u user:passwd -XPOST http://host:port/api/{db}/_multi_commit?label=xxx
- curl --location-trusted -u user:passwd -XPOST http://host:port/api/{db}/_multi_desc?label=xxx
-
- 'MULTI LOAD'在'MINI LOAD'的基础上,可以支持用户同时向多个表进行导入,具体的命令如上面所示
- '/api/{db}/_multi_start' 开始一个多表导入任务
- '/api/{db}/{table}/_load' 向一个导入任务添加一个要导入的表,与'MINI LOAD'的主要区别是,需要传入'sub_label'参数
- '/api/{db}/_multi_commit' 提交整个多表导入任务,后台开始进行处理
- '/api/{db}/_multi_abort' 放弃一个多表导入任务
- '/api/{db}/_multi_desc' 可以展示某个多表导入任务已经提交的作业数
-
- HTTP协议相关说明
- 权限认证 当前 Doris 使用http的Basic方式权限认证。所以在导入的时候需要指定用户名密码
- 这种方式是明文传递密码的,鉴于我们当前都是内网环境。。。
-
- Expect Doris 需要发送过来的http请求,需要有'Expect'头部信息,内容为'100-continue'
- 为什么呢?因为我们需要将请求进行redirect,那么必须在传输数据内容之前,
- 这样可以避免造成数据的多次传输,从而提高效率。
-
- Content-Length Doris 需要在发送请求是带有'Content-Length'这个头部信息。如果发送的内容比
- 'Content-Length'要少,那么Palo认为传输出现问题,则提交此次任务失败。
- NOTE: 如果,发送的数据比'Content-Length'要多,那么 Doris 只读取'Content-Length'
- 长度的内容,并进行导入
-
- 参数说明:
- user: 用户如果是在default_cluster中的,user即为user_name。否则为user_name@cluster_name。
-
- label: 用于指定这一批次导入的label号,用于后期进行作业状态查询等。
- 这个参数是必须传入的。
-
- sub_label: 用于指定一个多表导入任务内部的子版本号。对于多表导入的load, 这个参数是必须传入的。
-
- columns: 用于描述导入文件中对应的列名字。
- 如果不传入,那么认为文件中的列顺序与建表的顺序一致,
- 指定的方式为逗号分隔,例如:columns=k1,k2,k3,k4
-
- column_separator: 用于指定列与列之间的分隔符,默认的为'\t'
- NOTE: 需要进行url编码,譬如需要指定'\t'为分隔符,
- 那么应该传入'column_separator=%09'
-
- max_filter_ratio: 用于指定允许过滤不规范数据的最大比例,默认是0,不允许过滤
- 自定义指定应该如下:'max_filter_ratio=0.2',含义是允许20%的错误率
- 在'_multi_start'时传入有效果
-
- NOTE:
- 1. 此种导入方式当前是在一台机器上完成导入工作,因而不宜进行数据量较大的导入工作。
- 建议导入数据量不要超过1GB
-
- 2. 当前无法使用`curl -T "{file1, file2}"`这样的方式提交多个文件,因为curl是将其拆成多个
- 请求发送的,多个请求不能共用一个label号,所以无法使用
-
- 3. 支持类似streaming的方式使用curl来向 Doris 中导入数据,但是,只有等这个streaming结束后 Doris
- 才会发生真实的导入行为,这中方式数据量也不能过大。
-
-## example
-
- 1. 将本地文件'testData1'中的数据导入到数据库'testDb'中'testTbl1'的表,并且
- 把'testData2'的数据导入到'testDb'中的表'testTbl2'(用户是defalut_cluster中的)
- curl --location-trusted -u root -XPOST http://host:port/api/testDb/_multi_start?label=123
- curl --location-trusted -u root -T testData1 http://host:port/api/testDb/testTbl1/_load?label=123\&sub_label=1
- curl --location-trusted -u root -T testData2 http://host:port/api/testDb/testTbl2/_load?label=123\&sub_label=2
- curl --location-trusted -u root -XPOST http://host:port/api/testDb/_multi_commit?label=123
-
- 2. 多表导入中途放弃(用户是defalut_cluster中的)
- curl --location-trusted -u root -XPOST http://host:port/api/testDb/_multi_start?label=123
- curl --location-trusted -u root -T testData1 http://host:port/api/testDb/testTbl1/_load?label=123\&sub_label=1
- curl --location-trusted -u root -XPOST http://host:port/api/testDb/_multi_abort?label=123
-
- 3. 多表导入查看已经提交多少内容(用户是defalut_cluster中的)
- curl --location-trusted -u root -XPOST http://host:port/api/testDb/_multi_start?label=123
- curl --location-trusted -u root -T testData1 http://host:port/api/testDb/testTbl1/_load?label=123\&sub_label=1
- curl --location-trusted -u root -XPOST http://host:port/api/testDb/_multi_desc?label=123
-
-## keyword
- MULTI, MINI, LOAD
-
-# EXPORT
-## description
-
- 该语句用于将指定表的数据导出到指定位置。
- 该功能通过 broker 进程实现。对于不同的目的存储系统,需要部署不同的 broker。可以通过 SHOW BROKER 查看已部署的 broker。
- 这是一个异步操作,任务提交成功则返回。执行后可使用 SHOW EXPORT 命令查看进度。
-
- 语法:
- EXPORT TABLE table_name
- [PARTITION (p1[,p2])]
- TO export_path
- [opt_properties]
- broker;
-
- 1. table_name
- 当前要导出的表的表名,目前支持engine为olap和mysql的表的导出。
-
- 2. partition
- 可以只导出指定表的某些指定分区
-
- 3. export_path
- 导出的路径,需为目录。目前不能导出到本地,需要导出到broker。
-
- 4. opt_properties
- 用于指定一些特殊参数。
- 语法:
- [PROPERTIES ("key"="value", ...)]
-
- 可以指定如下参数:
- column_separator: 指定导出的列分隔符,默认为\t。
- line_delimiter: 指定导出的行分隔符,默认为\n。
- exec_mem_limit: 导出在单个 BE 节点的内存使用上限,默认为 2GB,单位为字节。
- timeout:导入作业的超时时间,默认为1天,单位是秒。
- tablet_num_per_task:每个子任务能分配的最大 Tablet 数量。
-
- 5. broker
- 用于指定导出使用的broker
- 语法:
- WITH BROKER broker_name ("key"="value"[,...])
- 这里需要指定具体的broker name, 以及所需的broker属性
-
- 对于不同存储系统对应的 broker,这里需要输入的参数不同。具体参数可以参阅:`help broker load` 中 broker 所需属性。
-
-## example
-
- 1. 将 testTbl 表中的所有数据导出到 hdfs 上
- EXPORT TABLE testTbl TO "hdfs://hdfs_host:port/a/b/c" WITH BROKER "broker_name" ("username"="xxx", "password"="yyy");
-
- 2. 将 testTbl 表中的分区p1,p2导出到 hdfs 上
-
- EXPORT TABLE testTbl PARTITION (p1,p2) TO "hdfs://hdfs_host:port/a/b/c" WITH BROKER "broker_name" ("username"="xxx", "password"="yyy");
- 3. 将 testTbl 表中的所有数据导出到 hdfs 上,以","作为列分隔符
-
- EXPORT TABLE testTbl TO "hdfs://hdfs_host:port/a/b/c" PROPERTIES ("column_separator"=",") WITH BROKER "broker_name" ("username"="xxx", "password"="yyy");
-
-## keyword
- EXPORT
-
-# SHOW DATABASES
-## description
- 该语句用于展示当前可见的 db
- 语法:
- SHOW DATABASES;
-
-## keyword
- SHOW,DATABASES
-
-# SHOW TABLES
-## description
- 该语句用于展示当前 db 下所有的 table
- 语法:
- SHOW TABLES;
-
-## keyword
- SHOW,TABLES
-
-# SHOW LOAD
-## description
- 该语句用于展示指定的导入任务的执行情况
- 语法:
- SHOW LOAD
- [FROM db_name]
- [
- WHERE
- [LABEL [ = "your_label" | LIKE "label_matcher"]]
- [STATE = ["PENDING"|"ETL"|"LOADING"|"FINISHED"|"CANCELLED"|]]
- ]
- [ORDER BY ...]
- [LIMIT limit][OFFSET offset];
-
- 说明:
- 1) 如果不指定 db_name,使用当前默认db
- 2) 如果使用 LABEL LIKE,则会匹配导入任务的 label 包含 label_matcher 的导入任务
- 3) 如果使用 LABEL = ,则精确匹配指定的 label
- 4) 如果指定了 STATE,则匹配 LOAD 状态
- 5) 可以使用 ORDER BY 对任意列组合进行排序
- 6) 如果指定了 LIMIT,则显示 limit 条匹配记录。否则全部显示
- 7) 如果指定了 OFFSET,则从偏移量offset开始显示查询结果。默认情况下偏移量为0。
- 8) 如果是使用 broker/mini load,则 URL 列中的连接可以使用以下命令查看:
-
- SHOW LOAD WARNINGS ON 'url'
-
-## example
- 1. 展示默认 db 的所有导入任务
- SHOW LOAD;
-
- 2. 展示指定 db 的导入任务,label 中包含字符串 "2014_01_02",展示最老的10个
- SHOW LOAD FROM example_db WHERE LABEL LIKE "2014_01_02" LIMIT 10;
-
- 3. 展示指定 db 的导入任务,指定 label 为 "load_example_db_20140102" 并按 LoadStartTime 降序排序
- SHOW LOAD FROM example_db WHERE LABEL = "load_example_db_20140102" ORDER BY LoadStartTime DESC;
-
- 4. 展示指定 db 的导入任务,指定 label 为 "load_example_db_20140102" ,state 为 "loading", 并按 LoadStartTime 降序排序
- SHOW LOAD FROM example_db WHERE LABEL = "load_example_db_20140102" AND STATE = "loading" ORDER BY LoadStartTime DESC;
-
- 5. 展示指定 db 的导入任务 并按 LoadStartTime 降序排序,并从偏移量5开始显示10条查询结果
- SHOW LOAD FROM example_db ORDER BY LoadStartTime DESC limit 5,10;
- SHOW LOAD FROM example_db ORDER BY LoadStartTime DESC limit 10 offset 5;
-
- 6. 小批量导入是查看导入状态的命令
- curl --location-trusted -u {user}:{passwd} http://{hostname}:{port}/api/{database}/_load_info?label={labelname}
-
-## keyword
- SHOW,LOAD
-
-# SHOW EXPORT
-## description
- 该语句用于展示指定的导出任务的执行情况
- 语法:
- SHOW EXPORT
- [FROM db_name]
- [
- WHERE
- [EXPORT_JOB_ID = your_job_id]
- [STATE = ["PENDING"|"EXPORTING"|"FINISHED"|"CANCELLED"]]
- ]
- [ORDER BY ...]
- [LIMIT limit];
-
- 说明:
- 1) 如果不指定 db_name,使用当前默认db
- 2) 如果指定了 STATE,则匹配 EXPORT 状态
- 3) 可以使用 ORDER BY 对任意列组合进行排序
- 4) 如果指定了 LIMIT,则显示 limit 条匹配记录。否则全部显示
-
-## example
- 1. 展示默认 db 的所有导出任务
- SHOW EXPORT;
-
- 2. 展示指定 db 的导出任务,按 StartTime 降序排序
- SHOW EXPORT FROM example_db ORDER BY StartTime DESC;
-
- 3. 展示指定 db 的导出任务,state 为 "exporting", 并按 StartTime 降序排序
- SHOW EXPORT FROM example_db WHERE STATE = "exporting" ORDER BY StartTime DESC;
-
- 4. 展示指定db,指定job_id的导出任务
- SHOW EXPORT FROM example_db WHERE EXPORT_JOB_ID = job_id;
-
-## keyword
- SHOW,EXPORT
-
-# SHOW DELETE
-## description
- 该语句用于展示已执行成功的历史 delete 任务
- 语法:
- SHOW DELETE [FROM db_name]
-
-## example
- 1. 展示数据库 database 的所有历史 delete 任务
- SHOW DELETE FROM database;
-
-## keyword
- SHOW,DELETE
-
-# SHOW ALTER
-## description
- 该语句用于展示当前正在进行的各类修改任务的执行情况
- 语法:
- SHOW ALTER [CLUSTER | TABLE [COLUMN | ROLLUP] [FROM db_name]];
-
- 说明:
- TABLE COLUMN:展示修改列的 ALTER 任务
- TABLE ROLLUP:展示创建或删除 ROLLUP index 的任务
- 如果不指定 db_name,使用当前默认 db
- CLUSTER: 展示集群操作相关任务情况(仅管理员使用!待实现...)
-
-## example
- 1. 展示默认 db 的所有修改列的任务执行情况
- SHOW ALTER TABLE COLUMN;
-
- 2. 展示指定 db 的创建或删除 ROLLUP index 的任务执行情况
- SHOW ALTER TABLE ROLLUP FROM example_db;
-
- 3. 展示集群操作相关任务(仅管理员使用!待实现...)
- SHOW ALTER CLUSTER;
-
-## keyword
- SHOW,ALTER
-
-# SHOW DATA
-## description
- 该语句用于展示数据量
- 语法:
- SHOW DATA [FROM db_name[.table_name]];
-
- 说明:
- 1. 如果不指定 FROM 子句,使用展示当前 db 下细分到各个 table 的数据量
- 2. 如果指定 FROM 子句,则展示 table 下细分到各个 index 的数据量
- 3. 如果想查看各个 Partition 的大小,请参阅 help show partitions
-
-## example
- 1. 展示默认 db 的各个 table 的数据量及汇总数据量
- SHOW DATA;
-
- 2. 展示指定 db 的下指定表的细分数据量
- SHOW DATA FROM example_db.table_name;
-
-## keyword
- SHOW,DATA
-
-# SHOW PARTITIONS
-## description
- 该语句用于展示分区信息
- 语法:
- SHOW PARTITIONS FROM [db_name.]table_name [PARTITION partition_name];
-
-## example
- 1. 展示指定 db 的下指定表的分区信息
- SHOW PARTITIONS FROM example_db.table_name;
-
- 1. 展示指定 db 的下指定表的指定分区的信息
- SHOW PARTITIONS FROM example_db.table_name PARTITION p1;
-
-## keyword
- SHOW,PARTITIONS
-
-# SHOW TABLET
-## description
- 该语句用于显示 tablet 相关的信息(仅管理员使用)
- 语法:
- SHOW TABLET
- [FROM [db_name.]table_name | tablet_id]
-
-## example
- 1. 显示指定 db 的下指定表所有 tablet 信息
- SHOW TABLET FROM example_db.table_name;
-
- 2. 显示指定 tablet id 为 10000 的 tablet 的父层级 id 信息
- SHOW TABLET 10000;
-
-## keyword
- SHOW,TABLET
-
-# SHOW PROPERTY
-## description
- 该语句用于查看用户的属性
- 语法:
- SHOW PROPERTY [FOR user] [LIKE key]
-
-## example
- 1. 查看 jack 用户的属性
- SHOW PROPERTY FOR 'jack'
-
- 2. 查看 jack 用户导入cluster相关属性
- SHOW PROPERTY FOR 'jack' LIKE '%load_cluster%'
-
-## keyword
- SHOW, PROPERTY
-
-# SHOW BACKUP
-## description
- 该语句用于查看 BACKUP 任务
- 语法:
- SHOW BACKUP [FROM db_name]
-
- 说明:
- 1. Palo 中仅保存最近一次 BACKUP 任务。
- 2. 各列含义如下:
- JobId: 唯一作业id
- SnapshotName: 备份的名称
- DbName: 所属数据库
- State: 当前阶段
- PENDING: 提交作业后的初始状态
- SNAPSHOTING: 执行快照中
- UPLOAD_SNAPSHOT:快照完成,准备上传
- UPLOADING: 快照上传中
- SAVE_META: 将作业元信息保存为本地文件
- UPLOAD_INFO: 上传作业元信息
- FINISHED: 作业成功
- CANCELLED: 作业失败
- BackupObjs: 备份的表和分区
- CreateTime: 任务提交时间
- SnapshotFinishedTime: 快照完成时间
- UploadFinishedTime: 快照上传完成时间
- FinishedTime: 作业结束时间
- UnfinishedTasks: 在 SNAPSHOTING 和 UPLOADING 阶段会显示还未完成的子任务id
- Status: 如果作业失败,显示失败信息
- Timeout: 作业超时时间,单位秒
-
-## example
- 1. 查看 example_db 下最后一次 BACKUP 任务。
- SHOW BACKUP FROM example_db;
-
-## keyword
- SHOW, BACKUP
-
-# SHOW RESTORE
-## description
- 该语句用于查看 RESTORE 任务
- 语法:
- SHOW RESTORE [FROM db_name]
-
- 说明:
- 1. Palo 中仅保存最近一次 RESTORE 任务。
- 2. 各列含义如下:
- JobId: 唯一作业id
- Label: 要恢复的备份的名称
- Timestamp: 要恢复的备份的时间版本
- DbName: 所属数据库
- State: 当前阶段
- PENDING: 提交作业后的初始状态
- SNAPSHOTING: 执行快照中
- DOWNLOAD: 快照完成,准备下载仓库中的快照
- DOWNLOADING: 快照下载中
- COMMIT: 快照下载完成,准备生效
- COMMITING: 生效中
- FINISHED: 作业成功
- CANCELLED: 作业失败
- AllowLoad: 恢复时是否允许导入(当前不支持)
- ReplicationNum: 指定恢复的副本数
- RestoreJobs: 要恢复的表和分区
- CreateTime: 任务提交时间
- MetaPreparedTime: 元数据准备完成时间
- SnapshotFinishedTime: 快照完成时间
- DownloadFinishedTime: 快照下载完成时间
- FinishedTime: 作业结束时间
- UnfinishedTasks: 在 SNAPSHOTING、DOWNLOADING 和 COMMITING 阶段会显示还未完成的子任务id
- Status: 如果作业失败,显示失败信息
- Timeout: 作业超时时间,单位秒
-
-## example
- 1. 查看 example_db 下最近一次 RESTORE 任务。
- SHOW RESTORE FROM example_db;
-
-## keyword
- SHOW, RESTORE
-
-# SHOW REPOSITORIES
-## description
- 该语句用于查看当前已创建的仓库。
- 语法:
- SHOW REPOSITORIES;
-
- 说明:
- 1. 各列含义如下:
- RepoId: 唯一的仓库ID
- RepoName: 仓库名称
- CreateTime: 第一次创建该仓库的时间
- IsReadOnly: 是否为只读仓库
- Location: 仓库中用于备份数据的根目录
- Broker: 依赖的 Broker
- ErrMsg: Palo 会定期检查仓库的连通性,如果出现问题,这里会显示错误信息
-
-## example
- 1. 查看已创建的仓库:
- SHOW REPOSITORIES;
-
-## keyword
- SHOW, REPOSITORY, REPOSITORIES
-
-# SHOW SNAPSHOT
-## description
- 该语句用于查看仓库中已存在的备份。
- 语法:
- SHOW SNAPSHOT ON `repo_name`
- [WHERE SNAPSHOT = "snapshot" [AND TIMESTAMP = "backup_timestamp"]];
-
- 说明:
- 1. 各列含义如下:
- Snapshot: 备份的名称
- Timestamp: 对应备份的时间版本
- Status: 如果备份正常,则显示 OK,否则显示错误信息
-
- 2. 如果指定了 TIMESTAMP,则会额外显示如下信息:
- Database: 备份数据原属的数据库名称
- Details: 以 Json 的形式,展示整个备份的数据目录及文件结构
-
-## example
- 1. 查看仓库 example_repo 中已有的备份:
- SHOW SNAPSHOT ON example_repo;
-
- 2. 仅查看仓库 example_repo 中名称为 backup1 的备份:
- SHOW SNAPSHOT ON example_repo WHERE SNAPSHOT = "backup1";
-
- 2. 查看仓库 example_repo 中名称为 backup1 的备份,时间版本为 "2018-05-05-15-34-26" 的详细信息:
- SHOW SNAPSHOT ON example_repo
- WHERE SNAPSHOT = "backup1" AND TIMESTAMP = "2018-05-05-15-34-26";
-
-## keyword
- SHOW, SNAPSHOT
-
-# RESTORE TABLET
-## description
-
- 该功能用于恢复trash目录中被误删的tablet数据。
-
- 说明:这个功能暂时只在be服务中提供一个http接口。如果要使用,
- 需要向要进行数据恢复的那台be机器的http端口发送restore tablet api请求。api格式如下:
- METHOD: POST
- URI: http://be_host:be_http_port/api/restore_tablet?tablet_id=xxx&schema_hash=xxx
-
-## example
-
- curl -X POST "http://hostname:8088/api/restore_tablet?tablet_id=123456&schema_hash=1111111"
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/BIGINT.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/BIGINT.md
new file mode 100644
index 00000000000000..13b0e928f3d807
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/BIGINT.md
@@ -0,0 +1,7 @@
+# BIGINT
+## description
+ BIGINT
+ 8字节有符号整数,范围[-9223372036854775808, 9223372036854775807]
+
+##keyword
+BIGINT,BIGINT
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/BOOLEAN.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/BOOLEAN.md
new file mode 100644
index 00000000000000..fdf8117aff75e7
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/BOOLEAN.md
@@ -0,0 +1,7 @@
+# BOOLEAN
+## description
+ BOOL, BOOLEN
+ 与TINYINT一样,0代表false,1代表true
+
+##keyword
+BOOLEAN,BOOLEAN
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/CHAR.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/CHAR.md
new file mode 100644
index 00000000000000..edf060a74af7c6
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/CHAR.md
@@ -0,0 +1,7 @@
+# CHAR
+## description
+ CHAR(M)
+ 定长字符串,M代表的是定长字符串的长度。M的范围是1-255
+
+##keyword
+CHAR,CHAR
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/DATE.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/DATE.md
new file mode 100644
index 00000000000000..978c5ef953d962
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/DATE.md
@@ -0,0 +1,15 @@
+# DATE
+## description
+ DATE函数
+ Syntax:
+ DATE(expr)
+ 将输入的类型转化为DATE类型
+ DATE类型
+ 日期类型,目前的取值范围是['1900-01-01', '9999-12-31'], 默认的打印形式是'YYYY-MM-DD'
+
+## example
+ mysql> SELECT DATE('2003-12-31 01:02:03');
+ -> '2003-12-31'
+
+##keyword
+DATE,DATE
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/DATETIME.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/DATETIME.md
new file mode 100644
index 00000000000000..90332c68ca744c
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/DATETIME.md
@@ -0,0 +1,8 @@
+# DATETIME
+## description
+ DATETIME
+ 日期时间类型,取值范围是['1000-01-01 00:00:00', '9999-12-31 23:59:59'].
+ 打印的形式是'YYYY-MM-DD HH:MM:SS'
+
+##keyword
+DATETIME,DATETIME
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/DECIMAL.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/DECIMAL.md
new file mode 100644
index 00000000000000..4807798e46aa22
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/DECIMAL.md
@@ -0,0 +1,8 @@
+# DECIMAL
+## description
+ DECIMAL(M[,D])
+ 高精度定点数,M代表一共有多少个有效数字(precision),D代表小数点后最多有多少数字(scale)
+ M的范围是[1,27], D的范围[1, 9], 另外,M必须要大于等于D的取值。默认的D取值为0
+
+##keyword
+DECIMAL,DECIMAL
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/DOUBLE.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/DOUBLE.md
new file mode 100644
index 00000000000000..17136524824525
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/DOUBLE.md
@@ -0,0 +1,7 @@
+# DOUBLE
+## description
+ DOUBLE
+ 8字节浮点数
+
+##keyword
+DOUBLE,DOUBLE
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/FLOAT.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/FLOAT.md
new file mode 100644
index 00000000000000..6410033ed8d5d1
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/FLOAT.md
@@ -0,0 +1,7 @@
+# FLOAT
+## description
+ FLOAT
+ 4字节浮点数
+
+##keyword
+FLOAT,FLOAT
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/HLL(HyperLogLog).md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/HLL(HyperLogLog).md
new file mode 100644
index 00000000000000..9ad2ed887139d6
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/HLL(HyperLogLog).md
@@ -0,0 +1,9 @@
+# HLL(HyperLogLog)
+## description
+ VARCHAR(M)
+ 变长字符串,M代表的是变长字符串的长度。M的范围是1-16385
+ 用户不需要指定长度和默认值。长度根据数据的聚合程度系统内控制
+ 并且HLL列只能通过配套的hll_union_agg、hll_raw_agg、hll_cardinality、hll_hash进行查询或使用
+
+##keyword
+HLL(HYPERLOGLOG),HLL(HYPERLOGLOG)
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/INT.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/INT.md
new file mode 100644
index 00000000000000..8943fe20afe6da
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/INT.md
@@ -0,0 +1,7 @@
+# INT
+## description
+ INT
+ 4字节有符号整数,范围[-2147483648, 2147483647]
+
+##keyword
+INT,INT
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/SMALLINT.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/SMALLINT.md
new file mode 100644
index 00000000000000..7cb74ce06ffcda
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/SMALLINT.md
@@ -0,0 +1,7 @@
+# SMALLINT
+## description
+ SMALLINT
+ 2字节有符号整数,范围[-32768, 32767]
+
+##keyword
+SMALLINT,SMALLINT
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/TINYINT.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/TINYINT.md
new file mode 100644
index 00000000000000..cbdbba67c9f0a0
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/TINYINT.md
@@ -0,0 +1,7 @@
+# TINYINT
+## description
+ TINYINT
+ 1字节有符号整数,范围[-128, 127]
+
+##keyword
+TINYINT,TINYINT
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/VARCHAR.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/VARCHAR.md
new file mode 100644
index 00000000000000..8e8cbb7d2b5a5a
--- /dev/null
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/VARCHAR.md
@@ -0,0 +1,7 @@
+# VARCHAR
+## description
+ VARCHAR(M)
+ 变长字符串,M代表的是变长字符串的长度。M的范围是1-65535
+
+##keyword
+VARCHAR,VARCHAR
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/help.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/help.md
deleted file mode 100644
index b9f9351d021db0..00000000000000
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Types/help.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# BOOLEAN
-## description
- BOOL, BOOLEN
- 与TINYINT一样,0代表false,1代表true
-
-# TINYINT
-## description
- TINYINT
- 1字节有符号整数,范围[-128, 127]
-
-# SMALLINT
-## description
- SMALLINT
- 2字节有符号整数,范围[-32768, 32767]
-
-# INT
-## description
- INT
- 4字节有符号整数,范围[-2147483648, 2147483647]
-
-# BIGINT
-## description
- BIGINT
- 8字节有符号整数,范围[-9223372036854775808, 9223372036854775807]
-
-# FLOAT
-## description
- FLOAT
- 4字节浮点数
-
-# DOUBLE
-## description
- DOUBLE
- 8字节浮点数
-
-# DECIMAL
-## description
- DECIMAL(M[,D])
- 高精度定点数,M代表一共有多少个有效数字(precision),D代表小数点后最多有多少数字(scale)
- M的范围是[1,27], D的范围[1, 9], 另外,M必须要大于等于D的取值。默认的D取值为0
-
-# CHAR
-## description
- CHAR(M)
- 定长字符串,M代表的是定长字符串的长度。M的范围是1-255
-
-# VARCHAR
-## description
- VARCHAR(M)
- 变长字符串,M代表的是变长字符串的长度。M的范围是1-65535
-
-# DATE
-## description
- DATE函数
- Syntax:
- DATE(expr)
- 将输入的类型转化为DATE类型
- DATE类型
- 日期类型,目前的取值范围是['1900-01-01', '9999-12-31'], 默认的打印形式是'YYYY-MM-DD'
-
-## example
- mysql> SELECT DATE('2003-12-31 01:02:03');
- -> '2003-12-31'
-
-# DATETIME
-## description
- DATETIME
- 日期时间类型,取值范围是['1000-01-01 00:00:00', '9999-12-31 23:59:59'].
- 打印的形式是'YYYY-MM-DD HH:MM:SS'
-
-# HLL(HyperLogLog)
-## description
- VARCHAR(M)
- 变长字符串,M代表的是变长字符串的长度。M的范围是1-16385
- 用户不需要指定长度和默认值。长度根据数据的聚合程度系统内控制
- 并且HLL列只能通过配套的hll_union_agg、hll_raw_agg、hll_cardinality、hll_hash进行查询或使用
-
diff --git a/docs/script/keyword.sh b/docs/script/keyword.sh
deleted file mode 100755
index ceaaa57673610c..00000000000000
--- a/docs/script/keyword.sh
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/bin/bash
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-#this shell adds keywords to MD files without keywords
-
-IFS=`echo -en "\n\b"`
-
-ROOTDIR=`dirname "$0"`
-ROOTDIR=`cd "$ROOT"; pwd`
-
-scandir() {
- for file in `ls $*`; do
- if [[ ! -d $*"/"$file ]]; then
- if [[ $file == *".md" ]]; then
- readfile $*"/"${file}
- fi
- else
- scandir $*"/"${file}
- fi
- done
-}
-
-readfile() {
- local file=$*
- local topic=`cat $file | grep "^#[^#].*" | grep -o "[^# ]\+\( \+[^ ]\+\)*"`
- local keywordNum=`cat $file | grep "^##[^#]*keyword[ ]*$" | wc -l`
- if [[ $keywordNum != 0 || -z $topic ]]; then
- return
- fi
- local SAVEIFS=$IFS
- IFS=' '
- local array=`echo $topic | tr '\`' ' ' | tr ',' ' '`
- local keywords=
- for keyword in ${array[*]}; do
- keywords=$keywords","$keyword
- done
- array=`echo $array | tr '_' ' '`
- for keyword in ${array[*]}; do
- keywords=$keywords","$keyword
- done
- keywords=`echo ${keywords:1} | tr 'a-z' 'A-Z'`
- IFS=$SAVEIFS
- file=`echo $file | sed 's/[ \(\)]/\\\&/g'`
- eval sed -i '"\$a ##keyword"' $file
- eval sed -i '"\$a ${keywords}"' $file
-}
-
-main() {
- scandir $ROOTDIR
-}
-
-main "$@"
-exit 0
diff --git a/docs/script/merge.sh b/docs/script/merge.sh
deleted file mode 100755
index 5d252c7c697b77..00000000000000
--- a/docs/script/merge.sh
+++ /dev/null
@@ -1,164 +0,0 @@
-#!/bin/bash
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-#run split.h first
-#this shell merges user-defined heads in the MD file into "description" head
-################ #################
-# #topic # # #topic #
-# # # #
-# ##syntax # # ##descrption #
-# somelines # # somelines #
-# # # #
-# ##descrption # # syntax #
-# somelines # ==> # somelines #
-# # # #
-# ##example # # parameter #
-# somelines # # somelines #
-# # # #
-# ##parameter # # ##example #
-# somelines # # somelines #
-# # # #
-################ #################
-
-IFS=`echo -en "\n\b"`
-
-ROOTDIR=`dirname "$0"`
-ROOTDIR=`cd "$ROOT"; pwd`
-
-keywords="
-examples
-example
-description
-keywords
-keyword
-url
-"
-
-matchKeyword(){
- for keyword in ${keywords[*]}; do
- if [[ "$1" == $keyword ]]; then
- return 0
- fi
- done
- return 1
-}
-
-merge(){
- file=$*
- sed -n '/^#[^#]/p' $file > ${ROOTDIR}/tempp
- sed -n '/^<>TARGET<>/,/^<>END<>/p' $file >> ${ROOTDIR}/tempp
- sed -n '/^>>>/,/^<<> ${ROOTDIR}/tempp
- sed -n '/^\^\^\^/,/^\$\$\$/p' $file >> ${ROOTDIR}/tempp
- sed -i 's/^<>TARGET<>//;s/^<>END<>//;s/^>>>//;s/^<</;s/^\^\^\^//;s/^\$\$\$//' ${ROOTDIR}/tempp
-}
-
-scandir() {
- for file in `ls $*`; do
- if [[ ! -d $*"/"$file ]]; then
- if [[ $file == *".md" ]]; then
- readfile $*"/"${file}
- fi
- else
- scandir $*"/"${file}
- fi
- done
-}
-
-readfile() {
- local tempfile=${ROOTDIR}"/temp"
- cp $* $tempfile
-
- local row=0
- local headlevel=0
- local style=
- local TotalRow=`wc -l temp | awk '{print $1}'`
- sed -i 's/##[#]\+/##/' $tempfile
- while read line; do
- ((row++))
-
- if [[ $row != $TotalRow && $line != "#"* ]]; then
- continue
- else
- if [[ $headlevel == 2 ]]; then
- case $style in
- "match")
- eval sed -i '"$(($row==$TotalRow?row:row-1))s/^/\$\$\$/"' $tempfile
- ;;
- "unmatch")
- eval sed -i '"$(($row==$TotalRow?row:row-1))s/^/<<"' $tempfile
- ;;
- "description")
- eval sed -i '"$(($row==$TotalRow?row:row-1))s/^/<>END<>/"' $tempfile
- ;;
- *)
- echo "Internal error" ; exit 1
- ;;
- esac
- fi
-
- if [[ $row == $TotalRow && headlevel > 0 ]]; then
- merge $tempfile
- continue
- fi
-
- if [[ $line == "##"* ]]; then
- headlevel=2
- line=`echo ${line:2} | tr '[A-Z]' '[a-z]' | grep -o "[^ ]\+\( \+[^ ]\+\)*"`
- if [[ $line == "description" ]]; then
- eval sed -i '"${row}s/description/description/i"' $tempfile
- elif [[ $line == "examples" ]]; then
- eval sed -i '"${row}s/examples/example/i"' $tempfile
- elif [[ $line == "keywords" ]]; then
- eval sed -i '"${row}s/keywords/keyword/i"' $tempfile
- fi
- matchKeyword ${line}
- if [[ $? == 1 ]]; then
- style="unmatch"
- eval sed -i '"${row}s/^##/>>>/"' $tempfile
- else
- if [[ $line == "description" ]]; then
- style="description"
- eval sed -i '"${row}s/^/<>TARGET<>/"' $tempfile
- continue
- fi
- style="match"
- eval sed -i '"${row}s/^/\^\^\^/"' $tempfile
- fi
- elif [[ $line == "#"* ]]; then
- if [[ headlevel == 0 ]]; then
- headlevel=1
- continue
- fi
- headleve=1
- fi
- fi
- done < $tempfile
- if [[ -f $tempfile ]]; then
- rm $tempfile
- fi
- if [[ -f ${ROOTDIR}/tempp ]]; then
- cp ${ROOTDIR}/tempp $* && rm ${ROOTDIR}/tempp
- fi
-}
-
-main() {
- scandir $ROOTDIR
-}
-
-main "$@"
-exit 0
diff --git a/docs/script/split.sh b/docs/script/split.sh
deleted file mode 100755
index 18c7a6ab997f93..00000000000000
--- a/docs/script/split.sh
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/bin/bash
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-#this shell splits topics in the same MD file
-IFS=`echo -en "\n\b"`
-
-ROOTDIR=`dirname "$0"`
-ROOTDIR=`cd "$ROOT"; pwd`
-
-scandir() {
- for file in `ls $*`; do
- if [[ ! -d $*"/"$file ]]; then
- if [[ $file == *".md" ]]; then
- splitfile $*"/"${file}
- fi
- else
- scandir $*"/"${file}
- fi
- done
-}
-
-splitfile() {
- local file=$*
- local filedir=${file%/*}
- local evalfile=`echo $file | sed 's/[ \(\)]/\\\&/g'`
-
- local row=0
- local split=1
- local name=
- local TotalRow=`wc -l $file | awk '{print $1}'`
- local TopicNum=`grep -o '^#[^#].*' $file | wc -l`
- if [ $TopicNum -lt 2 ]; then
- return
- fi
- while read line; do
- ((row++))
-
- if [[ $row == $TotalRow || $line =~ ^#[^#].* ]]; then
- if [[ -n $name && $split != $row ]]; then
- eval awk '"NR==${split},NR==$(($row==$TotalRow?row:row-1))"' ${evalfile} > ${ROOTDIR}/tempp
- cp ${ROOTDIR}/tempp ${filedir}/${name}.md
- fi
- name=`echo $line | grep -o "[^# ]\+\( \+[^ ]\+\)*"`
- split=$row
- fi
- done < $file
- if [[ -f ${ROOTDIR}/tempp ]]; then
- rm ${ROOTDIR}/tempp
- fi
- rm $file
-}
-
-main() {
- scandir $ROOTDIR
-}
-
-main "$@"
-exit 0
From 707614b0750391066725d699ab3412efd2f4060a Mon Sep 17 00:00:00 2001
From: xy720
Date: Tue, 6 Aug 2019 19:08:46 +0800
Subject: [PATCH 5/8] change text format to add multi-level head
---
.../sql-functions/aggregate-functions/avg.md | 8 ++++----
.../sql-functions/aggregate-functions/count.md | 6 +++---
.../aggregate-functions/count_distinct.md | 6 +++---
.../aggregate-functions/hll_union_agg.md | 8 ++++----
.../sql-functions/aggregate-functions/max.md | 6 +++---
.../sql-functions/aggregate-functions/min.md | 6 +++---
.../sql-functions/aggregate-functions/ndv.md | 8 ++++----
.../aggregate-functions/percentile_approx.md | 8 ++++----
.../aggregate-functions/stddev.md | 6 +++---
.../aggregate-functions/stddev_samp.md | 6 +++---
.../sql-functions/aggregate-functions/sum.md | 6 +++---
.../aggregate-functions/var_samp.md | 6 +++---
.../aggregate-functions/variance.md | 6 +++---
.../cn/sql-reference/sql-functions/cast.md | 18 +++++++++---------
.../date-time-functions/current_timestamp.md | 6 +++---
.../date-time-functions/date_add.md | 8 ++++----
.../date-time-functions/date_format.md | 8 ++++----
.../date-time-functions/date_sub.md | 8 ++++----
.../date-time-functions/datediff.md | 8 ++++----
.../sql-functions/date-time-functions/day.md | 8 ++++----
.../date-time-functions/dayname.md | 8 ++++----
.../date-time-functions/dayofmonth.md | 8 ++++----
.../date-time-functions/dayofweek.md | 8 ++++----
.../date-time-functions/dayofyear.md | 8 ++++----
.../date-time-functions/from_days.md | 6 +++---
.../date-time-functions/from_unixtime.md | 8 ++++----
.../sql-functions/date-time-functions/month.md | 8 ++++----
.../date-time-functions/monthname.md | 8 ++++----
.../sql-functions/date-time-functions/now.md | 6 +++---
.../date-time-functions/str_to_date.md | 8 ++++----
.../date-time-functions/timediff.md | 8 ++++----
.../date-time-functions/to_days.md | 8 ++++----
.../date-time-functions/unix_timestamp.md | 8 ++++----
.../date-time-functions/utc_timestamp.md | 8 ++++----
.../date-time-functions/workofyear.md | 8 ++++----
.../sql-functions/date-time-functions/year.md | 8 ++++----
.../spatial-functions/st_astext.md | 6 +++---
.../spatial-functions/st_circle.md | 8 ++++----
.../spatial-functions/st_contains.md | 6 +++---
.../spatial-functions/st_distance_sphere.md | 6 +++---
.../spatial-functions/st_geometryfromtext.md | 6 +++---
.../spatial-functions/st_linefromtext.md | 6 +++---
.../spatial-functions/st_point.md | 8 ++++----
.../spatial-functions/st_polygon.md | 6 +++---
.../sql-functions/spatial-functions/st_x.md | 6 +++---
.../sql-functions/spatial-functions/st_y.md | 6 +++---
.../sql-functions/string-functions/ascii.md | 6 +++---
.../sql-functions/string-functions/concat.md | 6 +++---
.../string-functions/concat_ws.md | 8 ++++----
.../string-functions/find_in_set.md | 6 +++---
.../string-functions/get_json_double.md | 8 ++++----
.../string-functions/get_json_int.md | 8 ++++----
.../string-functions/get_json_string.md | 8 ++++----
.../string-functions/group_concat.md | 6 +++---
.../sql-functions/string-functions/instr.md | 6 +++---
.../sql-functions/string-functions/lcase.md | 6 +++---
.../sql-functions/string-functions/left.md | 6 +++---
.../sql-functions/string-functions/length.md | 6 +++---
.../sql-functions/string-functions/locate.md | 6 +++---
.../sql-functions/string-functions/lower.md | 6 +++---
.../sql-functions/string-functions/lpad.md | 6 +++---
.../sql-functions/string-functions/ltrim.md | 6 +++---
.../string-functions/money_format.md | 6 +++---
.../string-functions/regexp_extract.md | 6 +++---
.../string-functions/regexp_replace.md | 6 +++---
.../sql-functions/string-functions/repeat.md | 6 +++---
.../sql-functions/string-functions/right.md | 6 +++---
.../string-functions/split_part.md | 6 +++---
.../sql-functions/string-functions/strleft.md | 6 +++---
.../sql-functions/string-functions/strright.md | 6 +++---
.../Account Management/SHOW ROLES.md | 2 +-
.../Data Definition/create-function.md | 14 +++++++-------
.../Data Definition/drop-function.md | 10 +++++-----
.../Data Definition/show-function.md | 14 +++++++-------
.../sql-statements/Data Manipulation/insert.md | 7 +++----
.../apache/doris/common/MarkDownParser.java | 8 +++++++-
76 files changed, 275 insertions(+), 270 deletions(-)
mode change 100644 => 100755 fe/src/main/java/org/apache/doris/common/MarkDownParser.java
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/avg.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/avg.md
index e10a5c91b1c373..16cc5e722cc94b 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/avg.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/avg.md
@@ -1,13 +1,13 @@
# AVG
## description
+### Syntax
-用于返回选中字段的平均值
+`AVG([DISTINCT] expr)`
-可选字段DISTINCT参数可以用来返回去重平均值
- Syntax
+用于返回选中字段的平均值
-`AVG([DISTINCT] expr)`
+可选字段DISTINCT参数可以用来返回去重平均值
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/count.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/count.md
index 39562a563b6710..f452fa21c34019 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/count.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/count.md
@@ -1,11 +1,11 @@
# COUNT
## description
+### Syntax
-用于返回满足要求的行的数目
+`COUNT([DISTINCT] expr)`
- Syntax
-`COUNT([DISTINCT] expr)`
+用于返回满足要求的行的数目
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/count_distinct.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/count_distinct.md
index b666220ca70185..a5d21e604be4a4 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/count_distinct.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/count_distinct.md
@@ -1,11 +1,11 @@
# COUNT_DISTINCT
## description
+### Syntax
-用于返回满足要求的行的数目,或者非NULL行的数目
+`COUNT_DISTINCT(expr)`
- Syntax
-`COUNT_DISTINCT(expr)`
+用于返回满足要求的行的数目,或者非NULL行的数目
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/hll_union_agg.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/hll_union_agg.md
index 06d27b3ecab07f..6d3b1ebdda7058 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/hll_union_agg.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/hll_union_agg.md
@@ -1,5 +1,9 @@
# HLL_UNION_AGG
## description
+### Syntax
+
+`HLL_UNION_AGG(hll)`
+
HLL是基于HyperLogLog算法的工程实现,用于保存HyperLogLog计算过程的中间结果
@@ -9,10 +13,6 @@ HLL是基于HyperLogLog算法的工程实现,用于保存HyperLogLog计算过
导入的时候通过hll_hash函数来指定数据中哪一列用于生成hll列,它常用于替代count distinct,通过结合rollup在业务上用于快速计算uv等
- Syntax
-
-`HLL_UNION_AGG(hll)`
-
## example
```
MySQL > select HLL_UNION_AGG(uv_set) from test_uv;;
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/max.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/max.md
index 0cb3acbfad2ebf..29c2fdeab64b6f 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/max.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/max.md
@@ -1,11 +1,11 @@
# MAX
## description
+### Syntax
-返回expr表达式的最大值
+`MAX(expr)`
- Syntax
-`MAX(expr)`
+返回expr表达式的最大值
## example
```
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/min.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/min.md
index 275d9432fa08c9..be805ea192d848 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/min.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/min.md
@@ -1,11 +1,11 @@
# MIN
## description
+### Syntax
-返回expr表达式的最小值
+`MIN(expr)`
- Syntax
-`MIN(expr)`
+返回expr表达式的最小值
## example
```
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/ndv.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/ndv.md
index 3b01515a9379fa..62eebf873b3bc8 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/ndv.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/ndv.md
@@ -1,13 +1,13 @@
# NDV
## description
+### Syntax
-返回类似于 COUNT(DISTINCT col) 结果的近似值聚合函数。
+`NDV(expr)`
-它比 COUNT 和 DISTINCT 组合的速度更快,并使用固定大小的内存,因此对于高基数的列可以使用更少的内存。
- Syntax
+返回类似于 COUNT(DISTINCT col) 结果的近似值聚合函数。
-`NDV(expr)`
+它比 COUNT 和 DISTINCT 组合的速度更快,并使用固定大小的内存,因此对于高基数的列可以使用更少的内存。
## example
```
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/percentile_approx.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/percentile_approx.md
index fef57b4cfc40ee..f47ce1ce1430b3 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/percentile_approx.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/percentile_approx.md
@@ -1,13 +1,13 @@
# PERCENTILE_APPROX
## description
+### Syntax
-返回第p个百分位点的近似值,p的值介于0到1之间
+`PERCENTILE_APPROX(expr, DOUBLE p)`
-该函数使用固定大小的内存,因此对于高基数的列可以使用更少的内存,可用于计算tp99等统计值
- Syntax
+返回第p个百分位点的近似值,p的值介于0到1之间
-`PERCENTILE_APPROX(expr, DOUBLE p)`
+该函数使用固定大小的内存,因此对于高基数的列可以使用更少的内存,可用于计算tp99等统计值
## example
```
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/stddev.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/stddev.md
index fe1d990bf4ed47..f3db9b673e3cb0 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/stddev.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/stddev.md
@@ -1,11 +1,11 @@
# STDDEV,STDDEV_POP
## description
+### Syntax
-返回expr表达式的标准差
+`STDDEV(expr)`
- Syntax
-`STDDEV(expr)`
+返回expr表达式的标准差
## example
```
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/stddev_samp.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/stddev_samp.md
index d28123d13745d6..2af5308e97d032 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/stddev_samp.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/stddev_samp.md
@@ -1,11 +1,11 @@
# STDDEV_SAMP
## description
+### Syntax
-返回expr表达式的样本标准差
+`STDDEV_SAMP(expr)`
- Syntax
-`STDDEV_SAMP(expr)`
+返回expr表达式的样本标准差
## example
```
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/sum.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/sum.md
index e69589a2444744..fb71b5154fc421 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/sum.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/sum.md
@@ -1,11 +1,11 @@
# SUM
## description
+### Syntax
-用于返回选中字段所有值的和
+`SUM(expr)`
- Syntax
-`SUM(expr)`
+用于返回选中字段所有值的和
## example
```
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/var_samp.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/var_samp.md
index 58ba697e283355..94d9f03270bfec 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/var_samp.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/var_samp.md
@@ -1,11 +1,11 @@
# VAR_SAMP,VARIANCE_SAMP
## description
+### Syntax
-返回expr表达式的样本方差
+`VAR_SAMP(expr)`
- Syntax
-`VAR_SAMP(expr)`
+返回expr表达式的样本方差
## example
```
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/variance.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/variance.md
index a20b18ebad8526..7a46a827b5f624 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/variance.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/variance.md
@@ -1,11 +1,11 @@
# VARIANCE,VAR_POP,VARIANCE_POP
## description
+### Syntax
-返回expr表达式的方差
+`VARIANCE(expr)`
- Syntax
-`VARIANCE(expr)`
+返回expr表达式的方差
## example
```
diff --git a/docs/documentation/cn/sql-reference/sql-functions/cast.md b/docs/documentation/cn/sql-reference/sql-functions/cast.md
index ad0b58a79b9e40..4ac9937e0f5bb0 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/cast.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/cast.md
@@ -1,24 +1,24 @@
# CAST
## description
-
-将 input 转成 指定的 type
-
## description
-
-将当前列 input 转换为 BIGINT 类型
-
- Syntax
+### Syntax
```
cast (input as type)
```
- BIGINT type
+### BIGINT type
- Syntax
+### Syntax
``` cast (input as BIGINT) ```
+
+将 input 转成 指定的 type
+
+
+将当前列 input 转换为 BIGINT 类型
+
## example
1. 转常量,或表中某列
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/current_timestamp.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/current_timestamp.md
index 2524ad6805eeee..85afc0f01b4f7b 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/current_timestamp.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/current_timestamp.md
@@ -1,11 +1,11 @@
# current_timestamp
## description
+### Syntax
-获得当前的时间,以Datetime类型返回
+`DATETIME CURRENT_TIMESTAMP()`
- Syntax
-`DATETIME CURRENT_TIMESTAMP()`
+获得当前的时间,以Datetime类型返回
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_add.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_add.md
index e86c1d7ede9179..ecb45512c7ff18 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_add.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_add.md
@@ -1,5 +1,9 @@
# date_add
## description
+### Syntax
+
+`INT DATE_ADD(DATETIME date,INTERVAL expr type)`
+
向日期添加指定的时间间隔。
@@ -9,10 +13,6 @@ expr 参数是您希望添加的时间间隔。
type 参数可以是下列值:YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
- Syntax
-
-`INT DATE_ADD(DATETIME date,INTERVAL expr type)`
-
## example
```
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_format.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_format.md
index c90482e4421f05..8a05cf0d8f124b 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_format.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_format.md
@@ -1,5 +1,9 @@
# date_format
## description
+### Syntax
+
+`VARCHAR DATE_FORMAT(DATETIME date, VARCHAR format)`
+
将日期类型按照format的类型转化位字符串,
当前支持最大128字节的字符串,如果返回值长度超过128,则返回NULL
@@ -70,10 +74,6 @@ date 参数是合法的日期。format 规定日期/时间的输出格式。
%y | 年,2 位
- Syntax
-
-`VARCHAR DATE_FORMAT(DATETIME date, VARCHAR format)`
-
## example
```
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_sub.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_sub.md
index 0f3eb613206f6e..6d58475ca9985f 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_sub.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/date_sub.md
@@ -1,5 +1,9 @@
# date_sub
## description
+### Syntax
+
+`INT DATE_SUB(DATETIME date,INTERVAL expr type)`
+
从日期减去指定的时间间隔
@@ -9,10 +13,6 @@ expr 参数是您希望添加的时间间隔。
type 参数可以是下列值:YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
- Syntax
-
-`INT DATE_SUB(DATETIME date,INTERVAL expr type)`
-
## example
```
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/datediff.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/datediff.md
index fb6e1a00398452..02484bfe5da1aa 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/datediff.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/datediff.md
@@ -1,5 +1,9 @@
# datediff
## description
+### Syntax
+
+`DATETIME DATEDIFF(DATETIME expr1,DATETIME expr2)`
+
计算expr1 - expr2,结果精确到天。
@@ -7,10 +11,6 @@ expr1 和 expr2 参数是合法的日期或日期/时间表达式。
注释:只有值的日期部分参与计算。
- Syntax
-
-`DATETIME DATEDIFF(DATETIME expr1,DATETIME expr2)`
-
## example
```
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/day.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/day.md
index a59c3ede489f04..42f20893b6effe 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/day.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/day.md
@@ -1,13 +1,13 @@
# day
## description
+### Syntax
-获得日期中的天信息,返回值范围从1-31。
+`INT DAY(DATETIME date)`
-参数为Date或者Datetime类型
- Syntax
+获得日期中的天信息,返回值范围从1-31。
-`INT DAY(DATETIME date)`
+参数为Date或者Datetime类型
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayname.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayname.md
index 450d417b798d42..2d0a08a0c7b566 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayname.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayname.md
@@ -1,13 +1,13 @@
# dayname
## description
+### Syntax
-返回日期对应的日期名字
+`VARCHAR DAYNAME(DATE)`
-参数为Date或者Datetime类型
- Syntax
+返回日期对应的日期名字
-`VARCHAR DAYNAME(DATE)`
+参数为Date或者Datetime类型
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofmonth.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofmonth.md
index a75bd2799e64a9..efe881d4a93c19 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofmonth.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofmonth.md
@@ -1,13 +1,13 @@
# dayofmonth
## description
+### Syntax
-获得日期中的天信息,返回值范围从1-31。
+`INT DAYOFMONTH(DATETIME date)`
-参数为Date或者Datetime类型
- Syntax
+获得日期中的天信息,返回值范围从1-31。
-`INT DAYOFMONTH(DATETIME date)`
+参数为Date或者Datetime类型
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofweek.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofweek.md
index 6806d0cc55e5bf..b314fa3ddf5b8d 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofweek.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofweek.md
@@ -1,13 +1,13 @@
# dayofweek
## description
+### Syntax
-DAYOFWEEK函数返回日期的工作日索引值,即星期日为1,星期一为2,星期六为7
+`INT dayofweek(DATETIME date)`
-参数为Date或者Datetime类型
- Syntax
+DAYOFWEEK函数返回日期的工作日索引值,即星期日为1,星期一为2,星期六为7
-`INT dayofweek(DATETIME date)`
+参数为Date或者Datetime类型
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofyear.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofyear.md
index e060a7326c1ce6..e205909690b9a0 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofyear.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofyear.md
@@ -1,13 +1,13 @@
# dayofyear
## description
+### Syntax
-获得日期中对应当年中的哪一天。
+`INT DAYOFYEAR(DATETIME date)`
-参数为Date或者Datetime类型
- Syntax
+获得日期中对应当年中的哪一天。
-`INT DAYOFYEAR(DATETIME date)`
+参数为Date或者Datetime类型
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/from_days.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/from_days.md
index aea93d22683bc0..741e9ee4b2527d 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/from_days.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/from_days.md
@@ -1,11 +1,11 @@
# from_days
## description
+### Syntax
-通过距离0000-01-01日的天数计算出哪一天
+`DATE FROM_DAYS(INT N)`
- Syntax
-`DATE FROM_DAYS(INT N)`
+通过距离0000-01-01日的天数计算出哪一天
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/from_unixtime.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/from_unixtime.md
index 5a9a208d428dd2..9ac15232858f67 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/from_unixtime.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/from_unixtime.md
@@ -1,5 +1,9 @@
# from_unixtime
## description
+### Syntax
+
+`DATETIME FROM_UNIXTIME(INT unix_timestamp[, VARCHAR string_format])`
+
将unix时间戳转化位对应的time格式,返回的格式由string_format指定
@@ -11,10 +15,6 @@
其余string_format格式是非法的,返回NULL
- Syntax
-
-`DATETIME FROM_UNIXTIME(INT unix_timestamp[, VARCHAR string_format])`
-
## example
```
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/month.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/month.md
index b03bcfeccbf711..82b0d0842afac6 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/month.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/month.md
@@ -1,13 +1,13 @@
# month
## description
+### Syntax
-返回时间类型中的月份信息,范围是1, 12
+`INT MONTH(DATETIME date)`
-参数为Date或者Datetime类型
- Syntax
+返回时间类型中的月份信息,范围是1, 12
-`INT MONTH(DATETIME date)`
+参数为Date或者Datetime类型
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/monthname.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/monthname.md
index 54036e0b4b6339..fc4c11ad10d7d0 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/monthname.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/monthname.md
@@ -1,13 +1,13 @@
# monthname
## description
+### Syntax
-返回日期对应的月份名字
+`VARCHAR MONTHNAME(DATE)`
-参数为Date或者Datetime类型
- Syntax
+返回日期对应的月份名字
-`VARCHAR MONTHNAME(DATE)`
+参数为Date或者Datetime类型
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/now.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/now.md
index 0a358030b7b926..3454d88f4c3bb0 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/now.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/now.md
@@ -1,11 +1,11 @@
# now
## description
+### Syntax
-获得当前的时间,以Datetime类型返回
+`DATETIME NOW()`
- Syntax
-`DATETIME NOW()`
+获得当前的时间,以Datetime类型返回
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/str_to_date.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/str_to_date.md
index 15acc87ac5ecce..1f7ca178525e46 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/str_to_date.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/str_to_date.md
@@ -1,13 +1,13 @@
# str_to_date
## description
+### Syntax
-通过format指定的方式将str转化为DATE类型,如果转化结果不对返回NULL
+`DATETIME STR_TO_DATE(VARCHAR str, VARCHAR format)`
-支持的format格式与date_format一致
- Syntax
+通过format指定的方式将str转化为DATE类型,如果转化结果不对返回NULL
-`DATETIME STR_TO_DATE(VARCHAR str, VARCHAR format)`
+支持的format格式与date_format一致
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/timediff.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/timediff.md
index 20d3efa76013e6..09ed793f1ba52e 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/timediff.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/timediff.md
@@ -1,5 +1,9 @@
# timediff
## description
+### Syntax
+
+`TIME TIMEDIFF(DATETIME expr1, DATETIME expr2)`
+
TIMEDIFF返回两个DATETIME之间的差值
@@ -7,10 +11,6 @@ TIMEDIFF函数返回表示为时间值的expr1 - expr2的结果,返回值为TI
其结果被限制在从-838:59:59到838:59:59之间的TIME值范围内
- Syntax
-
-`TIME TIMEDIFF(DATETIME expr1, DATETIME expr2)`
-
## example
```
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/to_days.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/to_days.md
index e95c874914784a..4dc6894696c849 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/to_days.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/to_days.md
@@ -1,13 +1,13 @@
# to_days
## description
+### Syntax
-返回date距离0000-01-01的天数
+`INT TO_DAYS(DATETIME date)`
-参数为Date或者Datetime类型
- Syntax
+返回date距离0000-01-01的天数
-`INT TO_DAYS(DATETIME date)`
+参数为Date或者Datetime类型
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/unix_timestamp.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/unix_timestamp.md
index 1bdc57a5490f93..fc63e69e07fb42 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/unix_timestamp.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/unix_timestamp.md
@@ -1,5 +1,9 @@
# unix_timestamp
## description
+### Syntax
+
+`INT UNIX_TIMESTAMP(), UNIX_TIMESTAMP(DATETIME date)`
+
将Date或者Datetime类型转化为unix时间戳
@@ -7,10 +11,6 @@
参数需要是Date或者Datetime类型
- Syntax
-
-`INT UNIX_TIMESTAMP(), UNIX_TIMESTAMP(DATETIME date)`
-
## example
```
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/utc_timestamp.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/utc_timestamp.md
index d2cdd5dcd41393..c61d7a2da0ec55 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/utc_timestamp.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/utc_timestamp.md
@@ -1,5 +1,9 @@
# utc_timestamp
## description
+### Syntax
+
+`DATETIME UTC_TIMESTAMP()`
+
返回当前UTC日期和时间在 "YYYY-MM-DD HH:MM:SS" 或
@@ -7,10 +11,6 @@
根据该函数是否用在字符串或数字语境中
- Syntax
-
-`DATETIME UTC_TIMESTAMP()`
-
## example
```
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/workofyear.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/workofyear.md
index bb904f63425432..6226292752104a 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/workofyear.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/workofyear.md
@@ -1,14 +1,14 @@
# weekofyear
## description
+### Syntax
+`INT WEEKOFYEAR(DATETIME date)`
-获得一年中的第几周
-参数为Date或者Datetime类型
- Syntax
+获得一年中的第几周
-`INT WEEKOFYEAR(DATETIME date)`
+参数为Date或者Datetime类型
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/year.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/year.md
index 324c24cf57e1f7..3662a773977c9e 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/year.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/year.md
@@ -1,13 +1,13 @@
# year
## description
+### Syntax
-返回date类型的year部分,范围从1000-9999
+`INT YEAR(DATETIME date)`
-参数为Date或者Datetime类型
- Syntax
+返回date类型的year部分,范围从1000-9999
-`INT YEAR(DATETIME date)`
+参数为Date或者Datetime类型
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_astext.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_astext.md
index a4dc5b6e37a571..c29c3c984b9db9 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_astext.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_astext.md
@@ -1,11 +1,11 @@
# `ST_AsText`,`ST_AsWKT`
## description
+### Syntax
-将一个几何图形转化为WKT(Well Known Text)的表示形式
+`VARCHAR ST_AsText(GEOMETRY geo)`
- Syntax
-`VARCHAR ST_AsText(GEOMETRY geo)`
+将一个几何图形转化为WKT(Well Known Text)的表示形式
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_circle.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_circle.md
index 0c02204403c06b..b244e04366deb1 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_circle.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_circle.md
@@ -1,12 +1,12 @@
# `ST_Circle`
## description
+### Syntax
-将一个WKT(Well Known Text)转化为地球球面上的一个圆。其中`center_lng`表示的圆心的经度,
-`center_lat`表示的是圆心的纬度,`radius`表示的是圆的半径,单位是米
+`GEOMETRY ST_Circle(DOUBLE center_lng, DOUBLE center_lat, DOUBLE radius)`
- Syntax
-`GEOMETRY ST_Circle(DOUBLE center_lng, DOUBLE center_lat, DOUBLE radius)`
+将一个WKT(Well Known Text)转化为地球球面上的一个圆。其中`center_lng`表示的圆心的经度,
+`center_lat`表示的是圆心的纬度,`radius`表示的是圆的半径,单位是米
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_contains.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_contains.md
index 5269281c0c6254..ce47c52a45f148 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_contains.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_contains.md
@@ -1,11 +1,11 @@
# `ST_Contains`
## description
+### Syntax
-判断几何图形shape1是否完全能够包含几何图形shape2
+`BOOL ST_Contains(GEOMETRY shape1, GEOMETRY shape2)`
- Syntax
-`BOOL ST_Contains(GEOMETRY shape1, GEOMETRY shape2)`
+判断几何图形shape1是否完全能够包含几何图形shape2
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_distance_sphere.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_distance_sphere.md
index fc48a1ae2e3e64..27b085861463b0 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_distance_sphere.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_distance_sphere.md
@@ -1,11 +1,11 @@
# `ST_Distance_Sphere`
## description
+### Syntax
-计算地球两点之间的球面距离,单位为 米。传入的参数分别为X点的经度,X点的纬度,Y点的经度,Y点的纬度。
+`DOUBLE ST_Distance_Sphere(DOUBLE x_lng, DOUBLE x_lat, DOUBLE y_lng, DOUBLE x_lat)`
- Syntax
-`DOUBLE ST_Distance_Sphere(DOUBLE x_lng, DOUBLE x_lat, DOUBLE y_lng, DOUBLE x_lat)`
+计算地球两点之间的球面距离,单位为 米。传入的参数分别为X点的经度,X点的纬度,Y点的经度,Y点的纬度。
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_geometryfromtext.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_geometryfromtext.md
index bdd99cbdc759fb..9f223c55ffa68f 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_geometryfromtext.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_geometryfromtext.md
@@ -1,11 +1,11 @@
# `ST_GeometryFromText`,`ST_GeomFromText`
## description
+### Syntax
-将一个WKT(Well Known Text)转化为对应的内存的几何形式
+`GEOMETRY ST_GeometryFromText(VARCHAR wkt)`
- Syntax
-`GEOMETRY ST_GeometryFromText(VARCHAR wkt)`
+将一个WKT(Well Known Text)转化为对应的内存的几何形式
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_linefromtext.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_linefromtext.md
index bad31994e470dd..29799f48e1e60c 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_linefromtext.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_linefromtext.md
@@ -1,11 +1,11 @@
# `ST_LineFromText`,`ST_LineStringFromText`
## description
+### Syntax
-将一个WKT(Well Known Text)转化为一个Line形式的内存表现形式
+`GEOMETRY ST_LineFromText(VARCHAR wkt)`
- Syntax
-`GEOMETRY ST_LineFromText(VARCHAR wkt)`
+将一个WKT(Well Known Text)转化为一个Line形式的内存表现形式
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_point.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_point.md
index 19a43f9f1a0457..876ac0035b12e3 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_point.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_point.md
@@ -1,12 +1,12 @@
# `ST_Point`
## description
+### Syntax
-通过给定的X坐标值,Y坐标值返回对应的Point。
-当前这个值只是在球面集合上有意义,X/Y对应的是经度/纬度(longitude/latitude)
+`POINT ST_Point(DOUBLE x, DOUBLE y)`
- Syntax
-`POINT ST_Point(DOUBLE x, DOUBLE y)`
+通过给定的X坐标值,Y坐标值返回对应的Point。
+当前这个值只是在球面集合上有意义,X/Y对应的是经度/纬度(longitude/latitude)
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_polygon.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_polygon.md
index 74cd5a93da14ac..35392fd8c9683c 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_polygon.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_polygon.md
@@ -1,11 +1,11 @@
# `ST_Polygon`,`ST_PolyFromText`,`ST_PolygonFromText`
## description
+### Syntax
-将一个WKT(Well Known Text)转化为对应的多边形内存形式
+`GEOMETRY ST_Polygon(VARCHAR wkt)`
- Syntax
-`GEOMETRY ST_Polygon(VARCHAR wkt)`
+将一个WKT(Well Known Text)转化为对应的多边形内存形式
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_x.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_x.md
index 523aecae93f270..f819e697c4f876 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_x.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_x.md
@@ -1,11 +1,11 @@
# `ST_X`
## description
+### Syntax
-当point是一个合法的POINT类型时,返回对应的X坐标值
+`DOUBLE ST_X(POINT point)`
- Syntax
-`DOUBLE ST_X(POINT point)`
+当point是一个合法的POINT类型时,返回对应的X坐标值
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_y.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_y.md
index 6b23348b23a620..a8bc23b257ae28 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_y.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_y.md
@@ -1,11 +1,11 @@
# `ST_Y`
## description
+### Syntax
-当point是一个合法的POINT类型时,返回对应的Y坐标值
+`DOUBLE ST_Y(POINT point)`
- Syntax
-`DOUBLE ST_Y(POINT point)`
+当point是一个合法的POINT类型时,返回对应的Y坐标值
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/ascii.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/ascii.md
index 832d791418ae10..0b1c2626dad3f2 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/ascii.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/ascii.md
@@ -1,11 +1,11 @@
# ascii
## description
+### Syntax
-返回字符串第一个字符对应的 ascii 码
+`INT ascii(VARCHAR str)`
- Syntax
-`INT ascii(VARCHAR str)`
+返回字符串第一个字符对应的 ascii 码
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/concat.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/concat.md
index 59600c30a8973c..85056e2c969821 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/concat.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/concat.md
@@ -1,11 +1,11 @@
# concat
## description
+### Syntax
-将多个字符串连接起来, 如果参数中任意一个值是 NULL,那么返回的结果就是 NULL
+`VARCHAR concat(VARCHAR,...)`
- Syntax
-`VARCHAR concat(VARCHAR,...)`
+将多个字符串连接起来, 如果参数中任意一个值是 NULL,那么返回的结果就是 NULL
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/concat_ws.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/concat_ws.md
index 83e38b7b4e2aaf..44784208fae6ad 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/concat_ws.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/concat_ws.md
@@ -1,14 +1,14 @@
# concat_ws
## description
+### Syntax
+
+`VARCHAR concat_ws(VARCHAR sep, VARCHAR str,...)`
+
使用第一个参数 sep 作为连接符,将第二个参数以及后续所有参数拼接成一个字符串.
如果分隔符是 NULL,返回 NULL。
`concat_ws`函数不会跳过空字符串,会跳过 NULL 值
- Syntax
-
-`VARCHAR concat_ws(VARCHAR sep, VARCHAR str,...)`
-
## example
```
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/find_in_set.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/find_in_set.md
index 15e992ea5642d4..e66d41d7ac7d6a 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/find_in_set.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/find_in_set.md
@@ -1,11 +1,11 @@
# find_in_set
## description
+### Syntax
-返回 strlist 中第一次出现 str 的位置(从1开始计数)。strlist 是用逗号分隔的字符串。如果没有找到,返回0。任意参数为 NULL ,返回 NULL。
+`INT find_in_set(VARCHAR str, VARCHAR strlist)`
- Syntax
-`INT find_in_set(VARCHAR str, VARCHAR strlist)`
+返回 strlist 中第一次出现 str 的位置(从1开始计数)。strlist 是用逗号分隔的字符串。如果没有找到,返回0。任意参数为 NULL ,返回 NULL。
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_double.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_double.md
index 7eff7cad1eb22f..c6f766e6fe515f 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_double.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_double.md
@@ -1,5 +1,9 @@
# get_json_double
## description
+### Syntax
+
+`DOUBLE get_json_double(VARCHAR json_str, VARCHAR json_path)
+
解析并获取 json 字符串内指定路径的浮点型内容。
其中 json_path 必须以 $ 符号作为开头,使用 . 作为路径分割符。如果路径中包含 . ,则可以使用双引号包围。
@@ -7,10 +11,6 @@
path 的内容不能包含 ", [ 和 ]。
如果 json_string 格式不对,或 json_path 格式不对,或无法找到匹配项,则返回 NULL。
- Syntax
-
-`DOUBLE get_json_double(VARCHAR json_str, VARCHAR json_path)
-
## example
1. 获取 key 为 "k1" 的 value
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_int.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_int.md
index 5b6088223b350b..56366e4b956b16 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_int.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_int.md
@@ -1,5 +1,9 @@
# get_json_int
## description
+### Syntax
+
+`INT get_json_int(VARCHAR json_str, VARCHAR json_path)
+
解析并获取 json 字符串内指定路径的整型内容。
其中 json_path 必须以 $ 符号作为开头,使用 . 作为路径分割符。如果路径中包含 . ,则可以使用双引号包围。
@@ -7,10 +11,6 @@
path 的内容不能包含 ", [ 和 ]。
如果 json_string 格式不对,或 json_path 格式不对,或无法找到匹配项,则返回 NULL。
- Syntax
-
-`INT get_json_int(VARCHAR json_str, VARCHAR json_path)
-
## example
1. 获取 key 为 "k1" 的 value
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_string.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_string.md
index eb377a5bf30e39..504de06f92c318 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_string.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/get_json_string.md
@@ -1,5 +1,9 @@
# get_json_string
## description
+### Syntax
+
+`VARCHAR get_json_string(VARCHAR json_str, VARCHAR json_path)
+
解析并获取 json 字符串内指定路径的字符串内容。
其中 json_path 必须以 $ 符号作为开头,使用 . 作为路径分割符。如果路径中包含 . ,则可以使用双引号包围。
@@ -7,10 +11,6 @@
path 的内容不能包含 ", [ 和 ]。
如果 json_string 格式不对,或 json_path 格式不对,或无法找到匹配项,则返回 NULL。
- Syntax
-
-`VARCHAR get_json_string(VARCHAR json_str, VARCHAR json_path)
-
## example
1. 获取 key 为 "k1" 的 value
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/group_concat.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/group_concat.md
index 6a6f58d2d862f9..721f820543d25e 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/group_concat.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/group_concat.md
@@ -1,11 +1,11 @@
# group_concat
## description
+### Syntax
-该函数是类似于 sum() 的聚合函数,group_concat 将结果集中的多行结果连接成一个字符串。第二个参数 sep 为字符串之间的连接符号,该参数可以省略。该函数通常需要和 group by 语句一起使用。
+`VARCHAR group_concat(VARCHAR str[, VARCHAR sep])`
- Syntax
-`VARCHAR group_concat(VARCHAR str[, VARCHAR sep])`
+该函数是类似于 sum() 的聚合函数,group_concat 将结果集中的多行结果连接成一个字符串。第二个参数 sep 为字符串之间的连接符号,该参数可以省略。该函数通常需要和 group by 语句一起使用。
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/instr.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/instr.md
index 8da641329705e6..5abaf02eadb24f 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/instr.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/instr.md
@@ -1,11 +1,11 @@
# instr
## description
+### Syntax
-返回 substr 在 str 中第一次出现的位置(从1开始计数)。如果 substr 不在 str 中出现,则返回0。
+`INT instr(VARCHAR str, VARCHAR substr)`
- Syntax
-`INT instr(VARCHAR str, VARCHAR substr)`
+返回 substr 在 str 中第一次出现的位置(从1开始计数)。如果 substr 不在 str 中出现,则返回0。
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/lcase.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/lcase.md
index a56b914f568aee..3972cd48c19f4f 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/lcase.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/lcase.md
@@ -1,11 +1,11 @@
# lcase
## description
+### Syntax
-与`lower`一致
+`INT lcase(VARCHAR str)`
- Syntax
-`INT lcase(VARCHAR str)`
+与`lower`一致
##keyword
LCASE,LCASE
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/left.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/left.md
index 6279e98aed8f96..dc0fa432343d23 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/left.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/left.md
@@ -1,11 +1,11 @@
# left
## description
+### Syntax
-它返回具有指定长度的字符串的左边部分
+`VARCHAR left(VARCHAR str)`
- Syntax
-`VARCHAR left(VARCHAR str)`
+它返回具有指定长度的字符串的左边部分
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/length.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/length.md
index cc4bf04618c5df..1e959f9db0685c 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/length.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/length.md
@@ -1,11 +1,11 @@
# length
## description
+### Syntax
-返回字符串的长度,对于多字节字符,返回的字符数。比如5个两字节宽度字,返回的长度是10。
+`INT length(VARCHAR str)`
- Syntax
-`INT length(VARCHAR str)`
+返回字符串的长度,对于多字节字符,返回的字符数。比如5个两字节宽度字,返回的长度是10。
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/locate.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/locate.md
index b7b178e0fa409a..bab569fe64447f 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/locate.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/locate.md
@@ -1,11 +1,11 @@
# locate
## description
+### Syntax
-返回 substr 在 str 中出现的位置(从1开始计数)。如果指定第3个参数 pos,则从 str 以 pos 下标开始的字符串处开始查找 substr 出现的位置。如果没有找到,返回0
+`INT locate(VARCHAR substr, VARCHAR str[, INT pos])`
- Syntax
-`INT locate(VARCHAR substr, VARCHAR str[, INT pos])`
+返回 substr 在 str 中出现的位置(从1开始计数)。如果指定第3个参数 pos,则从 str 以 pos 下标开始的字符串处开始查找 substr 出现的位置。如果没有找到,返回0
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/lower.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/lower.md
index fe7c3e4aa606ac..d0b394388fd471 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/lower.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/lower.md
@@ -1,11 +1,11 @@
# lower
## description
+### Syntax
-将参数中所有的字符串都转换成小写
+`INT lower(VARCHAR str)`
- Syntax
-`INT lower(VARCHAR str)`
+将参数中所有的字符串都转换成小写
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/lpad.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/lpad.md
index 178aa0eebcc954..060a784695bed8 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/lpad.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/lpad.md
@@ -1,11 +1,11 @@
# lpad
## description
+### Syntax
-返回 str 中长度为 len(从首字母开始算起)的字符串。如果 len 大于 str 的长度,则在 str 的前面不断补充 pad 字符,直到该字符串的长度达到 len 为止。如果 len 小于 str 的长度,该函数相当于截断 str 字符串,只返回长度为 len 的字符串。
+`VARCHAR lpad(VARCHAR str, INT len, VARCHAR pad)`
- Syntax
-`VARCHAR lpad(VARCHAR str, INT len, VARCHAR pad)`
+返回 str 中长度为 len(从首字母开始算起)的字符串。如果 len 大于 str 的长度,则在 str 的前面不断补充 pad 字符,直到该字符串的长度达到 len 为止。如果 len 小于 str 的长度,该函数相当于截断 str 字符串,只返回长度为 len 的字符串。
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/ltrim.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/ltrim.md
index e7454e6f8e5aed..566c7b07a8dcb0 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/ltrim.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/ltrim.md
@@ -1,11 +1,11 @@
# ltrim
## description
+### Syntax
-将参数 str 中从开始部分连续出现的空格去掉
+`VARCHAR ltrim(VARCHAR str)`
- Syntax
-`VARCHAR ltrim(VARCHAR str)`
+将参数 str 中从开始部分连续出现的空格去掉
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/money_format.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/money_format.md
index 11824e3fee3d1b..6abc5de94f408d 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/money_format.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/money_format.md
@@ -1,11 +1,11 @@
# money_format
## description
+### Syntax
-将数字按照货币格式输出,整数部分每隔3位用逗号分隔,小数部分保留2位
+VARCHAR money_format(Number)
- Syntax
-VARCHAR money_format(Number)
+将数字按照货币格式输出,整数部分每隔3位用逗号分隔,小数部分保留2位
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/regexp_extract.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/regexp_extract.md
index 7ca0602a547d9d..5746b7b7b0cdd8 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/regexp_extract.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/regexp_extract.md
@@ -1,11 +1,11 @@
# regexp_extract
## description
+### Syntax
-对字符串 str 进行正则匹配,抽取符合 pattern 的第 pos 个匹配部分。需要 pattern 完全匹配 str 中的某部分,这样才能返回 pattern 部分中需匹配部分。如果没有匹配,返回空字符串。
+`VARCHAR regexp_extract(VARCHAR str, VARCHAR pattern, int pos)`
- Syntax
-`VARCHAR regexp_extract(VARCHAR str, VARCHAR pattern, int pos)`
+对字符串 str 进行正则匹配,抽取符合 pattern 的第 pos 个匹配部分。需要 pattern 完全匹配 str 中的某部分,这样才能返回 pattern 部分中需匹配部分。如果没有匹配,返回空字符串。
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/regexp_replace.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/regexp_replace.md
index f4fc3b70f4e6c1..c6bdae2d96e723 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/regexp_replace.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/regexp_replace.md
@@ -1,11 +1,11 @@
# regexp_replace
## description
+### Syntax
-对字符串 str 进行正则匹配, 将命中 pattern 的部分使用 repl 来进行替换
+`VARCHAR regexp_replace(VARCHAR str, VARCHAR pattern, VARCHAR repl)
- Syntax
-`VARCHAR regexp_replace(VARCHAR str, VARCHAR pattern, VARCHAR repl)
+对字符串 str 进行正则匹配, 将命中 pattern 的部分使用 repl 来进行替换
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/repeat.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/repeat.md
index 14a9a59d785434..ef8a49861ea884 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/repeat.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/repeat.md
@@ -1,11 +1,11 @@
# repeat
## description
+### Syntax
-将字符串 str 重复 count 次输出,count 小于1时返回空串,str,count 任一为NULL时,返回 NULL
+`VARCHAR repeat(VARCHAR str, INT count)
- Syntax
-`VARCHAR repeat(VARCHAR str, INT count)
+将字符串 str 重复 count 次输出,count 小于1时返回空串,str,count 任一为NULL时,返回 NULL
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/right.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/right.md
index 4c01a89bd05c79..9931cb594bab2c 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/right.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/right.md
@@ -1,11 +1,11 @@
# right
## description
+### Syntax
-它返回具有指定长度的字符串的右边部分
+`VARCHAR right(VARCHAR str)`
- Syntax
-`VARCHAR right(VARCHAR str)`
+它返回具有指定长度的字符串的右边部分
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/split_part.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/split_part.md
index c2ef720da13f0c..80c8c25292771a 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/split_part.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/split_part.md
@@ -1,11 +1,11 @@
# split_part
## description
+### Syntax
-根据分割符拆分字符串, 返回指定的分割部分(从一开始计数)。
+`VARCHAR split_part(VARCHAR content, VARCHAR delimiter, INT field)`
- Syntax
-`VARCHAR split_part(VARCHAR content, VARCHAR delimiter, INT field)`
+根据分割符拆分字符串, 返回指定的分割部分(从一开始计数)。
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/strleft.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/strleft.md
index 95cf82da514dbd..102b5786ed240f 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/strleft.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/strleft.md
@@ -1,11 +1,11 @@
# strleft
## description
+### Syntax
-它返回具有指定长度的字符串的左边部分
+`VARCHAR strleft(VARCHAR str)`
- Syntax
-`VARCHAR strleft(VARCHAR str)`
+它返回具有指定长度的字符串的左边部分
## example
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/strright.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/strright.md
index 56ebc34020153f..8dcf94dbc39290 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/strright.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/strright.md
@@ -1,11 +1,11 @@
# strright
## description
+### Syntax
-它返回具有指定长度的字符串的右边部分
+`VARCHAR strright(VARCHAR str)`
- Syntax
-`VARCHAR strright(VARCHAR str)`
+它返回具有指定长度的字符串的右边部分
## example
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Account Management/SHOW ROLES.md b/docs/documentation/cn/sql-reference/sql-statements/Account Management/SHOW ROLES.md
index 1b51f48b0799bd..21eb0e08e3fc23 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Account Management/SHOW ROLES.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Account Management/SHOW ROLES.md
@@ -1,11 +1,11 @@
# SHOW ROLES
+## description
## description
该语句用于展示所有已创建的角色信息,包括角色名称,包含的用户以及权限。
语法:
SHOW ROLES;
-## description
该语句用户删除一个角色
语法:
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/create-function.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/create-function.md
index f2bf7953928c04..6e197e710596c2 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/create-function.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/create-function.md
@@ -1,11 +1,6 @@
# CREATE FUNCTION
## description
-
-此语句创建一个自定义函数。执行此命令需要用户拥有 `ADMIN` 权限。
-
-如果 `function_name` 中包含了数据库名字,那么这个自定义函数会创建在对应的数据库中,否则这个函数将会创建在当前会话所在的数据库。新函数的名字与参数不能够与当前命名空间中已存在的函数相同,否则会创建失败。但是只有名字相同,参数不同是能够创建成功的。
-
- Syntax
+### Syntax
```
CREATE [AGGREGATE] FUNCTION function_name
@@ -15,7 +10,7 @@ CREATE [AGGREGATE] FUNCTION function_name
[PROPERTIES ("key" = "value" [, ...]) ]
```
- Parameters
+### Parameters
> `AGGREGATE`: 如果有此项,表示的是创建的函数是一个聚合函数,否则创建的是一个标量函数。
>
@@ -45,6 +40,11 @@ CREATE [AGGREGATE] FUNCTION function_name
>
> "md5": 函数动态链接库的MD5值,用于校验下载的内容是否正确。此选项是可选项
+
+此语句创建一个自定义函数。执行此命令需要用户拥有 `ADMIN` 权限。
+
+如果 `function_name` 中包含了数据库名字,那么这个自定义函数会创建在对应的数据库中,否则这个函数将会创建在当前会话所在的数据库。新函数的名字与参数不能够与当前命名空间中已存在的函数相同,否则会创建失败。但是只有名字相同,参数不同是能够创建成功的。
+
## example
1. 创建一个自定义标量函数
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/drop-function.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/drop-function.md
index b0ee8166cc893f..eac71eb7f74b78 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/drop-function.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/drop-function.md
@@ -1,22 +1,22 @@
# DROP FUNCTION
## description
-
-删除一个自定义函数。函数的名字、参数类型完全一致才能够被删除
-
- Syntax
+### Syntax
```
DROP FUNCTION function_name
(arg_type [, ...])
```
- Parameters
+### Parameters
> `function_name`: 要删除函数的名字
>
> `arg_type`: 要删除函数的参数列表
>
+
+删除一个自定义函数。函数的名字、参数类型完全一致才能够被删除
+
## example
1. 删除掉一个函数
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/show-function.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/show-function.md
index eeb84e0ff79631..b4f513654408d4 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/show-function.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/show-function.md
@@ -1,20 +1,20 @@
# SHOW FUNCTION
## description
-
-查看数据库下所有的自定义函数。如果用户指定了数据库,那么查看对应数据库的,否则直接查询当前会话所在数据库
-
-需要对这个数据库拥有 `SHOW` 权限
-
- Syntax
+### Syntax
```
SHOW FUNCTION [FROM db]
```
- Parameters
+### Parameters
> `db`: 要查询的数据库名字
+
+查看数据库下所有的自定义函数。如果用户指定了数据库,那么查看对应数据库的,否则直接查询当前会话所在数据库
+
+需要对这个数据库拥有 `SHOW` 权限
+
## example
```
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/insert.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/insert.md
index 91ed85227e019f..a43d8f39b0612e 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/insert.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/insert.md
@@ -1,7 +1,6 @@
# INSERT
## description
-
- Syntax
+### Syntax
```
INSERT INTO table_name
@@ -11,7 +10,7 @@ INSERT INTO table_name
{ VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }
```
- Parameters
+### Parameters
> tablet_name: 导入数据的目的表。可以是 `db_name.table_name` 形式
>
@@ -28,7 +27,7 @@ INSERT INTO table_name
> hint: 用于指示 `INSERT` 执行行为的一些指示符。`streaming` 和 默认的非 `streaming` 方式均会使用同步方式完成 `INSERT` 语句执行
> 非 `streaming` 方式在执行完成后会返回一个 label 方便用户通过 `SHOW LOAD` 查询导入的状态
- Note
+### Note
当前执行 `INSERT` 语句时,对于有不符合目标表格式的数据,默认的行为是过滤,比如字符串超长等。但是对于有要求数据不能够被过滤的业务场景,可以通过设置会话变量 `enable_insert_strict` 为 `true` 来确保当有数据被过滤掉的时候,`INSERT` 不会被执行成功。
diff --git a/fe/src/main/java/org/apache/doris/common/MarkDownParser.java b/fe/src/main/java/org/apache/doris/common/MarkDownParser.java
old mode 100644
new mode 100755
index 573f2333822230..c8aa2558febbb3
--- a/fe/src/main/java/org/apache/doris/common/MarkDownParser.java
+++ b/fe/src/main/java/org/apache/doris/common/MarkDownParser.java
@@ -133,7 +133,13 @@ private Map.Entry parseOneItem() {
if (!lines.get(nextToRead).startsWith("#")) {
sb.append(lines.get(nextToRead)).append('\n');
nextToRead++;
- } else {
+ }
+ // Ignore head at level 3 or bigger
+ else if (lines.get(nextToRead).startsWith("###")) {
+ sb.append(lines.get(nextToRead).replaceAll("#","")).append('\n');
+ nextToRead++;
+ }
+ else {
break;
}
}
From 0b362e4eb5ccb590923820e2a9ee886bf8e6fdc4 Mon Sep 17 00:00:00 2001
From: xy720
Date: Wed, 7 Aug 2019 12:45:24 +0800
Subject: [PATCH 6/8] Add a unit tests in MarkDownParserTest
---
.../apache/doris/common/MarkDownParser.java | 7 ++--
.../doris/common/MarkDownParserTest.java | 39 +++++++++++++++++--
2 files changed, 39 insertions(+), 7 deletions(-)
mode change 100644 => 100755 fe/src/test/java/org/apache/doris/common/MarkDownParserTest.java
diff --git a/fe/src/main/java/org/apache/doris/common/MarkDownParser.java b/fe/src/main/java/org/apache/doris/common/MarkDownParser.java
index c8aa2558febbb3..0ad093ff91b40c 100755
--- a/fe/src/main/java/org/apache/doris/common/MarkDownParser.java
+++ b/fe/src/main/java/org/apache/doris/common/MarkDownParser.java
@@ -99,8 +99,9 @@ public Map> parse() throws UserException {
} else if (headLevel == 2) {
keyValues.put(keyValue.getKey(), keyValue.getValue());
} else {
- // State error
- throw new UserException("Unknown head level when parsing head level(2)");
+ //Ignore headlevel greater than 2 instead of throwing a exception
+ //State error
+ //throw new UserException("Unknown head level when parsing head level(2)");
}
break;
default:
@@ -134,7 +135,7 @@ private Map.Entry parseOneItem() {
sb.append(lines.get(nextToRead)).append('\n');
nextToRead++;
}
- // Ignore head at level 3 or bigger
+ // Ignore headlevel greater than 2
else if (lines.get(nextToRead).startsWith("###")) {
sb.append(lines.get(nextToRead).replaceAll("#","")).append('\n');
nextToRead++;
diff --git a/fe/src/test/java/org/apache/doris/common/MarkDownParserTest.java b/fe/src/test/java/org/apache/doris/common/MarkDownParserTest.java
old mode 100644
new mode 100755
index 3cd40e74844398..57fa3d1d287a3b
--- a/fe/src/test/java/org/apache/doris/common/MarkDownParserTest.java
+++ b/fe/src/test/java/org/apache/doris/common/MarkDownParserTest.java
@@ -117,17 +117,48 @@ public void testNoFirst() throws UserException {
Assert.fail("No exception throws.");
}
- @Test(expected = UserException.class)
- public void testErrorState() throws UserException {
+// When encounter a headlevel at 3 or greater, we ignore it rather than throw exception
+// @Test(expected = UserException.class)
+// public void testErrorState() throws UserException {
+// List lines = Lists.newArrayList();
+// lines.add("# SHOW TABLES");
+// lines.add("## name");
+// lines.add("### name");
+// MarkDownParser parser = new MarkDownParser(lines);
+// Map> map = parser.parse();
+// Assert.fail("No exception throws.");
+// }
+
+ @Test
+ public void testMultiHeadLevel() throws UserException {
List lines = Lists.newArrayList();
lines.add("# SHOW TABLES");
lines.add("## name");
- lines.add("### name");
+ lines.add(" SHOW TABLES");
+ lines.add("## description");
+ lines.add("###Syntax");
+ lines.add("SYNTAX:\n\tSHOW TABLES [FROM] database");
+ lines.add("####Parameter");
+ lines.add(">table_name");
+ lines.add("## example");
+ lines.add("show tables;");
+ lines.add("### Exam1");
+ lines.add("exam1");
+ lines.add("## keyword");
+ lines.add("SHOW, TABLES");
+ lines.add("## url");
+ lines.add("http://www.baidu.com");
MarkDownParser parser = new MarkDownParser(lines);
Map> map = parser.parse();
- Assert.fail("No exception throws.");
+ Assert.assertNotNull(map.get("SHOW TABLES"));
+ Assert.assertEquals(" SHOW TABLES\n", map.get("SHOW TABLES").get("name"));
+ Assert.assertEquals("Syntax\nSYNTAX:\n\tSHOW TABLES [FROM] database\nParameter\n>table_name\n", map.get("SHOW TABLES").get("description"));
+ Assert.assertEquals("show tables;\n Exam1\nexam1\n", map.get("SHOW TABLES").get("example"));
+ Assert.assertEquals("SHOW, TABLES\n", map.get("SHOW TABLES").get("keyword"));
+ Assert.assertEquals("http://www.baidu.com\n", map.get("SHOW TABLES").get("url"));
}
+
@Test
public void testEmptyTitle() throws UserException {
List lines = Lists.newArrayList();
From 1646651b4eb40d6ca6ae5e40f683e12989f809d5 Mon Sep 17 00:00:00 2001
From: xy720 <22125576+xy720@users.noreply.github.com>
Date: Wed, 7 Aug 2019 14:44:46 +0800
Subject: [PATCH 7/8] Update docs/Makefile
Co-Authored-By: ZHAO Chun
---
docs/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/Makefile b/docs/Makefile
index a51e1336b6c279..1efeb975d1b87a 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -20,7 +20,7 @@
#
BUILD_DIR = ${CURDIR}/build
-HELP_DIR = ${CURDIR}/contents
+HELP_DIR = ${CURDIR}/build/contents
all: zip_help
.PHONY: all
From e6d7e3fb5f22860c0d3808c0d7e5d6febfd2f66c Mon Sep 17 00:00:00 2001
From: xy720
Date: Wed, 7 Aug 2019 16:47:44 +0800
Subject: [PATCH 8/8] fix dup head and keywords, fix makefile
---
docs/Makefile | 4 ++--
.../sql-functions/aggregate-functions/avg.md | 2 +-
.../sql-functions/aggregate-functions/count.md | 2 +-
.../sql-functions/aggregate-functions/max.md | 2 +-
.../sql-functions/aggregate-functions/min.md | 2 +-
.../sql-functions/aggregate-functions/ndv.md | 2 +-
.../sql-functions/aggregate-functions/stddev.md | 2 +-
.../sql-functions/aggregate-functions/sum.md | 2 +-
.../aggregate-functions/var_samp.md | 2 +-
.../aggregate-functions/variance.md | 2 +-
.../cn/sql-reference/sql-functions/cast.md | 5 ++---
.../date-time-functions/datediff.md | 2 +-
.../sql-functions/date-time-functions/day.md | 2 +-
.../date-time-functions/dayname.md | 2 +-
.../date-time-functions/dayofmonth.md | 2 +-
.../date-time-functions/dayofweek.md | 2 +-
.../date-time-functions/dayofyear.md | 2 +-
.../sql-functions/date-time-functions/month.md | 2 +-
.../date-time-functions/monthname.md | 2 +-
.../sql-functions/date-time-functions/now.md | 2 +-
.../date-time-functions/timediff.md | 2 +-
.../date-time-functions/workofyear.md | 2 +-
.../sql-functions/date-time-functions/year.md | 2 +-
.../spatial-functions/st_astext.md | 2 +-
.../spatial-functions/st_geometryfromtext.md | 2 +-
.../spatial-functions/st_linefromtext.md | 2 +-
.../spatial-functions/st_polygon.md | 2 +-
.../sql-functions/string-functions/ascii.md | 2 +-
.../sql-functions/string-functions/concat.md | 2 +-
.../sql-functions/string-functions/instr.md | 2 +-
.../sql-functions/string-functions/lcase.md | 2 +-
.../sql-functions/string-functions/left.md | 2 +-
.../sql-functions/string-functions/length.md | 2 +-
.../sql-functions/string-functions/locate.md | 2 +-
.../sql-functions/string-functions/lower.md | 2 +-
.../sql-functions/string-functions/lpad.md | 2 +-
.../sql-functions/string-functions/ltrim.md | 2 +-
.../sql-functions/string-functions/repeat.md | 2 +-
.../sql-functions/string-functions/right.md | 2 +-
.../sql-functions/string-functions/strleft.md | 2 +-
.../sql-functions/string-functions/strright.md | 2 +-
.../Account Management/SHOW ROLES.md | 17 -----------------
.../Data Definition/create-function.md | 2 +-
.../Data Definition/drop-function.md | 2 +-
.../Data Definition/show-function.md | 2 +-
.../Data Manipulation/broker_load.md | 2 +-
.../sql-statements/Data Manipulation/insert.md | 2 +-
.../sql-statements/Data Types/BIGINT.md | 2 +-
.../sql-statements/Data Types/BOOLEAN.md | 2 +-
.../sql-statements/Data Types/CHAR.md | 2 +-
.../sql-statements/Data Types/DATE.md | 2 +-
.../sql-statements/Data Types/DATETIME.md | 2 +-
.../sql-statements/Data Types/DECIMAL.md | 2 +-
.../sql-statements/Data Types/DOUBLE.md | 2 +-
.../sql-statements/Data Types/FLOAT.md | 2 +-
.../Data Types/HLL(HyperLogLog).md | 2 +-
.../sql-statements/Data Types/INT.md | 2 +-
.../sql-statements/Data Types/SMALLINT.md | 2 +-
.../sql-statements/Data Types/TINYINT.md | 2 +-
.../sql-statements/Data Types/VARCHAR.md | 2 +-
60 files changed, 61 insertions(+), 79 deletions(-)
diff --git a/docs/Makefile b/docs/Makefile
index 1efeb975d1b87a..6d971114bc8806 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -20,7 +20,7 @@
#
BUILD_DIR = ${CURDIR}/build
-HELP_DIR = ${CURDIR}/build/contents
+HELP_DIR = ${BUILD_DIR}/contents
all: zip_help
.PHONY: all
@@ -34,7 +34,7 @@ ${HELP_DIR}:
HELP_OUTPUT = ${BUILD_DIR}/help-resource.zip
${HELP_OUTPUT}: documentation/cn/sql-reference ${BUILD_DIR} ${HELP_DIR}
cp -r $* ${HELP_DIR}
- zip -r $@ contents && rm -rf contents
+ cd ${BUILD_DIR} && zip -r $@ contents && cd -
.PHONY: zip_help
zip_help: ${HELP_OUTPUT}
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/avg.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/avg.md
index 16cc5e722cc94b..6b04d6c09bba0d 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/avg.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/avg.md
@@ -28,4 +28,4 @@ mysql> SELECT datetime, AVG(distinct cost_time) FROM log_statis group by datetim
```
##keyword
-AVG,AVG
+AVG
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/count.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/count.md
index f452fa21c34019..b8bdef43a55e96 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/count.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/count.md
@@ -32,4 +32,4 @@ MySQL > select count(distinct datetime) from log_statis group by datetime;
+-------------------------------+
```
##keyword
-COUNT,COUNT
+COUNT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/max.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/max.md
index 29c2fdeab64b6f..fe4ecdadc63254 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/max.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/max.md
@@ -17,4 +17,4 @@ MySQL > select max(scan_rows) from log_statis group by datetime;
+------------------+
```
##keyword
-MAX,MAX
+MAX
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/min.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/min.md
index be805ea192d848..3a6ce810f91f1f 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/min.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/min.md
@@ -17,4 +17,4 @@ MySQL > select min(scan_rows) from log_statis group by datetime;
+------------------+
```
##keyword
-MIN,MIN
+MIN
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/ndv.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/ndv.md
index 62eebf873b3bc8..01a46f5b9a70d0 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/ndv.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/ndv.md
@@ -19,4 +19,4 @@ MySQL > select ndv(query_id) from log_statis group by datetime;
+-----------------+
```
##keyword
-NDV,NDV
+NDV
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/stddev.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/stddev.md
index f3db9b673e3cb0..3a84758a2783fc 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/stddev.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/stddev.md
@@ -24,4 +24,4 @@ MySQL > select stddev_pop(scan_rows) from log_statis group by datetime;
+-------------------------+
```
##keyword
-STDDEV,STDDEV_POP,STDDEV,STDDEV,POP
+STDDEV,STDDEV_POP,POP
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/sum.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/sum.md
index fb71b5154fc421..4d0959af1ddee5 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/sum.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/sum.md
@@ -17,4 +17,4 @@ MySQL > select sum(scan_rows) from log_statis group by datetime;
+------------------+
```
##keyword
-SUM,SUM
+SUM
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/var_samp.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/var_samp.md
index 94d9f03270bfec..ac105c257f2447 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/var_samp.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/var_samp.md
@@ -16,4 +16,4 @@ MySQL > select var_samp(scan_rows) from log_statis group by datetime;
| 5.6227132145741789 |
+-----------------------+
##keyword
-VAR_SAMP,VARIANCE_SAMP,VAR,SAMP,VARIANCE,SAMP
+VAR_SAMP,VARIANCE_SAMP,VAR,SAMP,VARIANCE
diff --git a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/variance.md b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/variance.md
index 7a46a827b5f624..20c3a6fa152152 100755
--- a/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/variance.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/aggregate-functions/variance.md
@@ -23,4 +23,4 @@ MySQL > select var_pop(scan_rows) from log_statis group by datetime;
| 5.6230744719006163 |
+----------------------+
##keyword
-VARIANCE,VAR_POP,VARIANCE_POP,VARIANCE,VAR,POP,VARIANCE,POP
+VARIANCE,VAR_POP,VARIANCE_POP,VAR,POP
diff --git a/docs/documentation/cn/sql-reference/sql-functions/cast.md b/docs/documentation/cn/sql-reference/sql-functions/cast.md
index 4ac9937e0f5bb0..9b08ba6ea6cb04 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/cast.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/cast.md
@@ -1,6 +1,5 @@
# CAST
## description
-## description
### Syntax
```
@@ -9,7 +8,7 @@ cast (input as type)
### BIGINT type
-### Syntax
+### Syntax(BIGINT)
``` cast (input as BIGINT) ```
@@ -54,4 +53,4 @@ mysql> select cast(cast ("11.2" as double) as bigint);
1 row in set (0.00 sec)
```
##keyword
-CAST,CAST
+CAST
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/datediff.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/datediff.md
index 02484bfe5da1aa..67a8fedeba25b3 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/datediff.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/datediff.md
@@ -29,4 +29,4 @@ mysql> select datediff(CAST('2010-11-30 23:59:59' AS DATETIME), CAST('2010-12-31
+-----------------------------------------------------------------------------------+
```
##keyword
-DATEDIFF,DATEDIFF
+DATEDIFF
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/day.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/day.md
index 42f20893b6effe..cd926a4287d54e 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/day.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/day.md
@@ -19,4 +19,4 @@ mysql> select day('1987-01-31');
| 31 |
+----------------------------+
##keyword
-DAY,DAY
+DAY
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayname.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayname.md
index 2d0a08a0c7b566..872daa7cdc0a9c 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayname.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayname.md
@@ -19,4 +19,4 @@ mysql> select dayname('2007-02-03 00:00:00');
| Saturday |
+--------------------------------+
##keyword
-DAYNAME,DAYNAME
+DAYNAME
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofmonth.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofmonth.md
index efe881d4a93c19..7071b7d20bfda9 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofmonth.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofmonth.md
@@ -19,4 +19,4 @@ mysql> select dayofmonth('1987-01-31');
| 31 |
+-----------------------------------+
##keyword
-DAYOFMONTH,DAYOFMONTH
+DAYOFMONTH
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofweek.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofweek.md
index b314fa3ddf5b8d..63f8853e54edd6 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofweek.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofweek.md
@@ -19,4 +19,4 @@ mysql> select dayofweek('2019-06-25');
| 3 |
+----------------------------------+
##keyword
-DAYOFWEEK,DAYOFWEEK
+DAYOFWEEK
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofyear.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofyear.md
index e205909690b9a0..2d0bae42f6fb3c 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofyear.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/dayofyear.md
@@ -19,4 +19,4 @@ mysql> select dayofyear('2007-02-03 00:00:00');
| 34 |
+----------------------------------+
##keyword
-DAYOFYEAR,DAYOFYEAR
+DAYOFYEAR
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/month.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/month.md
index 82b0d0842afac6..7588b1f63cd8fb 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/month.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/month.md
@@ -19,4 +19,4 @@ mysql> select month('1987-01-01');
| 1 |
+-----------------------------+
##keyword
-MONTH,MONTH
+MONTH
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/monthname.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/monthname.md
index fc4c11ad10d7d0..8e0a6e0901666c 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/monthname.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/monthname.md
@@ -19,4 +19,4 @@ mysql> select monthname('2008-02-03 00:00:00');
| February |
+----------------------------------+
##keyword
-MONTHNAME,MONTHNAME
+MONTHNAME
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/now.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/now.md
index 3454d88f4c3bb0..71afb0f0f99be4 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/now.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/now.md
@@ -17,4 +17,4 @@ mysql> select now();
| 2019-05-27 15:58:25 |
+---------------------+
##keyword
-NOW,NOW
+NOW
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/timediff.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/timediff.md
index 09ed793f1ba52e..7ab169a3c57f8f 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/timediff.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/timediff.md
@@ -43,4 +43,4 @@ mysql> SELECT TIMEDIFF('2019-01-01 00:00:00', NULL);
+---------------------------------------+
```
##keyword
-TIMEDIFF,TIMEDIFF
+TIMEDIFF
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/workofyear.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/workofyear.md
index 6226292752104a..3377af454e0309 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/workofyear.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/workofyear.md
@@ -20,4 +20,4 @@ mysql> select weekofyear('2008-02-20 00:00:00');
| 8 |
+-----------------------------------+
##keyword
-WEEKOFYEAR,WEEKOFYEAR
+WEEKOFYEAR
diff --git a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/year.md b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/year.md
index 3662a773977c9e..1ed81559f893dc 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/year.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/date-time-functions/year.md
@@ -19,4 +19,4 @@ mysql> select year('1987-01-01');
| 1987 |
+-----------------------------+
##keyword
-YEAR,YEAR
+YEAR
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_astext.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_astext.md
index c29c3c984b9db9..7e8c47c795d645 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_astext.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_astext.md
@@ -18,4 +18,4 @@ mysql> SELECT ST_AsText(ST_Point(24.7, 56.7));
+---------------------------------+
```
##keyword
-ST_ASTEXT,ST_ASWKT,ST,ASTEXT,ST,ASWKT
+ST_ASTEXT,ST_ASWKT,ST,ASTEXT,ASWKT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_geometryfromtext.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_geometryfromtext.md
index 9f223c55ffa68f..72dd9d7dfbaa58 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_geometryfromtext.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_geometryfromtext.md
@@ -18,4 +18,4 @@ mysql> SELECT ST_AsText(ST_GeometryFromText("LINESTRING (1 1, 2 2)"));
+---------------------------------------------------------+
```
##keyword
-ST_GEOMETRYFROMTEXT,ST_GEOMFROMTEXT,ST,GEOMETRYFROMTEXT,ST,GEOMFROMTEXT
+ST_GEOMETRYFROMTEXT,ST_GEOMFROMTEXT,ST,GEOMETRYFROMTEXT,GEOMFROMTEXT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_linefromtext.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_linefromtext.md
index 29799f48e1e60c..7f7165cd9f5d65 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_linefromtext.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_linefromtext.md
@@ -18,4 +18,4 @@ mysql> SELECT ST_AsText(ST_LineFromText("LINESTRING (1 1, 2 2)"));
+---------------------------------------------------------+
```
##keyword
-ST_LINEFROMTEXT,ST_LINESTRINGFROMTEXT,ST,LINEFROMTEXT,ST,LINESTRINGFROMTEXT
+ST_LINEFROMTEXT,ST_LINESTRINGFROMTEXT,ST,LINEFROMTEXT,LINESTRINGFROMTEXT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_polygon.md b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_polygon.md
index 35392fd8c9683c..d1b810199e5fd6 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_polygon.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/spatial-functions/st_polygon.md
@@ -18,4 +18,4 @@ mysql> SELECT ST_AsText(ST_Polygon("POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))"));
+------------------------------------------------------------------+
```
##keyword
-ST_POLYGON,ST_POLYFROMTEXT,ST_POLYGONFROMTEXT,ST,POLYGON,ST,POLYFROMTEXT,ST,POLYGONFROMTEXT
+ST_POLYGON,ST_POLYFROMTEXT,ST_POLYGONFROMTEXT,ST,POLYGON,POLYFROMTEXT,POLYGONFROMTEXT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/ascii.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/ascii.md
index 0b1c2626dad3f2..49f96fa28409b7 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/ascii.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/ascii.md
@@ -25,4 +25,4 @@ mysql> select ascii('234');
+--------------+
```
##keyword
-ASCII,ASCII
+ASCII
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/concat.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/concat.md
index 85056e2c969821..4bcae3df62183c 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/concat.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/concat.md
@@ -32,4 +32,4 @@ mysql> select concat("a", null, "c");
+------------------------+
```
##keyword
-CONCAT,CONCAT
+CONCAT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/instr.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/instr.md
index 5abaf02eadb24f..65db339d3b7592 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/instr.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/instr.md
@@ -25,4 +25,4 @@ mysql> select instr("abc", "d");
+-------------------+
```
##keyword
-INSTR,INSTR
+INSTR
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/lcase.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/lcase.md
index 3972cd48c19f4f..7acb6840be8b18 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/lcase.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/lcase.md
@@ -8,4 +8,4 @@
与`lower`一致
##keyword
-LCASE,LCASE
+LCASE
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/left.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/left.md
index dc0fa432343d23..705b3f88655146 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/left.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/left.md
@@ -18,4 +18,4 @@ mysql> select left("Hello doris",5);
+------------------------+
```
##keyword
-LEFT,LEFT
+LEFT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/length.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/length.md
index 1e959f9db0685c..fa852edd50e67d 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/length.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/length.md
@@ -25,4 +25,4 @@ mysql> select length("中国");
+------------------+
```
##keyword
-LENGTH,LENGTH
+LENGTH
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/locate.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/locate.md
index bab569fe64447f..e239904e014287 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/locate.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/locate.md
@@ -32,4 +32,4 @@ mysql> SELECT LOCATE('bar', 'foobarbar', 5);
+-------------------------------+
```
##keyword
-LOCATE,LOCATE
+LOCATE
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/lower.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/lower.md
index d0b394388fd471..00f3e20313aa64 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/lower.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/lower.md
@@ -18,4 +18,4 @@ mysql> SELECT lower("AbC123");
+-----------------+
```
##keyword
-LOWER,LOWER
+LOWER
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/lpad.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/lpad.md
index 060a784695bed8..41c836a168b047 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/lpad.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/lpad.md
@@ -25,4 +25,4 @@ mysql> SELECT lpad("hi", 1, "xy");
+---------------------+
```
##keyword
-LPAD,LPAD
+LPAD
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/ltrim.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/ltrim.md
index 566c7b07a8dcb0..c3c8f04c383a7a 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/ltrim.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/ltrim.md
@@ -18,4 +18,4 @@ mysql> SELECT ltrim(' ab d');
+------------------+
```
##keyword
-LTRIM,LTRIM
+LTRIM
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/repeat.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/repeat.md
index ef8a49861ea884..71885baaba7a39 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/repeat.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/repeat.md
@@ -25,4 +25,4 @@ mysql> SELECT repeat("a", -1);
+-----------------+
```
##keyword
-REPEAT,REPEAT
+REPEAT,
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/right.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/right.md
index 9931cb594bab2c..e5fb9a16cd7a04 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/right.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/right.md
@@ -18,4 +18,4 @@ mysql> select right("Hello doris",5);
+-------------------------+
```
##keyword
-RIGHT,RIGHT
+RIGHT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/strleft.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/strleft.md
index 102b5786ed240f..c2c4d904a81d91 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/strleft.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/strleft.md
@@ -18,4 +18,4 @@ mysql> select strleft("Hello doris",5);
+------------------------+
```
##keyword
-STRLEFT,STRLEFT
+STRLEFT
diff --git a/docs/documentation/cn/sql-reference/sql-functions/string-functions/strright.md b/docs/documentation/cn/sql-reference/sql-functions/string-functions/strright.md
index 8dcf94dbc39290..7976d9288c4dbd 100644
--- a/docs/documentation/cn/sql-reference/sql-functions/string-functions/strright.md
+++ b/docs/documentation/cn/sql-reference/sql-functions/string-functions/strright.md
@@ -18,4 +18,4 @@ mysql> select strright("Hello doris",5);
+-------------------------+
```
##keyword
-STRRIGHT,STRRIGHT
+STRRIGHT
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Account Management/SHOW ROLES.md b/docs/documentation/cn/sql-reference/sql-statements/Account Management/SHOW ROLES.md
index 21eb0e08e3fc23..b25119cedfa1dc 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Account Management/SHOW ROLES.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Account Management/SHOW ROLES.md
@@ -1,17 +1,9 @@
# SHOW ROLES
-## description
## description
该语句用于展示所有已创建的角色信息,包括角色名称,包含的用户以及权限。
语法:
SHOW ROLES;
-
- 该语句用户删除一个角色
-
- 语法:
- DROP ROLE role1;
-
- 删除一个角色,不会影响之前属于该角色的用户的权限。仅相当于将该角色与用户解耦。用户已经从该角色中获取到的权限,不会改变。
## example
@@ -22,12 +14,3 @@
## keyword
SHOW,ROLES
-## example
-
- 1. 删除一个角色
-
- DROP ROLE role1;
-
-## keyword
- DROP, ROLE
-
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/create-function.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/create-function.md
index 6e197e710596c2..00e2d609170f1d 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/create-function.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/create-function.md
@@ -68,4 +68,4 @@ CREATE AGGREGATE FUNCTION my_count (BIGINT) RETURNS BIGINT PROPERTIES (
);
```
##keyword
-CREATE,FUNCTION,CREATE,FUNCTION
+CREATE,FUNCTION
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/drop-function.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/drop-function.md
index eac71eb7f74b78..419059f68d070d 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/drop-function.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/drop-function.md
@@ -25,4 +25,4 @@ DROP FUNCTION function_name
DROP FUNCTION my_add(INT, INT)
```
##keyword
-DROP,FUNCTION,DROP,FUNCTION
+DROP,FUNCTION
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/show-function.md b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/show-function.md
index b4f513654408d4..edd64917304286 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Definition/show-function.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Definition/show-function.md
@@ -34,4 +34,4 @@ Intermediate Type: NULL
2 rows in set (0.00 sec)
```
##keyword
-SHOW,FUNCTION,SHOW,FUNCTION
+SHOW,FUNCTION
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/broker_load.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/broker_load.md
index 3f83280c16da4d..b6b445a1b3ceeb 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/broker_load.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/broker_load.md
@@ -363,4 +363,4 @@
WITH BROKER hdfs ("username"="hdfs_user", "password"="hdfs_password");
## keyword
- BROKER LOAD
+ BROKER,LOAD
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/insert.md b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/insert.md
index a43d8f39b0612e..14e3cfe9f7751c 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/insert.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Manipulation/insert.md
@@ -77,4 +77,4 @@ INSERT INTO test (c1, c2) SELECT * from test2
由于Doris之前的导入方式都是异步导入方式,为了兼容旧有的使用习惯,不加 streaming 的 `INSERT` 语句依旧会返回一个 label,用户需要通过`SHOW LOAD`命令查看此`label`导入作业的状态。
##keyword
-INSERT,INSERT
+INSERT
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/BIGINT.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/BIGINT.md
index 13b0e928f3d807..af2e6bb8296e3b 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Types/BIGINT.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/BIGINT.md
@@ -4,4 +4,4 @@
8字节有符号整数,范围[-9223372036854775808, 9223372036854775807]
##keyword
-BIGINT,BIGINT
+BIGINT
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/BOOLEAN.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/BOOLEAN.md
index fdf8117aff75e7..caa44dc17fa96e 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Types/BOOLEAN.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/BOOLEAN.md
@@ -4,4 +4,4 @@
与TINYINT一样,0代表false,1代表true
##keyword
-BOOLEAN,BOOLEAN
+BOOLEAN
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/CHAR.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/CHAR.md
index edf060a74af7c6..df645ae99eec48 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Types/CHAR.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/CHAR.md
@@ -4,4 +4,4 @@
定长字符串,M代表的是定长字符串的长度。M的范围是1-255
##keyword
-CHAR,CHAR
+CHAR
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/DATE.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/DATE.md
index 978c5ef953d962..d0082d7f674d07 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Types/DATE.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/DATE.md
@@ -12,4 +12,4 @@
-> '2003-12-31'
##keyword
-DATE,DATE
+DATE
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/DATETIME.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/DATETIME.md
index 90332c68ca744c..858e838c633d10 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Types/DATETIME.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/DATETIME.md
@@ -5,4 +5,4 @@
打印的形式是'YYYY-MM-DD HH:MM:SS'
##keyword
-DATETIME,DATETIME
+DATETIME
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/DECIMAL.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/DECIMAL.md
index 4807798e46aa22..26e91fe0c42bc0 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Types/DECIMAL.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/DECIMAL.md
@@ -5,4 +5,4 @@
M的范围是[1,27], D的范围[1, 9], 另外,M必须要大于等于D的取值。默认的D取值为0
##keyword
-DECIMAL,DECIMAL
+DECIMAL
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/DOUBLE.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/DOUBLE.md
index 17136524824525..6334fe5223b8ae 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Types/DOUBLE.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/DOUBLE.md
@@ -4,4 +4,4 @@
8字节浮点数
##keyword
-DOUBLE,DOUBLE
+DOUBLE
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/FLOAT.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/FLOAT.md
index 6410033ed8d5d1..fe72e134a44697 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Types/FLOAT.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/FLOAT.md
@@ -4,4 +4,4 @@
4字节浮点数
##keyword
-FLOAT,FLOAT
+FLOAT
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/HLL(HyperLogLog).md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/HLL(HyperLogLog).md
index 9ad2ed887139d6..0d6ded08d88b41 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Types/HLL(HyperLogLog).md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/HLL(HyperLogLog).md
@@ -6,4 +6,4 @@
并且HLL列只能通过配套的hll_union_agg、hll_raw_agg、hll_cardinality、hll_hash进行查询或使用
##keyword
-HLL(HYPERLOGLOG),HLL(HYPERLOGLOG)
+HLL(HYPERLOGLOG),HLL,HYPERLOGLOG
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/INT.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/INT.md
index 8943fe20afe6da..3632659b9158f4 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Types/INT.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/INT.md
@@ -4,4 +4,4 @@
4字节有符号整数,范围[-2147483648, 2147483647]
##keyword
-INT,INT
+INT
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/SMALLINT.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/SMALLINT.md
index 7cb74ce06ffcda..6fc2e83235af36 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Types/SMALLINT.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/SMALLINT.md
@@ -4,4 +4,4 @@
2字节有符号整数,范围[-32768, 32767]
##keyword
-SMALLINT,SMALLINT
+SMALLINT
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/TINYINT.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/TINYINT.md
index cbdbba67c9f0a0..c9ba5ed88d734c 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Types/TINYINT.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/TINYINT.md
@@ -4,4 +4,4 @@
1字节有符号整数,范围[-128, 127]
##keyword
-TINYINT,TINYINT
+TINYINT
diff --git a/docs/documentation/cn/sql-reference/sql-statements/Data Types/VARCHAR.md b/docs/documentation/cn/sql-reference/sql-statements/Data Types/VARCHAR.md
index 8e8cbb7d2b5a5a..dc3dc5adce2e6a 100644
--- a/docs/documentation/cn/sql-reference/sql-statements/Data Types/VARCHAR.md
+++ b/docs/documentation/cn/sql-reference/sql-statements/Data Types/VARCHAR.md
@@ -4,4 +4,4 @@
变长字符串,M代表的是变长字符串的长度。M的范围是1-65535
##keyword
-VARCHAR,VARCHAR
+VARCHAR