1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-10 04:22:00 +03:00

ctype_recoding.result, ctype_recoding.test, sql_show.cc:

Bug#4417: SHOW CREATE TABLE and SHOW COLUMNS now return consistent results when "SET NAMES BINARY", i.e. everything is sent in UTF8: column names, enum values, default values.


sql/sql_show.cc:
  Bug#4417: SHOW CREATE TABLE and SHOW COLUMNS now return consistent results when "SET NAMES BINARY", i.e. everything is sent in UTF8: column names, enum values, default values.
mysql-test/t/ctype_recoding.test:
  Bug#4417: SHOW CREATE TABLE and SHOW COLUMNS now return consistent results when "SET NAMES BINARY", i.e. everything is sent in UTF8: column names, enum values, default values.
mysql-test/r/ctype_recoding.result:
  Bug#4417: SHOW CREATE TABLE and SHOW COLUMNS now return consistent results when "SET NAMES BINARY", i.e. everything is sent in UTF8: column names, enum values, default values.
This commit is contained in:
unknown
2004-08-11 14:03:24 +05:00
parent 8746d743a5
commit cffa34d9fb
3 changed files with 55 additions and 1 deletions

View File

@ -651,6 +651,7 @@ mysqld_show_fields(THD *thd, TABLE_LIST *table_list,const char *wild,
TABLE *table;
handler *file;
char tmp[MAX_FIELD_WIDTH];
char tmp1[MAX_FIELD_WIDTH];
Item *item;
Protocol *protocol= thd->protocol;
DBUG_ENTER("mysqld_show_fields");
@ -735,9 +736,24 @@ mysqld_show_fields(THD *thd, TABLE_LIST *table_list,const char *wild,
else if (field->unireg_check != Field::NEXT_NUMBER &&
!field->is_null())
{ // Not null by default
/*
Note: we have to convert the default value into
system_charset_info before sending.
This is necessary for "SET NAMES binary":
If the client character set is binary, we want to
send metadata in UTF8 rather than in the column's
character set.
This conversion also makes "SHOW COLUMNS" and
"SHOW CREATE TABLE" output consistent. Without
this conversion the default values were displayed
differently.
*/
String def(tmp1,sizeof(tmp1), system_charset_info);
type.set(tmp, sizeof(tmp), field->charset());
field->val_str(&type);
protocol->store(type.ptr(),type.length(),type.charset());
def.copy(type.ptr(), type.length(), type.charset(),
system_charset_info);
protocol->store(def.ptr(), def.length(), def.charset());
}
else if (field->unireg_check == Field::NEXT_NUMBER ||
field->maybe_null())