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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206
|
--source include/innodb_page_size.inc
--source include/have_debug.inc
--source include/have_debug_sync.inc
--source include/count_sessions.inc
SET NAMES utf8;
CREATE TABLE ① (
c1 INT PRIMARY KEY, c2 INT DEFAULT 1, ct TEXT, INDEX(c2))
ENGINE = InnoDB;
CREATE TABLE t1ć (c1 INT PRIMARY KEY, c2 INT, INDEX(c2),
CONSTRAINT t1c2 FOREIGN KEY (c2) REFERENCES ①(c2))
ENGINE=InnoDB;
INSERT INTO ① SET c1 = 1;
SET @saved_debug_dbug = @@SESSION.debug_dbug;
SET DEBUG_DBUG = '+d,ib_drop_foreign_error';
--error ER_RECORD_FILE_FULL
ALTER TABLE t1ć DROP FOREIGN KEY t1c2, RENAME TO ②;
SET DEBUG_DBUG = @saved_debug_dbug;
SET DEBUG_DBUG = '+d,ib_rename_column_error';
--error ER_RECORD_FILE_FULL
ALTER TABLE ① CHANGE c2 š INT;
SET DEBUG_DBUG = @saved_debug_dbug;
SHOW CREATE TABLE t1ć;
DROP TABLE t1ć, ①;
--echo #
--echo # Bug #21364096 THE BOGUS DUPLICATE KEY ERROR IN ONLINE DDL
--echo # WITH INCORRECT KEY NAME
create table t1 (id int auto_increment primary key, a int, unique key uk(a))
engine = innodb;
insert into t1 select 1, 1;
insert into t1 select 2, 2;
SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL s1 WAIT_FOR s2';
--send alter table t1 force, add b int, ALGORITHM=inplace
--echo /* connection con1 */
connect (con1,localhost,root,,);
SET DEBUG_SYNC = 'now WAIT_FOR s1';
--error ER_DUP_ENTRY
insert into t1 select NULL, 1;
SET DEBUG_SYNC = 'now SIGNAL s2';
--echo /* connection default */
connection default;
--echo /* reap */ alter table t1 force, add b int, ALGORITHM=inplace;
--reap
SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL s1 WAIT_FOR s2';
--send alter table t1 force, add c int, ALGORITHM=inplace;
--echo /* connection con1 */
connection con1;
set DEBUG_SYNC = 'now WAIT_FOR s1';
--error ER_DUP_ENTRY
update t1 set a=1 where id=2;
SET DEBUG_SYNC = 'now SIGNAL s2';
--echo /* connection default */
connection default;
--echo /* reap */ alter table t1 force, add b int, ALGORITHM=inplace;
--reap
SET DEBUG_SYNC = 'RESET';
drop table t1;
--echo #
--echo # Bug #27753193 ASSERTION `PREBUILT->TRX->ERROR_KEY_NUM <
--echo # HA_ALTER_INFO->KEY_COUNT'
CREATE TABLE t1 (a INT, UNIQUE KEY(a)) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1);
SET DEBUG_SYNC = 'row_log_table_apply1_before signal S1 WAIT_FOR S2';
send ALTER TABLE t1 FORCE, ALGORITHM=INPLACE;
connection con1;
SET DEBUG_SYNC = 'now WAIT_FOR S1';
--error ER_DUP_ENTRY
INSERT INTO t1 VALUES (1);
SET DEBUG_SYNC = 'now SIGNAL S2';
disconnect con1;
CONNECTION default;
reap;
SET DEBUG_SYNC='RESET';
DROP TABLE t1;
--echo #
--echo # MDEV-17470 Orphan temporary files after interrupted ALTER
--echo # cause InnoDB: Operating system error number 17 and eventual
--echo # fatal error 71
--echo #
CREATE TABLE t1 (pk INT AUTO_INCREMENT PRIMARY KEY, i INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (NULL,1),(NULL,2),(NULL,3),(NULL,4),(NULL,5),(NULL,6),(NULL,7),(NULL,8);
INSERT INTO t1 SELECT NULL, i FROM t1;
INSERT INTO t1 SELECT NULL, i FROM t1;
INSERT INTO t1 SELECT NULL, i FROM t1;
INSERT INTO t1 SELECT NULL, i FROM t1;
INSERT INTO t1 SELECT NULL, i FROM t1;
LOCK TABLE t1 READ;
--connect (con1,localhost,root,,test)
let $ID= `SELECT @id := CONNECTION_ID()`;
send ALTER TABLE t1 FORCE, ALGORITHM=COPY;
--connection default
let $wait_condition= select 1 from information_schema.processlist where state='Waiting for table metadata lock';
source include/wait_condition.inc;
let $ignore= `SELECT @id := $ID`;
kill query @id;
--connection con1
--error ER_QUERY_INTERRUPTED
reap;
--disconnect con1
--connection default
UNLOCK TABLES;
DROP TABLE t1;
--echo #
--echo # MDEV-7318 RENAME INDEX
--echo #
CREATE TABLE t (c1 INT, c2 INT, KEY i2 (c2)) ENGINE=INNODB;
SET DEBUG_DBUG= '+d,ib_rename_index_fail1';
-- error ER_LOCK_DEADLOCK
ALTER TABLE t RENAME INDEX i2 to x, ALGORITHM=INPLACE;
SET DEBUG_DBUG = @saved_debug_dbug;
DROP TABLE t;
--echo #
--echo # MDEV-26772 InnoDB DDL fails with DUPLICATE KEY error
--echo #
create table t1(f1 int not null primary key,
f2 int not null, index idx(f2), index i(f2,f1))engine=innodb;
insert into t1 values(1, 1);
connect(con1,localhost,root,,,);
SET DEBUG_SYNC='before_delete_table_stats SIGNAL blocked WAIT_FOR go';
send SET STATEMENT innodb_lock_wait_timeout=0 FOR
ALTER TABLE t1 FORCE, ALGORITHM=COPY;
connection default;
SET DEBUG_SYNC='now WAIT_FOR blocked';
BEGIN;
SELECT * FROM mysql.innodb_table_stats FOR UPDATE;
SET DEBUG_SYNC='now SIGNAL go';
connection con1;
reap;
connection default;
COMMIT;
SET DEBUG_SYNC=RESET;
RENAME TABLE mysql.innodb_table_stats TO mysql.innodb_table_stats_hidden;
connection con1;
SET DEBUG_SYNC='innodb_commit_inplace_before_lock SIGNAL blocked WAIT_FOR go';
send ALTER TABLE t1 DROP INDEX i;
connection default;
SET DEBUG_SYNC='now WAIT_FOR blocked';
RENAME TABLE mysql.innodb_table_stats_hidden TO mysql.innodb_table_stats;
SET DEBUG_SYNC='now SIGNAL go';
connection con1;
reap;
connection default;
SET DEBUG_SYNC=RESET;
connection con1;
ALTER TABLE t1 RENAME KEY idx TO idx1, ALGORITHM=COPY;
disconnect con1;
connection default;
DROP TABLE t1;
--echo #
--echo # MDEV-26903 Assertion ctx->trx->state == TRX_STATE_ACTIVE on DROP INDEX
--echo #
CREATE TABLE t1(a INT PRIMARY KEY, b INT, INDEX(b)) ENGINE=InnoDB;
SET @save_dbug=@@debug_dbug;
SET debug_dbug='+d,deadlock_table_fail';
--error ER_LOCK_DEADLOCK
ALTER TABLE t1 DROP INDEX b, ALGORITHM=INPLACE;
SET debug_dbug=@save_dbug;
DROP TABLE t1;
--echo # End of 10.6 tests
# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc
|