diff options
author | unknown <georg@lmy002.wdf.sap.corp> | 2005-07-12 10:31:43 +0200 |
---|---|---|
committer | unknown <georg@lmy002.wdf.sap.corp> | 2005-07-12 10:31:43 +0200 |
commit | c5e573dabcbeac370173c0a181a07f8cbef4310a (patch) | |
tree | 65aac3a57e0177c50cf47b7c33c57682fd1368f3 | |
parent | de1254ad792fe54b033ba106979db9854de2f976 (diff) | |
download | mariadb-git-c5e573dabcbeac370173c0a181a07f8cbef4310a.tar.gz |
New attempt after Bar's review
Added api function mysql_get_character_set_info which provides
information about the current client character set.
include/mysql.h:
Added api function mysql_get_character_set_info which provides
information about the current client character set.
libmysql/libmysql.c:
Added api function mysql_get_character_set_info which provides
information about the current client character set.
libmysql/libmysql.def:
Added api function mysql_get_character_set_info which provides
information about the current client character set.
tests/mysql_client_test.c:
Added api function mysql_get_character_set_info which provides
information about the current client character set.
-rw-r--r-- | include/mysql.h | 14 | ||||
-rw-r--r-- | libmysql/libmysql.c | 15 | ||||
-rw-r--r-- | libmysql/libmysql.def | 1 | ||||
-rw-r--r-- | tests/mysql_client_test.c | 18 |
4 files changed, 48 insertions, 0 deletions
diff --git a/include/mysql.h b/include/mysql.h index 84284fa0661..48602e27df5 100644 --- a/include/mysql.h +++ b/include/mysql.h @@ -218,6 +218,18 @@ enum mysql_rpl_type MYSQL_RPL_MASTER, MYSQL_RPL_SLAVE, MYSQL_RPL_ADMIN }; +typedef struct character_set +{ + unsigned int number; /* character set number */ + unsigned int state; /* character set state */ + const char *csname; /* collation name */ + const char *name; /* character set name */ + const char *comment; /* comment */ + const char *dir; /* character set directory */ + unsigned int mbminlen; /* min. length for multibyte strings */ + unsigned int mbmaxlen; /* max. length for multibyte strings */ +} CHARACTER_SET; + struct st_mysql_methods; typedef struct st_mysql @@ -418,6 +430,8 @@ my_bool STDCALL mysql_slave_query(MYSQL *mysql, const char *q, unsigned long length); my_bool STDCALL mysql_slave_send_query(MYSQL *mysql, const char *q, unsigned long length); +void STDCALL mysql_get_character_set_info(MYSQL *mysql, + CHARACTER_SET *charset); /* local infile support */ diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index 2a4bc5151c1..d387b48eff6 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -1495,6 +1495,21 @@ const char * STDCALL mysql_character_set_name(MYSQL *mysql) return mysql->charset->csname; } +void STDCALL mysql_get_character_set_info(MYSQL *mysql, CHARACTER_SET *csinfo) +{ + csinfo->number = mysql->charset->number; + csinfo->state = mysql->charset->state; + csinfo->csname = mysql->charset->csname; + csinfo->name = mysql->charset->name; + csinfo->comment = mysql->charset->comment; + csinfo->mbminlen = mysql->charset->mbminlen; + csinfo->mbmaxlen = mysql->charset->mbmaxlen; + + if (mysql->options.charset_dir) + csinfo->dir = mysql->options.charset_dir; + else + csinfo->dir = charsets_dir; +} int STDCALL mysql_set_character_set(MYSQL *mysql, char *cs_name) { diff --git a/libmysql/libmysql.def b/libmysql/libmysql.def index 2da88c271ba..0688ea5732b 100644 --- a/libmysql/libmysql.def +++ b/libmysql/libmysql.def @@ -149,5 +149,6 @@ EXPORTS mysql_server_init mysql_server_end mysql_set_character_set + mysql_get_character_set_info get_defaults_files modify_defaults_file diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index 0c79925c3eb..121e7fa1968 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -13626,6 +13626,23 @@ static void test_bug10214() mysql_query(mysql, "set sql_mode=''"); } +static void test_client_character_set() +{ + CHARACTER_SET cs; + const char *csname; + int rc; + + myheader("test_client_character_set"); + + csname = "utf8"; + rc = mysql_set_character_set(mysql, csname); + DIE_UNLESS(rc == 0); + + mysql_get_character_set_info(mysql, &cs); + DIE_UNLESS(!strcmp(cs.csname, "utf8")); + DIE_UNLESS(!strcmp(cs.name, "utf8_general_ci")); +} + /* Read and parse arguments and MySQL options from my.cnf @@ -13850,6 +13867,7 @@ static struct my_tests_st my_tests[]= { { "test_cursors_with_union", test_cursors_with_union }, { "test_truncation", test_truncation }, { "test_truncation_option", test_truncation_option }, + { "test_client_character_set", test_client_character_set }, { "test_bug8330", test_bug8330 }, { "test_bug7990", test_bug7990 }, { "test_bug8378", test_bug8378 }, |