Commit 524eb067 authored by Sergey Glukhov's avatar Sergey Glukhov
Browse files

5.0->5.1 bugteam merge

parents d1308443 aa9f6a62
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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)
+5 −0
Original line number Diff line number Diff line
@@ -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()
+1 −0
Original line number Diff line number Diff line
@@ -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,
+33 −0
Original line number Diff line number Diff line
@@ -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


+1 −2
Original line number Diff line number Diff line
@@ -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