summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Prohaska <prohaska@tokutek.com>2014-08-18 15:58:49 -0400
committerRich Prohaska <prohaska@tokutek.com>2014-08-18 15:58:49 -0400
commitadf1e56e425ced72321705923ff68a1b2d694f5a (patch)
tree3b826c5136e5b7d5713875dc2c3d02d404170383
parent401e0e5d685d5bf1fb407826a964f3db8b0c731a (diff)
downloadmariadb-git-adf1e56e425ced72321705923ff68a1b2d694f5a.tar.gz
DB-504 test replace select triggers for bulk fetch
-rw-r--r--mysql-test/suite/tokudb/r/bf_replace_select_trigger.result121
-rw-r--r--mysql-test/suite/tokudb/t/bf_replace_select_trigger.test169
2 files changed, 290 insertions, 0 deletions
diff --git a/mysql-test/suite/tokudb/r/bf_replace_select_trigger.result b/mysql-test/suite/tokudb/r/bf_replace_select_trigger.result
new file mode 100644
index 00000000000..acd17170301
--- /dev/null
+++ b/mysql-test/suite/tokudb/r/bf_replace_select_trigger.result
@@ -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;
diff --git a/mysql-test/suite/tokudb/t/bf_replace_select_trigger.test b/mysql-test/suite/tokudb/t/bf_replace_select_trigger.test
new file mode 100644
index 00000000000..6b098ce04af
--- /dev/null
+++ b/mysql-test/suite/tokudb/t/bf_replace_select_trigger.test
@@ -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;