Loading configure.in +3 −2 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ SHARED_LIB_VERSION=$SHARED_LIB_MAJOR_VERSION:0:0 # ndb version NDB_VERSION_MAJOR=5 NDB_VERSION_MINOR=0 NDB_VERSION_BUILD=25 NDB_VERSION_BUILD=26 NDB_VERSION_STATUS="" # Set all version vars based on $VERSION. How do we do this more elegant ? Loading Loading @@ -2826,8 +2826,9 @@ AC_CONFIG_FILES(Makefile extra/Makefile mysys/Makefile dnl include/mysql_version.h dnl cmd-line-utils/Makefile dnl cmd-line-utils/libedit/Makefile dnl win/Makefile dnl zlib/Makefile dnl cmd-line-utils/readline/Makefile win/Makefile) cmd-line-utils/readline/Makefile) AC_CONFIG_COMMANDS([default], , test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h) AC_OUTPUT Loading include/mysql_com.h +4 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,9 @@ #define USERNAME_LENGTH 16 #define SERVER_VERSION_LENGTH 60 #define SQLSTATE_LENGTH 5 #define SYSTEM_CHARSET_MBMAXLEN 3 #define NAME_BYTE_LEN NAME_LEN*SYSTEM_CHARSET_MBMAXLEN #define USERNAME_BYTE_LENGTH USERNAME_LENGTH*SYSTEM_CHARSET_MBMAXLEN /* USER_HOST_BUFF_SIZE -- length of string buffer, that is enough to contain Loading @@ -33,7 +36,7 @@ MySQL standard format: user_name_part@host_name_part\0 */ #define USER_HOST_BUFF_SIZE HOSTNAME_LENGTH + USERNAME_LENGTH + 2 #define USER_HOST_BUFF_SIZE HOSTNAME_LENGTH + USERNAME_BYTE_LENGTH + 2 #define LOCAL_HOST "localhost" #define LOCAL_HOST_NAMEDPIPE "." Loading mysql-test/r/ctype_utf8.result +13 −0 Original line number Diff line number Diff line Loading @@ -1340,6 +1340,19 @@ select a from t1 group by a; a e drop table t1; set names utf8; grant select on test.* to юзер_юзер@localhost; user() юзер_юзер@localhost revoke all on test.* from юзер_юзер@localhost; drop user юзер_юзер@localhost; create database имя_базы_в_кодировке_утф8_длиной_больше_чем_45; use имя_базы_в_кодировке_утф8_длиной_больше_чем_45; select database(); database() имя_базы_в_кодировке_утф8_длиной_больше_чем_45 drop database имя_базы_в_кодировке_утф8_длиной_больше_чем_45; use test; CREATE TABLE t1(id varchar(20) NOT NULL) DEFAULT CHARSET=utf8; INSERT INTO t1 VALUES ('xxx'), ('aa'), ('yyy'), ('aa'); SELECT id FROM t1; Loading mysql-test/t/ctype_utf8.test +17 −0 Original line number Diff line number Diff line Loading @@ -1069,6 +1069,23 @@ explain select a from t1 group by a; select a from t1 group by a; drop table t1; # # Bug#20393: User name truncation in mysql client # Bug#21432: Database/Table name limited to 64 bytes, not chars, problems with multi-byte # set names utf8; #create user юзер_юзер@localhost; grant select on test.* to юзер_юзер@localhost; --exec $MYSQL --default-character-set=utf8 --user=юзер_юзер -e "select user()" revoke all on test.* from юзер_юзер@localhost; drop user юзер_юзер@localhost; create database имя_базы_в_кодировке_утф8_длиной_больше_чем_45; use имя_базы_в_кодировке_утф8_длиной_больше_чем_45; select database(); drop database имя_базы_в_кодировке_утф8_длиной_больше_чем_45; use test; # End of 4.1 tests # Loading sql-common/client.c +3 −3 Original line number Diff line number Diff line Loading @@ -1758,7 +1758,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user, const char *passwd, const char *db, uint port, const char *unix_socket,ulong client_flag) { char buff[NAME_LEN+USERNAME_LENGTH+100]; char buff[NAME_BYTE_LEN+USERNAME_BYTE_LENGTH+100]; char *end,*host_info; my_socket sock; in_addr_t ip_addr; Loading Loading @@ -2217,7 +2217,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user, mysql->server_status, client_flag)); /* This needs to be changed as it's not useful with big packets */ if (user && user[0]) strmake(end,user,USERNAME_LENGTH); /* Max user name */ strmake(end,user,USERNAME_BYTE_LENGTH); /* Max user name */ else read_user_name((char*) end); Loading Loading @@ -2247,7 +2247,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user, /* Add database if needed */ if (db && (mysql->server_capabilities & CLIENT_CONNECT_WITH_DB)) { end= strmake(end, db, NAME_LEN) + 1; end= strmake(end, db, NAME_BYTE_LEN) + 1; mysql->db= my_strdup(db,MYF(MY_WME)); db= 0; } Loading Loading
configure.in +3 −2 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ SHARED_LIB_VERSION=$SHARED_LIB_MAJOR_VERSION:0:0 # ndb version NDB_VERSION_MAJOR=5 NDB_VERSION_MINOR=0 NDB_VERSION_BUILD=25 NDB_VERSION_BUILD=26 NDB_VERSION_STATUS="" # Set all version vars based on $VERSION. How do we do this more elegant ? Loading Loading @@ -2826,8 +2826,9 @@ AC_CONFIG_FILES(Makefile extra/Makefile mysys/Makefile dnl include/mysql_version.h dnl cmd-line-utils/Makefile dnl cmd-line-utils/libedit/Makefile dnl win/Makefile dnl zlib/Makefile dnl cmd-line-utils/readline/Makefile win/Makefile) cmd-line-utils/readline/Makefile) AC_CONFIG_COMMANDS([default], , test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h) AC_OUTPUT Loading
include/mysql_com.h +4 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,9 @@ #define USERNAME_LENGTH 16 #define SERVER_VERSION_LENGTH 60 #define SQLSTATE_LENGTH 5 #define SYSTEM_CHARSET_MBMAXLEN 3 #define NAME_BYTE_LEN NAME_LEN*SYSTEM_CHARSET_MBMAXLEN #define USERNAME_BYTE_LENGTH USERNAME_LENGTH*SYSTEM_CHARSET_MBMAXLEN /* USER_HOST_BUFF_SIZE -- length of string buffer, that is enough to contain Loading @@ -33,7 +36,7 @@ MySQL standard format: user_name_part@host_name_part\0 */ #define USER_HOST_BUFF_SIZE HOSTNAME_LENGTH + USERNAME_LENGTH + 2 #define USER_HOST_BUFF_SIZE HOSTNAME_LENGTH + USERNAME_BYTE_LENGTH + 2 #define LOCAL_HOST "localhost" #define LOCAL_HOST_NAMEDPIPE "." Loading
mysql-test/r/ctype_utf8.result +13 −0 Original line number Diff line number Diff line Loading @@ -1340,6 +1340,19 @@ select a from t1 group by a; a e drop table t1; set names utf8; grant select on test.* to юзер_юзер@localhost; user() юзер_юзер@localhost revoke all on test.* from юзер_юзер@localhost; drop user юзер_юзер@localhost; create database имя_базы_в_кодировке_утф8_длиной_больше_чем_45; use имя_базы_в_кодировке_утф8_длиной_больше_чем_45; select database(); database() имя_базы_в_кодировке_утф8_длиной_больше_чем_45 drop database имя_базы_в_кодировке_утф8_длиной_больше_чем_45; use test; CREATE TABLE t1(id varchar(20) NOT NULL) DEFAULT CHARSET=utf8; INSERT INTO t1 VALUES ('xxx'), ('aa'), ('yyy'), ('aa'); SELECT id FROM t1; Loading
mysql-test/t/ctype_utf8.test +17 −0 Original line number Diff line number Diff line Loading @@ -1069,6 +1069,23 @@ explain select a from t1 group by a; select a from t1 group by a; drop table t1; # # Bug#20393: User name truncation in mysql client # Bug#21432: Database/Table name limited to 64 bytes, not chars, problems with multi-byte # set names utf8; #create user юзер_юзер@localhost; grant select on test.* to юзер_юзер@localhost; --exec $MYSQL --default-character-set=utf8 --user=юзер_юзер -e "select user()" revoke all on test.* from юзер_юзер@localhost; drop user юзер_юзер@localhost; create database имя_базы_в_кодировке_утф8_длиной_больше_чем_45; use имя_базы_в_кодировке_утф8_длиной_больше_чем_45; select database(); drop database имя_базы_в_кодировке_утф8_длиной_больше_чем_45; use test; # End of 4.1 tests # Loading
sql-common/client.c +3 −3 Original line number Diff line number Diff line Loading @@ -1758,7 +1758,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user, const char *passwd, const char *db, uint port, const char *unix_socket,ulong client_flag) { char buff[NAME_LEN+USERNAME_LENGTH+100]; char buff[NAME_BYTE_LEN+USERNAME_BYTE_LENGTH+100]; char *end,*host_info; my_socket sock; in_addr_t ip_addr; Loading Loading @@ -2217,7 +2217,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user, mysql->server_status, client_flag)); /* This needs to be changed as it's not useful with big packets */ if (user && user[0]) strmake(end,user,USERNAME_LENGTH); /* Max user name */ strmake(end,user,USERNAME_BYTE_LENGTH); /* Max user name */ else read_user_name((char*) end); Loading Loading @@ -2247,7 +2247,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user, /* Add database if needed */ if (db && (mysql->server_capabilities & CLIENT_CONNECT_WITH_DB)) { end= strmake(end, db, NAME_LEN) + 1; end= strmake(end, db, NAME_BYTE_LEN) + 1; mysql->db= my_strdup(db,MYF(MY_WME)); db= 0; } Loading