mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-30 18:36:12 +01:00 
			
		
		
		
	 9e1fb104a3
			
		
	
	
	9e1fb104a3
	
	
	
		
			
			-----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEF39AEP5WyjM2MAMF8WVvJMdM0dgFAmck77AACgkQ8WVvJMdM 0dgccQ/+Lls8fWt4D+gMPP7x+drJSO/IE/gZFt3ugbWF+/p3B2xXAs5AAE83wxEh QSbp4DCkb/9PnuakhLmzg0lFbxMUlh4rsJ1YyiuLB2J+YgKbAc36eQQf+rtYSipd DT5uRk36c9wOcOXo/mMv4APEvpPXBIBdIL4VvpKFbIOE7xT24Sp767zWXdXqrB1f JgOQdM2ct+bvSPC55oZ5p1kqyxwvd6K6+3RB3CIpwW9zrVSLg7enT3maLjj/761s jvlRae+Cv+r+Hit9XpmEH6n2FYVgIJ3o3WhdAHwN0kxKabXYTg7OCB7QxDZiUHI9 C/5goKmKaPB1PCQyuTQyLSyyK9a8nPfgn6tqw/p/ZKDQhKT9sWJv/5bSWecrVndx LLYifSTrFC/eXLzgPvCnNv/U8SjsZaAdMIKS681+qDJ0P5abghUIlGnMYTjYXuX1 1B6Vrr0bdrQ3V1CLB3tpkRjpUvicrsabtuAUAP65QnEG2G9UJXklOer+DE291Gsl f1I0o6C1zVGAOkUUD3QEYaHD8w7hlvyfKme5oXKUm3DOjaAar5UUKLdr6prxRZL4 ebhmGEy42Mf8fBYoeohIxmxgvv6h2Xd9xCukgPp8hFpqJGw8abg7JNZTTKH4h2IY J51RpD10h4eoi6WRn3opEcjexTGvZ+xNR7yYO5WxWw6VIre9IUA= =s+WW -----END PGP SIGNATURE----- Merge tag '11.4' into 11.6 MariaDB 11.4.4 release
		
			
				
	
	
		
			294 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			294 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #
 | |
| # alter ignore cannot be done online
 | |
| #
 | |
| create table t (a int);
 | |
| alter ignore table t add primary key (a), algorithm=copy, lock=none;
 | |
| ERROR 0A000: LOCK=NONE is not supported. Reason: ALTER IGNORE TABLE. Try LOCK=SHARED
 | |
| drop table t;
 | |
| #
 | |
| # MDEV-28771 Assertion `table->in_use&&tdc->flushed' failed after ALTER
 | |
| #
 | |
| create table t (a char(1));
 | |
| insert into t values ('a'),('b');
 | |
| select * from t join t as t2 join t as t3;
 | |
| a	a	a
 | |
| a	a	a
 | |
| b	a	a
 | |
| a	b	a
 | |
| b	b	a
 | |
| a	a	b
 | |
| b	a	b
 | |
| a	b	b
 | |
| b	b	b
 | |
| alter table t modify a int;
 | |
| ERROR 22007: Truncated incorrect INTEGER value: 'a'
 | |
| select * from t;
 | |
| a
 | |
| a
 | |
| b
 | |
| drop table t;
 | |
| create table t (c double precision key,c2 char,c3 year);
 | |
| insert into t values (7,3,1);
 | |
| select a from t where a=all (select a from t where b=2 union select a from t where b=2);
 | |
| ERROR 42S22: Unknown column 'a' in 'SELECT'
 | |
| insert into t values (3,1,1);
 | |
| alter table t change c c date,add key(c);
 | |
| ERROR 22007: Incorrect date value: '7' for column `test`.`t`.`c` at row 1
 | |
| select * from t;
 | |
| c	c2	c3
 | |
| 7	3	2001
 | |
| 3	1	2001
 | |
| drop table t;
 | |
| set sql_mode='';
 | |
| create table t (c char unique,c2 int,stamp timestamp);
 | |
| insert into t values (1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5);
 | |
| Warnings:
 | |
| Warning	1265	Data truncated for column 'stamp' at row 1
 | |
| Warning	1265	Data truncated for column 'stamp' at row 2
 | |
| Warning	1265	Data truncated for column 'stamp' at row 3
 | |
| Warning	1265	Data truncated for column 'stamp' at row 4
 | |
| Warning	1265	Data truncated for column 'stamp' at row 5
 | |
| update t set c=(select * from t) where c in (select * from t);
 | |
| ERROR 21000: Operand should contain 1 column(s)
 | |
| alter table t modify c date;
 | |
| ERROR 23000: Duplicate entry '0000-00-00' for key 'c'
 | |
| select * from t;
 | |
