Bug #82194 | innodb_large_prefix does not honor UNIQUEness past 255 | ||
---|---|---|---|
Submitted: | 12 Jul 2016 5:47 | Modified: | 12 Jul 2016 18:11 |
Reporter: | Rick James | Email Updates: | |
Status: | Not a Bug | Impact on me: | |
Category: | MySQL Server: DML | Severity: | S3 (Non-critical) |
Version: | 5.6.12, 5.7.13 | OS: | Any |
Assigned to: | CPU Architecture: | Any | |
Tags: | INDEX, large_prefix |
[12 Jul 2016 5:47]
Rick James
[12 Jul 2016 7:56]
MySQL Verification Team
Hello Rick James, Thank you for the report. Imho this seems to be working as expected as I don't see any issues: - mysql> SHOW VARIABLES WHERE Variable_name LIKE 'innodb_large_prefix' OR Variable_name LIKE 'innodb_file_format' OR Variable_name LIKE 'innodb_file_per_table' OR Variable_name LIKE '%version%'; +-------------------------+---------------------------------------------------------+ | Variable_name | Value | +-------------------------+---------------------------------------------------------+ | innodb_file_format | Barracuda | | innodb_file_per_table | ON | | innodb_large_prefix | ON | | innodb_version | 5.7.13 | | protocol_version | 10 | | slave_type_conversions | | | tls_version | TLSv1,TLSv1.1,TLSv1.2 | | version | 5.7.13-enterprise-commercial-advanced-log | | version_comment | MySQL Enterprise Server - Advanced Edition (Commercial) | | version_compile_machine | x86_64 | | version_compile_os | linux-glibc2.5 | +-------------------------+---------------------------------------------------------+ 11 rows in set (0.01 sec) mysql> set sql_mode='strict_all_tables'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> drop table if exists r; Query OK, 0 rows affected (0.01 sec) mysql> create table r(a varchar(500), unique(a))engine=innodb charset=utf8 row_format=dynamic; Query OK, 0 rows affected (0.00 sec) mysql> insert into r values(concat(repeat('a',499),'b')); Query OK, 1 row affected (0.01 sec) mysql> insert into r values(concat(repeat('a',499),'c')); Query OK, 1 row affected (0.00 sec) mysql> select distinct(a) from r\G *************************** 1. row *************************** a: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab *************************** 2. row *************************** a: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac 2 rows in set (0.00 sec) mysql> mysql> SHOW TABLE STATUS LIKE 'r'\G *************************** 1. row *************************** Name: r Engine: InnoDB Version: 10 Row_format: Dynamic Rows: 2 Avg_row_length: 8192 Data_length: 16384 Max_data_length: 0 Index_length: 16384 Data_free: 0 Auto_increment: NULL Create_time: 2016-07-12 09:37:53 Update_time: 2016-07-12 09:37:53 Check_time: NULL Collation: utf8_general_ci Checksum: NULL Create_options: row_format=DYNAMIC Comment: 1 row in set (0.01 sec) mysql> SHOW CREATE TABLE r\G *************************** 1. row *************************** Table: r Create Table: CREATE TABLE `r` ( `a` varchar(500) DEFAULT NULL, UNIQUE KEY `a` (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC 1 row in set (0.00 sec) Thanks, Umesh
[12 Jul 2016 7:58]
MySQL Verification Team
-- mysql> set sql_mode='strict_all_tables'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> drop table if exists r; Query OK, 0 rows affected (0.00 sec) mysql> create table r(a varchar(500), unique(a))engine=innodb row_format=dynamic; Query OK, 0 rows affected (0.00 sec) mysql> insert into r values(concat(repeat('a',499),'b')); Query OK, 1 row affected (0.00 sec) mysql> insert into r values(concat(repeat('a',499),'c')); Query OK, 1 row affected (0.00 sec) mysql> select distinct(a) from r\G *************************** 1. row *************************** a: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab *************************** 2. row *************************** a: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac 2 rows in set (0.00 sec) mysql> mysql> SHOW TABLE STATUS LIKE 'r'\G *************************** 1. row *************************** Name: r Engine: InnoDB Version: 10 Row_format: Dynamic Rows: 2 Avg_row_length: 8192 Data_length: 16384 Max_data_length: 0 Index_length: 16384 Data_free: 0 Auto_increment: NULL Create_time: 2016-07-12 09:38:33 Update_time: 2016-07-12 09:38:33 Check_time: NULL Collation: latin1_swedish_ci Checksum: NULL Create_options: row_format=DYNAMIC Comment: 1 row in set (0.00 sec) mysql> show create table r\G *************************** 1. row *************************** Table: r Create Table: CREATE TABLE `r` ( `a` varchar(500) DEFAULT NULL, UNIQUE KEY `a` (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC 1 row in set (0.00 sec)
[12 Jul 2016 17:52]
Rick James
(Bad test case; closing until I get it fixed.)
[12 Jul 2016 18:11]
Rick James
Sorry for the false alarm. I goofed.
[13 Jul 2016 4:14]
MySQL Verification Team
Thank you Rick for confirming. Regards, Umesh