summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgluh@mysql.com <>2005-05-10 18:34:04 +0000
committergluh@mysql.com <>2005-05-10 18:34:04 +0000
commit75b7fef44f4644159c49fc244c695df268a18c28 (patch)
tree86a9f1c500003b9ce300a5626230f0b499623bcf
parent5dee7cfc705e7e55da2684dde01d04a20722039d (diff)
downloadmariadb-git-75b7fef44f4644159c49fc244c695df268a18c28.tar.gz
Bug#10018: use INFORMATION_SCHEMA works, but show tables in it returns error
additional fix after review
-rw-r--r--sql/sql_show.cc19
1 files 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<char> *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<char> *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<char> *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;