5.0->5.1 bugteam merge
mysql-test/r/create.result: automerge mysql-test/t/create.test: automerge sql/mysql_priv.h: manual merge sql/sql_parse.cc: manual merge sql/sql_yacc.yy: manual merge
This commit is contained in:
commit
46087eaf25
@ -1559,6 +1559,8 @@ SHOW INDEX FROM t1;
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
t1 1 c1 1 c1 A NULL NULL NULL YES BTREE
|
||||
DROP TABLE t1;
|
||||
create user mysqltest_1@'test@test';
|
||||
ERROR HY000: Malformed hostname (illegal symbol: '@')
|
||||
CREATE TABLE t1 (a INTEGER AUTO_INCREMENT PRIMARY KEY, b INTEGER NOT NULL);
|
||||
INSERT IGNORE INTO t1 (b) VALUES (5);
|
||||
CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
|
||||
|
@ -1175,6 +1175,11 @@ CREATE TABLE t1(c1 VARCHAR(33), KEY USING HASH (c1) USING BTREE) ENGINE=MEMORY;
|
||||
SHOW INDEX FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#35924 DEFINER should be stored 'quoted' in I_S
|
||||
#
|
||||
--error ER_UNKNOWN_ERROR
|
||||
create user mysqltest_1@'test@test';
|
||||
|
||||
#
|
||||
# Bug#38821: Assert table->auto_increment_field_not_null failed in open_table()
|
||||
|
@ -803,6 +803,7 @@ bool check_string_byte_length(LEX_STRING *str, const char *err_msg,
|
||||
bool check_string_char_length(LEX_STRING *str, const char *err_msg,
|
||||
uint max_char_length, CHARSET_INFO *cs,
|
||||
bool no_error);
|
||||
bool check_host_name(LEX_STRING *str);
|
||||
|
||||
bool parse_sql(THD *thd,
|
||||
Parser_state *parser_state,
|
||||
|
@ -7503,6 +7503,39 @@ int test_if_data_home_dir(const char *dir)
|
||||
C_MODE_END
|
||||
|
||||
|
||||
/**
|
||||
Check that host name string is valid.
|
||||
|
||||
@param[in] str string to be checked
|
||||
|
||||
@return Operation status
|
||||
@retval FALSE host name is ok
|
||||
@retval TRUE host name string is longer than max_length or
|
||||
has invalid symbols
|
||||
*/
|
||||
|
||||
bool check_host_name(LEX_STRING *str)
|
||||
{
|
||||
const char *name= str->str;
|
||||
const char *end= str->str + str->length;
|
||||
if (check_string_byte_length(str, ER(ER_HOSTNAME), HOSTNAME_LENGTH))
|
||||
return TRUE;
|
||||
|
||||
while (name != end)
|
||||
{
|
||||
if (*name == '@')
|
||||
{
|
||||
my_printf_error(ER_UNKNOWN_ERROR,
|
||||
"Malformed hostname (illegal symbol: '%c')", MYF(0),
|
||||
*name);
|
||||
return TRUE;
|
||||
}
|
||||
name++;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
extern int MYSQLparse(void *thd); // from sql_yacc.cc
|
||||
|
||||
|
||||
|
@ -11301,8 +11301,7 @@ user:
|
||||
if (check_string_char_length(&$$->user, ER(ER_USERNAME),
|
||||
USERNAME_CHAR_LENGTH,
|
||||
system_charset_info, 0) ||
|
||||
check_string_byte_length(&$$->host, ER(ER_HOSTNAME),
|
||||
HOSTNAME_LENGTH))
|
||||
check_host_name(&$$->host))
|
||||
MYSQL_YYABORT;
|
||||
}
|
||||
| CURRENT_USER optional_braces
|
||||
|
Loading…
x
Reference in New Issue
Block a user