summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/mysqld_error.h4
-rw-r--r--mysql-test/r/view.result8
-rw-r--r--mysql-test/t/view.test12
-rw-r--r--sql/share/czech/errmsg.txt2
-rw-r--r--sql/share/danish/errmsg.txt4
-rw-r--r--sql/share/dutch/errmsg.txt2
-rw-r--r--sql/share/english/errmsg.txt2
-rw-r--r--sql/share/estonian/errmsg.txt2
-rw-r--r--sql/share/french/errmsg.txt2
-rw-r--r--sql/share/german/errmsg.txt2
-rw-r--r--sql/share/greek/errmsg.txt2
-rw-r--r--sql/share/hungarian/errmsg.txt2
-rw-r--r--sql/share/italian/errmsg.txt2
-rw-r--r--sql/share/japanese/errmsg.txt2
-rw-r--r--sql/share/korean/errmsg.txt2
-rw-r--r--sql/share/norwegian-ny/errmsg.txt2
-rw-r--r--sql/share/norwegian/errmsg.txt2
-rw-r--r--sql/share/polish/errmsg.txt2
-rw-r--r--sql/share/portuguese/errmsg.txt2
-rw-r--r--sql/share/romanian/errmsg.txt2
-rw-r--r--sql/share/russian/errmsg.txt2
-rw-r--r--sql/share/serbian/errmsg.txt2
-rw-r--r--sql/share/slovak/errmsg.txt2
-rw-r--r--sql/share/spanish/errmsg.txt2
-rw-r--r--sql/share/swedish/errmsg.txt2
-rw-r--r--sql/share/ukrainian/errmsg.txt2
-rw-r--r--sql/sql_view.cc17
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;
}