Fixed bug#19789: REPLACE was allowed for a VIEW with CHECK OPTION enabled.
The st_lex::which_check_option_applicable() function controls for which statements WITH CHECK OPTION clause should be taken into account. REPLACE and REPLACE_SELECT wasn't in the list which results in allowing REPLACE to insert wrong rows in a such view. The st_lex::which_check_option_applicable() now includes REPLACE and REPLACE_SELECT in the list of statements for which WITH CHECK OPTION clause is applicable. mysql-test/t/replace.test: Added test case for bug#19789: REPLACE was allowed for a VIEW with CHECK OPTION enabled. mysql-test/r/replace.result: Added test case for bug#19789: REPLACE was allowed for a VIEW with CHECK OPTION enabled. sql/sql_lex.h: Fixed bug#19789: REPLACE was allowed for a VIEW with CHECK OPTION enabled. The st_lex::which_check_option_applicable() now includes REPLACE and REPLACE_SELECT in the list of statements for which WITH CHECK OPTION clause is applicable.
This commit is contained in:
parent
63d6336465
commit
683ebcd101
@ -24,3 +24,9 @@ a b
|
||||
63 default_value
|
||||
127 last
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (f1 INT);
|
||||
CREATE VIEW v1 AS SELECT f1 FROM t1 WHERE f1 = 0 WITH CHECK OPTION;
|
||||
REPLACE INTO v1 (f1) VALUES (1);
|
||||
ERROR HY000: CHECK OPTION failed 'test.v1'
|
||||
DROP TABLE t1;
|
||||
DROP VIEW v1;
|
||||
|
@ -35,3 +35,13 @@ select * from t1;
|
||||
drop table t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
# Bug#19789: REPLACE was allowed for a VIEW with CHECK OPTION enabled.
|
||||
#
|
||||
CREATE TABLE t1 (f1 INT);
|
||||
CREATE VIEW v1 AS SELECT f1 FROM t1 WHERE f1 = 0 WITH CHECK OPTION;
|
||||
--error 1369
|
||||
REPLACE INTO v1 (f1) VALUES (1);
|
||||
DROP TABLE t1;
|
||||
DROP VIEW v1;
|
||||
|
@ -1000,6 +1000,8 @@ typedef struct st_lex
|
||||
case SQLCOM_UPDATE_MULTI:
|
||||
case SQLCOM_INSERT:
|
||||
case SQLCOM_INSERT_SELECT:
|
||||
case SQLCOM_REPLACE:
|
||||
case SQLCOM_REPLACE_SELECT:
|
||||
case SQLCOM_LOAD:
|
||||
return TRUE;
|
||||
default:
|
||||
|
Loading…
x
Reference in New Issue
Block a user