mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 04:22:27 +01:00
9c8c1817ce
should work in Prepared Statements. Post-review changeset. Problem: There are some commands which are avaiable to be executed in SP but cannot be prepared. This patch fixes this and makes it possible prepare these statements. Changes: The commands later are made available in PS. RESET has been forbidden in SF/Trigger. Solution: All current server commands where checked and those missing (see later) we added. Tests for all of the commands with repeated executions were added - testing with SP, SF and PS. SHOW BINLOG EVENTS SHOW (MASTER | SLAVE) STATUS SHOW (MASTER | BINARY) LOGS SHOW (PROCEDURE | FUNCTION) CODE (parsable only in debug builds) SHOW CREATE (PROCEDURE | FUNCTION | EVENT | TABLE | VIEW) SHOW (AUTHORS | CONTRIBUTORS | WARNINGS | ERRORS) CHANGE MASTER RESET (MASTER | SLAVE | QUERY CACHE) SLAVE (START | STOP) CHECKSUM (TABLE | TABLES) INSTALL PLUGIN UNINSTALL PLUGIN CACHE INDEX LOAD INDEX INTO CACHE GRANT REVOKE KILL (CREATE | RENAME | DROP) DATABASE (CREATE | RENAME | DROP) USER FLUSH (TABLE | TABLES | TABLES WITH READ LOCK | HOSTS | PRIVILEGES | LOGS | STATUS | MASTER | SLAVE | DES_KEY_FILE | USER_RESOURCES)
87 lines
3.8 KiB
Text
87 lines
3.8 KiB
Text
test_sequence
|
|
------ grant/revoke/drop affects a parallel session test ------
|
|
show grants for second_user@localhost ;
|
|
ERROR 42000: There is no such grant defined for user 'second_user' on host 'localhost'
|
|
create database mysqltest;
|
|
use mysqltest;
|
|
use test;
|
|
grant usage on mysqltest.* to second_user@localhost
|
|
identified by 'looser' ;
|
|
grant select on mysqltest.t9 to second_user@localhost
|
|
identified by 'looser' ;
|
|
show grants for second_user@localhost ;
|
|
Grants for second_user@localhost
|
|
GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
|
|
GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost'
|
|
select current_user();
|
|
current_user()
|
|
second_user@localhost
|
|
show grants for current_user();
|
|
Grants for second_user@localhost
|
|
GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
|
|
GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost'
|
|
prepare s_t9 from 'select c1 as my_col
|
|
from t9 where c1= 1' ;
|
|
execute s_t9 ;
|
|
my_col
|
|
1
|
|
select a as my_col from t1;
|
|
ERROR 42000: SELECT command denied to user 'second_user'@'localhost' for table 't1'
|
|
grant select on mysqltest.t1 to second_user@localhost
|
|
identified by 'looser' ;
|
|
show grants for second_user@localhost ;
|
|
Grants for second_user@localhost
|
|
GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
|
|
GRANT SELECT ON `mysqltest`.`t1` TO 'second_user'@'localhost'
|
|
GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost'
|
|
drop table mysqltest.t9 ;
|
|
show grants for second_user@localhost ;
|
|
Grants for second_user@localhost
|
|
GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
|
|
GRANT SELECT ON `mysqltest`.`t1` TO 'second_user'@'localhost'
|
|
GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost'
|
|
show grants for second_user@localhost ;
|
|
Grants for second_user@localhost
|
|
GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
|
|
GRANT SELECT ON `mysqltest`.`t1` TO 'second_user'@'localhost'
|
|
GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost'
|
|
prepare s_t1 from 'select a as my_col from t1' ;
|
|
execute s_t1 ;
|
|
my_col
|
|
1
|
|
2
|
|
3
|
|
4
|
|
execute s_t9 ;
|
|
ERROR 42S02: Table 'mysqltest.t9' doesn't exist
|
|
deallocate prepare s_t9;
|
|
revoke all privileges on mysqltest.t1 from second_user@localhost
|
|
identified by 'looser' ;
|
|
show grants for second_user@localhost ;
|
|
Grants for second_user@localhost
|
|
GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
|
|
GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost'
|
|
show grants for second_user@localhost ;
|
|
Grants for second_user@localhost
|
|
GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
|
|
GRANT SELECT ON `mysqltest`.`t9` TO 'second_user'@'localhost'
|
|
execute s_t1 ;
|
|
ERROR 42000: SELECT command denied to user 'second_user'@'localhost' for table 't1'
|
|
revoke all privileges, grant option from second_user@localhost ;
|
|
show grants for second_user@localhost ;
|
|
Grants for second_user@localhost
|
|
GRANT USAGE ON *.* TO 'second_user'@'localhost' IDENTIFIED BY PASSWORD '*13843FE600B19A81E32AF50D4A6FED25875FF1F3'
|
|
drop user second_user@localhost ;
|
|
commit ;
|
|
show grants for second_user@localhost ;
|
|
ERROR 42000: There is no such grant defined for user 'second_user' on host 'localhost'
|
|
drop database mysqltest;
|
|
prepare stmt3 from ' grant all on test.t1 to drop_user@localhost
|
|
identified by ''looser'' ';
|
|
grant all on test.t1 to drop_user@localhost
|
|
identified by 'looser' ;
|
|
prepare stmt3 from ' revoke all privileges on test.t1 from
|
|
drop_user@localhost ';
|
|
revoke all privileges on test.t1 from drop_user@localhost ;
|
|
prepare stmt3 from ' drop user drop_user@localhost ';
|
|
drop user drop_user@localhost;
|