summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <georg@lmy002.wdf.sap.corp>2005-07-12 10:31:43 +0200
committerunknown <georg@lmy002.wdf.sap.corp>2005-07-12 10:31:43 +0200
commitc5e573dabcbeac370173c0a181a07f8cbef4310a (patch)
tree65aac3a57e0177c50cf47b7c33c57682fd1368f3
parentde1254ad792fe54b033ba106979db9854de2f976 (diff)
downloadmariadb-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.h14
-rw-r--r--libmysql/libmysql.c15
-rw-r--r--libmysql/libmysql.def1
-rw-r--r--tests/mysql_client_test.c18
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 },