diff --git a/mysql-test/r/view.result b/mysql-test/r/view.result index 558977a6d2d..5ac6759f1a3 100644 --- a/mysql-test/r/view.result +++ b/mysql-test/r/view.result @@ -1146,11 +1146,11 @@ create view v2 as select * from v1; alter view v1 as select * from v2; ERROR 42S02: Table 'test.v1' doesn't exist alter view v1 as select * from v1; -ERROR 42000: Not unique table/alias: 'v1' +ERROR 42S02: Table 'test.v1' doesn't exist create or replace view v1 as select * from v2; ERROR 42S02: Table 'test.v1' doesn't exist create or replace view v1 as select * from v1; -ERROR 42000: Not unique table/alias: 'v1' +ERROR 42S02: Table 'test.v1' doesn't exist drop view v2,v1; drop table t1; create table t1 (a int); @@ -2186,3 +2186,7 @@ r_object_id users_names 120001a080000542 guser02 drop view v1, v2; drop table t1, t2; +create table t1 (s1 int); +create view abc as select * from t1 as abc; +drop table t1; +drop view abc; diff --git a/mysql-test/t/view.test b/mysql-test/t/view.test index 7cca98391a8..33b77d80020 100644 --- a/mysql-test/t/view.test +++ b/mysql-test/t/view.test @@ -1083,11 +1083,11 @@ create view v1 as select * from t1; create view v2 as select * from v1; -- error 1146 alter view v1 as select * from v2; --- error 1066 +-- error 1146 alter view v1 as select * from v1; -- error 1146 create or replace view v1 as select * from v2; --- error 1066 +-- error 1146 create or replace view v1 as select * from v1; drop view v2,v1; drop table t1; @@ -2059,3 +2059,12 @@ order by users_names; drop view v1, v2; drop table t1, t2; + +# +# Bug #6808 - Views: CREATE VIEW v ... FROM t AS v fails +# + +create table t1 (s1 int); +create view abc as select * from t1 as abc; +drop table t1; +drop view abc; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 5d0070667c2..c421c4a91a7 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -6059,7 +6059,10 @@ TABLE_LIST *st_select_lex::add_table_to_list(THD *thd, /* check that used name is unique */ if (lock_type != TL_IGNORE) { - for (TABLE_LIST *tables=(TABLE_LIST*) table_list.first ; + TABLE_LIST *first_table= (TABLE_LIST*) table_list.first; + if (lex->sql_command == SQLCOM_CREATE_VIEW) + first_table= first_table ? first_table->next_local : NULL; + for (TABLE_LIST *tables= first_table ; tables ; tables=tables->next_local) {