mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Bug#6951: Triggers/Traditional: SET @ result wrong
While executing a trigger, we have to set thd->abort_on_warning to the value it had at trigger creation time. mysql-test/r/trigger.result: Add result for bug#6951. mysql-test/t/trigger.test: Add test case for bug#6951. sql/sp_head.cc: While executing a trigger, set thd->abort_on_warning to the value it had at trigger creation time.
This commit is contained in:
@ -965,3 +965,39 @@ SELECT * FROM t1 WHERE conn_id != trigger_conn_id;
|
||||
conn_id trigger_conn_id
|
||||
DROP TRIGGER t1_bi;
|
||||
DROP TABLE t1;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1 (i1 INT);
|
||||
SET @save_sql_mode=@@sql_mode;
|
||||
SET SQL_MODE='';
|
||||
CREATE TRIGGER t1_ai AFTER INSERT ON t1 FOR EACH ROW
|
||||
SET @x = 5/0;
|
||||
SET SQL_MODE='traditional';
|
||||
CREATE TRIGGER t1_au AFTER UPDATE ON t1 FOR EACH ROW
|
||||
SET @x = 5/0;
|
||||
SET @x=1;
|
||||
INSERT INTO t1 VALUES (@x);
|
||||
SELECT @x;
|
||||
@x
|
||||
NULL
|
||||
SET @x=2;
|
||||
UPDATE t1 SET i1 = @x;
|
||||
ERROR 22012: Division by 0
|
||||
SELECT @x;
|
||||
@x
|
||||
2
|
||||
SET SQL_MODE='';
|
||||
SET @x=3;
|
||||
INSERT INTO t1 VALUES (@x);
|
||||
SELECT @x;
|
||||
@x
|
||||
NULL
|
||||
SET @x=4;
|
||||
UPDATE t1 SET i1 = @x;
|
||||
ERROR 22012: Division by 0
|
||||
SELECT @x;
|
||||
@x
|
||||
4
|
||||
SET @@sql_mode=@save_sql_mode;
|
||||
DROP TRIGGER t1_ai;
|
||||
DROP TRIGGER t1_au;
|
||||
DROP TABLE t1;
|
||||
|
@ -1141,4 +1141,52 @@ SELECT * FROM t1 WHERE conn_id != trigger_conn_id;
|
||||
DROP TRIGGER t1_bi;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
#
|
||||
# Bug#6951: Triggers/Traditional: SET @ result wrong
|
||||
#
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 (i1 INT);
|
||||
|
||||
SET @save_sql_mode=@@sql_mode;
|
||||
|
||||
SET SQL_MODE='';
|
||||
|
||||
CREATE TRIGGER t1_ai AFTER INSERT ON t1 FOR EACH ROW
|
||||
SET @x = 5/0;
|
||||
|
||||
SET SQL_MODE='traditional';
|
||||
|
||||
CREATE TRIGGER t1_au AFTER UPDATE ON t1 FOR EACH ROW
|
||||
SET @x = 5/0;
|
||||
|
||||
SET @x=1;
|
||||
INSERT INTO t1 VALUES (@x);
|
||||
SELECT @x;
|
||||
|
||||
SET @x=2;
|
||||
--error 1365
|
||||
UPDATE t1 SET i1 = @x;
|
||||
SELECT @x;
|
||||
|
||||
SET SQL_MODE='';
|
||||
|
||||
SET @x=3;
|
||||
INSERT INTO t1 VALUES (@x);
|
||||
SELECT @x;
|
||||
|
||||
SET @x=4;
|
||||
--error 1365
|
||||
UPDATE t1 SET i1 = @x;
|
||||
SELECT @x;
|
||||
|
||||
SET @@sql_mode=@save_sql_mode;
|
||||
|
||||
DROP TRIGGER t1_ai;
|
||||
DROP TRIGGER t1_au;
|
||||
DROP TABLE t1;
|
||||
|
||||
# End of 5.0 tests
|
||||
|
Reference in New Issue
Block a user