Commit 9d862db7 authored by timour@mysql.com's avatar timour@mysql.com

Fix for BUG#6808.

The problem was in that add_table_to_list was testing for duplicate tables
in a list of tables that included the created view.
parent a645d10c
...@@ -1146,11 +1146,11 @@ create view v2 as select * from v1; ...@@ -1146,11 +1146,11 @@ create view v2 as select * from v1;
alter view v1 as select * from v2; alter view v1 as select * from v2;
ERROR 42S02: Table 'test.v1' doesn't exist ERROR 42S02: Table 'test.v1' doesn't exist
alter view v1 as select * from v1; 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; create or replace view v1 as select * from v2;
ERROR 42S02: Table 'test.v1' doesn't exist ERROR 42S02: Table 'test.v1' doesn't exist
create or replace view v1 as select * from v1; 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 view v2,v1;
drop table t1; drop table t1;
create table t1 (a int); create table t1 (a int);
...@@ -2186,3 +2186,7 @@ r_object_id users_names ...@@ -2186,3 +2186,7 @@ r_object_id users_names
120001a080000542 guser02 120001a080000542 guser02
drop view v1, v2; drop view v1, v2;
drop table t1, t2; drop table t1, t2;
create table t1 (s1 int);
create view abc as select * from t1 as abc;
drop table t1;
drop view abc;
...@@ -1083,11 +1083,11 @@ create view v1 as select * from t1; ...@@ -1083,11 +1083,11 @@ create view v1 as select * from t1;
create view v2 as select * from v1; create view v2 as select * from v1;
-- error 1146 -- error 1146
alter view v1 as select * from v2; alter view v1 as select * from v2;
-- error 1066 -- error 1146
alter view v1 as select * from v1; alter view v1 as select * from v1;
-- error 1146 -- error 1146
create or replace view v1 as select * from v2; create or replace view v1 as select * from v2;
-- error 1066 -- error 1146
create or replace view v1 as select * from v1; create or replace view v1 as select * from v1;
drop view v2,v1; drop view v2,v1;
drop table t1; drop table t1;
...@@ -2059,3 +2059,12 @@ order by users_names; ...@@ -2059,3 +2059,12 @@ order by users_names;
drop view v1, v2; drop view v1, v2;
drop table t1, t2; 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;
...@@ -6059,7 +6059,10 @@ TABLE_LIST *st_select_lex::add_table_to_list(THD *thd, ...@@ -6059,7 +6059,10 @@ TABLE_LIST *st_select_lex::add_table_to_list(THD *thd,
/* check that used name is unique */ /* check that used name is unique */
if (lock_type != TL_IGNORE) 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=tables->next_local) tables=tables->next_local)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment