Commit fb760acf authored by unknown's avatar unknown
Browse files

Fix for bug#8998: information_schema: Table SCHEMATA should report default collations

   DEFAULT_COLLTION_NAME field is added to SCHEMATA table


mysql-test/r/information_schema.result:
  Fix for bug#8998: information_schema: Table SCHEMATA should report default collations
sql/sql_show.cc:
  Fix for bug#8998: information_schema: Table SCHEMATA should report default collations
parent 0430cdb7
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -4,9 +4,9 @@ skip_show_database OFF
grant select, update, execute on test.* to mysqltest_2@localhost;
grant select, update on test.* to mysqltest_1@localhost;
select * from information_schema.SCHEMATA where schema_name > 'm';
CATALOG_NAME	SCHEMA_NAME	DEFAULT_CHARACTER_SET_NAME	SQL_PATH
NULL	mysql	latin1	NULL
NULL	test	latin1	NULL
CATALOG_NAME	SCHEMA_NAME	DEFAULT_CHARACTER_SET_NAME	DEFAULT_COLLATION_NAME	SQL_PATH
NULL	mysql	latin1	latin1_swedish_ci	NULL
NULL	test	latin1	latin1_swedish_ci	NULL
select schema_name from information_schema.schemata;
schema_name
information_schema
+6 −4
Original line number Diff line number Diff line
@@ -2000,11 +2000,12 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)


bool store_schema_shemata(THD* thd, TABLE *table, const char *db_name,
                          const char* cs_name)
                          CHARSET_INFO *cs)
{
  restore_record(table, s->default_values);
  table->field[1]->store(db_name, strlen(db_name), system_charset_info);
  table->field[2]->store(cs_name, strlen(cs_name), system_charset_info);
  table->field[2]->store(cs->csname, strlen(cs->csname), system_charset_info);
  table->field[3]->store(cs->name, strlen(cs->name), system_charset_info);
  return schema_table_store_record(thd, table);
}

@@ -2035,7 +2036,7 @@ int fill_schema_shemata(THD *thd, TABLE_LIST *tables, COND *cond)
    if (with_i_schema)       // information schema name is always first in list
    {
      if (store_schema_shemata(thd, table, file_name,
                               system_charset_info->csname))
                               system_charset_info))
        DBUG_RETURN(1);
      with_i_schema= 0;
      continue;
@@ -2060,7 +2061,7 @@ int fill_schema_shemata(THD *thd, TABLE_LIST *tables, COND *cond)
      strmov(path+length, MY_DB_OPT_FILE);
      load_db_opt(thd, path, &create);
      if (store_schema_shemata(thd, table, file_name, 
                               create.default_table_charset->csname))
                               create.default_table_charset))
        DBUG_RETURN(1);
    }
  }
@@ -3482,6 +3483,7 @@ ST_FIELD_INFO schema_fields_info[]=
  {"CATALOG_NAME", FN_REFLEN, MYSQL_TYPE_STRING, 0, 1, 0},
  {"SCHEMA_NAME", NAME_LEN, MYSQL_TYPE_STRING, 0, 0, "Database"},
  {"DEFAULT_CHARACTER_SET_NAME", 64, MYSQL_TYPE_STRING, 0, 0, 0},
  {"DEFAULT_COLLATION_NAME", 64, MYSQL_TYPE_STRING, 0, 0, 0},
  {"SQL_PATH", FN_REFLEN, MYSQL_TYPE_STRING, 0, 1, 0},
  {0, 0, MYSQL_TYPE_STRING, 0, 0, 0}
};