Commit 0ea04229 authored by unknown's avatar unknown

value should be checked after 'before' trigger work (BUG#5992)


mysql-test/r/view.result:
  changing value by trigger and CHECK OPTION
mysql-test/t/view.test:
  changing value by trigger and CHECK OPTION
sql/sql_insert.cc:
  value should be checked after 'before' trigger work
parent 2aad3039
......@@ -1547,3 +1547,14 @@ s1
3
drop view v1;
drop table t1;
create table t1 (s1 tinyint);
create trigger t1_bi before insert on t1 for each row set new.s1 = 500;
create view v1 as select * from t1 where s1 <> 127 with check option;
insert into v1 values (0);
ERROR HY000: CHECK OPTION failed 'test.v1'
select * from v1;
s1
select * from t1;
s1
drop view v1;
drop table t1;
......@@ -1497,3 +1497,17 @@ select * from t1;
drop view v1;
drop table t1;
#
# changing value by trigger and CHECK OPTION
#
create table t1 (s1 tinyint);
create trigger t1_bi before insert on t1 for each row set new.s1 = 500;
create view v1 as select * from t1 where s1 <> 127 with check option;
-- error 1369
insert into v1 values (0);
select * from v1;
select * from t1;
drop view v1;
drop table t1;
......@@ -319,6 +319,15 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list,
break;
}
}
/*
FIXME: Actually we should do this before
check_that_all_fields_are_given_values Or even go into write_record ?
*/
if (table->triggers)
table->triggers->process_triggers(thd, TRG_EVENT_INSERT,
TRG_ACTION_BEFORE);
if ((res= table_list->view_check_option(thd,
(values_list.elements == 1 ?
0 :
......@@ -330,15 +339,6 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list,
error= 1;
break;
}
/*
FIXME: Actually we should do this before
check_that_all_fields_are_given_values Or even go into write_record ?
*/
if (table->triggers)
table->triggers->process_triggers(thd, TRG_EVENT_INSERT,
TRG_ACTION_BEFORE);
#ifndef EMBEDDED_LIBRARY
if (lock_type == TL_WRITE_DELAYED)
{
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment