diff options
27 files changed, 59 insertions, 30 deletions
diff --git a/include/mysqld_error.h b/include/mysqld_error.h index 3ee12fa9580..432919db04b 100644 --- a/include/mysqld_error.h +++ b/include/mysqld_error.h @@ -365,7 +365,7 @@ #define ER_WRONG_OBJECT 1346 #define ER_NONUPDATEABLE_COLUMN 1347 #define ER_VIEW_SELECT_DERIVED 1348 -#define ER_VIEW_SELECT_PROCEDURE 1349 +#define ER_VIEW_SELECT_CLAUSE 1349 #define ER_VIEW_SELECT_VARIABLE 1350 #define ER_VIEW_SELECT_TMPTABLE 1351 #define ER_VIEW_WRONG_LIST 1352 @@ -374,4 +374,4 @@ #define ER_VIEW_INVALID 1355 #define ER_SP_NO_DROP_SP 1356 #define ER_SP_GOTO_IN_HNDLR 1357 -#define ER_ERROR_MESSAGES 357 +#define ER_ERROR_MESSAGES 358 diff --git a/mysql-test/r/view.result b/mysql-test/r/view.result index 449144e3770..a00938add07 100644 --- a/mysql-test/r/view.result +++ b/mysql-test/r/view.result @@ -1253,3 +1253,11 @@ create view v4 as select * from v3; select * from v4; ERROR 21000: Subquery returns more than 1 row drop view v4, v3, v2, v1; +create view v1 as select 5 into @w; +ERROR HY000: View's SELECT contains a 'INTO' clause +create view v1 as select 5 into outfile 'ttt'; +ERROR HY000: View's SELECT contains a 'INTO' clause +create table t1 (a int); +create view v1 as select a from t1 procedure analyse(); +ERROR HY000: View's SELECT contains a 'PROCEDURE' clause +drop table t1; diff --git a/mysql-test/t/view.test b/mysql-test/t/view.test index a44624d4df9..f03e48167fd 100644 --- a/mysql-test/t/view.test +++ b/mysql-test/t/view.test @@ -1207,3 +1207,15 @@ create view v4 as select * from v3; -- error 1242 select * from v4; drop view v4, v3, v2, v1; + +# +# VIEW over SELECT with prohibited clauses +# +-- error 1349 +create view v1 as select 5 into @w; +-- error 1349 +create view v1 as select 5 into outfile 'ttt'; +create table t1 (a int); +-- error 1349 +create view v1 as select a from t1 procedure analyse(); +drop table t1; diff --git a/sql/share/czech/errmsg.txt b/sql/share/czech/errmsg.txt index 9d1c429d5b6..35310f5210f 100644 --- a/sql/share/czech/errmsg.txt +++ b/sql/share/czech/errmsg.txt @@ -361,7 +361,7 @@ character-set=latin2 "'%-.64s.%-.64s' is not %s" "Column '%-.64s' is not updatable" "View's SELECT contains a subquery in the FROM clause" -"View's SELECT contains a PROCEDURE clause" +"View's SELECT contains a '%s' clause" "View's SELECT contains a variable or parameter" "View's SELECT contains a temporary table '%-.64s'" "View's SELECT and view's field list have different column counts" diff --git a/sql/share/danish/errmsg.txt b/sql/share/danish/errmsg.txt index b2d2fdf4d77..d6a0a9d81e8 100644 --- a/sql/share/danish/errmsg.txt +++ b/sql/share/danish/errmsg.txt @@ -1,4 +1,4 @@ -/* Copyright Abandoned 1997 TCX DataKonsult AB & Monty Program KB & Detron HB +:/* Copyright Abandoned 1997 TCX DataKonsult AB & Monty Program KB & Detron HB This file is public domain and comes with NO WARRANTY of any kind */ /* Knud RiishЬjgЕrd knudriis@post.tele.dk 99 && @@ -355,7 +355,7 @@ character-set=latin1 "'%-.64s.%-.64s' is not %s" "Column '%-.64s' is not updatable" "View's SELECT contains a subquery in the FROM clause" -"View's SELECT contains a PROCEDURE clause" +"View's SELECT contains a '%s' clause" "View's SELECT contains a variable or parameter" "View's SELECT contains a temporary table '%-.64s'" "View's SELECT and view's field list have different column counts" diff --git a/sql/share/dutch/errmsg.txt b/sql/share/dutch/errmsg.txt index 85c0443869f..8fd5277d4ec 100644 --- a/sql/share/dutch/errmsg.txt +++ b/sql/share/dutch/errmsg.txt @@ -363,7 +363,7 @@ character-set=latin1 "'%-.64s.%-.64s' is not %s" "Column '%-.64s' is not updatable" "View's SELECT contains a subquery in the FROM clause" -"View's SELECT contains a PROCEDURE clause" +"View's SELECT contains a '%s' clause" "View's SELECT contains a variable or parameter" "View's SELECT contains a temporary table '%-.64s'" "View's SELECT and view's field list have different column counts" diff --git a/sql/share/english/errmsg.txt b/sql/share/english/errmsg.txt index 641f267d67e..a60881b5df6 100644 --- a/sql/share/english/errmsg.txt +++ b/sql/share/english/errmsg.txt @@ -352,7 +352,7 @@ character-set=latin1 "'%-.64s.%-.64s' is not %s" "Column '%-.64s' is not updatable" "View's SELECT contains a subquery in the FROM clause" -"View's SELECT contains a PROCEDURE clause" +"View's SELECT contains a '%s' clause" "View's SELECT contains a variable or parameter" "View's SELECT contains a temporary table '%-.64s'" "View's SELECT and view's field list have different column counts" diff --git a/sql/share/estonian/errmsg.txt b/sql/share/estonian/errmsg.txt index e64c0c17e74..2e8a9270cd3 100644 --- a/sql/share/estonian/errmsg.txt +++ b/sql/share/estonian/errmsg.txt @@ -357,7 +357,7 @@ character-set=latin7 "'%-.64s.%-.64s' is not %s" "Column '%-.64s' is not updatable" "View's SELECT contains a subquery in the FROM clause" -"View's SELECT contains a PROCEDURE clause" +"View's SELECT contains a '%s' clause" "View's SELECT contains a variable or parameter" "View's SELECT contains a temporary table '%-.64s'" "View's SELECT and view's field list have different column counts" diff --git a/sql/share/french/errmsg.txt b/sql/share/french/errmsg.txt index f3443457346..b8ec7866a68 100644 --- a/sql/share/french/errmsg.txt +++ b/sql/share/french/errmsg.txt @@ -352,7 +352,7 @@ character-set=latin1 "'%-.64s.%-.64s' is not %s" "Column '%-.64s' is not updatable" "View's SELECT contains a subquery in the FROM clause" -"View's SELECT contains a PROCEDURE clause" +"View's SELECT contains a '%s' clause" "View's SELECT contains a variable or parameter" "View's SELECT contains a temporary table '%-.64s'" "View's SELECT and view's field list have different column counts" diff --git a/sql/share/german/errmsg.txt b/sql/share/german/errmsg.txt index 498a230faed..c28792cc8c6 100644 --- a/sql/share/german/errmsg.txt +++ b/sql/share/german/errmsg.txt @@ -364,7 +364,7 @@ character-set=latin1 "'%-.64s.%-.64s' is not %s" "Column '%-.64s' is not updatable" "View's SELECT contains a subquery in the FROM clause" -"View's SELECT contains a PROCEDURE clause" +"View's SELECT contains a '%s' clause" "View's SELECT contains a variable or parameter" "View's SELECT contains a temporary table '%-.64s'" "View's SELECT and view's field list have different column counts" diff --git a/sql/share/greek/errmsg.txt b/sql/share/greek/errmsg.txt index 2827517ba9a..8ceb24bd376 100644 --- a/sql/share/greek/errmsg.txt +++ b/sql/share/greek/errmsg.txt @@ -352,7 +352,7 @@ character-set=greek "'%-.64s.%-.64s' is not %s" "Column '%-.64s' is not updatable" "View's SELECT contains a subquery in the FROM clause" -"View's SELECT contains a PROCEDURE clause" +"View's SELECT contains a '%s' clause" "View's SELECT contains a variable or parameter" "View's SELECT contains a temporary table '%-.64s'" "View's SELECT and view's field list have different column counts" diff --git a/sql/share/hungarian/errmsg.txt b/sql/share/hungarian/errmsg.txt index fab0b156322..f47684f9225 100644 --- a/sql/share/hungarian/errmsg.txt +++ b/sql/share/hungarian/errmsg.txt @@ -354,7 +354,7 @@ character-set=latin2 "'%-.64s.%-.64s' is not %s" "Column '%-.64s' is not updatable" "View's SELECT contains a subquery in the FROM clause" -"View's SELECT contains a PROCEDURE clause" +"View's SELECT contains a '%s' clause" "View's SELECT contains a variable or parameter" "View's SELECT contains a temporary table '%-.64s'" "View's SELECT and view's field list have different column counts" diff --git a/sql/share/italian/errmsg.txt b/sql/share/italian/errmsg.txt index 24634514a23..eb241ef08a0 100644 --- a/sql/share/italian/errmsg.txt +++ b/sql/share/italian/errmsg.txt @@ -352,7 +352,7 @@ character-set=latin1 "'%-.64s.%-.64s' is not %s" "Column '%-.64s' is not updatable" "View's SELECT contains a subquery in the FROM clause" -"View's SELECT contains a PROCEDURE clause" +"View's SELECT contains a '%s' clause" "View's SELECT contains a variable or parameter" "View's SELECT contains a temporary table '%-.64s'" "View's SELECT and view's field list have different column counts" diff --git a/sql/share/japanese/errmsg.txt b/sql/share/japanese/errmsg.txt index 68f2857aeca..166d6e8e1c1 100644 --- a/sql/share/japanese/errmsg.txt +++ b/sql/share/japanese/errmsg.txt @@ -354,7 +354,7 @@ character-set=ujis "'%-.64s.%-.64s' is not %s" "Column '%-.64s' is not updatable" "View's SELECT contains a subquery in the FROM clause" -"View's SELECT contains a PROCEDURE clause" +"View's SELECT contains a '%s' clause" "View's SELECT contains a variable or parameter" "View's SELECT contains a temporary table '%-.64s'" "View's SELECT and view's field list have different column counts" diff --git a/sql/share/korean/errmsg.txt b/sql/share/korean/errmsg.txt index 70267c82364..66486fd8a0f 100644 --- a/sql/share/korean/errmsg.txt +++ b/sql/share/korean/errmsg.txt @@ -352,7 +352,7 @@ character-set=euckr "'%-.64s.%-.64s' is not %s" "Column '%-.64s' is not updatable" "View's SELECT contains a subquery in the FROM clause" -"View's SELECT contains a PROCEDURE clause" +"View's SELECT contains a '%s' clause" "View's SELECT contains a variable or parameter" "View's SELECT contains a temporary table '%-.64s'" "View's SELECT and view's field list have different column counts" diff --git a/sql/share/norwegian-ny/errmsg.txt b/sql/share/norwegian-ny/errmsg.txt index 1d84a3a5e5a..739d40178df 100644 --- a/sql/share/norwegian-ny/errmsg.txt +++ b/sql/share/norwegian-ny/errmsg.txt @@ -354,7 +354,7 @@ character-set=latin1 "'%-.64s.%-.64s' is not %s" "Column '%-.64s' is not updatable" "View's SELECT contains a subquery in the FROM clause" -"View's SELECT contains a PROCEDURE clause" +"View's SELECT contains a '%s' clause" "View's SELECT contains a variable or parameter" "View's SELECT contains a temporary table '%-.64s'" "View's SELECT and view's field list have different column counts" diff --git a/sql/share/norwegian/errmsg.txt b/sql/share/norwegian/errmsg.txt index be881d54473..227e16e1590 100644 --- a/sql/share/norwegian/errmsg.txt +++ b/sql/share/norwegian/errmsg.txt @@ -354,7 +354,7 @@ character-set=latin1 "'%-.64s.%-.64s' is not %s" "Column '%-.64s' is not updatable" "View's SELECT contains a subquery in the FROM clause" -"View's SELECT contains a PROCEDURE clause" +"View's SELECT contains a '%s' clause" "View's SELECT contains a variable or parameter" "View's SELECT contains a temporary table '%-.64s'" "View's SELECT and view's field list have different column counts" diff --git a/sql/share/polish/errmsg.txt b/sql/share/polish/errmsg.txt index 8a576b5bf82..62e10e778f2 100644 --- a/sql/share/polish/errmsg.txt +++ b/sql/share/polish/errmsg.txt @@ -356,7 +356,7 @@ character-set=latin2 "'%-.64s.%-.64s' is not %s" "Column '%-.64s' is not updatable" "View's SELECT contains a subquery in the FROM clause" -"View's SELECT contains a PROCEDURE clause" +"View's SELECT contains a '%s' clause" "View's SELECT contains a variable or parameter" "View's SELECT contains a temporary table '%-.64s'" "View's SELECT and view's field list have different column counts" diff --git a/sql/share/portuguese/errmsg.txt b/sql/share/portuguese/errmsg.txt index 6794db726cc..08c03fcaf2a 100644 --- a/sql/share/portuguese/errmsg.txt +++ b/sql/share/portuguese/errmsg.txt @@ -353,7 +353,7 @@ character-set=latin1 "'%-.64s.%-.64s' is not %s" "Column '%-.64s' is not updatable" "View's SELECT contains a subquery in the FROM clause" -"View's SELECT contains a PROCEDURE clause" +"View's SELECT contains a '%s' clause" "View's SELECT contains a variable or parameter" "View's SELECT contains a temporary table '%-.64s'" "View's SELECT and view's field list have different column counts" diff --git a/sql/share/romanian/errmsg.txt b/sql/share/romanian/errmsg.txt index 9eaa4860b64..0f6df4f919b 100644 --- a/sql/share/romanian/errmsg.txt +++ b/sql/share/romanian/errmsg.txt @@ -356,7 +356,7 @@ character-set=latin2 "'%-.64s.%-.64s' is not %s" "Column '%-.64s' is not updatable" "View's SELECT contains a subquery in the FROM clause" -"View's SELECT contains a PROCEDURE clause" +"View's SELECT contains a '%s' clause" "View's SELECT contains a variable or parameter" "View's SELECT contains a temporary table '%-.64s'" "View's SELECT and view's field list have different column counts" diff --git a/sql/share/russian/errmsg.txt b/sql/share/russian/errmsg.txt index eec85d611fc..71c983ff55e 100644 --- a/sql/share/russian/errmsg.txt +++ b/sql/share/russian/errmsg.txt @@ -354,7 +354,7 @@ character-set=koi8r "'%-.64s.%-.64s' - не %s" "Столбец '%-.64s' не обновляемый" "View SELECT содержит подзапрос в конструкции FROM" -"View SELECT содержит конструкцию PROCEDURE" +"View SELECT содержит конструкцию '%s'" "View SELECT содержит переменную или параметр" "View SELECT содержит ссылку на временную таблицу '%-.64s'" "View SELECT и список полей view имеют разное количество столбцов" diff --git a/sql/share/serbian/errmsg.txt b/sql/share/serbian/errmsg.txt index 4039268f446..bff4fad6108 100644 --- a/sql/share/serbian/errmsg.txt +++ b/sql/share/serbian/errmsg.txt @@ -358,7 +358,7 @@ character-set=cp1250 "'%-.64s.%-.64s' is not %s" "Column '%-.64s' is not updatable" "View's SELECT contains a subquery in the FROM clause" -"View's SELECT contains a PROCEDURE clause" +"View's SELECT contains a '%s' clause" "View's SELECT contains a variable or parameter" "View's SELECT contains a temporary table '%-.64s'" "View's SELECT and view's field list have different column counts" diff --git a/sql/share/slovak/errmsg.txt b/sql/share/slovak/errmsg.txt index 9be5ce01d6a..363ba86afc7 100644 --- a/sql/share/slovak/errmsg.txt +++ b/sql/share/slovak/errmsg.txt @@ -360,7 +360,7 @@ character-set=latin2 "'%-.64s.%-.64s' is not %s" "Column '%-.64s' is not updatable" "View's SELECT contains a subquery in the FROM clause" -"View's SELECT contains a PROCEDURE clause" +"View's SELECT contains a '%s' clause" "View's SELECT contains a variable or parameter" "View's SELECT contains a temporary table '%-.64s'" "View's SELECT and view's field list have different column counts" diff --git a/sql/share/spanish/errmsg.txt b/sql/share/spanish/errmsg.txt index dc15f8b8d5e..7ab9b416c2e 100644 --- a/sql/share/spanish/errmsg.txt +++ b/sql/share/spanish/errmsg.txt @@ -354,7 +354,7 @@ character-set=latin1 "'%-.64s.%-.64s' is not %s" "Column '%-.64s' is not updatable" "View's SELECT contains a subquery in the FROM clause" -"View's SELECT contains a PROCEDURE clause" +"View's SELECT contains a '%s' clause" "View's SELECT contains a variable or parameter" "View's SELECT contains a temporary table '%-.64s'" "View's SELECT and view's field list have different column counts" diff --git a/sql/share/swedish/errmsg.txt b/sql/share/swedish/errmsg.txt index ee5436c3b80..b7add017e44 100644 --- a/sql/share/swedish/errmsg.txt +++ b/sql/share/swedish/errmsg.txt @@ -352,7 +352,7 @@ character-set=latin1 "'%-.64s.%-.64s' is not %s" "Column '%-.64s' is not updatable" "View's SELECT contains a subquery in the FROM clause" -"View's SELECT contains a PROCEDURE clause" +"View's SELECT contains a '%s' clause" "View's SELECT contains a variable or parameter" "View's SELECT contains a temporary table '%-.64s'" "View's SELECT and view's field list have different column counts" diff --git a/sql/share/ukrainian/errmsg.txt b/sql/share/ukrainian/errmsg.txt index cb1d99e2fec..364a2a03c16 100644 --- a/sql/share/ukrainian/errmsg.txt +++ b/sql/share/ukrainian/errmsg.txt @@ -357,7 +357,7 @@ character-set=koi8u "'%-.64s.%-.64s' не ╓ %s" "Стовбець '%-.64s' не може бути зминений" "View SELECT ма╓ п╕дзапит у конструкц╕╖ FROM" -"View SELECT ма╓ конструкц╕ю PROCEDURE" +"View SELECT ма╓ конструкц╕ю '%s'" "View SELECT ма╓ зминну або параметер" "View SELECT використову╓ тимчасову таблицю '%-.64s'" "View SELECT ╕ перел╕к стовбц╕в view мають р╕зну к╕льк╕сть сковбц╕в" diff --git a/sql/sql_view.cc b/sql/sql_view.cc index c27ca9e1c09..ebddc685594 100644 --- a/sql/sql_view.cc +++ b/sql/sql_view.cc @@ -59,12 +59,21 @@ int mysql_create_view(THD *thd, int res= 0; DBUG_ENTER("mysql_create_view"); - if (lex->derived_tables || lex->proc_list.first || + if (lex->proc_list.first || + lex->result) + { + my_error(ER_VIEW_SELECT_CLAUSE, MYF(0), (lex->result ? + "INTO" : + "PROCEDURE")); + res= -1; + goto err; + } + if (lex->derived_tables || lex->variables_used || lex->param_list.elements) { - my_error((lex->derived_tables ? ER_VIEW_SELECT_DERIVED : - (lex->proc_list.first ? ER_VIEW_SELECT_PROCEDURE : - ER_VIEW_SELECT_VARIABLE)), MYF(0)); + my_error((lex->derived_tables ? + ER_VIEW_SELECT_DERIVED : + ER_VIEW_SELECT_VARIABLE), MYF(0)); res= -1; goto err; } |