Bug #84467 | ALTERing KEY_BLOCK_SIZE keeps the old kbs in KEYs. | ||
---|---|---|---|
Submitted: | 11 Jan 2017 8:22 | Modified: | 25 Jul 2018 6:20 |
Reporter: | Jean-François Gagné | Email Updates: | |
Status: | Verified | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S3 (Non-critical) |
Version: | 5.7.17-log | OS: | Any |
Assigned to: | CPU Architecture: | Any |
[11 Jan 2017 8:22]
Jean-François Gagné
[11 Jan 2017 9:15]
MySQL Verification Team
Hello Jean, Thank you for the report and test case. Thanks, Umesh
[14 Jul 2017 9:46]
Jean-François Gagné
Hi, Bug #70534 was closed as "Won't fix". As this bug is related to this "Won't fix" bug, I would like to know if this bug is still being worked on or if it will be closed too. Many thanks, JFG
[25 Oct 2017 15:26]
MySQL Verification Team
This is a duplicate of the bug: https://bugs.mysql.com/bug.php?id=88220
[25 Jul 2018 6:20]
Jean-François Gagné
Hi Sinisa, I am replying late to your 25 Oct 2017 comment... I am not sure it is a duplicate. Bug#70534 and Bug#88220 are about removing compression, and this one is about changing the compression level. They might all be fixed at the same time, but I am not sure they are duplicate. Cheers, JFG
[28 Jun 2019 19:51]
Daniël van Eeden
Also affects 8.0 mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.13 | +-----------+ 1 row in set (0.00 sec) mysql> show create table test\G *************************** 1. row *************************** Table: test Create Table: CREATE TABLE `test` ( `id` bigint(20) NOT NULL, `portal_id` bigint(20) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `portal_id` (`portal_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8 1 row in set (0.01 sec) mysql> alter table test KEY_BLOCK_SIZE=4; Query OK, 0 rows affected (1.89 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> show create table test\G *************************** 1. row *************************** Table: test Create Table: CREATE TABLE `test` ( `id` bigint(20) NOT NULL, `portal_id` bigint(20) NOT NULL, PRIMARY KEY (`id`) KEY_BLOCK_SIZE=8, UNIQUE KEY `portal_id` (`portal_id`) KEY_BLOCK_SIZE=8 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4 1 row in set (0.00 sec) mysql> alter table test KEY_BLOCK_SIZE=2; Query OK, 0 rows affected (1.06 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> show create table test\G *************************** 1. row *************************** Table: test Create Table: CREATE TABLE `test` ( `id` bigint(20) NOT NULL, `portal_id` bigint(20) NOT NULL, PRIMARY KEY (`id`) KEY_BLOCK_SIZE=8, UNIQUE KEY `portal_id` (`portal_id`) KEY_BLOCK_SIZE=8 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=2 1 row in set (0.00 sec)
[28 Jun 2019 19:53]
Daniël van Eeden
And re-creating the index can't be done in a single operation mysql> show create table test\G *************************** 1. row *************************** Table: test Create Table: CREATE TABLE `test` ( `id` bigint(20) NOT NULL, `portal_id` bigint(20) NOT NULL, PRIMARY KEY (`id`) KEY_BLOCK_SIZE=8, UNIQUE KEY `portal_id` (`portal_id`) KEY_BLOCK_SIZE=8 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=2 1 row in set (0.00 sec) mysql> ALTER TABLE test DROP KEY portal_id, ADD UNIQUE KEY `portal_id` (`portal_id`); Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> show create table test\G *************************** 1. row *************************** Table: test Create Table: CREATE TABLE `test` ( `id` bigint(20) NOT NULL, `portal_id` bigint(20) NOT NULL, PRIMARY KEY (`id`) KEY_BLOCK_SIZE=8, UNIQUE KEY `portal_id` (`portal_id`) KEY_BLOCK_SIZE=8 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=2 1 row in set (0.00 sec) mysql> ALTER TABLE test DROP KEY portal_id, ADD UNIQUE KEY `portal_id` (`portal_id`) KEY_BLOCK_SIZE=0; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> show create table test\G *************************** 1. row *************************** Table: test Create Table: CREATE TABLE `test` ( `id` bigint(20) NOT NULL, `portal_id` bigint(20) NOT NULL, PRIMARY KEY (`id`) KEY_BLOCK_SIZE=8, UNIQUE KEY `portal_id` (`portal_id`) KEY_BLOCK_SIZE=8 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=2 1 row in set (0.00 sec) mysql> ALTER TABLE test DROP KEY portal_id; ALTER TABLE test ADD UNIQUE KEY `portal_id` (`portal_id`) KEY_BLOCK_SIZE=0; Query OK, 0 rows affected (0.08 sec) Records: 0 Duplicates: 0 Warnings: 0 Query OK, 0 rows affected (0.88 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> show create table test\G *************************** 1. row *************************** Table: test Create Table: CREATE TABLE `test` ( `id` bigint(20) NOT NULL, `portal_id` bigint(20) NOT NULL, PRIMARY KEY (`id`) KEY_BLOCK_SIZE=8, UNIQUE KEY `portal_id` (`portal_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=2 1 row in set (0.00 sec)