diff --git a/mysql-test/r/view.result b/mysql-test/r/view.result index 2e5d7073c5a..c9581598de6 100644 --- a/mysql-test/r/view.result +++ b/mysql-test/r/view.result @@ -1535,3 +1535,15 @@ insert into v2 values (0); ERROR HY000: CHECK OPTION failed 'test.v2' drop view v2, v1; drop table t1; +create table t1 (s1 int); +create view v1 as select * from t1 where s1 < 5 with check option; +insert ignore into v1 values (6); +ERROR HY000: CHECK OPTION failed 'test.v1' +insert ignore into v1 values (6),(3); +Warnings: +Error 1369 CHECK OPTION failed 'test.v1' +select * from t1; +s1 +3 +drop view v1; +drop table t1; diff --git a/mysql-test/t/view.test b/mysql-test/t/view.test index 716ed4aa6b3..282ea827c6a 100644 --- a/mysql-test/t/view.test +++ b/mysql-test/t/view.test @@ -1482,3 +1482,18 @@ create view v2 as select * from v1 with cascaded check option; insert into v2 values (0); drop view v2, v1; drop table t1; + +# +# inserting single value with check option failed always get error +# +create table t1 (s1 int); +create view v1 as select * from t1 where s1 < 5 with check option; +#single value +-- error 1369 +insert ignore into v1 values (6); +#several values +insert ignore into v1 values (6),(3); +select * from t1; +drop view v1; +drop table t1; + diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 36ac56799de..2fe0d2f644a 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -319,7 +319,10 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list, break; } } - if ((res= table_list->view_check_option(thd, ignore_err)) == + if ((res= table_list->view_check_option(thd, + (values_list.elements == 1 ? + 0 : + ignore_err))) == VIEW_CHECK_SKIP) continue; else if (res == VIEW_CHECK_ERROR)