MDEV-7813 analyze_stmt fails with --embedded flag set
Moved the privilege checking code which does not apply for embedded to a separate test case.
This commit is contained in:
parent
3578419b77
commit
4fbba09824
@ -315,43 +315,3 @@ id select_type table type possible_keys key key_len ref rows r_rows filtered r_f
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 10 10.00 100.00 100.00 Using where
|
||||
1 SIMPLE t2 ref a a 5 test.t1.a 2 0.20 100.00 100.00 Using index
|
||||
drop table t1,t2;
|
||||
#
|
||||
# MDEV-7025 and MDEV-7027 ANALYZE SELECT/INSERT/UPDATE/DELETE from a
|
||||
# view does not check access permissions on the underlying table
|
||||
#
|
||||
create database db;
|
||||
use db;
|
||||
create table t1 (i int, c varchar(8));
|
||||
insert into t1 values (1,'foo'),(2,'bar'),(3,'baz'),(4,'qux');
|
||||
create view v1 as select * from t1 where i > 1;
|
||||
grant ALL on db.v1 to u1@localhost;
|
||||
connect con1,localhost,u1,,;
|
||||
select * from db.t1;
|
||||
ERROR 42000: SELECT command denied to user 'u1'@'localhost' for table 't1'
|
||||
explain select * from db.t1;
|
||||
ERROR 42000: SELECT command denied to user 'u1'@'localhost' for table 't1'
|
||||
analyze select * from db.t1;
|
||||
ERROR 42000: SELECT command denied to user 'u1'@'localhost' for table 't1'
|
||||
select * from db.v1;
|
||||
i c
|
||||
2 bar
|
||||
3 baz
|
||||
4 qux
|
||||
explain select * from db.v1;
|
||||
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||
analyze select * from db.v1;
|
||||
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||
UPDATE db.v1 SET i = 5;
|
||||
explain UPDATE db.v1 SET i = 5;
|
||||
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||
analyze UPDATE db.v1 SET i = 5;
|
||||
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||
DELETE FROM db.v1 WHERE i = 5;
|
||||
explain DELETE FROM db.v1 WHERE i = 5;
|
||||
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||
analyze DELETE FROM db.v1 WHERE i = 5;
|
||||
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||
disconnect con1;
|
||||
connection default;
|
||||
drop user u1@localhost;
|
||||
drop database db;
|
||||
|
40
mysql-test/r/analyze_stmt_privileges.result
Normal file
40
mysql-test/r/analyze_stmt_privileges.result
Normal file
@ -0,0 +1,40 @@
|
||||
#
|
||||
# MDEV-7025 and MDEV-7027 ANALYZE SELECT/INSERT/UPDATE/DELETE from a
|
||||
# view does not check access permissions on the underlying table
|
||||
#
|
||||
create database db;
|
||||
use db;
|
||||
create table t1 (i int, c varchar(8));
|
||||
insert into t1 values (1,'foo'),(2,'bar'),(3,'baz'),(4,'qux');
|
||||
create view v1 as select * from t1 where i > 1;
|
||||
grant ALL on db.v1 to u1@localhost;
|
||||
connect con1,localhost,u1,,;
|
||||
select * from db.t1;
|
||||
ERROR 42000: SELECT command denied to user 'u1'@'localhost' for table 't1'
|
||||
explain select * from db.t1;
|
||||
ERROR 42000: SELECT command denied to user 'u1'@'localhost' for table 't1'
|
||||
analyze select * from db.t1;
|
||||
ERROR 42000: SELECT command denied to user 'u1'@'localhost' for table 't1'
|
||||
select * from db.v1;
|
||||
i c
|
||||
2 bar
|
||||
3 baz
|
||||
4 qux
|
||||
explain select * from db.v1;
|
||||
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||
analyze select * from db.v1;
|
||||
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||
UPDATE db.v1 SET i = 5;
|
||||
explain UPDATE db.v1 SET i = 5;
|
||||
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||
analyze UPDATE db.v1 SET i = 5;
|
||||
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||
DELETE FROM db.v1 WHERE i = 5;
|
||||
explain DELETE FROM db.v1 WHERE i = 5;
|
||||
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||
analyze DELETE FROM db.v1 WHERE i = 5;
|
||||
ERROR HY000: ANALYZE/EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||
disconnect con1;
|
||||
connection default;
|
||||
drop user u1@localhost;
|
||||
drop database db;
|
@ -258,50 +258,3 @@ insert into t2 values (0),(1);
|
||||
analyze select * from t1 straight_join t2 force index(a) where t2.a=t1.a;
|
||||
|
||||
drop table t1,t2;
|
||||
|
||||
# Analyze <statement> privilege checks testcase.
|
||||
--echo #
|
||||
--echo # MDEV-7025 and MDEV-7027 ANALYZE SELECT/INSERT/UPDATE/DELETE from a
|
||||
--echo # view does not check access permissions on the underlying table
|
||||
--echo #
|
||||
--enable_connect_log
|
||||
create database db;
|
||||
use db;
|
||||
create table t1 (i int, c varchar(8));
|
||||
insert into t1 values (1,'foo'),(2,'bar'),(3,'baz'),(4,'qux');
|
||||
create view v1 as select * from t1 where i > 1;
|
||||
grant ALL on db.v1 to u1@localhost;
|
||||
|
||||
--connect (con1,localhost,u1,,)
|
||||
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
select * from db.t1;
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
explain select * from db.t1;
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
analyze select * from db.t1;
|
||||
|
||||
select * from db.v1;
|
||||
--error ER_VIEW_NO_EXPLAIN
|
||||
explain select * from db.v1;
|
||||
--error ER_VIEW_NO_EXPLAIN
|
||||
analyze select * from db.v1;
|
||||
|
||||
UPDATE db.v1 SET i = 5;
|
||||
--error ER_VIEW_NO_EXPLAIN
|
||||
explain UPDATE db.v1 SET i = 5;
|
||||
--error ER_VIEW_NO_EXPLAIN
|
||||
analyze UPDATE db.v1 SET i = 5;
|
||||
|
||||
DELETE FROM db.v1 WHERE i = 5;
|
||||
--error ER_VIEW_NO_EXPLAIN
|
||||
explain DELETE FROM db.v1 WHERE i = 5;
|
||||
--error ER_VIEW_NO_EXPLAIN
|
||||
analyze DELETE FROM db.v1 WHERE i = 5;
|
||||
|
||||
|
||||
--disconnect con1
|
||||
--connection default
|
||||
|
||||
drop user u1@localhost;
|
||||
drop database db;
|
||||
|
49
mysql-test/t/analyze_stmt_privileges.test
Normal file
49
mysql-test/t/analyze_stmt_privileges.test
Normal file
@ -0,0 +1,49 @@
|
||||
# Analyze <statement> privilege checks testcase.
|
||||
--source include/not_embedded.inc
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-7025 and MDEV-7027 ANALYZE SELECT/INSERT/UPDATE/DELETE from a
|
||||
--echo # view does not check access permissions on the underlying table
|
||||
--echo #
|
||||
--enable_connect_log
|
||||
create database db;
|
||||
use db;
|
||||
create table t1 (i int, c varchar(8));
|
||||
insert into t1 values (1,'foo'),(2,'bar'),(3,'baz'),(4,'qux');
|
||||
create view v1 as select * from t1 where i > 1;
|
||||
grant ALL on db.v1 to u1@localhost;
|
||||
|
||||
--connect (con1,localhost,u1,,)
|
||||
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
select * from db.t1;
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
explain select * from db.t1;
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
analyze select * from db.t1;
|
||||
|
||||
--sorted_result
|
||||
select * from db.v1;
|
||||
--error ER_VIEW_NO_EXPLAIN
|
||||
explain select * from db.v1;
|
||||
--error ER_VIEW_NO_EXPLAIN
|
||||
analyze select * from db.v1;
|
||||
|
||||
UPDATE db.v1 SET i = 5;
|
||||
--error ER_VIEW_NO_EXPLAIN
|
||||
explain UPDATE db.v1 SET i = 5;
|
||||
--error ER_VIEW_NO_EXPLAIN
|
||||
analyze UPDATE db.v1 SET i = 5;
|
||||
|
||||
DELETE FROM db.v1 WHERE i = 5;
|
||||
--error ER_VIEW_NO_EXPLAIN
|
||||
explain DELETE FROM db.v1 WHERE i = 5;
|
||||
--error ER_VIEW_NO_EXPLAIN
|
||||
analyze DELETE FROM db.v1 WHERE i = 5;
|
||||
|
||||
|
||||
--disconnect con1
|
||||
--connection default
|
||||
|
||||
drop user u1@localhost;
|
||||
drop database db;
|
Loading…
x
Reference in New Issue
Block a user