mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	* some of these tests run just fine with InnoDB: -> s/have_xtradb/have_innodb/ * sys_var tests did basic tests for xtradb only variables -> remove them, they're useless anyway (sysvar_innodb does it better) * multi_update had innodb specific tests -> move to multi_update_innodb.test
		
			
				
	
	
		
			154 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			154 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| #
 | |
| # BUG#57373: Multi update+InnoDB reports ER_KEY_NOT_FOUND if a
 | |
| #            table is updated twice
 | |
| #
 | |
| CREATE TABLE t1(
 | |
| pk INT,
 | |
| a INT,
 | |
| b INT,
 | |
| PRIMARY KEY (pk)
 | |
| ) ENGINE=InnoDB;
 | |
| INSERT INTO t1 VALUES (0,0,0);
 | |
| UPDATE t1 AS A, t1 AS B SET A.pk = 1, B.a = 2;
 | |
| ERROR HY000: Primary key/partition key update is not allowed since the table is updated both as 'A' and 'B'
 | |
| SELECT * FROM t1;
 | |
| pk	a	b
 | |
| 0	0	0
 | |
| CREATE VIEW v1 AS SELECT * FROM t1;
 | |
| UPDATE v1 AS A, t1 AS B SET A.pk = 1, B.a = 2;
 | |
| ERROR HY000: Primary key/partition key update is not allowed since the table is updated both as 'A' and 'B'
 | |
| SELECT * FROM t1;
 | |
| pk	a	b
 | |
| 0	0	0
 | |
| UPDATE t1 AS A, t1 AS B SET A.a = 1, B.b = 2;
 | |
| # Should be (0,1,2)
 | |
| SELECT * FROM t1;
 | |
| pk	a	b
 | |
| 0	1	2
 | |
| DROP VIEW v1;
 | |
| DROP TABLE t1;
 | |
| #
 | |
| # BUG#11882110: UPDATE REPORTS ER_KEY_NOT_FOUND IF TABLE IS 
 | |
| #               UPDATED TWICE
 | |
| #
 | |
| CREATE TABLE t1 ( 
 | |
| col_int_key int, 
 | |
| pk int, 
 | |
| col_int int, 
 | |
| key(col_int_key), 
 | |
| primary key (pk)
 | |
| ) ENGINE=InnoDB;
 | |
| INSERT INTO t1 VALUES (1,2,3);
 | |
| 
 | |
| CREATE TABLE t2 ( 
 | |
| col_int_key int, 
 | |
| pk_1 int, 
 | |
| pk_2 int, 
 | |
| col_int int, 
 | |
| key(col_int_key), 
 | |
| primary key (pk_1,pk_2)
 | |
| ) ENGINE=InnoDB;
 | |
| INSERT INTO t2 VALUES (1,2,3,4);
 | |
| 
 | |
| UPDATE t1 AS A NATURAL JOIN t1 B SET A.pk=5,B.pk=7;
 | |
| ERROR HY000: Primary key/partition key update is not allowed since the table is updated both as 'A' and 'B'
 | |
| 
 | |
| SELECT * FROM t1;
 | |
| col_int_key	pk	col_int
 | |
| 1	2	3
 | |
| 
 | |
| UPDATE t2 AS A NATURAL JOIN t2 B SET A.pk_1=5,B.pk_1=7;
 | |
| ERROR HY000: Primary key/partition key update is not allowed since the table is updated both as 'A' and 'B'
 | |
| 
 | |
| UPDATE t2 AS A NATURAL JOIN t2 B SET A.pk_2=10,B.pk_2=11;
 | |
| ERROR HY000: Primary key/partition key update is not allowed since the table is updated both as 'A' and 'B'
 | |
| 
 | |
| SELECT * FROM t2;
 | |
| col_int_key	pk_1	pk_2	col_int
 | |
| 1	2	3	4
 | |
| DROP TABLE t1,t2;
 | |
| 
 | |
| # Bug mdev-5970
 | |
| # Bug#13256831 - ERROR 1032 (HY000): CAN'T FIND RECORD
 | |
| 
 | |
| CREATE TABLE t1 (f1 INT PRIMARY KEY, f2 INT) ENGINE=InnoDB;
 | |
| CREATE TABLE t2 (f1 INT PRIMARY KEY, f2 INT) ENGINE=InnoDB;
 | |
| INSERT INTO t1 VALUES (5, 7);
 | |
| INSERT INTO t2 VALUES (6, 97);
 | |
| CREATE ALGORITHM = MERGE VIEW v1 AS 
 | |
