mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 13:32:33 +01:00
a9d00db155
contains a bad and a good copy Clean up the InnoDB doublewrite buffer code. buf_dblwr_init_or_load_pages(): Do not add empty pages to the buffer. buf_dblwr_process(): Do consider changes to pages that are all zero. Do not abort when finding a corrupted copy of a page in the doublewrite buffer, because there could be multiple copies in the doublewrite buffer, and only one of them needs to be good.
40 lines
1.5 KiB
Text
40 lines
1.5 KiB
Text
#
|
|
# Bug #18734396 INNODB IN-PLACE ALTER FAILURES BLOCK FUTURE ALTERS
|
|
#
|
|
# Temporary tablename will be unique. This makes sure that future
|
|
# in-place ALTERs of the same table will not be blocked due to
|
|
# temporary tablename.
|
|
# Crash the server in ha_innobase::commit_inplace_alter_table()
|
|
CREATE TABLE t1 (f1 INT NOT NULL, f2 INT NOT NULL) ENGINE=innodb;
|
|
SET debug='d,innodb_alter_commit_crash_before_commit';
|
|
Warnings:
|
|
Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
|
|
# Write file to make mysql-test-run.pl expect crash
|
|
# Execute the statement that causes the crash
|
|
ALTER TABLE t1 ADD PRIMARY KEY (f2, f1);
|
|
ERROR HY000: Lost connection to MySQL server during query
|
|
# Startup the server after the crash
|
|
# Read and remember the temporary table name
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`f1` int(11) NOT NULL,
|
|
`f2` int(11) NOT NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
|
# Consecutive Alter table does not create same temporary file name
|
|
ALTER TABLE t1 ADD PRIMARY KEY (f2, f1);
|
|
# Shutdown the server to allow manual recovery
|
|
# Manual recovery begin. The dictionary was not updated
|
|
# and the files were not renamed. The rebuilt table
|
|
# was left behind on purpose, to faciliate data recovery.
|
|
# Manual recovery end
|
|
# Startup the server after manual recovery
|
|
# Drop the orphaned rebuilt table.
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`f1` int(11) NOT NULL,
|
|
`f2` int(11) NOT NULL,
|
|
PRIMARY KEY (`f2`,`f1`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
|
drop table t1;
|