summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <bar@bar.mysql.r18.ru>2003-05-28 13:54:18 +0500
committerunknown <bar@bar.mysql.r18.ru>2003-05-28 13:54:18 +0500
commit1328c29e946df6553e5204c0d3b34803001945eb (patch)
tree113fa0806e9a3ee57d69fa7d8f3f6f4c808d6911
parent15b3f3a0d8c11babff0f2e4dfa81c1716bcf533d (diff)
downloadmariadb-git-1328c29e946df6553e5204c0d3b34803001945eb.tar.gz
"mysql" now sends client character set to server.
-rw-r--r--client/mysql.cc1
-rw-r--r--libmysql/libmysql.c3
-rw-r--r--sql/sql_parse.cc9
3 files changed, 12 insertions, 1 deletions
diff --git a/client/mysql.cc b/client/mysql.cc
index 812673d34c2..33014b27ae8 100644
--- a/client/mysql.cc
+++ b/client/mysql.cc
@@ -2549,6 +2549,7 @@ sql_real_connect(char *host,char *database,char *user,char *password,
select_limit,max_join_size);
mysql_options(&mysql, MYSQL_INIT_COMMAND, init_command);
}
+ mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, default_charset);
if (!mysql_real_connect(&mysql, host, user, password,
database, opt_mysql_port, opt_mysql_unix_port,
connect_flag | CLIENT_MULTI_QUERIES))
diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c
index 514de2a87a6..41fde189eb5 100644
--- a/libmysql/libmysql.c
+++ b/libmysql/libmysql.c
@@ -2241,7 +2241,8 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
const char *save=charsets_dir;
if (mysql->options.charset_dir)
charsets_dir=mysql->options.charset_dir;
- mysql->charset=get_charset_by_name(mysql->options.charset_name,
+ mysql->charset=get_charset_by_csname(mysql->options.charset_name,
+ MY_CS_PRIMARY,
MYF(MY_WME));
charsets_dir=save;
}
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 78b6a03e2fa..b1e0b2dc91d 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -664,8 +664,17 @@ check_connections(THD *thd)
thd->max_client_packet_length= uint4korr(net->read_pos+4);
if (!(thd->variables.character_set_client=
get_charset((uint) net->read_pos[8], MYF(0))))
+ {
thd->variables.character_set_client=
global_system_variables.character_set_client;
+ thd->variables.collation_connection=
+ global_system_variables.collation_connection;
+ }
+ else
+ {
+ thd->variables.collation_connection=
+ thd->variables.character_set_client;
+ }
end= (char*) net->read_pos+32;
}
else