Note:
This topic has been translated from a Chinese forum by GPT and might contain errors.
Original topic: 【TiDBer 唠嗑茶话会 88】关于 TiDB 兼容 MySQL 8.0 ,你最想支持的特性/功能是什么?
After MySQL 5.7 reached EOL, community members have been frequently inquiring about MySQL 8.0, as shown in the image. Many features and functionalities of MySQL 8.0 have been made compatible since version 7.3!
If you wish to be compatible with 8.0 and use it in a production environment, you can consider TiDB v7.5 and later versions!
This Topic:
Regarding TiDB’s compatibility with MySQL 8.0, what feature/function do you most want to be supported?
TiDB v7.3 Compatibility with MySQL 5.7 and MySQL 8.0
Documentation on TiDB v7.3’s compatibility with MySQL 5.7 and MySQL 8.0:
Further Reading:
Here are some issues related to TiDB’s compatibility with MySQL that might interest you:
pingcap:master
← dveeden:mysql8
opened 07:59AM - 24 Mar 23 UTC
### What is changed, added or deleted? (Required)
Change links from `https://… dev.mysql.com/doc/refman/5.7/...` to `https://dev.mysql.com/doc/refman/8.0/...`
This PR containts two commits:
- A commit adding a script
- A commit with the changes made by that script
### Which TiDB version(s) do your changes apply to? (Required)
**Tips for choosing the affected version(s):**
By default, **CHOOSE MASTER ONLY** so your changes will be applied to the next TiDB major or minor releases. If your PR involves a product feature behavior change or a compatibility change, **CHOOSE THE AFFECTED RELEASE BRANCH(ES) AND MASTER**.
For details, see [tips for choosing the affected versions](https://github.com/pingcap/docs/blob/master/CONTRIBUTING.md#guideline-for-choosing-the-affected-versions).
- [x] master (the latest development version)
- [x] v7.4 (TiDB 7.0 versions)
### What is the related PR or file link(s)?
- This PR is translated from:
- Other reference link(s):
### Do your changes match any of the following descriptions?
- [ ] Delete files
- [ ] Change aliases
- [ ] Need modification after applied to another branch
- [ ] Might cause conflicts after applied to another branch
opened 04:14PM - 19 Oct 18 UTC
type/enhancement
type/feature-request
feature/reviewing
compatibility-mysql8
This issue is to track what is required to move from MySQL 5.7 to [MySQL 8.0](ht… tps://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html) compatibility.
See [the complete list](https://mysqlserverteam.com/the-complete-list-of-new-features-in-mysql-8-0/).
## Essential
- [x] Common Table Expressions (regular and recursive) #17472
- [x] Window Functions https://github.com/pingcap/tidb/issues/4807 #8117
- [x] utf8mb4 as default (#7965)
- [x] Role Based Authentication
- [x] Support utf8mb4_0900_ai_ci when new collation is enabled #37566
## Nice to Have
### 8.0.11 and before
- [x] `NOWAIT`
- [x] Invisible Indexes https://github.com/pingcap/tidb/issues/9246
- [x] [`SET_VAR`](https://dev.mysql.com/doc/refman/8.0/en/optimizer-hints.html#optimizer-hints-set-var) optimizer hint https://github.com/pingcap/tidb/issues/18748
- [x] `information_schema.keywords` table. [Example here](https://lefred.be/content/mysql-8-0-and-keywords/). #48801
- [x] `SHUTDOWN` command https://github.com/pingcap/tidb/issues/5046
- [x] Improved [Regular expression support](https://mysqlserverteam.com/new-regular-expression-functions-in-mysql-8-0/) https://github.com/pingcap/tidb/issues/23881
- [x] Maintain information about password history https://github.com/pingcap/tidb/pull/39162
- [x] Resource Management https://github.com/pingcap/tidb/issues/38825
- [x] [`MAX_EXECUTION_TIME`](https://dev.mysql.com/doc/refman/8.0/en/optimizer-hints.html#optimizer-hints-execution-time) hint https://github.com/pingcap/tidb/issues/7008
- [x] Non-binary utf8mb4 collations, such as utf8mb4_0900_ai_ci https://github.com/pingcap/tidb/pull/33212/files
- [x] helper functions uuid_to_bin and bin_to_uuid https://github.com/pingcap/tidb/issues/20119
- [x] #30295
- [x] `caching_sha2_password` Authentication Plugin https://github.com/pingcap/tidb/issues/9411
- [ ] [`JSON_TABLE`](https://mysqlserverteam.com/json_table-the-best-of-both-worlds/) function + add [remaining JSON functions](https://github.com/pingcap/tidb/issues/7546) that were backported to 5.7
- [ ] `SKIP LOCKED` https://github.com/pingcap/tidb/issues/18207
- [ ] `RESTART` command https://github.com/pingcap/tidb/issues/26016
- [ ] Cleanup [`SHOW VARIABLES`](https://dev.mysql.com/doc/refman/8.0/en/added-deprecated-removed.html) output (remove query cache etc.)
- [ ] Remove removed functions (insecure crypto etc)
- [ ] GIS Support https://github.com/pingcap/tidb/issues/6347
- [ ] Descending Indexes + `GROUP BY` no longer implying `ORDER BY` https://github.com/pingcap/tidb/issues/2519
- [ ] Functional Indexes, aka expression indexes in TiDB https://github.com/pingcap/tidb/issues/18008
- [ ] Index Skip Scan
- [ ] support more clear combinations of UNION and INTO
- [ ] SQL Mode `TIME_TRUNCATE_FRACTIONAL` https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sqlmode_time_truncate_fractional
- [ ] Support MySQL 8.0 bitwise behavior https://github.com/pingcap/tidb/issues/30637
- [ ] Support Partitioning management DDL `ALTER TABLE t REMOVE PARTITIONING` https://github.com/pingcap/tidb/issues/42616
- [ ] Support Partitioning management DDL `ALTER TABLE t PARTITION BY ...` https://github.com/pingcap/tidb/issues/42616
### 8.0.13
- [x] Option to [require tables to have a primary key](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_sql_require_primary_key) (8.0.13) https://github.com/pingcap/tidb/issues/28544
- [x] Default values for `BLOB/TEXT` + default value as function (part 1: `RAND()`) https://github.com/pingcap/tidb/issues/10377
- [x] Default values for `BLOB/TEXT` + default value as function (part 2: `UUID()`) https://github.com/pingcap/tidb/issues/33870
- [x] Default values for `BLOB/TEXT` + default value as function (part 3) #45506
- [ ] Require current password to be specified to change password (8.0.13)
### 8.0.14
- [ ] Lateral derived tables (8.0.14) [Details](https://dev.mysql.com/worklog/task/?id=8652) https://github.com/pingcap/tidb/issues/40328
- [ ] Admin-only TCP/IP port (8.0.14) [Details](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_admin_address)
- [ ] Two passwords per account (8.0.14) [Details](https://dev.mysql.com/worklog/task/?id=11540)
### 8.0.15
- [x] Check Constraints (from 8.0.15) https://github.com/pingcap/tidb/projects/46 https://github.com/pingcap/tidb/issues/41711
### 8.0.17
- [x] utf8mb4_0900_bin https://github.com/pingcap/tidb/issues/46268
- [x] multi-valued indexes on json arrays / json_overlaps() and member of() https://github.com/pingcap/tidb/issues/39592
- [x] #52779
### 8.0.18
- [ ] Create user/alter user/set password can generate random passwords for you.
### 8.0.19
- [x] Table constructors. i.e. `TABLE t ORDER BY c LIMIT 10 OFFSET 3` - 8.0.19 #19934
- [x] Make integer display with optional https://github.com/pingcap/tidb/pull/18775
- [x] Lock accounts after too many failed logins https://github.com/pingcap/tidb/issues/38938
- [ ] New syntax for INSERT ON DUPLICATE KEY UPDATE https://dev.mysql.com/worklog/task/?id=6312 #51650
- [ ] Row-value constructors. i.e. `VALUES ROW(1, "foo", 3.2)` -8.0.19 #21486
- [ ] Row-alias support with the `AS` keyword for `INSERT...ON DUPLICATE KEY UPDATE...`
- [ ] Support TIMESTAMP with explicit time zone #51742
### 8.0.20
- [ ] New Optimizer hints: join_index, no_join_index, group_index, no_group_index, order_index, no_order_index, index, no_index.
### 8.0.21
- [x] User attributes https://github.com/pingcap/tidb/issues/38172
- [ ] JSON_VALUE function (8.0.21)
- [ ] `CREATE TABLE ... START TRANSACTION` https://github.com/pingcap/tidb/issues/52477
### 8.0.22
- [x] [Parenthesized Query Expressions](https://dev.mysql.com/doc/refman/8.0/en/parenthesized-query-expressions.html)
### 8.0.23
- [ ] [Invisible Columns](https://dev.mysql.com/doc/refman/8.0/en/invisible-columns.html) - 8.0.23
### 8.0.28
- [x] [Deprecated TLSv1.0 and TLSv1.1](https://dev.mysql.com/doc/refman/8.0/en/encrypted-connection-protocols-ciphers.html#encrypted-connection-supported-protocols) #36036
- [ ] Support wider range of UNIX_TIMESTAMP #30133
### 8.0.30
- [ ] [Generated Invisible Primary Key](https://dev.mysql.com/doc/refman/8.0/en/create-table-gipks.html) - 8.0.30
- [ ] KDF, salt and iterations support for `AES_ENCRYPT()` and `AES_DECRYPT()`.
### 8.0.31
- [x] [`INTERSECT`](https://dev.mysql.com/doc/refman/8.0/en/intersect.html) #18031
- [x] [`EXCEPT`](https://dev.mysql.com/doc/refman/8.0/en/except.html) #18031
### 8.0.34
- [ ] [`CURRENT_USER()` as default value for VARCHAR and TEXT columns in CREATE TABLE statements](https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-34.html#mysqld-8-0-34-sql-syntax) #45506
### 8.0.35
### 8.0.36
### 8.0.37
## Cleanup
* [ ] Remove variables that [have been removed](https://dev.mysql.com/doc/refman/8.0/en/added-deprecated-removed.html#optvars-removed).
* [ ] Remove features that [have been removed](https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html#mysql-nutshell-removals) (this will require several sub-tasks)
* [ ] Add deprecation warnings for [deprecated variables](https://dev.mysql.com/doc/refman/8.0/en/added-deprecated-removed.html#optvars-deprecated)
* [ ] Add deprecation warnings for [deprecated features](https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html#mysql-nutshell-deprecations)
## Not Applicable
- New Data Dictionary
- Performance Schema enhancements
- Replication enhancements
- InnoDB enhancements
- `SET PERSIST` (settings automatically save cluster-wide)
- Log services (`log_error_services` etc)
pingcap:master
← dveeden:mysql8
opened 08:18AM - 24 Mar 23 UTC
### What problem does this PR solve?
<!--
Please create an issue first to de… scribe the problem.
There MUST be one line starting with "Issue Number: " and
linking the relevant issues via the "close" or "ref".
For more info, check https://pingcap.github.io/tidb-dev-guide/contribute-to-tidb/contribute-code.html#referring-to-an-issue.
-->
Issue Number: ref #7968
Problem Summary:
Note that 8.0.11 was chosen as it is the first G.A. version of MySQL 8.0. More features were added in later point releases.
### What is changed and how it works?
### Check List
Tests
- [ ] Unit test
- [ ] Integration test
- [x] Manual test (add detailed scripts or steps below)
- [ ] No code
Side effects
- [ ] Performance regression: Consumes more CPU
- [ ] Performance regression: Consumes more Memory
- [ ] Breaking backward compatibility
Documentation
- [ ] Affects user behaviors
- [ ] Contains syntax changes
- [ ] Contains variable changes
- [ ] Contains experimental features
- [x] Changes MySQL compatibility
### Release note
Please refer to [Release Notes Language Style Guide](https://pingcap.github.io/tidb-dev-guide/contribute-to-tidb/release-notes-style-guide.html) to write a quality release note.
```release-note
The MySQL version number reported by TiDB was updated to 8.0.11
```
pingcap:master
← YangKeao:fix_unixtimestamp_range
opened 07:24AM - 19 May 23 UTC
### What problem does this PR solve?
Issue Number: close #43987
In MySQL 8… .0.28, the range of argument of `UNIX_TIMESTAMP` increases to '3001-01-19 03:14:07.999999' UTC. To keep compatible with MySQL, tidb should also extend this limitation.
### What is changed and how it works?
The only concern is about the precision handling. The original way (of using `UnixNano`) is not able to represent a time in `3001` year now, so I added two decimals to get the final result.
### Check List
Tests
- [ ] Unit test
- [x] Integration test
- [ ] Manual test (add detailed scripts or steps below)
- [ ] No code
### Release note
```release-note
The range of argument of `UNIX_TIMESTAMP` is extended from '2038-01-19 03:14:07.999999' to '3001-01-19 03:14:07.999999' UTC
```
pingcap:master
← pingcap:mysql-compatibility-include-mysql8
opened 03:51AM - 12 Jun 23 UTC
1. mysql 8.0 is mentioned explicitly
2. include the description of a few unsupp… orted features from Mysql 8.0
### First-time contributors' checklist
- [x] I've signed [**Contributor License Agreement**](https://cla-assistant.io/pingcap/docs) that's required for repo owners to accept my contribution.
### What is changed, added or deleted? (Required)
* explicitly mention TiDB already included quite a few new features of MySQL 8.0
* append the remarkable unsupported features in MySQL 8.0 that has not been included in TiDB
PR for CN: https://github.com/pingcap/docs-cn/pull/14196
### Which TiDB version(s) do your changes apply to? (Required)
**Tips for choosing the affected version(s):**
By default, **CHOOSE MASTER ONLY** so your changes will be applied to the next TiDB major or minor releases. If your PR involves a product feature behavior change or a compatibility change, **CHOOSE THE AFFECTED RELEASE BRANCH(ES) AND MASTER**.
For details, see [tips for choosing the affected versions](https://github.com/pingcap/docs/blob/master/CONTRIBUTING.md#guideline-for-choosing-the-affected-versions).
- [x] master (the latest development version)
- [x] v7.2 (TiDB 7.2 versions)
- [ ] v7.1 (TiDB 7.1 versions)
- [ ] v7.0 (TiDB 7.0 versions)
- [ ] v6.6 (TiDB 6.6 versions)
- [ ] v6.5 (TiDB 6.5 versions)
- [ ] v6.1 (TiDB 6.1 versions)
- [ ] v5.4 (TiDB 5.4 versions)
- [ ] v5.3 (TiDB 5.3 versions)
- [ ] v5.2 (TiDB 5.2 versions)
- [ ] v5.1 (TiDB 5.1 versions)
- [ ] v5.0 (TiDB 5.0 versions)
### What is the related PR or file link(s)?
- This PR is translated from: https://github.com/pingcap/docs-cn/pull/14196
- Other reference link(s):
### Do your changes match any of the following descriptions?
- [ ] Delete files
- [ ] Change aliases
- [ ] Need modification after applied to another branch
- [ ] Might cause conflicts after applied to another branch
opened 02:21AM - 24 Feb 23 UTC
closed 01:54PM - 07 Jul 23 UTC
type/feature-request
affects-7.2
https://dev.mysql.com/doc/refman/8.0/en/create-table-check-constraints.html
opened 08:36AM - 02 Nov 22 UTC
closed 02:56PM - 19 Apr 23 UTC
type/feature-request
# Feature Request
## Background
A Global Resource Control mechanism that limit… s multiple applications' resource usage in a shared TiDB cluster, avoids interference between applications.
## Design
RFC: https://github.com/pingcap/tidb/blob/master/docs/design/2022-11-25-global-resource-control.md
## Details
### Interface and Configuration Part
Here a tiny example of the SQL interface.
```
CREATE RESOURCE GROUP `group_name` RRU_PER_SECOND=10000, WRU_PER_SECOND=10000.
ALTER RESOURCE GROUP `group_name` RRU_PER_SECOND= 20000;
/* bind resource group to user*/
ALTER USER user_name RESOURCE GROUP resouce_group_name;
/* reset to default systemn resource group for the current session*/
SET CURRENT RESOURCE GROUP DEFAULT;
```
Above the example shown, it's easy to set up for users or tenants. In theory, we can measure at the requested level, it is able to aggregate at different levels, so it is possible to bind the resource unit limit to the user or the session to a group.
## Tasks
### SQL Interface
- [x] Supports Resource Group Syntax
- [x] Supports Create/Alter Syntax https://github.com/pingcap/tidb/pull/39546 @nolouch
- [x] DDL Part
- [x] Supports Create/Alter/Delete Resource Group https://github.com/pingcap/tidb/pull/40188 @nolouch
- [x] Supports Bind Resource Group for Users https://github.com/pingcap/tidb/pull/39561
- [x] https://github.com/pingcap/tidb/issues/40380
- [x] Usability
- [x] Show Resource Groups with SQL interface
- [x] #39781
- [x] History RU Metrics @JmPotato
- [x] https://github.com/tikv/pd/issues/5854
- [x] https://github.com/pingcap/tidb/issues/40526
- [x] Privilege check & constraint syntax check. https://github.com/pingcap/tidb/pull/40632 @tiancaiamao
- [x] Test&Compatibility
- [x] https://github.com/pingcap/tidb/issues/40371
- [x] https://github.com/pingcap/tidb/issues/40370
### Proto
- [x] Protobuf relative
- [x] https://github.com/pingcap/kvproto/pull/1019
- [x] https://github.com/pingcap/kvproto/pull/1029
### Resource Group Meta Manager
- [x] https://github.com/tikv/pd/issues/5784 @nolouch
- https://github.com/tikv/pd/pull/5785
- [x] Resource Group Sync to storage https://github.com/tikv/pd/issues/5794 @HuSharp
- [x] https://github.com/tikv/tikv/pull/14022
### Storage Node Level Control [For Scheduling]
- [x] Supports make priority by resource group information
- [x] Supports scheduling for read path @glorv
- [x] supports priority queue in yatp. https://github.com/tikv/yatp/pull/72
- [x] Implement mclock scheduling for read path in tikv https://github.com/tikv/tikv/pull/14001@glorv
- [x] Supports scheduling for write path @Connor1996
- [x] https://github.com/tikv/tikv/pull/14002
- [x] https://github.com/tikv/tikv/pull/14057
### Global Quote Flow Control Module [For Quota Limit]
- [x] https://github.com/pingcap/tidb/pull/40732 @nolouch
- [x] Global Token Buckets: grant quota to the client, consume in client @nolouch @CabinfeverB
- [x] https://github.com/tikv/pd/pull/5809
- [x] https://github.com/tikv/pd/pull/5810
- [x] https://github.com/tikv/pd/pull/5811
- [x] https://github.com/tikv/pd/pull/5868
- [x] #40645 @JmPotato
- [x] https://github.com/tikv/client-go/pull/648
- [x] https://github.com/tikv/pd/pull/5862 @JmPotato
- [x] Aggregate resource consumption of resource groups in each client
- [x] https://github.com/tikv/pd/pull/5855/
### Decouple priority
done
### Compatibility With Other Components
#### BR #42266
- [x] Disable BR for v7.0 #42267
opened 10:24AM - 21 Jul 23 UTC
closed 08:32AM - 22 Mar 24 UTC
type/compatibility
sig/sql-infra
type/feature-request
compatibility-mysql8
## Bug Report
TiDB doesn't allow a default value for TEXT, BLOB or JSON colum… ns.
### 1. Minimal reproduce step (Required)
```sql
CREATE TABLE t1 (id INT PRIMARY KEY, c1 TEXT DEFAULT 'foo');
CREATE TABLE t1 (id INT PRIMARY KEY, c1 TEXT DEFAULT ('foo'));
SHOW CREATE TABLE t1\G
INSERT INTO t1(id) VALUES(1);
TABLE t1;
```
### 2. What did you expect to see? (Required)
With MySQL 8.1.0:
```
sql> CREATE TABLE t1 (id INT PRIMARY KEY, c1 TEXT DEFAULT 'foo');
ERROR: 1101 (42000): BLOB, TEXT, GEOMETRY or JSON column 'c1' can't have a default value
sql> CREATE TABLE t1 (id INT PRIMARY KEY, c1 TEXT DEFAULT ('foo'));
Query OK, 0 rows affected (0.0586 sec)
sql> SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE `t1` (
`id` int NOT NULL,
`c1` text COLLATE utf8mb4_general_ci DEFAULT (_utf8mb4'foo'),
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
1 row in set (0.0184 sec)
sql> INSERT INTO t1(id) VALUES(1);
Query OK, 1 row affected (0.0076 sec)
sql> TABLE t1;
+----+-----+
| id | c1 |
+----+-----+
| 1 | foo |
+----+-----+
1 row in set (0.0009 sec)
```
### 3. What did you see instead (Required)
```
sql> CREATE TABLE t1 (id INT PRIMARY KEY, c1 TEXT DEFAULT 'foo');
ERROR: 1101 (42000): BLOB/TEXT/JSON column 'c1' can't have a default value
sql> CREATE TABLE t1 (id INT PRIMARY KEY, c1 TEXT DEFAULT ('foo'));
ERROR: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your TiDB version for the right syntax to use line 1 column 59 near "'foo'))"
...
```
### 4. What is your TiDB version? (Required)
```
Release Version: v7.2.0
Edition: Community
Git Commit Hash: 9fd5f4a8e4f273a60fbe7d3848f85a1be8f0600b
Git Branch: heads/refs/tags/v7.2.0
UTC Build Time: 2023-06-27 15:04:42
GoVersion: go1.20.5
Race Enabled: false
Check Table Before Drop: false
Store: tikv
```
opened 12:13AM - 11 Dec 21 UTC
type/compatibility
sig/sql-infra
## Bug Report
Please answer these questions before submitting your issue. Tha… nks!
### 1. Minimal reproduce step (Required)
```sql
drop table if exists t1;
SET SESSION sql_safe_updates = 1;
CREATE TABLE t1 ( a INT );
INSERT INTO t1 VALUES (1), (2);
select @@sql_safe_updates;
update t1 set a = 5;
```
### 2. What did you expect to see? (Required)
```sql
mysql> select @@sql_safe_updates;
+--------------------+
| @@sql_safe_updates |
+--------------------+
| 1 |
+--------------------+
1 row in set (0.00 sec)
mysql> update t1 set a = 5;
ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column.
```
### 3. What did you see instead (Required)
```
mysql> select @@sql_safe_updates;
+--------------------+
| @@sql_safe_updates |
+--------------------+
| 1 |
+--------------------+
1 row in set (0.00 sec)
mysql> update t1 set a = 5;
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0
```
### 4. What is your TiDB version? (Required)
```sql
| Release Version: v5.4.0-alpha-264-g6efa36df6
Edition: Community
Git Commit Hash: 6efa36df6cff325106f67ecfe3d79816ba37ca6a
Git Branch: master
UTC Build Time: 2021-11-29 16:57:51
GoVersion: go1.17.2
Race Enabled: false
TiKV Min Version: v3.0.0-60965b006877ca7234adaced7890d7b029ed1306
Check Table Before Drop: false |
```
opened 03:38AM - 01 Sep 23 UTC
type/enhancement
## Enhancement
There's a known bug of MySQL Connector / J versions 5.1.25 - 5… .1.45, see for more details https://bugs.mysql.com/bug.php?id=79612.
The bug violates connection protocol, which makes MySQL & TiDB fail to parse the connection attributes:
* MySQL 5.7.35: fail to parse the connection attributes, there is no connection attribute for the related connection.
* MySQL 8.0.32: fail to establish the connection with an exception: "`Caused by: java.lang.NullPointerException: Cannot invoke "java.util.Map.get(Object)" because "this.serverVariables" is null`".
* TiDB(all versions): fail to parse the connection attributes([a `WARN` message will be logged](https://github.com/pingcap/tidb/blob/9176d206c9b130a5e56f95543740cad66eb469ca/server/internal/parse/parse.go#L472-L482)), there is no connection attribute for the related connection.
Here we would like to make some discussions in this issue on the possibility of adapting this bug, which looks possible:
When CLIENT_CONNECT_WITH_DB is not set, it shouldn't be skipped originally. However, a `null` value was added to the JDBC connection. This caused the server to misinterpret the offset during parsing, leading to errors in parsing subsequent authentication plugins and connection attributes. One of these attributes, the authentication plugin, is empty, resulting in the server sending a switch auth request and an additional round of password verification.
If following the normal parsing order, it's challenging to determine whether the null value belongs to the authentication plugin or the default database.
The solution is to treat the `null` value as the database when `auth plugin=""`, and then check the following authentication plugin for validity.
Event Rewards:
Participation Award
Participate in this discussion to receive 30 points reward~
Event Duration:
2023.9.28-2023.10.13
Perfect compatibility~
Recently, I’ve been having a lot of trouble with MySQL 8.0~
MySQL 8 is not even compatible with itself, just directly support MySQL 8.1.
The diagram makes it very clear. Except for GIS, FULLTEXT, and skip locked lateral join, it is basically compatible.
Is it possible to provide another method: to read MySQL data through TiDB…
Mount MySQL as a data source to TiDB, and read it through TiDB’s JDBC…
Compatible with MySQL 5 and 8
Stored procedures, character/collation compatibility (got burned several times, converting from utf8mb4 to utf8, MySQL 8.0’s utf8mb3…)
It would be great if stored procedures were supported.
Can you make an Oracle ASH?
You’re absolutely right, MySQL itself can’t fully be compatible with itself, so TiDB just needs to achieve compatibility with the greatest common divisor.
Memory management and stored procedures
The features I most want to support are: stored procedures, functions, user-defined functions, CTAS (Create Table As Select) syntax, and full-text indexing.