Commit 4fbba098 authored by Vicențiu Ciorbaru's avatar Vicențiu Ciorbaru

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.
parent 3578419b
......@@ -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;
#
# 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;
# 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;
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment