Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0
into sunlight.local:/local_work/leak_fix sql/sql_view.cc: Auto merged
This commit is contained in:
commit
c57b6620c5
@ -179,15 +179,23 @@ static bool
|
||||
fill_defined_view_parts (THD *thd, TABLE_LIST *view)
|
||||
{
|
||||
LEX *lex= thd->lex;
|
||||
bool not_used;
|
||||
bool free_view= 1;
|
||||
TABLE_LIST decoy;
|
||||
|
||||
if (view->view)
|
||||
free_view= 0;
|
||||
memcpy (&decoy, view, sizeof (TABLE_LIST));
|
||||
if (!open_table(thd, &decoy, thd->mem_root, ¬_used, 0) &&
|
||||
!decoy.view)
|
||||
if ((decoy.table= open_table(thd, &decoy, thd->mem_root, NULL, 0)))
|
||||
{
|
||||
/* It's a table */
|
||||
my_free((gptr)decoy.table, MYF(0));
|
||||
my_error(ER_WRONG_OBJECT, MYF(0), view->db, view->table_name, "VIEW");
|
||||
return TRUE;
|
||||
}
|
||||
if (!decoy.view)
|
||||
/* An error while opening the view occurs, caller will handle it */
|
||||
return FALSE;
|
||||
|
||||
if (!lex->definer)
|
||||
{
|
||||
view->definer.host= decoy.definer.host;
|
||||
@ -199,6 +207,8 @@ fill_defined_view_parts (THD *thd, TABLE_LIST *view)
|
||||
if (lex->create_view_suid == VIEW_SUID_DEFAULT)
|
||||
lex->create_view_suid= decoy.view_suid ?
|
||||
VIEW_SUID_DEFINER : VIEW_SUID_INVOKER;
|
||||
if (free_view)
|
||||
delete decoy.view;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user