mirror of
https://github.com/MariaDB/server.git
synced 2025-12-27 14:45:44 +01:00
Problem: ======= - During inplace algorithm, concurrent DML fails to write the log operation into the temporary file. InnoDB fail to mark the error for the online log. Fix: === row_log_online_op(): Mark the error in online log when InnoDB ran out of temporary space fil_space_extend_must_retry(): Assign os_has_said_disk_full to true if os_file_set_size() fails.
27 lines
847 B
Text
27 lines
847 B
Text
--source include/have_innodb.inc
|
|
--source include/have_sequence.inc
|
|
--source include/have_debug.inc
|
|
--echo #
|
|
--echo # MDEV-36017 Alter table aborts when temporary
|
|
--echo # directory is full
|
|
--echo #
|
|
CREATE TABLE t1(f1 INT NOT NULL, f2 CHAR(100),
|
|
f3 CHAR(100))ENGINE=InnoDB;
|
|
INSERT INTO t1 SELECT seq, 'a', 'b' FROM seq_1_to_4096;
|
|
SET DEBUG_SYNC="innodb_inplace_alter_table_enter SIGNAL dml_start WAIT_FOR dml_commit";
|
|
SEND ALTER TABLE t1 ADD KEY(f1), ADD INDEX(f3(10));
|
|
|
|
connect(con1,localhost,root,,,);
|
|
SET DEBUG_SYNC="now WAIT_FOR dml_start";
|
|
SET DEBUG_DBUG="+d,os_file_write_fail";
|
|
INSERT INTO t1 SELECT * FROM t1;
|
|
SET DEBUG_DBUG="-d,os_file_write_fail";
|
|
SET DEBUG_SYNC="now SIGNAL dml_commit";
|
|
|
|
connection default;
|
|
--error ER_TEMP_FILE_WRITE_FAILURE
|
|
reap;
|
|
disconnect con1;
|
|
CHECK TABLE t1;
|
|
DROP TABLE t1;
|
|
SET DEBUG_SYNC=RESET;
|