mariadb/mysql-test/suite/innodb/t/alter_temp_fail.test
Thirunarayanan Balathandayuthapani f85a27543c MDEV-36017 Alter table aborts when temporary directory is full
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.
2025-03-20 19:49:43 +05:30

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;