Loading include/mysql.h +14 −0 Original line number Diff line number Diff line Loading @@ -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 */ } MY_CHARSET_INFO; struct st_mysql_methods; typedef struct st_mysql Loading Loading @@ -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, MY_CHARSET_INFO *charset); /* local infile support */ Loading libmysql/libmysql.c +15 −0 Original line number Diff line number Diff line Loading @@ -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, MY_CHARSET_INFO *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) { Loading libmysql/libmysql.def +1 −0 Original line number Diff line number Diff line Loading @@ -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 tests/mysql_client_test.c +18 −0 Original line number Diff line number Diff line Loading @@ -13626,6 +13626,23 @@ static void test_bug10214() mysql_query(mysql, "set sql_mode=''"); } static void test_client_character_set() { MY_CHARSET_INFO 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 Loading Loading @@ -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 }, Loading Loading
include/mysql.h +14 −0 Original line number Diff line number Diff line Loading @@ -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 */ } MY_CHARSET_INFO; struct st_mysql_methods; typedef struct st_mysql Loading Loading @@ -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, MY_CHARSET_INFO *charset); /* local infile support */ Loading
libmysql/libmysql.c +15 −0 Original line number Diff line number Diff line Loading @@ -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, MY_CHARSET_INFO *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) { Loading
libmysql/libmysql.def +1 −0 Original line number Diff line number Diff line Loading @@ -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
tests/mysql_client_test.c +18 −0 Original line number Diff line number Diff line Loading @@ -13626,6 +13626,23 @@ static void test_bug10214() mysql_query(mysql, "set sql_mode=''"); } static void test_client_character_set() { MY_CHARSET_INFO 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 Loading Loading @@ -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 }, Loading