Commit 5fb4e4ab authored by Marko Mäkelä's avatar Marko Mäkelä

MDEV-18149 Crash after DROP COLUMN of AUTO_INCREMENT column on nonempty table

commit_cache_norebuild(): Restore the MDEV-17901 fix that was reverted
as part of the MDEV-18076/MDEV-18077 fix. It was not redundant after all.
parent 9dc81d2a
......@@ -578,6 +578,15 @@ id f
1 NULL
2 NULL
DROP TABLE t1;
CREATE TABLE t1 (id INT NOT NULL AUTO_INCREMENT, f INT, KEY(id)) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
INSERT INTO t1 SET f=NULL;
ALTER TABLE t1 DROP COLUMN id;
INSERT INTO t1 SET f=NULL;
SELECT * FROM t1;
f
NULL
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);
......@@ -1239,6 +1248,15 @@ id f
1 NULL
2 NULL
DROP TABLE t1;
CREATE TABLE t1 (id INT NOT NULL AUTO_INCREMENT, f INT, KEY(id)) ENGINE=InnoDB ROW_FORMAT=COMPACT;
INSERT INTO t1 SET f=NULL;
ALTER TABLE t1 DROP COLUMN id;
INSERT INTO t1 SET f=NULL;
SELECT * FROM t1;
f
NULL
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);
......@@ -1900,6 +1918,15 @@ id f
1 NULL
2 NULL
DROP TABLE t1;
CREATE TABLE t1 (id INT NOT NULL AUTO_INCREMENT, f INT, KEY(id)) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
INSERT INTO t1 SET f=NULL;
ALTER TABLE t1 DROP COLUMN id;
INSERT INTO t1 SET f=NULL;
SELECT * FROM t1;
f
NULL
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);
......@@ -2042,5 +2069,5 @@ SELECT variable_value-@old_instant instants
FROM information_schema.global_status
WHERE variable_name = 'innodb_instant_alter_column';
instants
155
158
SET GLOBAL innodb_purge_rseg_truncate_frequency= @saved_frequency;
......@@ -447,6 +447,14 @@ ALTER TABLE t1 ADD COLUMN id INT NOT NULL AUTO_INCREMENT FIRST, ADD KEY(id);
SELECT * FROM t1;
DROP TABLE t1;
# MDEV-18149 Crash after DROP COLUMN of AUTO_INCREMENT column on nonempty table
eval CREATE TABLE t1 (id INT NOT NULL AUTO_INCREMENT, f INT, KEY(id)) $engine;
INSERT INTO t1 SET f=NULL;
ALTER TABLE t1 DROP COLUMN id;
INSERT INTO t1 SET f=NULL;
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;
......
/*****************************************************************************
Copyright (c) 2005, 2018, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2013, 2018, MariaDB Corporation.
Copyright (c) 2013, 2019, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
......@@ -10359,6 +10359,10 @@ commit_cache_norebuild(
}
}
}
if (!ctx->instant_table->persistent_autoinc) {
ctx->new_table->persistent_autoinc = 0;
}
}
if (ha_alter_info->handler_flags & ALTER_COLUMN_UNVERSIONED) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment