From 75b7fef44f4644159c49fc244c695df268a18c28 Mon Sep 17 00:00:00 2001 From: "gluh@mysql.com" <> Date: Tue, 10 May 2005 18:34:04 +0000 Subject: [PATCH] Bug#10018: use INFORMATION_SCHEMA works, but show tables in it returns error additional fix after review --- sql/sql_show.cc | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/sql/sql_show.cc b/sql/sql_show.cc index fe3a2590817..c35687d84a6 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -1805,6 +1805,11 @@ int make_db_list(THD *thd, List *files, get_index_field_values(lex, idx_field_vals); if (is_wild_value) { + /* + This part of code is only for SHOW DATABASES command. + idx_field_vals->db_value can be 0 when we don't use + LIKE clause (see also get_index_field_values() function) + */ if (!idx_field_vals->db_value || !wild_case_compare(system_charset_info, information_schema_name.str, @@ -1818,11 +1823,15 @@ int make_db_list(THD *thd, List *files, idx_field_vals->db_value, 1); } + /* + This part of code is for SHOW TABLES, SHOW TABLE STATUS commands. + idx_field_vals->db_value can't be 0 (see get_index_field_values() + function). lex->orig_sql_command can be not equal to SQLCOM_END + only in case of executing of SHOW commands. + */ if (lex->orig_sql_command != SQLCOM_END) { - if (!idx_field_vals->db_value || - !my_strcasecmp(system_charset_info, - information_schema_name.str, + if (!my_strcasecmp(system_charset_info, information_schema_name.str, idx_field_vals->db_value)) { *with_i_schema= 1; @@ -1831,6 +1840,10 @@ int make_db_list(THD *thd, List *files, return files->push_back(thd->strdup(idx_field_vals->db_value)); } + /* + Create list of existing databases. It is used in case + of select from information schema table + */ if (files->push_back(thd->strdup(information_schema_name.str))) return 1; *with_i_schema= 1;