grants are reapplied.
After renaming a user and trying to re-apply grants results in additional
grants.
This is because we use username as part of the key for GRANT_TABLE structure.
When the user is renamed, we only change the username stored and the hash key
still contains the old user name and this results in the extra privileges
Fixed by rebuilding the hash key and updating the column_priv_hash structure
when the user is renamed
mysql-test/r/grant3.result:
Bug #41597 - After rename of user, there are additional grants when
grants are reapplied.
Testcase for BUG#41597
mysql-test/t/grant3.test:
Bug #41597 - After rename of user, there are additional grants when
grants are reapplied.
Testcase for BUG#41597
sql/sql_acl.cc:
Bug #41597 - After rename of user, there are additional grants when
grants are reapplied.
Fixed handle_grant_struct() to update the hash key when the user is renamed.
Added to set_user_details() method to GRANT_NAME class
- If missing: add "disconnect <session>"
- If physical disconnect of non "default" sessions is not finished
at test end: add routine which waits till this happened
+ additional improvements like
- remove superfluous files created by the test
- replace error numbers by error names
- remove trailing spaces, replace tabs by spaces
- unify writing of bugs within comments
- correct comments
- minor changes of formatting
Modifications according to the code review are included.
Fixed tests:
grant2
grant3
lock_tables_lost_commit
mysqldump
openssl_1
outfile
for wildcard values.
The server ignored escape character before wildcards during
the calculation of priority values for sorting of a privilege
list. (Actually the server counted an escape character as an
ordinary wildcard like % or _). I.e. the table name template
with a wildcard character like 'tbl_1' had higher priority in
a privilege list than concrete table name without wildcards
like 'tbl\_1', and some privileges of 'tbl\_1' was hidden
by privileges for 'tbl_1'.
The get_sort function has been modified to ignore escaped
wildcards as usual.
mysql-test/r/grant3.result:
Added test case for bug#31194.
mysql-test/t/grant3.test:
Added test case for bug#31194.
sql/sql_acl.cc:
Fixed bug#31194.
The server used the wild_prefix escape character (usually \-character)
like % and _ wildcards in the get_sort function for sorting weights
calculation.
The get_sort function has been modified to ignore escaped wildcards
and alone escapes like in the wild_case_compare function.
clean up SHOW GRANTS so it will show host-names with case as entered.
make REVOKE and friends case-sensitive to make things more intuitive.
Patch by Martin Friebe.
mysql-test/r/grant.result:
Bug#19828: Case sensitivity in hostname leads to inconsistent behavior
clean up after test so random order of tests is possible
mysql-test/r/grant3.result:
Bug#19828: Case sensitivity in hostname leads to inconsistent behavior
Show that REVOKE, SHOW GRANTS etc. are now consistently case-sensitive.
mysql-test/t/grant.test:
Bug#19828: Case sensitivity in hostname leads to inconsistent behavior
clean up after test so random order of tests is possible
mysql-test/t/grant3.test:
Bug#19828: Case sensitivity in hostname leads to inconsistent behavior
Show that REVOKE, SHOW GRANTS etc. are now consistently case-sensitive.
server testing cleanups.
mysql-test/r/innodb.result:
Update results
mysql-test/r/insert_select-binlog.result:
Update results
mysql-test/r/mix_innodb_myisam_binlog.result:
Update results
mysql-test/r/ps_1general.result:
Update results
mysql-test/r/ps_grant.result:
Update results
mysql-test/r/view.result:
Update results
mysql-test/t/client_xml.test:
Skip test with embedded server
mysql-test/t/flush_read_lock_kill.test:
Skip test with embedded server
mysql-test/t/grant3.test:
Skip test with embedded server
mysql-test/t/information_schema.test:
Skip test with embedded server
mysql-test/t/innodb.test:
Fix up filenames
mysql-test/t/multi_update.test:
Skip test with embedded server
mysql-test/t/mysqlshow.test:
Skip test with embedded server
mysql-test/t/ps_1general.test:
Move grant-related tests to ps_grant, and fix cleanup of filename
mysql-test/t/ps_grant.test:
Add additional tests
mysql-test/t/sp-security.test:
Skip test with embedded server
mysql-test/t/user_limits.test:
Skip test with embedded server
mysql-test/t/view.test:
Split grant-related tests to new test file view_grant