MDEV-4829 BEFORE INSERT triggers dont issue 1406 error.
Turn the 'abort_on_warning' on for assigning value to fields.
This commit is contained in:
parent
905613f825
commit
836275bb20
@ -2273,3 +2273,18 @@ SET optimizer_switch=@save_optimizer_switch;
|
||||
DROP TRIGGER tr;
|
||||
DROP TABLE t1, t2;
|
||||
End of 5.3 tests.
|
||||
SET @@session.sql_mode = 'STRICT_ALL_TABLES,STRICT_TRANS_TABLES';
|
||||
CREATE TABLE t1 (c CHAR(1) NOT NULL);
|
||||
CREATE TRIGGER t1_bi
|
||||
BEFORE INSERT
|
||||
ON t1
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
SET NEW.c = 'www';
|
||||
END;
|
||||
|
|
||||
SET @@session.sql_mode = default;
|
||||
INSERT INTO t1 VALUES ('a');
|
||||
ERROR 22001: Data too long for column 'c' at row 1
|
||||
DROP TRIGGER t1_bi;
|
||||
DROP TABLE t1;
|
||||
|
@ -2613,3 +2613,25 @@ DROP TABLE t1, t2;
|
||||
|
||||
--echo End of 5.3 tests.
|
||||
|
||||
#
|
||||
# MDEV-4829 BEFORE INSERT triggers dont issue 1406 error
|
||||
#
|
||||
|
||||
SET @@session.sql_mode = 'STRICT_ALL_TABLES,STRICT_TRANS_TABLES';
|
||||
CREATE TABLE t1 (c CHAR(1) NOT NULL);
|
||||
DELIMITER |;
|
||||
CREATE TRIGGER t1_bi
|
||||
BEFORE INSERT
|
||||
ON t1
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
SET NEW.c = 'www';
|
||||
END;
|
||||
|
|
||||
DELIMITER ;|
|
||||
SET @@session.sql_mode = default;
|
||||
--error ER_DATA_TOO_LONG
|
||||
INSERT INTO t1 VALUES ('a');
|
||||
DROP TRIGGER t1_bi;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
@ -3229,7 +3229,10 @@ sp_instr_set_trigger_field::execute(THD *thd, uint *nextp)
|
||||
int
|
||||
sp_instr_set_trigger_field::exec_core(THD *thd, uint *nextp)
|
||||
{
|
||||
bool sav_abort_on_warning= thd->abort_on_warning;
|
||||
thd->abort_on_warning= thd->is_strict_mode() && !thd->lex->ignore;
|
||||
const int res= (trigger_field->set_value(thd, &value) ? -1 : 0);
|
||||
thd->abort_on_warning= sav_abort_on_warning;
|
||||
*nextp = m_ip+1;
|
||||
return res;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user