From ac14d40ddeb0e582a24e9c7697c219552fc5b988 Mon Sep 17 00:00:00 2001 From: "gluh@gluh.mysql.r18.ru" <> Date: Thu, 27 Jan 2005 13:16:51 +0300 Subject: [PATCH] A fix: information_schema test fails on Mac OSX --- mysql-test/r/information_schema.result | 7 +++++-- mysql-test/t/information_schema.test | 2 +- sql/sql_parse.cc | 1 + sql/sql_show.cc | 17 +++++++++++++---- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result index 9bf4ee28b3b..eed3132c195 100644 --- a/mysql-test/r/information_schema.result +++ b/mysql-test/r/information_schema.result @@ -571,8 +571,11 @@ where table_schema='information_schema' limit 2; TABLE_NAME TABLE_TYPE ENGINE SCHEMATA TEMPORARY MyISAM TABLES TEMPORARY MyISAM -show tables from information_schema like "t%"; -Tables_in_information_schema (t%) +show tables from information_schema like "T%"; +Tables_in_information_schema (T%) +TABLES +TABLE_PRIVILEGES +TABLE_CONSTRAINTS create database information_schema; ERROR HY000: Can't create database 'information_schema'; database exists use information_schema; diff --git a/mysql-test/t/information_schema.test b/mysql-test/t/information_schema.test index a4886fd8245..177867f5205 100644 --- a/mysql-test/t/information_schema.test +++ b/mysql-test/t/information_schema.test @@ -281,7 +281,7 @@ drop view vo; select TABLE_NAME,TABLE_TYPE,ENGINE from information_schema.tables where table_schema='information_schema' limit 2; -show tables from information_schema like "t%"; +show tables from information_schema like "T%"; --error 1007 create database information_schema; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index c0bcaf771a5..7205baae59e 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -5339,6 +5339,7 @@ TABLE_LIST *st_select_lex::add_table_to_list(THD *thd, ptr->table_name, information_schema_name.str); DBUG_RETURN(0); } + ptr->schema_table_name= ptr->table_name; ptr->schema_table= schema_table; } ptr->select_lex= lex->current_select; diff --git a/sql/sql_show.cc b/sql/sql_show.cc index b909e9cec1b..defa99f3a36 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -1802,7 +1802,7 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond) res= open_and_lock_tables(thd, show_table_list); if (schema_table->process_table(thd, show_table_list, table, res, show_table_list->db, - show_table_list->table_name)) + show_table_list->alias)) { DBUG_RETURN(1); } @@ -1911,7 +1911,8 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond) show_table_list->lock_type= lock_type; res= open_and_lock_tables(thd, show_table_list); if (schema_table->process_table(thd, show_table_list, table, - res, base_name, file_name)) + res, base_name, + show_table_list->alias)) { DBUG_RETURN(1); } @@ -3183,8 +3184,16 @@ int mysql_schema_table(THD *thd, LEX *lex, TABLE_LIST *table_list) } table->s->tmp_table= TMP_TABLE; table->grant.privilege= SELECT_ACL; - table->alias_name_used= 0; - table_list->schema_table_name= table_list->table_name; + /* + This test is necessary to make + case insensitive file systems + + upper case table names(information schema tables) + + views + working correctly + */ + table->alias_name_used= my_strcasecmp(table_alias_charset, + table_list->schema_table_name, + table_list->alias); table_list->table_name= (char*) table->s->table_name; table_list->table= table; table->next= thd->derived_tables;