Loading mysql-test/r/information_schema.result +5 −2 Original line number Diff line number Diff line Loading @@ -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; Loading mysql-test/t/information_schema.test +1 −1 Original line number Diff line number Diff line Loading @@ -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; Loading sql/sql_parse.cc +1 −0 Original line number Diff line number Diff line Loading @@ -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; Loading sql/sql_show.cc +13 −4 Original line number Diff line number Diff line Loading @@ -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); } Loading Loading @@ -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); } Loading Loading @@ -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; Loading Loading
mysql-test/r/information_schema.result +5 −2 Original line number Diff line number Diff line Loading @@ -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; Loading
mysql-test/t/information_schema.test +1 −1 Original line number Diff line number Diff line Loading @@ -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; Loading
sql/sql_parse.cc +1 −0 Original line number Diff line number Diff line Loading @@ -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; Loading
sql/sql_show.cc +13 −4 Original line number Diff line number Diff line Loading @@ -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); } Loading Loading @@ -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); } Loading Loading @@ -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; Loading