Loading mysql-test/r/view.result +8 −0 Original line number Diff line number Diff line Loading @@ -2097,6 +2097,14 @@ select * from v1; f1 1 drop view v1; create table t1(a int); create procedure p1() create view v1 as select * from t1; drop table t1; call p1(); ERROR 42S02: Table 'test.t1' doesn't exist call p1(); ERROR 42S02: Table 'test.t1' doesn't exist drop procedure p1; create table t1 (f1 int); create table t2 (f1 int); insert into t1 values (1); Loading mysql-test/t/view.test +12 −0 Original line number Diff line number Diff line Loading @@ -1943,6 +1943,18 @@ create view v1 as select timestampdiff(day,'1997-01-01 00:00:00','1997-01-02 00: select * from v1; drop view v1; # # repeatable CREATE VIEW statement BUG#12468 # create table t1(a int); create procedure p1() create view v1 as select * from t1; drop table t1; -- error 1146 call p1(); -- error 1146 call p1(); drop procedure p1; # # Bug #10624 Views with multiple UNION and UNION ALL produce incorrect results # Loading sql/sql_view.cc +16 −5 Original line number Diff line number Diff line Loading @@ -230,7 +230,10 @@ bool mysql_create_view(THD *thd, (check_access(thd, DROP_ACL, view->db, &view->grant.privilege, 0, 0) || grant_option && check_grant(thd, DROP_ACL, view, 0, 1, 0)))) DBUG_RETURN(TRUE); { res= TRUE; goto err; } for (sl= select_lex; sl; sl= sl->next_select()) { for (tbl= sl->get_table_list(); tbl; tbl= tbl->next_local) Loading @@ -243,7 +246,8 @@ bool mysql_create_view(THD *thd, { my_error(ER_TABLEACCESS_DENIED_ERROR, MYF(0), "ANY", thd->priv_user, thd->host_or_ip, tbl->table_name); DBUG_RETURN(TRUE); res= TRUE; goto err; } /* Mark this table as a table which will be checked after the prepare Loading Loading @@ -302,7 +306,10 @@ bool mysql_create_view(THD *thd, #endif if (open_and_lock_tables(thd, tables)) DBUG_RETURN(TRUE); { res= TRUE; goto err; } /* check that tables are not temporary and this VIEW do not used in query Loading Loading @@ -372,7 +379,10 @@ bool mysql_create_view(THD *thd, } if (check_duplicate_names(select_lex->item_list, 1)) DBUG_RETURN(TRUE); { res= TRUE; goto err; } #ifndef NO_EMBEDDED_ACCESS_CHECKS /* Loading Loading @@ -402,7 +412,8 @@ bool mysql_create_view(THD *thd, my_error(ER_COLUMNACCESS_DENIED_ERROR, MYF(0), "create view", thd->priv_user, thd->host_or_ip, item->name, view->table_name); DBUG_RETURN(TRUE); res= TRUE; goto err; } } } Loading Loading
mysql-test/r/view.result +8 −0 Original line number Diff line number Diff line Loading @@ -2097,6 +2097,14 @@ select * from v1; f1 1 drop view v1; create table t1(a int); create procedure p1() create view v1 as select * from t1; drop table t1; call p1(); ERROR 42S02: Table 'test.t1' doesn't exist call p1(); ERROR 42S02: Table 'test.t1' doesn't exist drop procedure p1; create table t1 (f1 int); create table t2 (f1 int); insert into t1 values (1); Loading
mysql-test/t/view.test +12 −0 Original line number Diff line number Diff line Loading @@ -1943,6 +1943,18 @@ create view v1 as select timestampdiff(day,'1997-01-01 00:00:00','1997-01-02 00: select * from v1; drop view v1; # # repeatable CREATE VIEW statement BUG#12468 # create table t1(a int); create procedure p1() create view v1 as select * from t1; drop table t1; -- error 1146 call p1(); -- error 1146 call p1(); drop procedure p1; # # Bug #10624 Views with multiple UNION and UNION ALL produce incorrect results # Loading
sql/sql_view.cc +16 −5 Original line number Diff line number Diff line Loading @@ -230,7 +230,10 @@ bool mysql_create_view(THD *thd, (check_access(thd, DROP_ACL, view->db, &view->grant.privilege, 0, 0) || grant_option && check_grant(thd, DROP_ACL, view, 0, 1, 0)))) DBUG_RETURN(TRUE); { res= TRUE; goto err; } for (sl= select_lex; sl; sl= sl->next_select()) { for (tbl= sl->get_table_list(); tbl; tbl= tbl->next_local) Loading @@ -243,7 +246,8 @@ bool mysql_create_view(THD *thd, { my_error(ER_TABLEACCESS_DENIED_ERROR, MYF(0), "ANY", thd->priv_user, thd->host_or_ip, tbl->table_name); DBUG_RETURN(TRUE); res= TRUE; goto err; } /* Mark this table as a table which will be checked after the prepare Loading Loading @@ -302,7 +306,10 @@ bool mysql_create_view(THD *thd, #endif if (open_and_lock_tables(thd, tables)) DBUG_RETURN(TRUE); { res= TRUE; goto err; } /* check that tables are not temporary and this VIEW do not used in query Loading Loading @@ -372,7 +379,10 @@ bool mysql_create_view(THD *thd, } if (check_duplicate_names(select_lex->item_list, 1)) DBUG_RETURN(TRUE); { res= TRUE; goto err; } #ifndef NO_EMBEDDED_ACCESS_CHECKS /* Loading Loading @@ -402,7 +412,8 @@ bool mysql_create_view(THD *thd, my_error(ER_COLUMNACCESS_DENIED_ERROR, MYF(0), "create view", thd->priv_user, thd->host_or_ip, item->name, view->table_name); DBUG_RETURN(TRUE); res= TRUE; goto err; } } } Loading