* Dmitry Shulga <Dmitry.Shulga@stripped> [10/09/29 17:16]:
> 3498 Dmitry Shulga 2010-09-29
> Fixed bug#36742 - GRANT hostname case handling inconsistent.
> @ mysql-test/r/grant.result
> It was added result for test case for bug#36742.
> @ mysql-test/t/grant.test
> It was added test case for bug#36742.
> @ sql/sql_yacc.yy
> It was added convertation of host name part of user name to lowercase.
>
> modified:
> mysql-test/r/grant.result
> mysql-test/t/grant.test
> sql/sql_yacc.yy
> === modified file 'mysql-test/r/grant.result'
> --- a/mysql-test/r/grant.result 2010-07-08 18:46:26 +0000
> +++ b/mysql-test/r/grant.result 2010-09-29 13:10:58 +0000
> @@ -1429,3 +1429,14 @@ DROP USER 'testbug'@localhost;
> DROP TABLE db2.t1;
> DROP DATABASE db1;
> DROP DATABASE db2;
> +#
> +# Bug #36742
> +#
> +grant usage on Foo.* to myuser@Localhost identified by 'foo';
> +grant select on Foo.* to myuser@localhost;
> +select host,user from mysql.user where User='myuser';
> +host user
> +localhost myuser
> +revoke select on Foo.* from myuser@localhost;
> +delete from mysql.user where User='myuser';
> +flush privileges;
>
> === modified file 'mysql-test/t/grant.test'
> --- a/mysql-test/t/grant.test 2010-07-08 18:46:26 +0000
> +++ b/mysql-test/t/grant.test 2010-09-29 13:10:58 +0000
> @@ -1550,5 +1550,15 @@ DROP TABLE db2.t1;
> DROP DATABASE db1;
> DROP DATABASE db2;
>
> +--echo #
> +--echo # Bug #36742
> +--echo #
> +grant usage on Foo.* to myuser@Localhost identified by 'foo';
> +grant select on Foo.* to myuser@localhost;
> +select host,user from mysql.user where User='myuser';
> +revoke select on Foo.* from myuser@localhost;
> +delete from mysql.user where User='myuser';
> +flush privileges;
> +
> # Wait till we reached the initial number of concurrent sessions
> --source include/wait_until_count_sessions.inc
>
> === modified file 'sql/sql_yacc.yy'
> --- a/sql/sql_yacc.yy 2010-08-30 22:16:38 +0000
> +++ b/sql/sql_yacc.yy 2010-09-29 13:10:58 +0000
> @@ -11567,6 +11567,8 @@ user:
> system_charset_info, 0) ||
> check_host_name(&$$->host))
> MYSQL_YYABORT;
> + /* Convert hostname part of username to lowercase. */
Please add a comment that it's OK to use in-place lowercase as
long as the character set is utf8.
> + my_casedn_str(system_charset_info, $$->host.str);
I would like to see more encapsulation for MySQL User entity long
term, and case-insensitivity implemented as an invariant of a class.
I realize, however, that this is not a job for a bug fix.
It's OK to push the fix into 5.1.
--