mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge ahristov@bk-internal.mysql.com:/home/bk/mysql-5.1-runtime
into lmy004.:/work/mysql-5.1-runtime-bug18897 mysql-test/t/events_bugs.test: Auto merged sql/sql_parse.cc: Auto merged
This commit is contained in:
@ -178,4 +178,27 @@ drop procedure ee_16407_6_pendant;
|
|||||||
set global event_scheduler= 2;
|
set global event_scheduler= 2;
|
||||||
drop table events_smode_test;
|
drop table events_smode_test;
|
||||||
set sql_mode=@old_sql_mode;
|
set sql_mode=@old_sql_mode;
|
||||||
|
set global event_scheduler=2;
|
||||||
|
delete from mysql.user where User like 'mysqltest_%';
|
||||||
|
delete from mysql.db where User like 'mysqltest_%';
|
||||||
|
flush privileges;
|
||||||
|
drop database if exists mysqltest_db1;
|
||||||
|
create user mysqltest_user1@localhost;
|
||||||
|
create database mysqltest_db1;
|
||||||
|
grant event on events_test.* to mysqltest_user1@localhost;
|
||||||
|
create event mysqltest_user1 on schedule every 10 second do select 42;
|
||||||
|
alter event mysqltest_user1 rename to mysqltest_db1.mysqltest_user1;
|
||||||
|
ERROR 42000: Access denied for user 'mysqltest_user1'@'localhost' to database 'mysqltest_db1'
|
||||||
|
"Let's test now rename when there is no select DB"
|
||||||
|
select database();
|
||||||
|
database()
|
||||||
|
NULL
|
||||||
|
alter event events_test.mysqltest_user1 rename to mysqltest_user1;
|
||||||
|
ERROR 3D000: No database selected
|
||||||
|
select event_schema, event_name, definer, event_type, status from information_schema.events;
|
||||||
|
event_schema event_name definer event_type status
|
||||||
|
events_test mysqltest_user1 mysqltest_user1@localhost RECURRING ENABLED
|
||||||
|
drop event events_test.mysqltest_user1;
|
||||||
|
drop user mysqltest_user1@localhost;
|
||||||
|
drop database mysqltest_db1;
|
||||||
drop database events_test;
|
drop database events_test;
|
||||||
|
@ -175,4 +175,38 @@ set sql_mode=@old_sql_mode;
|
|||||||
#
|
#
|
||||||
# End - 16407: Events: Changes in sql_mode won't be taken into account
|
# End - 16407: Events: Changes in sql_mode won't be taken into account
|
||||||
#
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# START - 18897: Events: unauthorized action possible with alter event rename
|
||||||
|
#
|
||||||
|
set global event_scheduler=2;
|
||||||
|
--disable_warnings
|
||||||
|
delete from mysql.user where User like 'mysqltest_%';
|
||||||
|
delete from mysql.db where User like 'mysqltest_%';
|
||||||
|
flush privileges;
|
||||||
|
drop database if exists mysqltest_db1;
|
||||||
|
--enable_warnings
|
||||||
|
create user mysqltest_user1@localhost;
|
||||||
|
create database mysqltest_db1;
|
||||||
|
grant event on events_test.* to mysqltest_user1@localhost;
|
||||||
|
connect (conn2,localhost,mysqltest_user1,,events_test);
|
||||||
|
create event mysqltest_user1 on schedule every 10 second do select 42;
|
||||||
|
--error ER_DBACCESS_DENIED_ERROR
|
||||||
|
alter event mysqltest_user1 rename to mysqltest_db1.mysqltest_user1;
|
||||||
|
--echo "Let's test now rename when there is no select DB"
|
||||||
|
disconnect conn2;
|
||||||
|
connect (conn2,localhost,mysqltest_user1,,*NO-ONE*);
|
||||||
|
select database();
|
||||||
|
--error ER_NO_DB_ERROR
|
||||||
|
alter event events_test.mysqltest_user1 rename to mysqltest_user1;
|
||||||
|
select event_schema, event_name, definer, event_type, status from information_schema.events;
|
||||||
|
drop event events_test.mysqltest_user1;
|
||||||
|
disconnect conn2;
|
||||||
|
connection default;
|
||||||
|
drop user mysqltest_user1@localhost;
|
||||||
|
drop database mysqltest_db1;
|
||||||
|
#
|
||||||
|
# END - 18897: Events: unauthorized action possible with alter event rename
|
||||||
|
#
|
||||||
|
|
||||||
drop database events_test;
|
drop database events_test;
|
||||||
|
@ -3824,7 +3824,9 @@ end_with_restore_list:
|
|||||||
uint rows_affected= 1;
|
uint rows_affected= 1;
|
||||||
DBUG_ASSERT(lex->et);
|
DBUG_ASSERT(lex->et);
|
||||||
do {
|
do {
|
||||||
if (! lex->et->dbname.str)
|
if (! lex->et->dbname.str ||
|
||||||
|
(lex->sql_command == SQLCOM_ALTER_EVENT && lex->spname &&
|
||||||
|
!lex->spname->m_db.str))
|
||||||
{
|
{
|
||||||
my_message(ER_NO_DB_ERROR, ER(ER_NO_DB_ERROR), MYF(0));
|
my_message(ER_NO_DB_ERROR, ER(ER_NO_DB_ERROR), MYF(0));
|
||||||
res= true;
|
res= true;
|
||||||
@ -3832,7 +3834,10 @@ end_with_restore_list:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (check_access(thd, EVENT_ACL, lex->et->dbname.str, 0, 0, 0,
|
if (check_access(thd, EVENT_ACL, lex->et->dbname.str, 0, 0, 0,
|
||||||
is_schema_db(lex->et->dbname.str)))
|
is_schema_db(lex->et->dbname.str)) ||
|
||||||
|
(lex->sql_command == SQLCOM_ALTER_EVENT && lex->spname &&
|
||||||
|
(check_access(thd, EVENT_ACL, lex->spname->m_db.str, 0, 0, 0,
|
||||||
|
is_schema_db(lex->spname->m_db.str)))))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (end_active_trans(thd))
|
if (end_active_trans(thd))
|
||||||
|
Reference in New Issue
Block a user