From 88b7b8199a6061ccdeb2e2a1ac789eb98e02ac92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 27 Dec 2018 16:28:22 +0200 Subject: MDEV-18076/MDEV-18077 Crash on AUTO_INCREMENT column after instant DROP The fix for MDEV-17901 did not cover cases where the AUTO_INCREMENT column was not dropped, but some other columns before it were. commit_cache_norebuild(): Revert the MDEV-17901 fix. dict_index_t::clear_instant_alter(): Update table->persistent_autoinc. --- mysql-test/suite/innodb/r/instant_alter.result | 29 +++++++++++++++++++++++++- mysql-test/suite/innodb/t/instant_alter.test | 12 +++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) (limited to 'mysql-test') diff --git a/mysql-test/suite/innodb/r/instant_alter.result b/mysql-test/suite/innodb/r/instant_alter.result index b5e82ccaefe..f25e1de904d 100644 --- a/mysql-test/suite/innodb/r/instant_alter.result +++ b/mysql-test/suite/innodb/r/instant_alter.result @@ -578,6 +578,15 @@ id f 1 NULL 2 NULL DROP TABLE t1; +CREATE TABLE t1(f INT, k INT NOT NULL AUTO_INCREMENT, KEY(k)) ENGINE=InnoDB ROW_FORMAT=REDUNDANT; +ALTER TABLE t1 DROP COLUMN f; +INSERT INTO t1 VALUES (1); +DROP TABLE t1; +CREATE TABLE t1(pk INT PRIMARY KEY, f INT, k INT AUTO_INCREMENT, KEY(k)) +ENGINE=InnoDB ROW_FORMAT=REDUNDANT; +ALTER TABLE t1 DROP COLUMN f; +INSERT INTO t1 (pk) VALUES (1); +DROP TABLE t1; CREATE TABLE t1 ( pk INT PRIMARY KEY, f1 INT, @@ -1153,6 +1162,15 @@ id f 1 NULL 2 NULL DROP TABLE t1; +CREATE TABLE t1(f INT, k INT NOT NULL AUTO_INCREMENT, KEY(k)) ENGINE=InnoDB ROW_FORMAT=COMPACT; +ALTER TABLE t1 DROP COLUMN f; +INSERT INTO t1 VALUES (1); +DROP TABLE t1; +CREATE TABLE t1(pk INT PRIMARY KEY, f INT, k INT AUTO_INCREMENT, KEY(k)) +ENGINE=InnoDB ROW_FORMAT=COMPACT; +ALTER TABLE t1 DROP COLUMN f; +INSERT INTO t1 (pk) VALUES (1); +DROP TABLE t1; CREATE TABLE t1 ( pk INT PRIMARY KEY, f1 INT, @@ -1728,6 +1746,15 @@ id f 1 NULL 2 NULL DROP TABLE t1; +CREATE TABLE t1(f INT, k INT NOT NULL AUTO_INCREMENT, KEY(k)) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; +ALTER TABLE t1 DROP COLUMN f; +INSERT INTO t1 VALUES (1); +DROP TABLE t1; +CREATE TABLE t1(pk INT PRIMARY KEY, f INT, k INT AUTO_INCREMENT, KEY(k)) +ENGINE=InnoDB ROW_FORMAT=DYNAMIC; +ALTER TABLE t1 DROP COLUMN f; +INSERT INTO t1 (pk) VALUES (1); +DROP TABLE t1; CREATE TABLE t1 ( pk INT PRIMARY KEY, f1 INT, @@ -1784,5 +1811,5 @@ SELECT variable_value-@old_instant instants FROM information_schema.global_status WHERE variable_name = 'innodb_instant_alter_column'; instants -125 +131 SET GLOBAL innodb_purge_rseg_truncate_frequency= @saved_frequency; diff --git a/mysql-test/suite/innodb/t/instant_alter.test b/mysql-test/suite/innodb/t/instant_alter.test index 449e154058a..273c9540606 100644 --- a/mysql-test/suite/innodb/t/instant_alter.test +++ b/mysql-test/suite/innodb/t/instant_alter.test @@ -447,6 +447,18 @@ ALTER TABLE t1 ADD COLUMN id INT NOT NULL AUTO_INCREMENT FIRST, ADD KEY(id); SELECT * FROM t1; DROP TABLE t1; +# MDEV-18076/MDEV-18077 Crash on AUTO_INCREMENT column after instant DROP +eval CREATE TABLE t1(f INT, k INT NOT NULL AUTO_INCREMENT, KEY(k)) $engine; +ALTER TABLE t1 DROP COLUMN f; +INSERT INTO t1 VALUES (1); +DROP TABLE t1; + +eval CREATE TABLE t1(pk INT PRIMARY KEY, f INT, k INT AUTO_INCREMENT, KEY(k)) +$engine; +ALTER TABLE t1 DROP COLUMN f; +INSERT INTO t1 (pk) VALUES (1); +DROP TABLE t1; + # MDEV-17763 Assertion `len == 20U' failed in rec_convert_dtuple_to_rec_comp # upon DROP COLUMN eval CREATE TABLE t1 ( -- cgit v1.2.1