| SELECT a2.f1 AS f1, a2.f2 AS f2
 | |
| FROM t1 AS a1 JOIN t2 AS a2 ON a1.f2 > a2.f1 
 | |
| WITH LOCAL CHECK OPTION;
 | |
| SELECT * FROM v1;
 | |
| f1	f2
 | |
| 6	97
 | |
| UPDATE v1 SET f1 = 1;
 | |
| SELECT * FROM v1;
 | |
| f1	f2
 | |
| 1	97
 | |
| DROP TABLE t1, t2;
 | |
| DROP VIEW v1;
 | |
| #
 | |
| # MDEV-5973: MySQL  Bug#11757486:49539: NON-DESCRIPTIVE ERR (ERROR 0
 | |
| # FROM STORAGE ENGINE) WITH MULTI-TABLE UPDATE
 | |
| #
 | |
| CREATE TABLE table_11757486 (field1 tinyint) ENGINE=INNODB;
 | |
| INSERT INTO table_11757486 VALUES (0),(0);
 | |
| SET SESSION SQL_MODE='STRICT_ALL_TABLES';
 | |
| UPDATE IGNORE (SELECT 128 as col1) x, table_11757486 SET field1=x.col1;
 | |
| Warnings:
 | |
| Warning	1264	Out of range value for column 'field1' at row 1
 | |
| Warning	1264	Out of range value for column 'field1' at row 2
 | |
| UPDATE IGNORE table_11757486 SET field1=128;
 | |
| Warnings:
 | |
| Warning	1264	Out of range value for column 'field1' at row 1
 | |
| Warning	1264	Out of range value for column 'field1' at row 2
 | |
| UPDATE (SELECT 128 as col1) x, table_11757486 SET field1=x.col1;
 | |
| ERROR 22003: Out of range value for column 'field1' at row 1
 | |
| UPDATE table_11757486 SET field1=128;
 | |
| ERROR 22003: Out of range value for column 'field1' at row 1
 | |
| SET SESSION SQL_MODE='';
 | |
| UPDATE IGNORE (SELECT 128 as col1) x, table_11757486 SET field1=x.col1;
 | |
| Warnings:
 | |
| Warning	1264	Out of range value for column 'field1' at row 1
 | |
| Warning	1264	Out of range value for column 'field1' at row 2
 | |
| UPDATE IGNORE table_11757486 SET field1=128;
 | |
| Warnings:
 | |
| Warning	1264	Out of range value for column 'field1' at row 1
 | |
| Warning	1264	Out of range value for column 'field1' at row 2
 | |
| DROP TABLE table_11757486;
 | |
| SET SESSION SQL_MODE=default;
 | |
| create table t1 (
 | |
| aclid bigint not null primary key,
 | |
| status tinyint(1) not null
 | |
| ) engine = innodb;
 | |
| create table t2 (
 | |
| refid bigint not null primary key,
 | |
| aclid bigint, index idx_acl(aclid)
 | |
| ) engine = innodb;
 | |
| insert into t2 values(1,null);
 | |
| delete t2, t1 from t2 left join t1 on (t2.aclid=t1.aclid) where t2.refid='1';
 | |
| drop table t1, t2;
 | |
| create table t1 ( c char(8) not null ) engine=innodb;
 | |
| insert into t1 values ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9');
 | |
| insert into t1 values ('A'),('B'),('C'),('D'),('E'),('F');
 | |
| alter table t1 add b char(8) not null;
 | |
| alter table t1 add a char(8) not null;
 | |
| alter table t1 add primary key (a,b,c);
 | |
| update t1 set a=c, b=c;
 | |
| create table t2 like t1;
 | |
| insert into t2 select * from t1;
 | |
| delete t1,t2 from t2,t1 where t1.a<'B' and t2.b=t1.b;
 | |
| drop table t1,t2;
 | |
| create table t1 ( c char(8) not null ) engine=innodb;
 | |
| insert into t1 values ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9');
 | |
| insert into t1 values ('A'),('B'),('C'),('D'),('E'),('F');
 | |
| alter table t1 add b char(8) not null;
 | |
| alter table t1 add a char(8) not null;
 | |
| alter table t1 add primary key (a,b,c);
 | |
| update t1 set a=c, b=c;
 | |
| create table t2 like t1;
 | |
| insert into t2 select * from t1;
 | |
| delete t1,t2 from t2,t1 where t1.a<'B' and t2.b=t1.b;
 | |
| drop table t1,t2;
 |