| c	c2	stamp
 | |
| 1	1	0000-00-00 00:00:00
 | |
| 2	2	0000-00-00 00:00:00
 | |
| 3	3	0000-00-00 00:00:00
 | |
| 4	4	0000-00-00 00:00:00
 | |
| 5	5	0000-00-00 00:00:00
 | |
| drop table t;
 | |
| set sql_mode=default;
 | |
| #
 | |
| # MDEV-28944 XA assertions failing in binlog_rollback and binlog_commit
 | |
| #
 | |
| CREATE TABLE t (a INT) ENGINE=MyISAM;
 | |
| INSERT INTO t VALUES (1);
 | |
| connect  con1,localhost,root,,test;
 | |
| XA START 'xid';
 | |
| SELECT * FROM t;
 | |
| a
 | |
| 1
 | |
| connection default;
 | |
| ALTER TABLE t NOWAIT ADD KEY (a);
 | |
| ERROR HY000: Lock wait timeout exceeded; try restarting transaction
 | |
| connection con1;
 | |
| UPDATE t SET a = 2;
 | |
| XA END 'xid';
 | |
| XA COMMIT 'xid' ONE PHASE;
 | |
| DROP TABLE t;
 | |
| disconnect con1;
 | |
| connection default;
 | |
| #
 | |
| # MDEV-29068 Cascade foreign key updates do not apply in online alter
 | |
| #
 | |
| create table t1 (a int primary key) engine=InnoDB;
 | |
| insert into t1 values (1),(2),(3);
 | |
| create table t2 (b int, foreign key (b)
 | |
| references t1 (a)
 | |
| on update cascade) engine=InnoDB;
 | |
| insert into t2 values (1),(2),(3);
 | |
| alter table t2 add c int, algorithm=copy, lock=none;
 | |
| ERROR 0A000: LOCK=NONE is not supported. Reason: ON UPDATE CASCADE. Try LOCK=SHARED
 | |
| alter table t2 add c int, algorithm=inplace, lock=none;
 | |
| create or replace table t2 (b int, foreign key (b)
 | |
| references t1 (a)
 | |
| on delete set null) engine=InnoDB;
 | |
| alter table t2 add c int, algorithm=copy, lock=none;
 | |
| ERROR 0A000: LOCK=NONE is not supported. Reason: ON DELETE SET NULL. Try LOCK=SHARED
 | |
| alter table t2 add c int, algorithm=inplace, lock=none;
 | |
| create or replace table t2 (b int, foreign key (b)
 | |
| references t1 (a)
 | |
| on delete no action) engine=InnoDB;
 | |
| insert into t2 values (1),(2),(3);
 | |
| alter table t2 add c int, algorithm=copy, lock=none;
 | |
| create or replace table t2 (b int, foreign key (b)
 | |
| references t1 (a)
 | |
| on update restrict) engine=InnoDB;
 | |
| insert into t2 values (1),(2),(3);
 | |
| alter table t2 add c int, algorithm=copy, lock=none;
 | |
| drop table t2, t1;
 | |
| create table t1 (a int primary key, b int unique) engine=InnoDB;
 | |
| insert into t1 values (1, 1),(2, 2),(3, 3);
 | |
| create table t2 (a int references t1 (a),
 | |
| b int references t1 (b) on update cascade) engine=InnoDB;
 | |
| insert into t2 values (1, 1),(2, 2);
 | |
| alter table t2 add c int, algorithm=copy, lock=none;
 | |
| ERROR 0A000: LOCK=NONE is not supported. Reason: ON UPDATE CASCADE. Try LOCK=SHARED
 | |
| alter table t2 add c int, algorithm=copy;
 | |
| alter table t2 add d int, algorithm=inplace;
 | |
| drop table t2, t1;
 | |
| #
 | |
| # MDEV-30891 Assertion `!table->versioned(VERS_TRX_ID)' failed
 | |
| # in Write_rows_log_event::binlog_row_logging_function
 | |
| #
 | |
| set system_versioning_alter_history= keep;
 | |
| create table t1 (id int,
 | |
| row_start bigint unsigned generated always as row start,
 | |
| row_end bigint unsigned generated always as row end,
 | |
| period for system_time (row_start, row_end))
 | |
| engine=innodb with system versioning;
 | |
| alter table t1 add c int, algorithm=copy, lock=none;
 | |
| ERROR 0A000: LOCK=NONE is not supported. Reason: BIGINT GENERATED ALWAYS AS ROW_START. Try LOCK=SHARED
 | |
| alter table t1 add c int, algorithm=inplace;
 | |
| alter table t1 add d int, lock=none;
 | |
| set system_versioning_alter_history= default;
 | |
| drop table t1;
 | |
| #
 | |
