Commit ca23eef3 authored by unknown's avatar unknown
Browse files

Merge sunlight.local:/home/evgen/bk-trees/mysql-5.0

into  sunlight.local:/local_work/leak_fix


sql/sql_view.cc:
  Auto merged
parents 65866b7b c34baab9
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -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, &not_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;
}