summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <bar@bar.mysql.r18.ru>2003-05-30 23:09:35 +0500
committerunknown <bar@bar.mysql.r18.ru>2003-05-30 23:09:35 +0500
commit487a64963b2382fdf816770402fb05d0c681aa23 (patch)
treec740544d9252d2f43d5e5b1b8411dad92bceaa88 /sql
parentd1e7a597aece2bb4aa68069dbfdb3ed85f5cfb31 (diff)
downloadmariadb-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.cc4
-rw-r--r--sql/protocol.cc2
-rw-r--r--sql/set_var.cc2
-rw-r--r--sql/sql_parse.cc13
-rw-r--r--sql/sql_yacc.yy2
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
{