Merge mysql.com:/home/gluh/MySQL/Merge/4.1-merge
into mysql.com:/home/gluh/MySQL/Merge/5.0
This commit is contained in:
commit
76b97433c2
@ -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
|
||||
|
@ -1340,6 +1340,18 @@ select a from t1 group by a;
|
||||
a
|
||||
e
|
||||
drop table t1;
|
||||
set names utf8;
|
||||
grant select on test.* to Ñ<8e>зеÑ<80>_Ñ<8e>зеÑ<80>@localhost;
|
||||
user()
|
||||
Ñ<8e>зеÑ<80>_Ñ<8e>зеÑ<80>@localhost
|
||||
revoke all on test.* from Ñ<8e>зеÑ<80>_Ñ<8e>зеÑ<80>@localhost;
|
||||
drop user Ñ<8e>зеÑ<80>_Ñ<8e>зеÑ<80>@localhost;
|
||||
create database имÑ<8f>_базÑ<8b>_в_кодиÑ<80>овке_Ñ<83>Ñ<82>Ñ<84>8_длиной_болÑ<8c>Ñ<88>е_Ñ<87>ем_45;
|
||||
use имÑ<8f>_базÑ<8b>_в_кодиÑ<80>овке_Ñ<83>Ñ<82>Ñ<84>8_длиной_болÑ<8c>Ñ<88>е_Ñ<87>ем_45;
|
||||
select database();
|
||||
database()
|
||||
имÑ<8f>_базÑ<8b>_в_кодиÑ<80>овке_Ñ<83>Ñ<82>Ñ<84>8_длиной_болÑ<8c>Ñ<88>е_Ñ<87>ем_45
|
||||
drop database имÑ<8f>_базÑ<8b>_в_кодиÑ<80>овке_Ñ<83>Ñ<82>Ñ<84>8_длиной_болÑ<8c>Ñ<88>е_Ñ<87>ем_45;
|
||||
CREATE TABLE t1(id varchar(20) NOT NULL) DEFAULT CHARSET=utf8;
|
||||
INSERT INTO t1 VALUES ('xxx'), ('aa'), ('yyy'), ('aa');
|
||||
SELECT id FROM t1;
|
||||
|
@ -1069,6 +1069,22 @@ 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;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
|
@ -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;
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
@ -1001,8 +1001,8 @@ static int check_connection(THD *thd)
|
||||
char *passwd= strend(user)+1;
|
||||
uint user_len= passwd - user - 1;
|
||||
char *db= passwd;
|
||||
char db_buff[NAME_LEN+1]; // buffer to store db in utf8
|
||||
char user_buff[USERNAME_LENGTH+1]; // buffer to store user in utf8
|
||||
char db_buff[NAME_BYTE_LEN + 1]; // buffer to store db in utf8
|
||||
char user_buff[USERNAME_BYTE_LENGTH + 1]; // buffer to store user in utf8
|
||||
uint dummy_errors;
|
||||
|
||||
/*
|
||||
|
@ -1592,7 +1592,7 @@ char *get_field(MEM_ROOT *mem, Field *field)
|
||||
|
||||
bool check_db_name(char *name)
|
||||
{
|
||||
char *start=name;
|
||||
uint name_length= 0; // name length in symbols
|
||||
/* Used to catch empty names and names with end space */
|
||||
bool last_char_is_space= TRUE;
|
||||
|
||||
@ -1609,6 +1609,7 @@ bool check_db_name(char *name)
|
||||
name+system_charset_info->mbmaxlen);
|
||||
if (len)
|
||||
{
|
||||
name_length++;
|
||||
name += len;
|
||||
continue;
|
||||
}
|
||||
@ -1616,12 +1617,13 @@ bool check_db_name(char *name)
|
||||
#else
|
||||
last_char_is_space= *name==' ';
|
||||
#endif
|
||||
name_length++;
|
||||
if (*name == '/' || *name == '\\' || *name == FN_LIBCHAR ||
|
||||
*name == FN_EXTCHAR)
|
||||
return 1;
|
||||
name++;
|
||||
}
|
||||
return last_char_is_space || (uint) (name - start) > NAME_LEN;
|
||||
return (last_char_is_space || name_length > NAME_LEN);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user