1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
#
# MDEV-36017 Alter table aborts when temporary
# directory is full
#
SET SESSION DEFAULT_STORAGE_ENGINE=InnoDB;
CREATE TABLE t1(f1 CHAR(100) NOT NULL, f2 CHAR(100) NOT NULL,
f3 CHAR(100) NOT NULL, f4 CHAR(100) NOT NULL,
f5 CHAR(100) NOT NULL)ENGINE=InnoDB;
INSERT INTO t1 SELECT 'a', 'b', 'c', 'd', 'e' FROM seq_1_to_65536;
SET STATEMENT DEBUG_DBUG="+d,write_to_tmp_file_fail" FOR
CREATE TABLE t2 as SELECT * FROM t1;
ERROR HY000: Got error 59 'Temp file write failure' from InnoDB
DROP TABLE t1;
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_1024;
SET STATEMENT DEBUG_DBUG="+d,write_to_tmp_file_fail" FOR
ALTER TABLE t1 FORCE, ALGORITHM=COPY;
ERROR HY000: Got error 59 'Temp file write failure' from InnoDB
DROP TABLE t1;
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="inplace_after_index_build 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";
BEGIN;
INSERT INTO t1 SELECT * FROM t1;
SET STATEMENT DEBUG_DBUG="+d,os_file_write_fail" FOR COMMIT;
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 STATEMENT DEBUG_DBUG="+d,ddl_log_write_fail" FOR
CREATE TABLE t1(f1 INT NOT NULL)ENGINE=InnoDB;
DROP TABLE t1;
CREATE TABLE t1(f1 TEXT, index(f1(2)))ENGINE=InnoDB;
INSERT INTO t1 VALUES('a');
set statement DEBUG_DBUG="+d,btr_page_alloc_fail" for
UPDATE t1 set f1= REPEAT('b', 12000);
ERROR HY000: The table 't1' is full
DROP TABLE t1;
|