Files
tidb/tests/integrationtest/t/executor/explain.test

165 lines
5.2 KiB
Plaintext

# TestExplainCartesianJoin
drop table if exists t;
create table t (v int);
explain format = 'brief' select * from t t1, t t2;
explain format = 'brief' select * from t t1 where exists (select 1 from t t2 where t2.v > t1.v);
explain format = 'brief' select * from t t1 where exists (select 1 from t t2 where t2.v in (t1.v+1, t1.v+2));
explain format = 'brief' select * from t t1, t t2 where t1.v = t2.v;
# TestExplainWrite
drop table if exists t;
create table t (a int);
--disable_result_log
explain analyze insert into t select 1;
--enable_result_log
select * from t;
--disable_result_log
explain analyze update t set a=2 where a=1;
--enable_result_log
select * from t;
--disable_result_log
explain format = 'brief' insert into t select 1;
--enable_result_log
select * from t;
--disable_result_log
explain analyze insert into t select 1;
explain analyze replace into t values (3);
--enable_result_log
select * from t order by a;
# TestExplainStatementsSummary
desc format='brief' select * from information_schema.statements_summary;
desc format='brief' select * from information_schema.statements_summary where digest is null;
desc format='brief' select * from information_schema.statements_summary where digest = 'abcdefg';
desc format='brief' select * from information_schema.statements_summary where digest in ('a','b','c');
# TestFix29401
drop table if exists tt123;
CREATE TABLE tt123 (
id int(11) NOT NULL,
a bigint(20) DEFAULT NULL,
b char(20) DEFAULT NULL,
c datetime DEFAULT NULL,
d double DEFAULT NULL,
e json DEFAULT NULL,
f decimal(40,6) DEFAULT NULL,
PRIMARY KEY (id) /*T![clustered_index] CLUSTERED */,
KEY a (a),
KEY b (b),
KEY c (c),
KEY d (d),
KEY f (f)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
explain format='brief' select /*+ inl_hash_join(t1) */ * from tt123 t1 join tt123 t2 on t1.b=t2.e;
# TestIssue35105
drop table if exists t;
create table t (a int primary key);
insert into t values (2);
set @@tidb_constraint_check_in_place=1;
-- error 1062
explain analyze insert into t values (1), (2), (3);
select * from t;
set @@tidb_constraint_check_in_place=DEFAULT;
# TestExplainFormatPlanCache
drop table if exists t;
create table t(a int);
set @@session.tidb_enable_non_prepared_plan_cache = 1;
select * from t limit 1;
select * from t limit 1;
explain format = 'plan_cache' select * from (select * from t) t1 limit 1;
show warnings;
explain format = 'plan_cache' select * from (select * from t) t1 limit 1;
select @@last_plan_from_cache;
--disable_result_log
explain analyze format = 'plan_cache' select * from (select * from t) t1 limit 1;
--enable_result_log
show warnings;
--disable_result_log
explain analyze format = 'plan_cache' select * from (select * from t) t1 limit 1;
--enable_result_log
select @@last_plan_from_cache;
explain format = 'plan_cache' select * from t;
show warnings;
explain format = 'plan_cache' select * from t;
select @@last_plan_from_cache;
--disable_result_log
explain analyze format = 'plan_cache' select * from t;
--enable_result_log
show warnings;
--disable_result_log
explain analyze format = 'plan_cache' select * from t;
--enable_result_log
select @@last_plan_from_cache;
explain select * from t;
select @@last_plan_from_cache;
explain format = 'brief' select * from t;
select @@last_plan_from_cache;
explain format = 'dot' select * from t;
select @@last_plan_from_cache;
explain format = 'hint' select * from t;
select @@last_plan_from_cache;
explain format = 'row' select * from t;
select @@last_plan_from_cache;
explain format = 'verbose' select * from t;
select @@last_plan_from_cache;
explain format = 'traditional' select * from t;
select @@last_plan_from_cache;
explain format = 'binary' select * from t;
select @@last_plan_from_cache;
explain format = 'tidb_json' select * from t;
select @@last_plan_from_cache;
explain format = 'cost_trace' select * from t;
select @@last_plan_from_cache;
set @@session.tidb_enable_non_prepared_plan_cache = DEFAULT;
# TestExplainPrivileges
drop table if exists t;
drop view if exists v;
drop user if exists 'explain'@'%';
create table t (id int);
create view v as select * from t;
create user 'explain'@'%';
grant select on executor__explain.v to 'explain'@'%';
connect (conn1, localhost, explain,,);
show databases;
use executor__explain;
select * from v;
-- error 1345
explain format = 'brief' select * from v;
connection default;
grant show view on executor__explain.v to 'explain'@'%';
connection conn1;
explain format = 'brief' select * from v;
connection default;
revoke select on executor__explain.v from 'explain'@'%';
connection conn1;
-- error 1142
explain format = 'brief' select * from v;
connection default;
create table t1 (i int);
create table t2 (j int);
create table t3 (k int, secret int);
create view v1 as select * from t1;
create view v2 as select * from v1, t2;
create view v3 as select k from t3;
grant select, show view on executor__explain.v2 to 'explain'@'%';
grant show view on executor__explain.v1 to 'explain'@'%';
grant select, show view on executor__explain.t3 to 'explain'@'%';
grant select, show view on executor__explain.v3 to 'explain'@'%';
connection conn1;
-- error 1142
explain select * from v1;
-- error 1345
explain select * from v2;
explain select * from t3;
explain select * from v3;
disconnect conn1;