1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-05 13:16:09 +03:00

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.
This commit is contained in:
timour@mysql.com
2005-09-12 17:01:17 +03:00
parent a645d10cf2
commit 9d862db743
3 changed files with 21 additions and 5 deletions

View File

@@ -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
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;

View File

@@ -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;
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;

View File

@@ -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)
{ {