diff options
author | evgen@moonbone.local <> | 2007-04-21 00:33:56 +0400 |
---|---|---|
committer | evgen@moonbone.local <> | 2007-04-21 00:33:56 +0400 |
commit | 4434ff13a9b20b630f583589a4daa3dcb13f5aba (patch) | |
tree | 749783226569f93fbed5d272f9f7ced5a5859dfd /sql/sql_show.cc | |
parent | bfac9ea67e0812d998a98cbfeae8345376a22511 (diff) | |
parent | 6c5d17ef56b43b8423a787e368fe0ce1b43bb792 (diff) | |
download | mariadb-git-4434ff13a9b20b630f583589a4daa3dcb13f5aba.tar.gz |
Merge moonbone.local:/mnt/gentoo64/work/bk-trees/mysql-5.0-opt
into moonbone.local:/mnt/gentoo64/work/bk-trees/mysql-5.1-opt
Diffstat (limited to 'sql/sql_show.cc')
-rw-r--r-- | sql/sql_show.cc | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 0d620d33dbb..f1fd246d28d 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -2733,18 +2733,32 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond) res= open_normal_and_derived_tables(thd, show_table_list, MYSQL_LOCK_IGNORE_FLUSH); lex->sql_command= save_sql_command; - /* - We should use show_table_list->alias instead of - show_table_list->table_name because table_name - could be changed during opening of I_S tables. It's safe - to use alias because alias contains original table name - in this case. + /* + They can drop table after table names list creation and + before table opening. We open non existing table and + get ER_NO_SUCH_TABLE error. In this case we do not store + the record into I_S table and clear error. */ - res= schema_table->process_table(thd, show_table_list, table, - res, orig_base_name, - show_table_list->alias); - close_tables_for_reopen(thd, &show_table_list); - DBUG_ASSERT(!lex->query_tables_own_last); + if (thd->net.last_errno == ER_NO_SUCH_TABLE) + { + res= 0; + thd->clear_error(); + } + else + { + /* + We should use show_table_list->alias instead of + show_table_list->table_name because table_name + could be changed during opening of I_S tables. It's safe + to use alias because alias contains original table name + in this case. + */ + res= schema_table->process_table(thd, show_table_list, table, + res, orig_base_name, + show_table_list->alias); + close_tables_for_reopen(thd, &show_table_list); + DBUG_ASSERT(!lex->query_tables_own_last); + } if (res) goto err; } |