diff --git a/sql/sql_derived.cc b/sql/sql_derived.cc index 3137890f2ba37b827092b6b2f6fc165def49476f..5c827741e6d021698fe0e06aeea20bc87a30e964 100644 --- a/sql/sql_derived.cc +++ b/sql/sql_derived.cc @@ -220,10 +220,12 @@ static int mysql_derived(THD *thd, LEX *lex, SELECT_LEX_UNIT *unit, table->next= thd->derived_tables; thd->derived_tables= table; } + } + else + free_tmp_table(thd, table); exit: - delete derived_result; - lex->current_select= save_current_select; - } + delete derived_result; + lex->current_select= save_current_select; DBUG_RETURN(res); } diff --git a/sql/sql_view.cc b/sql/sql_view.cc index 67c7c39e2238909a0c24fc445234dc1d4dfa44b7..2b1971907b323533e0b5659a3274b57e80b6173f 100644 --- a/sql/sql_view.cc +++ b/sql/sql_view.cc @@ -339,8 +339,6 @@ static File_option view_parameters[]= FILE_OPTIONS_STRING} }; -static const uint required_view_parameters= 6; - static LEX_STRING view_file_type[]= {{(char*)"VIEW", 4}}; @@ -604,8 +602,6 @@ mysql_make_view(File_parser *parser, TABLE_LIST *table) { /* move SP to main LEX */ sp_merge_funs(old_lex, lex); - if (lex->spfuns.array.buffer) - hash_free(&lex->spfuns); if (old_lex->proc_table == 0 && (old_lex->proc_table= (TABLE_LIST*)thd->calloc(sizeof(TABLE_LIST))) != 0) @@ -619,6 +615,8 @@ mysql_make_view(File_parser *parser, TABLE_LIST *table) include_proc_table= 1; } } + if (lex->spfuns.array.buffer) + hash_free(&lex->spfuns); old_next= table->next_global; if ((table->next_global= lex->query_tables))