diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result index 404a20d5e9e..679eb96e4ed 100644 --- a/mysql-test/r/information_schema.result +++ b/mysql-test/r/information_schema.result @@ -971,3 +971,11 @@ Field Type Null Key Default Extra a int(11) NO b int(11) YES NULL drop table t1; +CREATE TABLE t1 (a int); +CREATE TABLE t2 (b int); +SHOW TABLE STATUS FROM test +WHERE name IN ( SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES +WHERE TABLE_SCHEMA='test' AND TABLE_TYPE='BASE TABLE'); +Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment +t1 MyISAM 10 Fixed 0 0 0 # 1024 0 NULL # # NULL latin1_swedish_ci NULL +t2 MyISAM 10 Fixed 0 0 0 # 1024 0 NULL # # NULL latin1_swedish_ci NULL diff --git a/mysql-test/t/information_schema.test b/mysql-test/t/information_schema.test index 04d53828035..d6a47b88ac0 100644 --- a/mysql-test/t/information_schema.test +++ b/mysql-test/t/information_schema.test @@ -651,3 +651,18 @@ select column_name, column_default from columns use test; show columns from t1; drop table t1; + +# +# Bug #12636: SHOW TABLE STATUS with where condition containing a subquery +# over information schema +# + +CREATE TABLE t1 (a int); +CREATE TABLE t2 (b int); + +--replace_column 8 # 12 # 13 # +SHOW TABLE STATUS FROM test + WHERE name IN ( SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES + WHERE TABLE_SCHEMA='test' AND TABLE_TYPE='BASE TABLE'); + +DROP TABLE t1,t2 diff --git a/sql/sql_show.cc b/sql/sql_show.cc index d1a968d2376..d2c56f98819 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -1705,7 +1705,7 @@ void get_index_field_values(LEX *lex, INDEX_FIELD_VALUES *index_field_values) case SQLCOM_SHOW_TABLES: case SQLCOM_SHOW_TABLE_STATUS: case SQLCOM_SHOW_TRIGGERS: - index_field_values->db_value= lex->current_select->db; + index_field_values->db_value= lex->select_lex.db; index_field_values->table_value= wild; break; default: