mirror of
https://github.com/MariaDB/server.git
synced 2025-10-25 18:38:00 +03:00
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)
88 lines
3.8 KiB
Plaintext
88 lines
3.8 KiB
Plaintext
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;
|