Loading include/my_global.h +1 −4 Original line number Diff line number Diff line Loading @@ -396,10 +396,7 @@ int __void__; #endif /* Define some useful general macros */ #if defined(__cplusplus) && defined(__GNUC__) #define max(a, b) ((a) >? (b)) #define min(a, b) ((a) <? (b)) #elif !defined(max) #if !defined(max) #define max(a, b) ((a) > (b) ? (a) : (b)) #define min(a, b) ((a) < (b) ? (a) : (b)) #endif 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 mysql-test/r/ctype_utf8.result +11 −0 Original line number Diff line number Diff line Loading @@ -939,6 +939,17 @@ content msisdn ERR Имри.Афимим.Аеимимримдмримрмрирор имримримримр имридм ирбднримрфмририримрфмфмим.Ад.Д имдимримрад.Адимримримрмдиримримримр м.Дадимфшьмримд им.Адимимрн имадми 1234567890 11 g 1234567890 DROP TABLE t1,t2; create table t1 (a char(20) character set utf8); insert into t1 values ('123456'),('андрей'); alter table t1 modify a char(2) character set utf8; Warnings: Warning 1265 Data truncated for column 'a' at row 1 Warning 1265 Data truncated for column 'a' at row 2 select char_length(a), length(a), a from t1 order by a; char_length(a) length(a) a 2 2 12 2 4 ан drop table t1; CREATE TABLE t1 ( a varchar(255) NOT NULL default '', KEY a (a) Loading Loading
include/my_global.h +1 −4 Original line number Diff line number Diff line Loading @@ -396,10 +396,7 @@ int __void__; #endif /* Define some useful general macros */ #if defined(__cplusplus) && defined(__GNUC__) #define max(a, b) ((a) >? (b)) #define min(a, b) ((a) <? (b)) #elif !defined(max) #if !defined(max) #define max(a, b) ((a) > (b) ? (a) : (b)) #define min(a, b) ((a) < (b) ? (a) : (b)) #endif 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
mysql-test/r/ctype_utf8.result +11 −0 Original line number Diff line number Diff line Loading @@ -939,6 +939,17 @@ content msisdn ERR Имри.Афимим.Аеимимримдмримрмрирор имримримримр имридм ирбднримрфмририримрфмфмим.Ад.Д имдимримрад.Адимримримрмдиримримримр м.Дадимфшьмримд им.Адимимрн имадми 1234567890 11 g 1234567890 DROP TABLE t1,t2; create table t1 (a char(20) character set utf8); insert into t1 values ('123456'),('андрей'); alter table t1 modify a char(2) character set utf8; Warnings: Warning 1265 Data truncated for column 'a' at row 1 Warning 1265 Data truncated for column 'a' at row 2 select char_length(a), length(a), a from t1 order by a; char_length(a) length(a) a 2 2 12 2 4 ан drop table t1; CREATE TABLE t1 ( a varchar(255) NOT NULL default '', KEY a (a) Loading