mariadb/mysql-test/main/query_cache_innodb.result
Sergei Golubchik da09ae05a9 MDEV-18114 Foreign Key Constraint actions don't affect Virtual Column
* 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
2023-08-02 14:45:31 +02:00

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