From e96425123c7100d0bdaf0858fa3565238cda8bd2 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Fri, 26 Apr 2024 10:43:27 +0800 Subject: [PATCH 1/3] add translation --- .../bit-functions-and-operators.md | 15 +++++++++++-- .../date-and-time-functions.md | 8 +++---- .../encryption-and-compression-functions.md | 12 ++++++++--- functions-and-operators/json-functions.md | 21 ++++++++++++------- functions-and-operators/locking-functions.md | 4 ++-- functions-and-operators/string-functions.md | 4 ++-- 6 files changed, 44 insertions(+), 20 deletions(-) diff --git a/functions-and-operators/bit-functions-and-operators.md b/functions-and-operators/bit-functions-and-operators.md index 93299ce5372b..d1b4c8504c0b 100644 --- a/functions-and-operators/bit-functions-and-operators.md +++ b/functions-and-operators/bit-functions-and-operators.md @@ -1,12 +1,12 @@ --- title: 位函数和操作符 aliases: ['/docs-cn/dev/functions-and-operators/bit-functions-and-operators/','/docs-cn/dev/reference/sql/functions-and-operators/bit-functions-and-operators/'] -summary: TiDB 支持 MySQL 5.7 中的所有位函数和操作符,包括BIT_COUNT()、&、~、|、^、<<和>>。BIT_COUNT() 返回参数二进制表示中为 1 的个数,& 表示位与,~ 表示按位取反,| 表示位或,^ 表示位亦或,<< 表示左移,>> 表示右移。 +summary: TiDB 支持 MySQL 8.0 中的所有位函数和操作符。 --- # 位函数和操作符 -TiDB 支持使用 MySQL 5.7 中提供的所有[位函数和操作符](https://dev.mysql.com/doc/refman/5.7/en/bit-functions.html)。 +TiDB 支持使用 MySQL 8.0 中提供的所有[位函数和操作符](https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html)。 **位函数和操作符表** @@ -19,3 +19,14 @@ TiDB 支持使用 MySQL 5.7 中提供的所有[位函数和操作符](https://de | [^](https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html#operator_bitwise-xor) | 位亦或 | | [<<](https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html#operator_left-shift) | 左移 | | [>>](https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html#operator_right-shift) | 右移 | + +## MySQL 兼容性 + +在处理位函数和操作符时,MySQL 8.0 与早期版本的 MySQL 之间存在一些差异。TiDB 旨在遵循 MySQL 8.0 的行为。 + +## 已知问题 + +在以下情况中,TiDB 中的查询结果与 MySQL 5.7 相同,但与 MySQL 8.0 不同。 + +- 二进制参数的位操作。更多信息,请参见 [#30637](https://github.com/pingcap/tidb/issues/30637)。 +- `BIT_COUNT()` 函数的结果。更多信息,请参见 [#44621](https://github.com/pingcap/tidb/issues/44621)。 \ No newline at end of file diff --git a/functions-and-operators/date-and-time-functions.md b/functions-and-operators/date-and-time-functions.md index 22c57ae03626..e56ccb8a9edd 100644 --- a/functions-and-operators/date-and-time-functions.md +++ b/functions-and-operators/date-and-time-functions.md @@ -1,12 +1,12 @@ --- title: 日期和时间函数 aliases: ['/docs-cn/dev/functions-and-operators/date-and-time-functions/','/docs-cn/dev/reference/sql/functions-and-operators/date-and-time-functions/'] -summary: TiDB 支持 MySQL 5.7 中的所有日期和时间函数。但是 TiDB 可能无法完全匹配 MySQL 的行为,建议使用正确的日期格式。TiDB 支持 str_to_date() 函数,但无法解析所有日期和时间值。此外,TiDB 不支持特定的日期和时间格式化选项。系统变量 default_week_format 影响 WEEK() 函数。更多信息,请参见 GitHub Issue #30082。 +summary: TiDB 支持 MySQL 8.0 中的所有日期和时间函数。 --- # 日期和时间函数 -TiDB 支持使用 MySQL 5.7 中提供的所有[日期和时间函数](https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html)。 +TiDB 支持使用 MySQL 8.0 中提供的所有[日期和时间函数](https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html)。 > **注意:** > @@ -80,7 +80,7 @@ TiDB 支持使用 MySQL 5.7 中提供的所有[日期和时间函数](https://de ## MySQL 兼容性 -TiDB 支持 `str_to_date()` 函数,但是无法解析所有的日期和时间值。此外,TiDB 不支持以下日期和时间格式化选项: +TiDB 支持 `STR_TO_DATE()` 函数,但是无法解析所有的日期和时间值。此外,TiDB 不支持以下日期和时间格式化选项: | 格式 | 说明 | |--------|---------------------------------------------------------------------------------------| @@ -99,4 +99,4 @@ TiDB 支持 `str_to_date()` 函数,但是无法解析所有的日期和时间 ## 相关系统变量 -`default_week_format` 变量影响 `WEEK()` 函数。 +[`default_week_format`](/system-variables.md#default_week_format) 变量影响 `WEEK()` 函数。 diff --git a/functions-and-operators/encryption-and-compression-functions.md b/functions-and-operators/encryption-and-compression-functions.md index 27557c9ed21c..69f99c66576d 100644 --- a/functions-and-operators/encryption-and-compression-functions.md +++ b/functions-and-operators/encryption-and-compression-functions.md @@ -1,12 +1,12 @@ --- title: 加密和压缩函数 aliases: ['/docs-cn/dev/functions-and-operators/encryption-and-compression-functions/','/docs-cn/dev/reference/sql/functions-and-operators/encryption-and-compression-functions/'] -summary: TiDB 支持大部分 MySQL 5.7 中提供的加密和压缩函数,包括MD5、PASSWORD、RANDOM_BYTES、SHA1、SHA2、AES_DECRYPT、AES_ENCRYPT、COMPRESS、UNCOMPRESS、UNCOMPRESSED_LENGTH 和 VALIDATE_PASSWORD_STRENGTH。相关系统变量 block_encryption_mode 用于设置 AES_ENCRYPT 和 AES_DECRYPT 的加密模式。不支持的函数包括 DES_DECRYPT、DES_ENCRYPT、OLD_PASSWORD 和 ENCRYPT,以及仅在 MySQL 企业版中支持的函数。 +summary: TiDB 支持 MySQL 8.0 中提供的大部分加密和压缩函数。 --- # 加密和压缩函数 -TiDB 支持使用 MySQL 5.7 中提供的大部分[加密和压缩函数](https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html)。 +TiDB 支持使用 MySQL 8.0 中提供的大部分[加密和压缩函数](https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html)。 ## 支持的函数 @@ -27,9 +27,15 @@ TiDB 支持使用 MySQL 5.7 中提供的大部分[加密和压缩函数](https:/ ## 相关系统变量 -`block_encryption_mode` 变量设置 `AES_ENCRYPT()` 和 `AES_DECRYPT()` 所使用的加密模式。 +* [`block_encryption_mode`](/system-variables.md#block_encryption_mode) 变量设置 `AES_ENCRYPT()` 和 `AES_DECRYPT()` 所使用的加密模式。 + +* [`validate_password.*`](/system-variables.md) 变量影响 `VALIDATE_PASSWORD_STRENGTH()` 函数的行为。 ## 不支持的函数 * `DES_DECRYPT()`、`DES_ENCRYPT()`、`OLD_PASSWORD()` 和 `ENCRYPT()`:这些函数在 MySQL 5.7 中被废弃,并且已在 MySQL 8.0 中移除。 * 只在 MySQL 企业版中支持的函数。见 [Issue #2632](https://github.com/pingcap/tidb/issues/2632)。 + +## MySQL 兼容性 + +* TiDB 不支持 `STATEMENT_DIGEST()` 和 `STATEMENT_DIGEST_TEXT()` 函数。 diff --git a/functions-and-operators/json-functions.md b/functions-and-operators/json-functions.md index c55d4a413f51..e12de65d0af9 100644 --- a/functions-and-operators/json-functions.md +++ b/functions-and-operators/json-functions.md @@ -1,12 +1,12 @@ --- title: JSON 函数 aliases: ['/docs-cn/dev/functions-and-operators/json-functions/','/docs-cn/dev/reference/sql/functions-and-operators/json-functions/'] -summary: TiDB 支持 MySQL 5.7 GA 版本发布的大多数 JSON 函数,包括创建、搜索、修改、返回属性和效用函数。这些函数可用于处理 JSON 值,如创建 JSON 文档、搜索 JSON 文档中的值、修改 JSON 文档、返回 JSON 值属性和聚合函数。此外,还有其他相关函数可供参考。 +summary: TiDB 支持 MySQL 8.0 中提供的大部分 JSON 函数。 --- # JSON 函数 -TiDB 支持 MySQL 5.7 GA 版本发布的大多数 JSON 函数。 +TiDB 支持 MySQL 8.0 中提供的大部分 [JSON 函数]((https://dev.mysql.com/doc/refman/8.0/en/json-functions.html))。 ## 创建 JSON 值的函数 @@ -35,18 +35,16 @@ TiDB 支持 MySQL 5.7 GA 版本发布的大多数 JSON 函数。 | 函数 | 功能描述 | | --------------------------------- | ----------- | | [JSON_APPEND(json_doc, path, value)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-append) | `JSON_ARRAY_APPEND` 的别名 | -| [JSON_ARRAY_APPEND(json_doc, path, value)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-array-append) | 将值追加到指定路径的 JSON 数组的末尾 | -| [JSON_ARRAY_INSERT(json_doc, path, val[, path, val] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-array-insert) | 将数组插入 JSON 文档,并返回修改后的文档 | +| [JSON_ARRAY_APPEND(json_doc, path, val[, path, val] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-array-append) | 将值添加到 JSON 文档指定数组的末尾,并返回添加结果 | +| [JSON_ARRAY_INSERT(json_doc, path, val[, path, val] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-array-insert) | 将值插入到 JSON 文档中的指定位置并返回结果。 | | [JSON_INSERT(json_doc, path, val[, path, val] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-insert) | 在 JSON 文档中在某一路径下插入子文档 | -| [JSON_MERGE(json_doc, json_doc[, json_doc] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-merge) | 已废弃的 `JSON_MERGE_PRESERVE` 别名 | | [JSON_MERGE_PATCH(json_doc, json_doc[, json_doc] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-merge-patch) | 合并 JSON 文档 | | [JSON_MERGE_PRESERVE(json_doc, json_doc[, json_doc] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-merge-preserve) | 将两个或多个 JSON 文档合并成一个文档,并返回合并结果 | +| [JSON_MERGE(json_doc, json_doc[, json_doc] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-merge) | 已废弃,`JSON_MERGE_PRESERVE` 的别名 | | [JSON_REMOVE(json_doc, path[, path] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-remove) | 移除 JSON 文档中某一路径下的子文档 | | [JSON_REPLACE(json_doc, path, val[, path, val] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-replace) | 替换 JSON 文档中的某一路径下的子文档 | | [JSON_SET(json_doc, path, val[, path, val] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-set) | 在 JSON 文档中为某一路径设置子文档 | | [JSON_UNQUOTE(json_val)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-unquote) | 去掉 JSON 值外面的引号,返回结果为字符串 | -| [JSON_ARRAY_APPEND(json_doc, path, val[, path, val] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-array-append) | 将值添加到 JSON 文档指定数组的末尾,并返回添加结果 | -| [JSON_ARRAY_INSERT(json_doc, path, val[, path, val] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-array-insert) | 将值插入到 JSON 文档的指定位置,并返回插入结果 | ## 返回 JSON 值属性的函数 @@ -76,3 +74,12 @@ TiDB 支持 MySQL 5.7 GA 版本发布的大多数 JSON 函数。 * [JSON Function Reference](https://dev.mysql.com/doc/refman/8.0/en/json-function-reference.html) * [JSON Data Type](/data-type-json.md) + +## 不支持的函数 + +- `JSON_SCHEMA_VALID()` +- `JSON_SCHEMA_VALIDATION_REPORT()` +- `JSON_TABLE()` +- `JSON_VALUE()` + +更多信息,请参考 [#14486](https://github.com/pingcap/tidb/issues/14486)。 \ No newline at end of file diff --git a/functions-and-operators/locking-functions.md b/functions-and-operators/locking-functions.md index 435c21e251b6..530fb01ff94e 100644 --- a/functions-and-operators/locking-functions.md +++ b/functions-and-operators/locking-functions.md @@ -5,7 +5,7 @@ summary: 了解 TiDB 中的用户级锁函数。 # 锁函数 -TiDB 支持 MySQL 5.7 中的大部分用户级[锁函数](https://dev.mysql.com/doc/refman/5.7/en/locking-functions.html)。 +TiDB 支持 MySQL 8.0 中的大部分用户级[锁函数](https://dev.mysql.com/doc/refman/8.0/en/locking-functions.html)。 ## 支持的函数 @@ -20,6 +20,6 @@ TiDB 支持 MySQL 5.7 中的大部分用户级[锁函数](https://dev.mysql.com/ ## MySQL 兼容性 * TiDB 允许的最短超时时间为 1 秒,最长超时时间为 1 小时(即 3600 秒)。而 MySQL 允许最短 0 秒和最长无限超时(`timeout=-1`)。TiDB 会自动将超出范围的值转换为最接近的允许值,`timeout=-1` 会被转换为 3600 秒。 -* TiDB 不会自动检测用户级锁导致的死锁。死锁会话将在 1 小时内超时,但你也可以在任一受影响的会话上使用 `KILL` 语句手动终止死锁。你还可以通过始终用相同顺序获取用户级锁的方法来防止死锁。 +* TiDB 不会自动检测用户级锁导致的死锁。死锁会话将在 1 小时内超时,但你也可以在任一受影响的会话上使用 [`KILL`](/sql-statements/sql-statement-kill.md) 语句手动终止死锁。你还可以通过始终用相同顺序获取用户级锁的方法来防止死锁。 * 在 TiDB 中,锁对集群中所有 TiDB 服务器生效。而在 MySQL Cluster 和 Group Replication 中,锁只对本地单个服务器生效。 * 如果从另一个会话调用 `IS_USED_LOCK()` 并且无法返回持有锁的进程 ID,则返回 `1`。 diff --git a/functions-and-operators/string-functions.md b/functions-and-operators/string-functions.md index 945fa629f35a..747640906b83 100644 --- a/functions-and-operators/string-functions.md +++ b/functions-and-operators/string-functions.md @@ -1,12 +1,12 @@ --- title: 字符串函数 aliases: ['/docs-cn/dev/functions-and-operators/string-functions/','/docs-cn/dev/reference/sql/functions-and-operators/string-functions/','/docs-cn/dev/sql/string-functions/'] -summary: TiDB 支持大部分 MySQL 5.7 和部分 MySQL 8.0 字符串函数,以及部分 Oracle 21 函数。不支持的函数包括 LOAD_FILE()、MATCH() 和 SOUNDEX()。正则函数与 MySQL 的语法和数据类型存在一些差异,需要注意。 +summary: TiDB 支持 MySQL 8.0 中提供的大部分字符串函数以及 Oracle 21 中提供的部分函数。 --- # 字符串函数 -TiDB 支持使用大部分 MySQL 5.7 中提供的[字符串函数](https://dev.mysql.com/doc/refman/5.7/en/string-functions.html)、一部分 MySQL 8.0 中提供的[字符串函数](https://dev.mysql.com/doc/refman/8.0/en/string-functions.html)和一部分 Oracle 21 所提供的[函数](https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlqr/SQL-Functions.html#GUID-93EC62F8-415D-4A7E-B050-5D5B2C127009)。 +TiDB 支持使用 MySQL 8.0 中提供的大部分[字符串函数](https://dev.mysql.com/doc/refman/8.0/en/string-functions.html)以及 Oracle 21 中提供的部分[函数](https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlqr/SQL-Functions.html#GUID-93EC62F8-415D-4A7E-B050-5D5B2C127009)。 关于 Oracle 函数和 TiDB 函数的对照关系,请参考 [Oracle 与 TiDB 函数和语法差异对照](/oracle-functions-to-tidb.md)。 From f008ef077c32b1c52edb3b325a30f6cf6c9bb73a Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Fri, 26 Apr 2024 10:56:17 +0800 Subject: [PATCH 2/3] Apply suggestions from code review --- functions-and-operators/bit-functions-and-operators.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/functions-and-operators/bit-functions-and-operators.md b/functions-and-operators/bit-functions-and-operators.md index d1b4c8504c0b..ae13e9c539d8 100644 --- a/functions-and-operators/bit-functions-and-operators.md +++ b/functions-and-operators/bit-functions-and-operators.md @@ -22,11 +22,11 @@ TiDB 支持使用 MySQL 8.0 中提供的所有[位函数和操作符](https://de ## MySQL 兼容性 -在处理位函数和操作符时,MySQL 8.0 与早期版本的 MySQL 之间存在一些差异。TiDB 旨在遵循 MySQL 8.0 的行为。 +在处理位函数和操作符时,MySQL 8.0 与之前版本的 MySQL 之间存在一些差异。TiDB 旨在遵循 MySQL 8.0 的行为。 ## 已知问题 在以下情况中,TiDB 中的查询结果与 MySQL 5.7 相同,但与 MySQL 8.0 不同。 -- 二进制参数的位操作。更多信息,请参见 [#30637](https://github.com/pingcap/tidb/issues/30637)。 -- `BIT_COUNT()` 函数的结果。更多信息,请参见 [#44621](https://github.com/pingcap/tidb/issues/44621)。 \ No newline at end of file +- 二进制参数的位操作。更多信息,请参考 [#30637](https://github.com/pingcap/tidb/issues/30637)。 +- `BIT_COUNT()` 函数的结果。更多信息,请参考 [#44621](https://github.com/pingcap/tidb/issues/44621)。 \ No newline at end of file From 80fc82a792f389d139d1f0d7e2ffeae8306a9d83 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Mon, 29 Apr 2024 15:32:50 +0800 Subject: [PATCH 3/3] Apply suggestions from code review Co-authored-by: xixirangrang --- functions-and-operators/json-functions.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions-and-operators/json-functions.md b/functions-and-operators/json-functions.md index e12de65d0af9..2f55c3aa5386 100644 --- a/functions-and-operators/json-functions.md +++ b/functions-and-operators/json-functions.md @@ -6,7 +6,7 @@ summary: TiDB 支持 MySQL 8.0 中提供的大部分 JSON 函数。 # JSON 函数 -TiDB 支持 MySQL 8.0 中提供的大部分 [JSON 函数]((https://dev.mysql.com/doc/refman/8.0/en/json-functions.html))。 +TiDB 支持 MySQL 8.0 中提供的大部分 [JSON 函数](https://dev.mysql.com/doc/refman/8.0/en/json-functions.html)。 ## 创建 JSON 值的函数 @@ -36,7 +36,7 @@ TiDB 支持 MySQL 8.0 中提供的大部分 [JSON 函数]((https://dev.mysql.com | --------------------------------- | ----------- | | [JSON_APPEND(json_doc, path, value)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-append) | `JSON_ARRAY_APPEND` 的别名 | | [JSON_ARRAY_APPEND(json_doc, path, val[, path, val] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-array-append) | 将值添加到 JSON 文档指定数组的末尾,并返回添加结果 | -| [JSON_ARRAY_INSERT(json_doc, path, val[, path, val] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-array-insert) | 将值插入到 JSON 文档中的指定位置并返回结果。 | +| [JSON_ARRAY_INSERT(json_doc, path, val[, path, val] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-array-insert) | 将值插入到 JSON 文档中的指定位置并返回结果 | | [JSON_INSERT(json_doc, path, val[, path, val] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-insert) | 在 JSON 文档中在某一路径下插入子文档 | | [JSON_MERGE_PATCH(json_doc, json_doc[, json_doc] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-merge-patch) | 合并 JSON 文档 | | [JSON_MERGE_PRESERVE(json_doc, json_doc[, json_doc] ...)](https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-merge-preserve) | 将两个或多个 JSON 文档合并成一个文档,并返回合并结果 |