diff options
author | dlenev@mysql.com <> | 2005-08-10 00:23:56 +0400 |
---|---|---|
committer | dlenev@mysql.com <> | 2005-08-10 00:23:56 +0400 |
commit | 60511c3df207f30a5ee66be199932dc0973d0323 (patch) | |
tree | 3f10f6888ecf2531022cc520ee953ad5fb8b0ee1 /mysql-test | |
parent | 26e4741dc3320c7d7a397d7f1a22754a3160cd45 (diff) | |
download | mariadb-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.result | 13 | ||||
-rw-r--r-- | mysql-test/t/trigger.test | 23 |
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; |