mirror of
https://github.com/MariaDB/server.git
synced 2025-12-19 10:45:46 +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.
23 lines
761 B
Text
23 lines
761 B
Text
#
|
|
# MDEV-36017 Alter table aborts when temporary
|
|
# directory is full
|
|
#
|
|
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";
|
|
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 HY000: Temporary file write failure
|
|
disconnect con1;
|
|
CHECK TABLE t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 check status OK
|
|
DROP TABLE t1;
|
|
SET DEBUG_SYNC=RESET;
|