2010-03-29 17:13:53 +02:00
|
|
|
#
|
|
|
|
# functional change user tests
|
|
|
|
#
|
|
|
|
|
|
|
|
grant select on test.* to test_nopw;
|
|
|
|
grant select on test.* to test_oldpw identified by password "09301740536db389";
|
|
|
|
grant select on test.* to test_newpw identified by "newpw";
|
|
|
|
|
2010-05-14 23:45:32 +02:00
|
|
|
select concat('<', user(), '>'), concat('<', current_user(), '>'), database();
|
|
|
|
|
2010-03-29 17:13:53 +02:00
|
|
|
#
|
|
|
|
# massaging the data for tests to pass in the embedded server,
|
2010-05-14 23:45:32 +02:00
|
|
|
# that has authentication completely disabled or, if enabled, can
|
|
|
|
# only do new auth (20-byte scramble).
|
2010-03-29 17:13:53 +02:00
|
|
|
#
|
|
|
|
|
|
|
|
change_user test_nopw;
|
|
|
|
--replace_result <@> <test_nopw@%> @> @localhost>
|
|
|
|
select concat('<', user(), '>'), concat('<', current_user(), '>'), database();
|
2010-05-14 23:45:32 +02:00
|
|
|
|
|
|
|
#
|
|
|
|
# embedded with enabled privilege control cannot do plugin negotiation.
|
|
|
|
# that is, it cannot try to authenticate with a new scramble, receive a request
|
|
|
|
# to switch to an old scramble, and retry with an old scramble.
|
|
|
|
# As a result, it cannot change to a user that has old scramble and
|
|
|
|
# and it stays logged as a previous user - test_nopw in this test file.
|
|
|
|
# For the embedded with auth we replace nopw with oldpw in the results.
|
|
|
|
#
|
|
|
|
let $repl = `select if(version() like '%embedded%' and user() like '%nopw%', 'nopw', 'oldpw')`;
|
|
|
|
|
2010-03-29 17:13:53 +02:00
|
|
|
change_user test_oldpw, oldpw;
|
2010-05-14 23:45:32 +02:00
|
|
|
--replace_result <@> <test_oldpw@%> @> @localhost> $repl oldpw
|
2010-03-29 17:13:53 +02:00
|
|
|
select concat('<', user(), '>'), concat('<', current_user(), '>'), database();
|
|
|
|
change_user test_newpw, newpw;
|
|
|
|
--replace_result <@> <test_newpw@%> @> @localhost>
|
|
|
|
select concat('<', user(), '>'), concat('<', current_user(), '>'), database();
|
|
|
|
change_user root;
|
|
|
|
--replace_result <@> <root@localhost> @> @localhost>
|
|
|
|
select concat('<', user(), '>'), concat('<', current_user(), '>'), database();
|
|
|
|
|
|
|
|
change_user test_nopw,,test;
|
|
|
|
--replace_result <@> <test_nopw@%> @> @localhost>
|
|
|
|
select concat('<', user(), '>'), concat('<', current_user(), '>'), database();
|
|
|
|
change_user test_oldpw,oldpw,test;
|
2010-05-14 23:45:32 +02:00
|
|
|
--replace_result <@> <test_oldpw@%> @> @localhost> $repl oldpw
|
2010-03-29 17:13:53 +02:00
|
|
|
select concat('<', user(), '>'), concat('<', current_user(), '>'), database();
|
|
|
|
change_user test_newpw,newpw,test;
|
|
|
|
--replace_result <@> <test_newpw@%> @> @localhost>
|
|
|
|
select concat('<', user(), '>'), concat('<', current_user(), '>'), database();
|
|
|
|
change_user root,,test;
|
|
|
|
--replace_result <@> <root@localhost> @> @localhost>
|
|
|
|
select concat('<', user(), '>'), concat('<', current_user(), '>'), database();
|
|
|
|
|
|
|
|
drop user test_nopw;
|
|
|
|
drop user test_oldpw;
|
|
|
|
drop user test_newpw;
|
|
|
|
|
2007-10-16 17:29:22 +02:00
|
|
|
#
|
|
|
|
# Bug#20023 mysql_change_user() resets the value of SQL_BIG_SELECTS
|
2008-01-11 00:47:52 +01:00
|
|
|
# The replace's are here to fix things for 32 bit systems
|
2007-10-16 17:29:22 +02:00
|
|
|
#
|
|
|
|
|
|
|
|
--echo Bug#20023
|
|
|
|
SELECT @@session.sql_big_selects;
|
2008-03-07 19:14:34 +01:00
|
|
|
# The exact value depends on the server build flags
|
2008-03-28 11:14:27 +01:00
|
|
|
--replace_result 18446744073709551615 HA_POS_ERROR 4294967295 HA_POS_ERROR
|
2007-10-16 17:29:22 +02:00
|
|
|
SELECT @@global.max_join_size;
|
|
|
|
--echo change_user
|
|
|
|
--change_user
|
|
|
|
SELECT @@session.sql_big_selects;
|
2008-03-07 19:14:34 +01:00
|
|
|
# The exact value depends on the server build flags
|
2008-03-28 11:14:27 +01:00
|
|
|
--replace_result 18446744073709551615 HA_POS_ERROR 4294967295 HA_POS_ERROR
|
2007-10-16 17:29:22 +02:00
|
|
|
SELECT @@global.max_join_size;
|
|
|
|
SET @@global.max_join_size = 10000;
|
|
|
|
SET @@session.max_join_size = default;
|
|
|
|
--echo change_user
|
|
|
|
--change_user
|
|
|
|
SELECT @@session.sql_big_selects;
|
2008-02-20 15:59:03 +01:00
|
|
|
# On some machines the following will result into a warning
|
2008-03-07 19:14:34 +01:00
|
|
|
--disable_warnings
|
Assorted post-merge fixes, clean-up, integration, compat with 5.6.
43233/55794.
mysql-test/r/change_user.result:
Don't use -1 integer wrap around. It used to work, but now we do what's
actually in the documentation. In tests, we now use DEFAULT or the
numeral equivalent (as we do in the 5.6 tests).
mysql-test/r/key_cache.result:
Can't drop default key case is an error now, not a warning, for compatibility
with 5.6.
mysql-test/r/variables.result:
Can't drop default key case is an error now, not a warning, for compatibility
with 5.6.
mysql-test/t/change_user.test:
Don't use -1 integer wrap around. It used to work, but now we do what's
actually in the documentation. In tests, we now use DEFAULT or the
numeral equivalent (as we do in the 5.6 tests).
mysql-test/t/key_cache.test:
Can't drop default key case is an error now, not a warning, for compatibility
with 5.6.
mysql-test/t/variables.test:
Can't drop default key case is an error now, not a warning, for compatibility
with 5.6.
sql/mysqld.cc:
0 is a legal (albeit magic) value: "drop key cache."
sql/set_var.cc:
bound_unsigned() can go now, it was just a kludge until things are done
The Right Way, which they are now.
Can't drop default key case is an error now, not a warning, for compatibility
with 5.6.
tests/mysql_client_test.c:
Don't use -1 integer wrap around. It used to work, but now we do what's
actually in the documentation. In tests, we now use DEFAULT or the
numeral equivalent (as we do in the 5.6 tests).
2010-11-25 04:11:05 +01:00
|
|
|
SET @@global.max_join_size = 18446744073709551615;
|
2008-03-07 19:14:34 +01:00
|
|
|
--enable_warnings
|
2007-10-16 17:29:22 +02:00
|
|
|
SET @@session.max_join_size = default;
|
|
|
|
--echo change_user
|
|
|
|
--change_user
|
|
|
|
SELECT @@session.sql_big_selects;
|
2008-01-11 00:47:52 +01:00
|
|
|
--replace_result 4294967295 18446744073709551615
|
2007-12-28 00:15:29 +01:00
|
|
|
SELECT @@global.max_join_size;
|
2008-01-11 00:47:52 +01:00
|
|
|
--replace_result 4294967295 18446744073709551615
|
2007-12-28 00:15:29 +01:00
|
|
|
SELECT @@session.max_join_size;
|
2007-10-16 17:29:22 +02:00
|
|
|
|
|
|
|
#
|
|
|
|
# Bug#31418 User locks misfunctioning after mysql_change_user()
|
|
|
|
#
|
|
|
|
|
|
|
|
--echo Bug#31418
|
|
|
|
SELECT IS_FREE_LOCK('bug31418');
|
|
|
|
SELECT IS_USED_LOCK('bug31418');
|
|
|
|
SELECT GET_LOCK('bug31418', 1);
|
2007-10-17 21:43:30 +02:00
|
|
|
SELECT IS_USED_LOCK('bug31418') = CONNECTION_ID();
|
2007-10-16 17:29:22 +02:00
|
|
|
--echo change_user
|
|
|
|
--change_user
|
|
|
|
SELECT IS_FREE_LOCK('bug31418');
|
|
|
|
SELECT IS_USED_LOCK('bug31418');
|
2008-02-12 18:59:09 +01:00
|
|
|
|
|
|
|
#
|
|
|
|
# Bug#31222: com_% global status counters behave randomly with
|
|
|
|
# mysql_change_user.
|
|
|
|
#
|
2009-01-15 10:56:05 +01:00
|
|
|
|
|
|
|
FLUSH STATUS;
|
|
|
|
|
|
|
|
--disable_result_log
|
|
|
|
--disable_query_log
|
|
|
|
|
|
|
|
let $i = 100;
|
2009-10-28 08:52:34 +01:00
|
|
|
begin;
|
2009-01-15 10:56:05 +01:00
|
|
|
while ($i)
|
|
|
|
{
|
|
|
|
dec $i;
|
|
|
|
SELECT 1;
|
|
|
|
}
|
2009-10-28 08:52:34 +01:00
|
|
|
commit;
|
2009-01-15 10:56:05 +01:00
|
|
|
|
|
|
|
--enable_query_log
|
|
|
|
--enable_result_log
|
|
|
|
|
2009-02-01 01:04:57 +01:00
|
|
|
let $before= query_get_value(SHOW GLOBAL STATUS LIKE 'com_select',Value,1);
|
2009-01-15 10:56:05 +01:00
|
|
|
|
|
|
|
--change_user
|
|
|
|
|
2009-02-01 01:04:57 +01:00
|
|
|
let $after= query_get_value(SHOW GLOBAL STATUS LIKE 'com_select',Value,1);
|
|
|
|
|
|
|
|
if (`select $after != $before`){
|
|
|
|
SHOW GLOBAL STATUS LIKE 'com_select';
|
|
|
|
die The value of com_select changed during change_user;
|
|
|
|
}
|
|
|
|
echo Value of com_select did not change;
|