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 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
|
1 SIMPLE t2 ref a a 5 test.t1.a 2 0.20 100.00 100.00 Using index
|
||||||
drop table t1,t2;
|
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;
|
analyze select * from t1 straight_join t2 force index(a) where t2.a=t1.a;
|
||||||
|
|
||||||
drop table t1,t2;
|
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