Merge mysql.com:/home/jimw/my/mysql-5.1-17139
into mysql.com:/home/jimw/my/mysql-5.1-clean
This commit is contained in:
commit
7e96d6eeef
23
mysql-test/r/partition_grant.result
Normal file
23
mysql-test/r/partition_grant.result
Normal file
@ -0,0 +1,23 @@
|
||||
drop schema if exists mysqltest_1;
|
||||
create schema mysqltest_1;
|
||||
use mysqltest_1;
|
||||
create table t1 (a int) partition by list (a) (partition p1 values in (1), partition p2 values in (2), partition p3 values in (3));
|
||||
insert into t1 values (1),(2);
|
||||
grant select,alter on mysqltest_1.* to mysqltest_1@localhost;
|
||||
show grants for current_user;
|
||||
Grants for mysqltest_1@localhost
|
||||
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost'
|
||||
GRANT SELECT, ALTER ON `mysqltest_1`.* TO 'mysqltest_1'@'localhost'
|
||||
alter table t1 add b int;
|
||||
alter table t1 drop partition p2;
|
||||
ERROR 42000: DROP command denied to user 'mysqltest_1'@'localhost' for table 't1'
|
||||
grant drop on mysqltest_1.* to mysqltest_1@localhost;
|
||||
alter table t1 drop partition p2;
|
||||
revoke alter on mysqltest_1.* from mysqltest_1@localhost;
|
||||
alter table t1 drop partition p3;
|
||||
ERROR 42000: ALTER command denied to user 'mysqltest_1'@'localhost' for table 't1'
|
||||
revoke select,alter,drop on mysqltest_1.* from mysqltest_1@localhost;
|
||||
drop user mysqltest_1@localhost;
|
||||
drop table t1;
|
||||
drop schema mysqltest_1;
|
||||
End of 5.1 tests
|
51
mysql-test/t/partition_grant.test
Normal file
51
mysql-test/t/partition_grant.test
Normal file
@ -0,0 +1,51 @@
|
||||
-- source include/have_partition.inc
|
||||
# Grant tests not performed with embedded server
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
--disable_warnings
|
||||
drop schema if exists mysqltest_1;
|
||||
--enable_warnings
|
||||
|
||||
|
||||
#
|
||||
# Bug #17139: ALTER TABLE ... DROP PARTITION should require DROP privilege
|
||||
#
|
||||
|
||||
create schema mysqltest_1;
|
||||
use mysqltest_1;
|
||||
|
||||
create table t1 (a int) partition by list (a) (partition p1 values in (1), partition p2 values in (2), partition p3 values in (3));
|
||||
insert into t1 values (1),(2);
|
||||
|
||||
grant select,alter on mysqltest_1.* to mysqltest_1@localhost;
|
||||
|
||||
connect (conn1,localhost,mysqltest_1,,mysqltest_1);
|
||||
show grants for current_user;
|
||||
alter table t1 add b int;
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
alter table t1 drop partition p2;
|
||||
disconnect conn1;
|
||||
|
||||
connection default;
|
||||
grant drop on mysqltest_1.* to mysqltest_1@localhost;
|
||||
|
||||
connect (conn2,localhost,mysqltest_1,,mysqltest_1);
|
||||
alter table t1 drop partition p2;
|
||||
disconnect conn2;
|
||||
|
||||
connection default;
|
||||
revoke alter on mysqltest_1.* from mysqltest_1@localhost;
|
||||
|
||||
connect (conn3,localhost,mysqltest_1,,mysqltest_1);
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
alter table t1 drop partition p3;
|
||||
disconnect conn3;
|
||||
|
||||
connection default;
|
||||
|
||||
revoke select,alter,drop on mysqltest_1.* from mysqltest_1@localhost;
|
||||
drop user mysqltest_1@localhost;
|
||||
drop table t1;
|
||||
drop schema mysqltest_1;
|
||||
|
||||
--echo End of 5.1 tests
|
@ -2991,6 +2991,11 @@ end_with_restore_list:
|
||||
#else
|
||||
{
|
||||
ulong priv=0;
|
||||
ulong priv_needed= ALTER_ACL;
|
||||
/* We also require DROP priv for ALTER TABLE ... DROP PARTITION */
|
||||
if (lex->alter_info.flags & ALTER_DROP_PARTITION)
|
||||
priv_needed|= DROP_ACL;
|
||||
|
||||
if (lex->name && (!lex->name[0] || strlen(lex->name) > NAME_LEN))
|
||||
{
|
||||
my_error(ER_WRONG_TABLE_NAME, MYF(0), lex->name);
|
||||
@ -3015,7 +3020,7 @@ end_with_restore_list:
|
||||
else
|
||||
select_lex->db= first_table->db;
|
||||
}
|
||||
if (check_access(thd, ALTER_ACL, first_table->db,
|
||||
if (check_access(thd, priv_needed, first_table->db,
|
||||
&first_table->grant.privilege, 0, 0,
|
||||
test(first_table->schema_table)) ||
|
||||
check_access(thd,INSERT_ACL | CREATE_ACL,select_lex->db,&priv,0,0,
|
||||
@ -3026,7 +3031,7 @@ end_with_restore_list:
|
||||
goto error; /* purecov: inspected */
|
||||
if (grant_option)
|
||||
{
|
||||
if (check_grant(thd, ALTER_ACL, all_tables, 0, UINT_MAX, 0))
|
||||
if (check_grant(thd, priv_needed, all_tables, 0, UINT_MAX, 0))
|
||||
goto error;
|
||||
if (lex->name && !test_all_bits(priv,INSERT_ACL | CREATE_ACL))
|
||||
{ // Rename of table
|
||||
|
Loading…
x
Reference in New Issue
Block a user