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:
@ -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())
|
||||
|
Reference in New Issue
Block a user