Incompatible with MySQL when using ProxySQL
- Dominant language
- Go
- Stars
- 40.5k
- Forks
- 6.2k
- PR merge metrics
- PR metrics pending
Description
## Bug Report
Please answer these questions before submitting your issue. Thanks!
### 1. Minimal reproduce step (Required)
1. Install TiDB
2. Install MySQL
3. Install ProxySQL
4. Configure ProxySQL, `root` user will connect to TiDB, and `root1` user will connect to MySQL.
5. Run:
```sql
use test;
drop table if exists t1;
create table t1 (
a char(1) character set latin1 collate latin1_bin,
b char(1) character set latin1 collate latin1_bin,
c char(1) character set latin1 collate latin1_bin
);
set names latin1;
SHOW VARIABLES LIKE 'character_set%';
select * from t1 where 'a' collate latin1_bin in (a,b,c);
```
### 2. What did you expect to see? (Required)
Integration ProxySQL with MySQL:
```
# mysql -u root1 -P 6033 -h 127.0.0.1 -p << EOF
> use test;
> drop table if exists t1;
> create table t1 (
> a char(1) character set latin1 collate latin1_bin,
> b char(1) character set latin1 collate latin1_bin,
> c char(1) character set latin1 collate latin1_bin
> );
> set names latin1;
> SHOW VARIABLES LIKE 'character_set%';
> select * from t1 where 'a' collate latin1_bin in (a,b,c);
> EOF
Enter password:
Variable_name Value
character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_filesystem binary
character_set_results latin1
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
```
### 3. What did you see instead (Required)
Integration ProxySQL with TiDB:
```
# mysql -u root -P 6033 -h 127.0.0.1 << EOF
> use test;
> drop table if exists t1;
> create table t1 (
> a char(1) character set latin1 collate latin1_bin,
> b char(1) character set latin1 collate latin1_bin,
> c char(1) character set latin1 collate latin1_bin
> );
> set names latin1;
> SHOW VARIABLES LIKE 'character_set%';
> select * from t1 where 'a' collate latin1_bin in (a,b,c);
> EOF
ERROR 1273 (HY000) at line 9: Unsupported collation when new collation is enabled: 'latin1_swedish_ci'
```
### 4. What is your TiDB version? (Required)
master branch source code:
```sql
+------------------+
| version() |
+------------------+
| 5.7.25-TiDB-None |
+------------------+
```
### 5. Other Scenario
BTW, when you run this SQL at TiDB or MySQL directly. It will completely successful.
MySQL:
```
# mysql -u root1 -P 3306 -h 127.0.0.1 -p << EOF
> use test;
> drop table if exists t1;
> create table t1 (
> a char(1) character set latin1 collate latin1_bin,
> b char(1) character set latin1 collate latin1_bin,
> c char(1) character set latin1 collate latin1_bin
> );
> set names latin1;
> SHOW VARIABLES LIKE 'character_set%';
> select * from t1 where 'a' collate latin1_bin in (a,b,c);
> EOF
Enter password:
Variable_name Value
character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_filesystem binary
character_set_results latin1
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
```
TiDB:
```
mysql -u root -P 4000 -h 127.0.0.1 << EOF
> use test;
> drop table if exists t1;
> create table t1 (
> a char(1) character set latin1 collate latin1_bin,
> b char(1) character set latin1 collate latin1_bin,
> c char(1) character set latin1 collate latin1_bin
> );
> set names latin1;
> SHOW VARIABLES LIKE 'character_set%';
> select * from t1 where 'a' collate latin1_bin in (a,b,c);
> EOF
Variable_name Value
character_set_client latin1
character_set_connection latin1
character_set_database utf8mb4
character_set_filesystem binary
character_set_results latin1
character_set_server utf8mb4
character_set_system utf8
character_sets_dir /usr/local/mysql-5.6.25-osx10.8-x86_64/share/charsets/
```
So, the situation is:
||TiDB|MySQL|
|-|-|-|
|Directly|✅|✅|
|ProxySQL|❌|✅|
That is too weird, PTAL.
Contributor guide
Assessment
This issue has not been assessed yet.