| # MDEV-31058 ER_KEY_NOT_FOUND upon concurrent CHANGE column autoinc
 | |
| # and DML
 | |
| #
 | |
| create table t (a serial, b int) engine=innodb;
 | |
| alter table t drop a, modify b serial, algorithm=copy, lock=none;
 | |
| ERROR 0A000: LOCK=NONE is not supported. Reason: CHANGE COLUMN ... AUTO_INCREMENT. Try LOCK=SHARED
 | |
| set statement sql_mode= NO_AUTO_VALUE_ON_ZERO for
 | |
| alter table t drop a, modify b serial, algorithm=copy, lock=none;
 | |
| create or replace table t (a serial, b int) engine=innodb;
 | |
| show create table t;
 | |
| Table	Create Table
 | |
| t	CREATE TABLE `t` (
 | |
|   `a` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
 | |
|   `b` int(11) DEFAULT NULL,
 | |
|   UNIQUE KEY `a` (`a`)
 | |
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 | |
| # a is unique in the old table, but is shrunk in the new one.
 | |
| # Only unsafe approach is fine because of possible collisions.
 | |
| alter table t modify a int, modify b serial, algorithm=copy, lock=none;
 | |
| ERROR 0A000: LOCK=NONE is not supported. Reason: CHANGE COLUMN ... AUTO_INCREMENT. Try LOCK=SHARED
 | |
| #
 | |
| # Check that we treat autoinc columns correctly modify old autoinc is
 | |
| # fine, adding new autoinc for existed column is unsafe.
 | |
| #
 | |
| create or replace table t (a serial) engine=innodb;
 | |
| alter table t change a b serial, algorithm=copy, lock=none;
 | |
| Warnings:
 | |
| Note	1831	Duplicate index `b`. This is deprecated and will be disallowed in a future release
 | |
| # Shrinking the autoinc field is considered safe.
 | |
| # ER_WARN_DATA_OUT_OF_RANGE should be emitted otherwise.
 | |
| alter table t change b b int auto_increment primary key,
 | |
| algorithm=copy, lock=none;
 | |
| alter table t add c int default(0), drop primary key, drop key a;
 | |
| # key `b` is still there
 | |
| show create table t;
 | |
| Table	Create Table
 | |
| t	CREATE TABLE `t` (
 | |
|   `b` int(11) NOT NULL AUTO_INCREMENT,
 | |
|   `c` int(11) DEFAULT 0,
 | |
|   UNIQUE KEY `b` (`b`)
 | |
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 | |
| alter table t drop b, change c c serial, algorithm=copy, lock=none;
 | |
| ERROR 0A000: LOCK=NONE is not supported. Reason: CHANGE COLUMN ... AUTO_INCREMENT. Try LOCK=SHARED
 | |
| # Check existed unique keys.
 | |
| create or replace table t(a int, b int not null, c int not null, d int);
 | |
| # No unique in the old table;
 | |
| alter table t add unique(b, c), modify d int auto_increment, add key(d),
 | |
| algorithm=copy, lock=none;
 | |
| ERROR 0A000: LOCK=NONE is not supported. Reason: CHANGE COLUMN ... AUTO_INCREMENT. Try LOCK=SHARED
 | |
| alter table t add unique(a, b);
 | |
| # Unique in the old table has nulls;
 | |
| alter table t modify d int auto_increment, add key(d),
 | |
| algorithm=copy, lock=none;
 | |
| ERROR 0A000: LOCK=NONE is not supported. Reason: CHANGE COLUMN ... AUTO_INCREMENT. Try LOCK=SHARED
 | |
| alter table t add unique(b, c);
 | |
| # Change unique's column;
 | |
| alter table t change b x bigint, modify d int auto_increment, add key(d),
 | |
| algorithm=copy, lock=none;
 | |
| ERROR 0A000: LOCK=NONE is not supported. Reason: CHANGE COLUMN ... AUTO_INCREMENT. Try LOCK=SHARED
 | |
| # Finally good. Simple renames with a type unchanged will not affect
 | |
| # the result. Also NOT NULL -> NULL transform is fine.
 | |
| alter table t modify d int auto_increment, add key(d),
 | |
| change b x int null,
 | |
| algorithm=copy, lock=none;
 | |
| drop table t;
 | |
| # MDEV-31172 Server crash or ASAN errors in online_alter_check_autoinc
 | |
| create table t (a int, b int, c char(8), key(a,b,c));
 | |
| alter table t modify c int auto_increment key, algorithm=copy;
 | |
| drop table t;
 | |
| # MDEV-31601 Some ALTER TABLE .. fail when they worked before, and with
 | |
| # a wrong error message
 | |
| create table t (a int) engine=aria;
 | |
| insert into t values (1),(2);
 | |
| alter table t algorithm=nocopy, order by a;
 | |
| ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=COPY
 | |
| alter table t engine=myisam, algorithm=inplace;
 | |
| ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY
 | |
| drop table t;
 | |
| create temporary table t (f int);
 | |
| alter table t force, algorithm=instant;
 | |
| ERROR 0A000: ALGORITHM=INSTANT is not supported for this operation. Try ALGORITHM=COPY
 | |
| drop table t;
 | |
| create sequence s engine=MyISAM;
 | |
| alter table s engine=Aria, lock=none;
 | |
| ERROR 0A000: LOCK=NONE is not supported. Reason: SEQUENCE. Try LOCK=SHARED
 | |
| alter table s engine=Aria;
 | |
| drop sequence  s;
 | |
| # MDEV-31631 Adding auto-increment column to a table with history online
 | |
| # behaves differently from non-online
 | |
| create sequence s;
 | |
| create table t1(a int, x int NULL default(nextval(s)));
 | |
| alter table t1 add b int default (nextval(s)), lock=none;
 | |
| ERROR 0A000: LOCK=NONE is not supported. Reason: Function or expression 'NEXTVAL()' cannot be used in the DEFAULT clause of `b`. Try LOCK=SHARED
 | |
| alter table t1 add b int primary key auto_increment, lock=none;
 | |
| ERROR 0A000: LOCK=NONE is not supported. Reason: ADD COLUMN ... AUTO_INCREMENT. Try LOCK=SHARED
 | |
| create table t2(a int, b int NULL default(nextval(s)));
 | |
| alter table t2 modify b int not null default (nextval(s)), lock=none;
 | |
| ERROR 0A000: LOCK=NONE is not supported. Reason: Function or expression 'NEXTVAL()' cannot be used in the DEFAULT clause of `b`. Try LOCK=SHARED
 | |
| drop table t2;
 | |
| drop table t1;
 | |
| drop sequence s;
 | |
| #
 | |
| # MDEV-33348 ALTER TABLE lock waiting stages are indistinguishable
 | |
| #
 | |
| connect con2, localhost, root;
 | |
| create table t1 (a int);
 | |
| insert t1 values (5);
 | |
| start transaction;
 | |
| select * from t1;
 | |
| a
 | |
| 5
 | |
| connection default;
 | |
| alter table t1 add b int NULL, algorithm= copy, lock= none;
 | |
| connection con2;
 | |
| set @con= $con;
 | |
| select stage, state, info from information_schema.processlist where id = @con;
 | |
| stage	4
 | |
| state	Waiting for table metadata lock
 | |
| info	alter table t1 add b int NULL, algorithm= copy, lock= none
 | |
| rollback;
 | |
| connection default;
 | |
| drop table t1;
 | |
| disconnect con2;
 | |
| # MDEV-34164 Server crashes when executing OPTIMIZE or REPAIR TABLE for InnoDB temporary tables
 | |
| create temporary table t1 (i int) engine=innodb;
 | |
| create table t2 (i int) engine=aria ;
 | |
| optimize table t1,t2;
 | |
| Table	Op	Msg_type	Msg_text
 | |
| test.t1	optimize	note	Table does not support optimize, doing recreate + analyze instead
 | |
| test.t1	optimize	status	OK
 | |
| test.t2	optimize	status	Table is already up to date
 | |
| drop table t1,t2;
 | |
| create temporary table t1 (f int) engine=innodb;
 | |
| create temporary table t2 (f int) engine=innodb;
 | |
| optimize local table t1,t2;
 | |
| Table	Op	Msg_type	Msg_text
 | |
| test.t1	optimize	note	Table does not support optimize, doing recreate + analyze instead
 | |
| test.t1	optimize	status	OK
 | |
| test.t2	optimize	note	Table does not support optimize, doing recreate + analyze instead
 | |
| test.t2	optimize	status	OK
 | |
| drop table t1,t2;
 | |
| set @save_sql_mode = @@sql_mode;
 | |
| set sql_mode= '';
 | |
| create temporary table t (c decimal zerofill,c2 int zerofill,c3 char binary,key(c)) engine=innodb;
 | |
| insert into t values (1,1,1);
 | |
| set session enforce_storage_engine=aria;
 | |
| optimize no_write_to_binlog table t;
 | |
| Table	Op	Msg_type	Msg_text
 | |
| test.t	optimize	note	Table does not support optimize, doing recreate + analyze instead
 | |
| test.t	optimize	status	OK
 | |
| Warnings:
 | |
| Note	1266	Using storage engine Aria for table 't'
 | |
| drop table t;
 | |
| set sql_mode= @save_sql_mode;
 | |
| # End of 11.2 tests
 |