mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 10:56:12 +01:00 
			
		
		
		
	 da09ae05a9
			
		
	
	
	da09ae05a9
	
	
	
		
			
			* invoke check_expression() for all vcol_info's in mysql_prepare_create_table() to check for FK CASCADE * also check for SET NULL and SET DEFAULT * to check against existing FKs when a vcol is added in ALTER TABLE, old FKs must be added to the new_key_list just like other indexes are * check columns recursively, if vcol1 references vcol2, flags of vcol2 must be taken into account * remove check_table_name_processor(), put that logic under check_vcol_func_processor() to avoid walking the tree twice
		
			
				
	
	
		
			91 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| set @save_query_cache_size=@@query_cache_size;
 | |
| #
 | |
| # MDEV-12485: foreign key on delete cascade stale entries with
 | |
| # query cache enabled
 | |
| #
 | |
| SET NAMES utf8;
 | |
| set global query_cache_type=1;
 | |
| set global query_cache_size=1024*1024;
 | |
| set query_cache_type=1;
 | |
| create table t1 ( id int unsigned auto_increment, primary key(id) ) engine=innodb;
 | |
| create table t2 ( t2id int unsigned, id int unsigned, primary key(t2id, id), foreign key (`id`) references t1(`id`) on delete cascade ) engine=innodb;
 | |
| insert into t1 values (1);
 | |
| insert into t2 values (1,1);
 | |
| select * from t2;
 | |
| t2id	id
 | |
| 1	1
 | |
| show status like "Qcache_queries_in_cache";
 | |
| Variable_name	Value
 | |
| Qcache_queries_in_cache	1
 | |
| delete from t1;
 | |
| show status like "Qcache_queries_in_cache";
 | |
| Variable_name	Value
 | |
| Qcache_queries_in_cache	0
 | |
| select * from t2;
 | |
| t2id	id
 | |
| optimize table t2;
 | |
| Table	Op	Msg_type	Msg_text
 | |
| test.t2	optimize	note	Table does not support optimize, doing recreate + analyze instead
 | |
| test.t2	optimize	status	OK
 | |
| select * from t2;
 | |
| t2id	id
 | |
| drop table t2;
 | |
| drop table t1;
 | |
| create database `testdatabase$ї`;
 | |
| use `testdatabase$ї`;
 | |
| create table `t1$ї` ( id int unsigned auto_increment, primary key(id) ) engine=innodb;
 | |
| create table `t2$ї` ( t2id int unsigned, id int unsigned, primary key(t2id, id), foreign key (`id`) references `t1$ї`(`id`) on delete cascade ) engine=innodb;
 | |
| insert into `t1$ї` values (1);
 | |
| insert into  `t2$ї`values (1,1);
 | |
| select * from `t2$ї`;
 | |
| t2id	id
 | |
| 1	1
 | |
| show status like "Qcache_queries_in_cache";
 | |
| Variable_name	Value
 | |
| Qcache_queries_in_cache	1
 | |
| delete from `t1$ї`;
 | |
| show status like "Qcache_queries_in_cache";
 | |
| Variable_name	Value
 | |
| Qcache_queries_in_cache	0
 | |
| select * from `t2$ї`;
 | |
| t2id	id
 | |
| optimize table `t2$ї`;
 | |
| Table	Op	Msg_type	Msg_text
 | |
| testdatabase$ї.t2$ї	optimize	note	Table does not support optimize, doing recreate + analyze instead
 | |
| testdatabase$ї.t2$ї	optimize	status	OK
 | |
| select * from `t2$ї`;
 | |
| t2id	id
 | |
| use test;
 | |
| drop database `testdatabase$ї`;
 | |
| SET NAMES default;
 | |
| create database `#mysql50#-`;
 | |
| use `#mysql50#-`;
 | |
| create table `#mysql50#t-1` ( id int unsigned auto_increment, primary key(id) ) engine=innodb;
 | |
| create table `#mysql50#t-2` ( t2id int unsigned, id int unsigned, primary key(t2id, id), foreign key (`id`) references `#mysql50#t-1`(`id`) on delete cascade ) engine=innodb;
 | |
| insert into `#mysql50#t-1` values (1);
 | |
| insert into  `#mysql50#t-2`values (1,1);
 | |
| select * from `#mysql50#t-2`;
 | |
| t2id	id
 | |
| 1	1
 | |
| show status like "Qcache_queries_in_cache";
 | |
| Variable_name	Value
 | |
| Qcache_queries_in_cache	1
 | |
| delete from `#mysql50#t-1`;
 | |
| show status like "Qcache_queries_in_cache";
 | |
| Variable_name	Value
 | |
| Qcache_queries_in_cache	0
 | |
| select * from `#mysql50#t-2`;
 | |
| t2id	id
 | |
| optimize table `#mysql50#t-2`;
 | |
| Table	Op	Msg_type	Msg_text
 | |
| #mysql50#-.#mysql50#t-2	optimize	note	Table does not support optimize, doing recreate + analyze instead
 | |
| #mysql50#-.#mysql50#t-2	optimize	status	OK
 | |
| select * from `#mysql50#t-2`;
 | |
| t2id	id
 | |
| use test;
 | |
| drop database `#mysql50#-`;
 | |
| SET NAMES default;
 | |
| FOUND 10 /\[ERROR\] Invalid \(old\?\) table or database name/ in mysqld.1.err
 | |
| set global query_cache_type=DEFAULT;
 | |
| set global query_cache_size=@save_query_cache_size;
 | |
| End of 10.2 tests
 |