mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
c96be848d3
innobase_pk_order_preserved(): Treat an added AUTO_INCREMENT column in the same way as an added existing column. In either case, the column values are not guaranteed to be constant, and thus the ordering may change if such a column is added before any existing PRIMARY KEY columns. prepare_inplace_alter_table_dict(): Initialize dict_table_t::persistent_autoinc before invoking innobase_pk_order_preserved().
331 lines
15 KiB
Text
331 lines
15 KiB
Text
CREATE TABLE t1(c1 INT NOT NULL, c2 INT, PRIMARY KEY(c1)) Engine=InnoDB;
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`c1` int(11) NOT NULL,
|
|
`c2` int(11) DEFAULT NULL,
|
|
PRIMARY KEY (`c1`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
|
INSERT INTO t1 VALUES (1,1),(2,2),(3,3),(4,4),(5,5);
|
|
SET @saved_debug_dbug = @@SESSION.debug_dbug;
|
|
SET DEBUG_DBUG='+d,ib_build_indexes_too_many_concurrent_trxs, ib_rename_indexes_too_many_concurrent_trxs, ib_drop_index_too_many_concurrent_trxs';
|
|
ALTER TABLE t1 ADD UNIQUE INDEX(c2);
|
|
ERROR HY000: Too many active concurrent transactions
|
|
SET DEBUG_DBUG = @saved_debug_dbug;
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`c1` int(11) NOT NULL,
|
|
`c2` int(11) DEFAULT NULL,
|
|
PRIMARY KEY (`c1`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
|
DROP TABLE t1;
|
|
CREATE TABLE bug13861218 (c1 INT NOT NULL, c2 INT NOT NULL, INDEX(c2))
|
|
ENGINE=InnoDB;
|
|
INSERT INTO bug13861218 VALUES (8, 0), (4, 0), (0, 0);
|
|
SET DEBUG_DBUG = '+d,ib_row_merge_buf_add_two';
|
|
CREATE UNIQUE INDEX ui ON bug13861218(c1);
|
|
SET DEBUG_DBUG = @saved_debug_dbug;
|
|
DROP TABLE bug13861218;
|
|
CREATE TABLE bug13861218 (c1 INT NOT NULL, c2 INT UNIQUE) ENGINE=InnoDB;
|
|
INSERT INTO bug13861218 VALUES (8, NULL), (4, NULL), (0, NULL);
|
|
SET DEBUG_DBUG = '+d,ib_row_merge_buf_add_two';
|
|
CREATE UNIQUE INDEX ui ON bug13861218(c1);
|
|
SET DEBUG_DBUG = @saved_debug_dbug;
|
|
DROP TABLE bug13861218;
|
|
#
|
|
# Bug #17657223 EXCESSIVE TEMPORARY FILE USAGE IN ALTER TABLE
|
|
#
|
|
create table t480(a serial)engine=innodb;
|
|
insert into t480
|
|
values(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),
|
|
(),(),(),(),(),(),(),();
|
|
insert into t480 select 0 from t480;
|
|
insert into t480 select 0 from t480;
|
|
insert into t480 select 0 from t480;
|
|
insert into t480 select 0 from t480;
|
|
create table t1(f1 int auto_increment not null,
|
|
f2 char(200) not null, f3 char(200) not null,
|
|
primary key(f1,f2,f3), key(f1))engine=innodb;
|
|
insert into t1 select NULL,'aaa','bbb' from t480;
|
|
insert into t1 select NULL,'aaaa','bbbb' from t480;
|
|
insert into t1 select NULL,'aaaaa','bbbbb' from t480;
|
|
insert into t1 select NULL,'aaaaaa','bbbbbb' from t480;
|
|
SET DEBUG_DBUG = '+d,row_merge_write_failure';
|
|
alter table t1 drop primary key,add primary key(f2,f1);
|
|
ERROR HY000: Temporary file write failure
|
|
SET DEBUG_DBUG = @saved_debug_dbug;
|
|
drop table t1;
|
|
connect con1,localhost,root;
|
|
create table t1(k1 int auto_increment primary key,
|
|
k2 char(200),k3 char(200))engine=innodb;
|
|
insert into t1 values(NULL,'a','b'), (NULL,'aa','bb');
|
|
SET DEBUG_SYNC= 'row_merge_after_scan
|
|
SIGNAL opened WAIT_FOR flushed';
|
|
optimize table t1;
|
|
connection default;
|
|
SET DEBUG_SYNC= 'now WAIT_FOR opened';
|
|
INSERT INTO t1 select NULL,'aaa','bbb' from t480;
|
|
SET DEBUG_SYNC= 'now SIGNAL flushed';
|
|
connection con1;
|
|
/*con1 reap*/ Optimize table t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
|
|
test.t1 optimize status OK
|
|
affected rows: 2
|
|
SELECT COUNT(k1),k2,k3 FROM t1 GROUP BY k2,k3;
|
|
COUNT(k1) k2 k3
|
|
1 a b
|
|
1 aa bb
|
|
480 aaa bbb
|
|
drop table t1;
|
|
create table t1(k1 int auto_increment primary key,
|
|
k2 char(200),k3 char(200))engine=innodb;
|
|
SET DEBUG_SYNC= 'row_merge_after_scan
|
|
SIGNAL opened WAIT_FOR flushed';
|
|
ALTER TABLE t1 ADD COLUMN k4 int;
|
|
connection default;
|
|
SET DEBUG_SYNC= 'now WAIT_FOR opened';
|
|
SET debug = '+d,row_log_tmpfile_fail';
|
|
Warnings:
|
|
Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
|
|
INSERT INTO t1 select NULL,'aaa','bbb' from t480;
|
|
INSERT INTO t1 select NULL,'aaaa','bbbb' from t480;
|
|
SET DEBUG_SYNC= 'now SIGNAL flushed';
|
|
SET DEBUG_DBUG = @saved_debug_dbug;
|
|
connection con1;
|
|
/*con1 reap*/ ALTER TABLE t1 ADD COLUMN k4 int;
|
|
ERROR HY000: Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space
|
|
SELECT COUNT(k1),k2,k3 FROM t1 GROUP BY k2,k3;
|
|
COUNT(k1) k2 k3
|
|
480 aaa bbb
|
|
480 aaaa bbbb
|
|
disconnect con1;
|
|
connection default;
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`k1` int(11) NOT NULL AUTO_INCREMENT,
|
|
`k2` char(200) DEFAULT NULL,
|
|
`k3` char(200) DEFAULT NULL,
|
|
PRIMARY KEY (`k1`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=1023 DEFAULT CHARSET=latin1
|
|
drop table t1;
|
|
drop table t480;
|
|
#
|
|
# MDEV-12827 Assertion failure when reporting duplicate key error
|
|
# in online table rebuild
|
|
#
|
|
CREATE TABLE t1 (j INT UNIQUE, i INT UNIQUE) ENGINE=InnoDB;
|
|
connect con1,localhost,root,,test;
|
|
SET DEBUG_SYNC='row_log_table_apply1_before SIGNAL built WAIT_FOR log';
|
|
ALTER TABLE t1 DROP j, FORCE;
|
|
connection default;
|
|
SET DEBUG_SYNC='now WAIT_FOR built';
|
|
INSERT INTO t1 (i) VALUES (0),(0);
|
|
ERROR 23000: Duplicate entry '0' for key 'i'
|
|
SET DEBUG_SYNC='now SIGNAL log';
|
|
connection con1;
|
|
ERROR 23000: Duplicate entry '0' for key 'i'
|
|
SET DEBUG_SYNC='row_log_table_apply1_before SIGNAL built2 WAIT_FOR log2';
|
|
ALTER TABLE t1 DROP j, FORCE;
|
|
connection default;
|
|
SET DEBUG_SYNC='now WAIT_FOR built2';
|
|
INSERT INTO t1 (i) VALUES (0),(1);
|
|
UPDATE t1 SET i=0;
|
|
ERROR 23000: Duplicate entry '0' for key 'i'
|
|
SET DEBUG_SYNC='now SIGNAL log2';
|
|
connection con1;
|
|
ERROR 23000: Duplicate entry '0' for key 'i'
|
|
disconnect con1;
|
|
connection default;
|
|
SET DEBUG_SYNC='RESET';
|
|
DROP TABLE t1;
|
|
SET DEBUG_SYNC='RESET';
|
|
#
|
|
# BUG#21612714 ALTER TABLE SORTING SKIPPED WHEN CHANGE PK AND DROP
|
|
# LAST COLUMN OF OLD PK
|
|
#
|
|
SET DEBUG_DBUG = '+d,innodb_alter_table_pk_assert_no_sort';
|
|
create table t1(o1 varchar(10), primary key(o1(2))) engine = innodb;
|
|
insert into t1 values('abd'), ('acd');
|
|
alter table t1 drop primary key, add primary key(o1(3)), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 varchar(10), primary key(o1(2))) engine = innodb;
|
|
insert into t1 values('abd'), ('acd');
|
|
alter table t1 drop primary key, add primary key(o1), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 varchar(10), primary key(o1(2))) engine = innodb;
|
|
insert into t1 values('abd'), ('acd');
|
|
alter table t1 add n1 int not null, drop primary key, add primary key(o1(3), n1), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 varchar(10), primary key(o1(2))) engine = innodb;
|
|
insert into t1 values('abd'), ('acd');
|
|
alter table t1 add n1 int not null, drop primary key, add primary key(o1, n1), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 varchar(10), o2 int not null, primary key(o1(2))) engine = innodb;
|
|
insert into t1 values('abd', 1), ('acd', 2);
|
|
alter table t1 add n1 int not null, drop primary key, add primary key(o1(3), o2), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 varchar(10), o2 int not null, primary key(o1(2))) engine = innodb;
|
|
insert into t1 values('abd', 1), ('acd', 2);
|
|
alter table t1 add n1 int not null, drop primary key, add primary key(o1, o2), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 varchar(10), primary key(o1(3))) engine = innodb;
|
|
insert into t1 values('abd'), ('acd');
|
|
alter table t1 drop primary key, add primary key(o1(2)), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 varchar(10), primary key(o1)) engine = innodb;
|
|
insert into t1 values('abd'), ('acd');
|
|
alter table t1 drop primary key, add primary key(o1(2)), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 varchar(10), o2 int, primary key(o1(3), o2)) engine = innodb;
|
|
insert into t1 values('abd', 1), ('acd', 2);
|
|
alter table t1 drop primary key, add primary key(o1(2)), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 varchar(10), o2 int, primary key(o1, o2)) engine = innodb;
|
|
insert into t1 values('abd', 1), ('acd', 2);
|
|
alter table t1 drop primary key, add primary key(o1(2)), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 varchar(10), o2 int, primary key(o1(3), o2)) engine = innodb;
|
|
insert into t1 values('abd', 1), ('acd', 2);
|
|
alter table t1 add n1 int not null, drop primary key, add primary key(o1(2),n1), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 varchar(10), o2 int, primary key(o1, o2)) engine = innodb;
|
|
insert into t1 values('abd', 1), ('acd', 2);
|
|
alter table t1 add n1 int not null, drop primary key, add primary key(o1(2),n1), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 varchar(10), o2 int, primary key(o1(3), o2)) engine = innodb;
|
|
insert into t1 values('abd', 1), ('acd', 2);
|
|
alter table t1 add n1 int not null, drop primary key, add primary key(o1(3),n1), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 varchar(10), o2 int, primary key(o1, o2)) engine = innodb;
|
|
insert into t1 values('abd', 1), ('acd', 2);
|
|
alter table t1 add n1 int not null, drop primary key, add primary key(o1,n1), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 int, o2 varchar(10), primary key(o1,o2(3))) engine = innodb;
|
|
insert into t1 values(1,'abd'), (2,'acd');
|
|
alter table t1 drop primary key, add primary key(o1,o2(2)), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 int, o2 varchar(10), primary key(o1,o2)) engine = innodb;
|
|
insert into t1 values(1,'abd'), (2,'acd');
|
|
alter table t1 drop primary key, add primary key(o1,o2(2)), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 int, o2 varchar(10), primary key(o1,o2(2))) engine = innodb;
|
|
insert into t1 values(1, 'abd'), (2, 'acd');
|
|
alter table t1 drop primary key, add primary key(o1,o2(3)), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 int, o2 varchar(10), primary key(o1,o2(2))) engine = innodb;
|
|
insert into t1 values(1, 'abd'), (2, 'acd');
|
|
alter table t1 drop primary key, add primary key(o1,o2), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 int, o2 varchar(10), o3 int, primary key(o1,o2(3),o3)) engine = innodb;
|
|
insert into t1 values(1, 'abd', 1), (2, 'acd', 2);
|
|
alter table t1 drop primary key, add primary key(o1,o2(2)), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 int, o2 varchar(10), o3 int, primary key(o1,o2,o3)) engine = innodb;
|
|
insert into t1 values(1, 'abd', 1), (2, 'acd', 2);
|
|
alter table t1 drop primary key, add primary key(o1,o2(2)), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 varchar(10), o2 varchar(10), primary key(o1(3),o2(3))) engine = innodb;
|
|
insert into t1 values('abd', 'acd'), ('acd', 'abd');
|
|
alter table t1 drop primary key, add primary key(o1(3),o2(2)), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 varchar(10), o2 varchar(10), primary key(o1,o2)) engine = innodb;
|
|
insert into t1 values('abd', 'acd'), ('acd', 'abd');
|
|
alter table t1 drop primary key, add primary key(o1,o2(2)), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 varchar(10), o2 varchar(10), primary key(o1(3),o2(2))) engine = innodb;
|
|
insert into t1 values('abd', 'acd'), ('acd', 'abd');
|
|
alter table t1 drop primary key, add primary key(o1(3),o2(3)), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 varchar(10), o2 varchar(10), primary key(o1,o2(2))) engine = innodb;
|
|
insert into t1 values('abd', 'acd'), ('acd', 'abd');
|
|
alter table t1 drop primary key, add primary key(o1,o2), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 varchar(10), o2 int, o3 varchar(10), primary key(o1(3),o2,o3(2))) engine = innodb;
|
|
insert into t1 values('abd', 1, 'acd'), ('acd', 2, 'abd');
|
|
alter table t1 drop primary key, add primary key(o1(3),o2,o3(3)), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 varchar(10), o2 int, o3 varchar(10), primary key(o1,o2,o3(2))) engine = innodb;
|
|
insert into t1 values('abd', 1, 'acd'), ('acd', 2, 'abd');
|
|
alter table t1 drop primary key, add primary key(o1,o2,o3), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 varchar(10), o2 int, o3 varchar(10), primary key(o1(3),o2,o3(3))) engine = innodb;
|
|
insert into t1 values('abd', 1, 'acd'), ('acd', 2, 'abd');
|
|
alter table t1 drop primary key, add primary key(o1(3),o2,o3(2)), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 varchar(10), o2 int, o3 varchar(10), primary key(o1,o2,o3(3))) engine = innodb;
|
|
insert into t1 values('abd', 1, 'acd'), ('acd', 2, 'abd');
|
|
alter table t1 drop primary key, add primary key(o1,o2,o3(2)), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 int, o2 int not null, primary key(o1)) engine = innodb;
|
|
insert into t1 values(1,1),(2,2);
|
|
alter table t1 drop primary key, add primary key(o1,o2), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 int, o2 int not null, primary key(o1)) engine = innodb;
|
|
insert into t1 values(1,1),(2,2);
|
|
alter table t1 add n1 int not null, drop primary key, add primary key(o1,n1), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 int, o2 int not null, primary key(o1)) engine = innodb;
|
|
insert into t1 values(1,1),(2,2);
|
|
alter table t1 add n1 int not null, drop primary key, add primary key(n1,o1), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 int, o2 int not null, primary key(o1)) engine = innodb;
|
|
insert into t1 values(1,1),(2,2);
|
|
alter table t1 add n1 int not null, add n2 int not null, drop primary key, add primary key(n1,o1,n2), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 int, o2 int not null, primary key(o1)) engine = innodb;
|
|
insert into t1 values(1,1),(2,2);
|
|
alter table t1 add n1 int not null, add n2 int not null, drop primary key, add primary key(n1,n2,o1), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 int, o2 int not null, primary key(o1)) engine = innodb;
|
|
insert into t1 values(1,1),(2,2);
|
|
alter table t1 add n1 int not null, add n2 int not null, drop primary key, add primary key(o1,n1,n2), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 int, o2 int not null, primary key(o1)) engine = innodb;
|
|
insert into t1 values(1,1),(2,2);
|
|
alter table t1 add n1 int not null, drop primary key, add primary key(o1,o2,n1), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 int, o2 int not null, primary key(o1)) engine = innodb;
|
|
insert into t1 values(1,1),(2,2);
|
|
alter table t1 add n1 int not null, drop primary key, add primary key(o1,n1,o2), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 int, o2 int not null, primary key(o1)) engine = innodb;
|
|
insert into t1 values(1,1),(2,2);
|
|
alter table t1 add n1 int not null, drop primary key, add primary key(n1,o1,o2), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 int, o2 int not null, o3 int not null, primary key(o1)) engine = innodb;
|
|
insert into t1 values(1,1,2),(2,2,1);
|
|
alter table t1 drop primary key, add primary key(o1,o2,o3), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 int, o2 int not null, o3 int not null, primary key(o1)) engine = innodb;
|
|
insert into t1 values(1,1,2),(2,2,1);
|
|
alter table t1 drop primary key, add primary key(o1,o3,o2), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 int, o2 int, o3 int, primary key(o1,o2,o3)) engine = innodb;
|
|
insert into t1 values(1,1,2),(2,2,1);
|
|
alter table t1 drop primary key, add primary key(o1,o2), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 int, o2 int, o3 int, o4 int not null, primary key(o1,o2,o3)) engine = innodb;
|
|
insert into t1 values(1,1,2,2),(2,2,1,1);
|
|
alter table t1 add n1 int not null, drop primary key, add primary key(o1,o2,o3,o4), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 int, o2 int, o3 int, primary key(o1,o2,o3)) engine = innodb;
|
|
insert into t1 values(1,1,2),(2,2,1);
|
|
alter table t1 add n1 int not null, drop primary key, add primary key(o1,o2,n1), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 int, o2 int, o3 int, primary key(o1,o2,o3)) engine = innodb;
|
|
insert into t1 values(1,1,2),(2,2,1);
|
|
alter table t1 add n1 int not null, drop primary key, add primary key(o1,n1,o2), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 int, o2 int, o3 int, primary key(o1,o2,o3)) engine = innodb;
|
|
insert into t1 values(1,1,2),(2,2,1);
|
|
alter table t1 drop primary key, add primary key(o1), lock=none;
|
|
drop table t1;
|
|
create table t1(o1 int, o2 int, primary key(o1,o2)) engine = innodb;
|
|
insert into t1 values(1,1),(2,1);
|
|
alter table t1 drop primary key, add column a int unique auto_increment,
|
|
add primary key(o1,o2,a), algorithm=inplace;
|
|
drop table t1;
|
|
SET DEBUG_DBUG = @saved_debug_dbug;
|