From 1faac904f506bdee533dfa595f1ac296802e12bb Mon Sep 17 00:00:00 2001 From: "gluh@eagle.intranet.mysql.r18.ru" <> Date: Thu, 1 Dec 2005 11:00:33 +0400 Subject: [PATCH] Fix for bug#14476 `information_schema`.`TABLES`.`TABLE_TYPE` with empty value store TABLES.TABLE_TYPE in case of error during table opening --- mysql-test/r/information_schema.result | 8 ++++++++ mysql-test/t/information_schema.test | 10 ++++++++++ sql/sql_show.cc | 6 ++++++ 3 files changed, 24 insertions(+) diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result index 079a1af1184..6224b30b70e 100644 --- a/mysql-test/r/information_schema.result +++ b/mysql-test/r/information_schema.result @@ -1048,3 +1048,11 @@ blob 65535 65535 text 65535 65535 text 65535 32767 drop table t1; +create table t1 (f1 int(11)); +create view v1 as select * from t1; +drop table t1; +select table_type from information_schema.tables +where table_name="v1"; +table_type +VIEW +drop view v1; diff --git a/mysql-test/t/information_schema.test b/mysql-test/t/information_schema.test index 1cd55926e80..acbc62f1364 100644 --- a/mysql-test/t/information_schema.test +++ b/mysql-test/t/information_schema.test @@ -738,3 +738,13 @@ create table t1(a blob, b text charset utf8, c text charset ucs2); select data_type, character_octet_length, character_maximum_length from information_schema.columns where table_name='t1'; drop table t1; + +# +# Bug#14476 `information_schema`.`TABLES`.`TABLE_TYPE` with empty value +# +create table t1 (f1 int(11)); +create view v1 as select * from t1; +drop table t1; +select table_type from information_schema.tables +where table_name="v1"; +drop view v1; diff --git a/sql/sql_show.cc b/sql/sql_show.cc index cb537a43053..82870d46e6c 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -2315,6 +2315,12 @@ static int get_schema_tables_record(THD *thd, struct st_table_list *tables, there was errors during opening tables */ const char *error= thd->net.last_error; + if (tables->view) + table->field[3]->store(STRING_WITH_LEN("VIEW"), cs); + else if (tables->schema_table) + table->field[3]->store(STRING_WITH_LEN("SYSTEM VIEW"), cs); + else + table->field[3]->store(STRING_WITH_LEN("BASE TABLE"), cs); table->field[20]->store(error, strlen(error), cs); thd->clear_error(); }