summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authordlenev@mysql.com <>2005-08-10 00:23:56 +0400
committerdlenev@mysql.com <>2005-08-10 00:23:56 +0400
commit60511c3df207f30a5ee66be199932dc0973d0323 (patch)
tree3f10f6888ecf2531022cc520ee953ad5fb8b0ee1 /mysql-test
parent26e4741dc3320c7d7a397d7f1a22754a3160cd45 (diff)
downloadmariadb-git-60511c3df207f30a5ee66be199932dc0973d0323.tar.gz
Clumsy but working fix for bug #11973 "SELECT .. INTO var_name; in trigger
cause crash on update". Let us update "thd" pointer in LEX, all its units and in LEX::result before executing statement in trigger body, since triggers are associated with TABLE object and because of this can be used in different threads.
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/r/trigger.result13
-rw-r--r--mysql-test/t/trigger.test23
2 files changed, 36 insertions, 0 deletions
diff --git a/mysql-test/r/trigger.result b/mysql-test/r/trigger.result
index 52bf307a686..99abfc6db96 100644
--- a/mysql-test/r/trigger.result
+++ b/mysql-test/r/trigger.result
@@ -635,3 +635,16 @@ show triggers;
Trigger Event Table Statement Timing Created sql_mode
t1_bi INSERT t1 set new.a = '2004-01-00' BEFORE #
drop table t1;
+create table t1 (id int, data int, username varchar(16));
+insert into t1 (id, data) values (1, 0);
+create trigger t1_whoupdated before update on t1 for each row
+begin
+declare user varchar(32);
+declare i int;
+select user() into user;
+set NEW.username = user;
+select count(*) from ((select 1) union (select 2)) as d1 into i;
+end|
+update t1 set data = 1;
+update t1 set data = 2;
+drop table t1;
diff --git a/mysql-test/t/trigger.test b/mysql-test/t/trigger.test
index 7bf8b1a4e2b..3d5d3448a1b 100644
--- a/mysql-test/t/trigger.test
+++ b/mysql-test/t/trigger.test
@@ -642,3 +642,26 @@ show create table t1;
--replace_column 6 #
show triggers;
drop table t1;
+
+# Test for bug #11973 "SELECT .. INTO var_name; in trigger cause
+# crash on update"
+create table t1 (id int, data int, username varchar(16));
+insert into t1 (id, data) values (1, 0);
+delimiter |;
+create trigger t1_whoupdated before update on t1 for each row
+begin
+ declare user varchar(32);
+ declare i int;
+ select user() into user;
+ set NEW.username = user;
+ select count(*) from ((select 1) union (select 2)) as d1 into i;
+end|
+delimiter ;|
+update t1 set data = 1;
+
+connect (addconroot, localhost, root,,);
+connection addconroot;
+update t1 set data = 2;
+
+connection default;
+drop table t1;