summaryrefslogtreecommitdiff
path: root/sql-common
diff options
context:
space:
mode:
authorunknown <jimw@rama.(none)>2006-07-28 15:51:48 -0700
committerunknown <jimw@rama.(none)>2006-07-28 15:51:48 -0700
commitd10db4cf6ca1600e607a456754fe3ee0f91f7cb0 (patch)
tree342d754bb37c83ca466b6f474d31ecb2e0934a65 /sql-common
parenta13b3c49293f350def614c54a10092dba1f4cdf8 (diff)
parent7c7396cee5e8f88763a7b3468f4ae3f543195cf2 (diff)
downloadmariadb-git-d10db4cf6ca1600e607a456754fe3ee0f91f7cb0.tar.gz
Merge rama.(none):/home/jimw/my/tmp_merge
into rama.(none):/home/jimw/my/mysql-5.1-clean client/mysql.cc: Auto merged client/mysqldump.c: Auto merged configure.in: Auto merged extra/yassl/include/openssl/ssl.h: Auto merged extra/yassl/include/yassl_int.hpp: Auto merged extra/yassl/src/ssl.cpp: Auto merged extra/yassl/src/template_instnt.cpp: Auto merged extra/yassl/src/yassl_imp.cpp: Auto merged extra/yassl/src/yassl_int.cpp: Auto merged include/mysql.h: Auto merged libmysql/libmysql.c: Auto merged libmysqld/embedded_priv.h: Auto merged BitKeeper/deleted/.del-mysql_explain_log.sh~5ddc62808e16bd57: Auto merged libmysqld/lib_sql.cc: Auto merged libmysqld/libmysqld.c: Auto merged mysql-test/r/date_formats.result: Auto merged mysql-test/r/func_str.result: Auto merged mysql-test/r/mysqldump-max.result: Auto merged mysql-test/r/ps.result: Auto merged mysql-test/t/date_formats.test: Auto merged mysql-test/t/ps.test: Auto merged scripts/mysqld_safe.sh: Auto merged sql/item_func.h: Auto merged sql/item_strfunc.cc: Auto merged sql/sql_acl.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_lex.cc: Auto merged sql-common/client.c: Auto merged sql/sql_prepare.cc: Auto merged sql/sql_string.h: Auto merged sql/table.cc: Auto merged sql/table.h: Auto merged sql/time.cc: Auto merged storage/myisam/mi_create.c: Auto merged storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp: Auto merged storage/ndb/src/mgmsrv/ConfigInfo.cpp: Auto merged tests/mysql_client_test.c: Auto merged BitKeeper/deleted/.del-have_case_sensitive_file_system.inc: Delete: mysql-test/include/have_case_sensitive_file_system.inc BitKeeper/deleted/.del-case_sensitive_file_system.require: Delete: mysql-test/r/case_sensitive_file_system.require mysql-test/lib/mtr_cases.pl: Resolve conflict mysql-test/mysql-test-run.pl: Resolve conflict mysql-test/r/mysqldump.result: Resolve conflict mysql-test/t/mysqldump.test: Resolve conflict sql/sql_parse.cc: Resolve conflict
Diffstat (limited to 'sql-common')
-rw-r--r--sql-common/client.c36
1 files changed, 33 insertions, 3 deletions
diff --git a/sql-common/client.c b/sql-common/client.c
index 83169db1a06..feaa4ed0bfd 100644
--- a/sql-common/client.c
+++ b/sql-common/client.c
@@ -642,7 +642,8 @@ void free_rows(MYSQL_DATA *cur)
my_bool
cli_advanced_command(MYSQL *mysql, enum enum_server_command command,
const char *header, ulong header_length,
- const char *arg, ulong arg_length, my_bool skip_check)
+ const char *arg, ulong arg_length, my_bool skip_check,
+ MYSQL_STMT *stmt __attribute__((unused)))
{
NET *net= &mysql->net;
my_bool result= 1;
@@ -1668,11 +1669,18 @@ C_MODE_START
int mysql_init_character_set(MYSQL *mysql)
{
NET *net= &mysql->net;
+ const char *default_collation_name;
+
/* Set character set */
- if (!mysql->options.charset_name &&
- !(mysql->options.charset_name=
+ if (!mysql->options.charset_name)
+ {
+ default_collation_name= MYSQL_DEFAULT_COLLATION_NAME;
+ if (!(mysql->options.charset_name=
my_strdup(MYSQL_DEFAULT_CHARSET_NAME,MYF(MY_WME))))
return 1;
+ }
+ else
+ default_collation_name= NULL;
{
const char *save= charsets_dir;
@@ -1680,6 +1688,28 @@ int mysql_init_character_set(MYSQL *mysql)
charsets_dir=mysql->options.charset_dir;
mysql->charset=get_charset_by_csname(mysql->options.charset_name,
MY_CS_PRIMARY, MYF(MY_WME));
+ if (mysql->charset && default_collation_name)
+ {
+ CHARSET_INFO *collation;
+ if ((collation=
+ get_charset_by_name(default_collation_name, MYF(MY_WME))))
+ {
+ if (!my_charset_same(mysql->charset, collation))
+ {
+ my_printf_error(ER_UNKNOWN_ERROR,
+ "COLLATION %s is not valid for CHARACTER SET %s",
+ MYF(0),
+ default_collation_name, mysql->options.charset_name);
+ mysql->charset= NULL;
+ }
+ else
+ {
+ mysql->charset= collation;
+ }
+ }
+ else
+ mysql->charset= NULL;
+ }
charsets_dir= save;
}