diff options
author | unknown <bar@bar.mysql.r18.ru> | 2003-05-30 23:09:35 +0500 |
---|---|---|
committer | unknown <bar@bar.mysql.r18.ru> | 2003-05-30 23:09:35 +0500 |
commit | 487a64963b2382fdf816770402fb05d0c681aa23 (patch) | |
tree | c740544d9252d2f43d5e5b1b8411dad92bceaa88 /sql | |
parent | d1e7a597aece2bb4aa68069dbfdb3ed85f5cfb31 (diff) | |
download | mariadb-git-487a64963b2382fdf816770402fb05d0c681aa23.tar.gz |
mysqlshow and mysqldump now send their vharacter set to server
character_set_results is now the same with character_set_client by default
Diffstat (limited to 'sql')
-rw-r--r-- | sql/mysqld.cc | 4 | ||||
-rw-r--r-- | sql/protocol.cc | 2 | ||||
-rw-r--r-- | sql/set_var.cc | 2 | ||||
-rw-r--r-- | sql/sql_parse.cc | 13 | ||||
-rw-r--r-- | sql/sql_yacc.yy | 2 |
5 files changed, 15 insertions, 8 deletions
diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 224bfe5f878..7011f6dcd36 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -2048,7 +2048,7 @@ static int init_common_variables(const char *conf_file_name, int argc, } global_system_variables.character_set_server= default_charset_info; global_system_variables.character_set_database= default_charset_info; - global_system_variables.character_set_results= NULL; + global_system_variables.character_set_results= default_charset_info; global_system_variables.character_set_client= default_charset_info; global_system_variables.collation_connection= default_charset_info; @@ -4689,7 +4689,7 @@ static void mysql_init_variables(void) /* Set default values for some option variables */ global_system_variables.character_set_server= default_charset_info; global_system_variables.character_set_database= default_charset_info; - global_system_variables.character_set_results= NULL; + global_system_variables.character_set_results= default_charset_info; global_system_variables.character_set_client= default_charset_info; global_system_variables.collation_connection= default_charset_info; global_system_variables.table_type= DB_TYPE_MYISAM; diff --git a/sql/protocol.cc b/sql/protocol.cc index 848321c1576..7abbf3ce85b 100644 --- a/sql/protocol.cc +++ b/sql/protocol.cc @@ -499,7 +499,7 @@ bool Protocol::send_fields(List<Item> *list, uint flag) String tmp((char*) buff,sizeof(buff),&my_charset_bin); Protocol_simple prot(thd); String *packet= prot.storage_packet(); - CHARSET_INFO *thd_charset= thd->charset(); + CHARSET_INFO *thd_charset= thd->variables.character_set_results; DBUG_ENTER("send_fields"); if (flag & 1) diff --git a/sql/set_var.cc b/sql/set_var.cc index eb44dd1dbcb..60b0d24430d 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -1355,7 +1355,7 @@ CHARSET_INFO ** sys_var_character_set_results::ci_ptr(THD *thd, enum_var_type ty void sys_var_character_set_results::set_default(THD *thd, enum_var_type type) { if (type == OPT_GLOBAL) - global_system_variables.character_set_results= NULL; + global_system_variables.character_set_results= default_charset_info; else thd->variables.character_set_results= global_system_variables.character_set_results; } diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index b1e0b2dc91d..542b2e0d96e 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -669,9 +669,12 @@ check_connections(THD *thd) global_system_variables.character_set_client; thd->variables.collation_connection= global_system_variables.collation_connection; + thd->variables.character_set_results= + global_system_variables.character_set_results; } else { + thd->variables.character_set_results= thd->variables.collation_connection= thd->variables.character_set_client; } @@ -1319,7 +1322,8 @@ restore_user: break; #else { - char *fields; + char *fields, *pend; + String convname; TABLE_LIST table_list; statistic_increment(com_stat[SQLCOM_SHOW_FIELDS],&LOCK_status); bzero((char*) &table_list,sizeof(table_list)); @@ -1329,8 +1333,11 @@ restore_user: break; } thd->free_list=0; - table_list.alias= table_list.real_name= thd->strdup(packet); - packet=strend(packet)+1; + pend= strend(packet); + convname.copy(packet, pend-packet, + thd->variables.character_set_client, system_charset_info); + table_list.alias= table_list.real_name= convname.c_ptr(); + packet= pend+1; // command not cachable => no gap for data base name if (!(thd->query=fields=thd->memdup(packet,thd->query_length+1))) break; diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 3f96826d445..1002d06be88 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -4452,7 +4452,7 @@ option_value: net_printf(thd,ER_COLLATION_CHARSET_MISMATCH,$3->name,$2->csname); YYABORT; } - lex->var_list.push_back(new set_var_collation_client($3,$3,NULL)); + lex->var_list.push_back(new set_var_collation_client($3,$3,$3)); } | PASSWORD equal text_or_password { |