diff --git a/functions-and-operators/bit-functions-and-operators.md b/functions-and-operators/bit-functions-and-operators.md index 2975b46050f3..9495a87a5301 100644 --- a/functions-and-operators/bit-functions-and-operators.md +++ b/functions-and-operators/bit-functions-and-operators.md @@ -1,10 +1,15 @@ --- title: 位函数和操作符 +<<<<<<< HEAD +======= +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 8.0 中的所有位函数和操作符。 +>>>>>>> 967a0fae95 (translate 6 PRs for functions and operators (#17218)) --- # 位函数和操作符 -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)。 **位函数和操作符表** @@ -17,3 +22,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 280fb4b2fa56..94b26e44c4f0 100644 --- a/functions-and-operators/date-and-time-functions.md +++ b/functions-and-operators/date-and-time-functions.md @@ -1,10 +1,15 @@ --- title: 日期和时间函数 +<<<<<<< HEAD +======= +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 8.0 中的所有日期和时间函数。 +>>>>>>> 967a0fae95 (translate 6 PRs for functions and operators (#17218)) --- # 日期和时间函数 -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)。 > **注意:** > @@ -78,7 +83,7 @@ TiDB 支持使用 MySQL 5.7 中提供的所有[日期和时间函数](https://de ## MySQL 兼容性 -TiDB 支持 `str_to_date()` 函数,但是无法解析所有的日期和时间值。此外,TiDB 不支持以下日期和时间格式化选项: +TiDB 支持 `STR_TO_DATE()` 函数,但是无法解析所有的日期和时间值。此外,TiDB 不支持以下日期和时间格式化选项: | 格式 | 说明 | |--------|---------------------------------------------------------------------------------------| @@ -97,4 +102,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 7c989d29d9b8..b9c840461041 100644 --- a/functions-and-operators/encryption-and-compression-functions.md +++ b/functions-and-operators/encryption-and-compression-functions.md @@ -1,10 +1,15 @@ --- title: 加密和压缩函数 +<<<<<<< HEAD +======= +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 8.0 中提供的大部分加密和压缩函数。 +>>>>>>> 967a0fae95 (translate 6 PRs for functions and operators (#17218)) --- # 加密和压缩函数 -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)。 ## 支持的函数 @@ -25,9 +30,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 0d338f5ee1c4..9192daa4d9d2 100644 --- a/functions-and-operators/json-functions.md +++ b/functions-and-operators/json-functions.md @@ -1,10 +1,15 @@ --- title: JSON 函数 +<<<<<<< HEAD +======= +aliases: ['/docs-cn/dev/functions-and-operators/json-functions/','/docs-cn/dev/reference/sql/functions-and-operators/json-functions/'] +summary: TiDB 支持 MySQL 8.0 中提供的大部分 JSON 函数。 +>>>>>>> 967a0fae95 (translate 6 PRs for functions and operators (#17218)) --- # 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 值的函数 @@ -33,18 +38,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 值属性的函数 @@ -74,3 +77,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 f8aee4deaa80..619f3f375ea7 100644 --- a/functions-and-operators/string-functions.md +++ b/functions-and-operators/string-functions.md @@ -1,10 +1,15 @@ --- title: 字符串函数 +<<<<<<< HEAD +======= +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 8.0 中提供的大部分字符串函数以及 Oracle 21 中提供的部分函数。 +>>>>>>> 967a0fae95 (translate 6 PRs for functions and operators (#17218)) --- # 字符串函数 -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)。