-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
DB-504 test replace select triggers for bulk fetch
- Loading branch information
Showing
2 changed files
with
290 additions
and
0 deletions.
There are no files selected for viewing
121 changes: 121 additions & 0 deletions
121
mysql-test/suite/tokudb/r/bf_replace_select_trigger.result
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,121 @@ | ||
set default_storage_engine='tokudb'; | ||
drop table if exists s,t; | ||
create table s (id bigint not null primary key, x bigint); | ||
insert into s values (1,0),(2,0),(3,0),(4,0); | ||
create table t like s; | ||
begin; | ||
replace into t select * from s; | ||
rollback; | ||
create trigger t_trigger before insert on t for each row replace into s values (1000000,0); | ||
begin; | ||
replace into t select * from s; | ||
ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. | ||
rollback; | ||
drop trigger t_trigger; | ||
create trigger t_trigger after insert on t for each row replace into s values (1000000,0); | ||
begin; | ||
replace into t select * from s; | ||
ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. | ||
rollback; | ||
drop trigger t_trigger; | ||
create trigger t_trigger before insert on t for each row delete from s where id=1000000; | ||
begin; | ||
replace into t select * from s; | ||
ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. | ||
rollback; | ||
drop trigger t_trigger; | ||
create trigger t_trigger after insert on t for each row delete from s where id=1000000; | ||
begin; | ||
replace into t select * from s; | ||
ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. | ||
rollback; | ||
drop trigger t_trigger; | ||
create trigger t_trigger before insert on t for each row update s set x=x+1 where id=1000000; | ||
begin; | ||
replace into t select * from s; | ||
ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. | ||
rollback; | ||
drop trigger t_trigger; | ||
create trigger t_trigger after insert on t for each row update s set x=x+1 where id=1000000; | ||
begin; | ||
replace into t select * from s; | ||
ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. | ||
rollback; | ||
drop trigger t_trigger; | ||
truncate table t; | ||
insert into t values (1,1); | ||
create trigger t_trigger before insert on t for each row replace into s values (1000000,0); | ||
begin; | ||
replace into t select * from s; | ||
ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. | ||
rollback; | ||
drop trigger t_trigger; | ||
create trigger t_trigger after insert on t for each row replace into s values (1000000,0); | ||
begin; | ||
replace into t select * from s; | ||
ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. | ||
rollback; | ||
drop trigger t_trigger; | ||
create trigger t_trigger before insert on t for each row delete from s where id=1000000; | ||
begin; | ||
replace into t select * from s; | ||
ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. | ||
rollback; | ||
drop trigger t_trigger; | ||
create trigger t_trigger after insert on t for each row delete from s where id=1000000; | ||
begin; | ||
replace into t select * from s; | ||
ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. | ||
rollback; | ||
drop trigger t_trigger; | ||
create trigger t_trigger before insert on t for each row update s set x=x+1 where id=1000000; | ||
begin; | ||
replace into t select * from s; | ||
ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. | ||
rollback; | ||
drop trigger t_trigger; | ||
create trigger t_trigger after insert on t for each row update s set x=x+1 where id=1000000; | ||
begin; | ||
replace into t select * from s; | ||
ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. | ||
rollback; | ||
drop trigger t_trigger; | ||
truncate table t; | ||
insert into t values (1,1); | ||
create trigger t_trigger before delete on t for each row replace into s values (1000000,0); | ||
begin; | ||
replace into t select * from s; | ||
ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. | ||
rollback; | ||
drop trigger t_trigger; | ||
create trigger t_trigger after delete on t for each row replace into s values (1000000,0); | ||
begin; | ||
replace into t select * from s; | ||
ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. | ||
rollback; | ||
drop trigger t_trigger; | ||
create trigger t_trigger before delete on t for each row delete from s where id=1000000; | ||
begin; | ||
replace into t select * from s; | ||
ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. | ||
rollback; | ||
drop trigger t_trigger; | ||
create trigger t_trigger after delete on t for each row delete from s where id=1000000; | ||
begin; | ||
replace into t select * from s; | ||
ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. | ||
rollback; | ||
drop trigger t_trigger; | ||
create trigger t_trigger before delete on t for each row update s set x=x+1 where id=1000000; | ||
begin; | ||
replace into t select * from s; | ||
ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. | ||
rollback; | ||
drop trigger t_trigger; | ||
create trigger t_trigger after delete on t for each row update s set x=x+1 where id=1000000; | ||
begin; | ||
replace into t select * from s; | ||
ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. | ||
rollback; | ||
drop trigger t_trigger; | ||
drop table s,t; |
169 changes: 169 additions & 0 deletions
169
mysql-test/suite/tokudb/t/bf_replace_select_trigger.test
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,169 @@ | ||
# verify that various insert and update triggers can not execute on the source table | ||
# for a replace select statement | ||
|
||
source include/have_tokudb.inc; | ||
set default_storage_engine='tokudb'; | ||
disable_warnings; | ||
drop table if exists s,t; | ||
enable_warnings; | ||
|
||
create table s (id bigint not null primary key, x bigint); | ||
insert into s values (1,0),(2,0),(3,0),(4,0); | ||
|
||
create table t like s; | ||
begin; | ||
replace into t select * from s; | ||
rollback; | ||
|
||
# verify that before insert triggers can not replace into the source table | ||
create trigger t_trigger before insert on t for each row replace into s values (1000000,0); | ||
begin; | ||
error 1442; | ||
replace into t select * from s; | ||
rollback; | ||
drop trigger t_trigger; | ||
|
||
# verify that after insert triggers can not replace into the source table | ||
create trigger t_trigger after insert on t for each row replace into s values (1000000,0); | ||
begin; | ||
error 1442; | ||
replace into t select * from s; | ||
rollback; | ||
drop trigger t_trigger; | ||
|
||
# verify that before insert triggers can not delete from the source table | ||
create trigger t_trigger before insert on t for each row delete from s where id=1000000; | ||
begin; | ||
error 1442; | ||
replace into t select * from s; | ||
rollback; | ||
drop trigger t_trigger; | ||
|
||
# verify that after insert triggers can not delete from the source table | ||
create trigger t_trigger after insert on t for each row delete from s where id=1000000; | ||
begin; | ||
error 1442; | ||
replace into t select * from s; | ||
rollback; | ||
drop trigger t_trigger; | ||
|
||
# verify that before insert triggers can not update the source table | ||
create trigger t_trigger before insert on t for each row update s set x=x+1 where id=1000000; | ||
begin; | ||
error 1442; | ||
replace into t select * from s; | ||
rollback; | ||
drop trigger t_trigger; | ||
|
||
# verify that after insert triggers can not update the source table | ||
create trigger t_trigger after insert on t for each row update s set x=x+1 where id=1000000; | ||
begin; | ||
error 1442; | ||
replace into t select * from s; | ||
rollback; | ||
drop trigger t_trigger; | ||
|
||
truncate table t; | ||
insert into t values (1,1); | ||
|
||
# verify that before insert triggers can not replace into the source table | ||
create trigger t_trigger before insert on t for each row replace into s values (1000000,0); | ||
begin; | ||
error 1442; | ||
replace into t select * from s; | ||
rollback; | ||
drop trigger t_trigger; | ||
|
||
# verify that after insert triggers can not replace into the source table | ||
create trigger t_trigger after insert on t for each row replace into s values (1000000,0); | ||
begin; | ||
error 1442; | ||
replace into t select * from s; | ||
rollback; | ||
drop trigger t_trigger; | ||
|
||
# verify that before insert triggers can not delete from the source table | ||
create trigger t_trigger before insert on t for each row delete from s where id=1000000; | ||
begin; | ||
error 1442; | ||
replace into t select * from s; | ||
rollback; | ||
drop trigger t_trigger; | ||
|
||
# verify that after insert triggers can not delete from the source table | ||
create trigger t_trigger after insert on t for each row delete from s where id=1000000; | ||
begin; | ||
error 1442; | ||
replace into t select * from s; | ||
rollback; | ||
drop trigger t_trigger; | ||
|
||
# verify that before insert triggers can not update the source table | ||
create trigger t_trigger before insert on t for each row update s set x=x+1 where id=1000000; | ||
begin; | ||
error 1442; | ||
replace into t select * from s; | ||
rollback; | ||
drop trigger t_trigger; | ||
|
||
# verify that after insert triggers can not update the source table | ||
create trigger t_trigger after insert on t for each row update s set x=x+1 where id=1000000; | ||
begin; | ||
error 1442; | ||
replace into t select * from s; | ||
rollback; | ||
drop trigger t_trigger; | ||
|
||
truncate table t; | ||
insert into t values (1,1); | ||
|
||
# verify that before delete triggers can not replace into the source table | ||
create trigger t_trigger before delete on t for each row replace into s values (1000000,0); | ||
begin; | ||
error 1442; | ||
replace into t select * from s; | ||
rollback; | ||
drop trigger t_trigger; | ||
|
||
# verify that after delete triggers can not replace into the source table | ||
create trigger t_trigger after delete on t for each row replace into s values (1000000,0); | ||
begin; | ||
error 1442; | ||
replace into t select * from s; | ||
rollback; | ||
drop trigger t_trigger; | ||
|
||
# verify that before delete triggers can not delete from the source table | ||
create trigger t_trigger before delete on t for each row delete from s where id=1000000; | ||
begin; | ||
error 1442; | ||
replace into t select * from s; | ||
rollback; | ||
drop trigger t_trigger; | ||
|
||
# verify that after delete triggers can not delete from the source table | ||
create trigger t_trigger after delete on t for each row delete from s where id=1000000; | ||
begin; | ||
error 1442; | ||
replace into t select * from s; | ||
rollback; | ||
drop trigger t_trigger; | ||
|
||
# verify that before delete triggers can not update the source table | ||
create trigger t_trigger before delete on t for each row update s set x=x+1 where id=1000000; | ||
begin; | ||
error 1442; | ||
replace into t select * from s; | ||
rollback; | ||
drop trigger t_trigger; | ||
|
||
# verify that after delete triggers can not update the source table | ||
create trigger t_trigger after delete on t for each row update s set x=x+1 where id=1000000; | ||
begin; | ||
error 1442; | ||
replace into t select * from s; | ||
rollback; | ||
drop trigger t_trigger; | ||
|
||
|
||
drop table s,t; |