Files
tidb/tests/integrationtest/t/expression/plan_cache.test

204 lines
6.8 KiB
Plaintext

# TestInMeetsPrepareAndExecute
prepare pr1 from 'select ? in (1,?,?)';
set @a=1, @b=2, @c=3;
execute pr1 using @a,@b,@c;
prepare pr2 from 'select 3 in (1,?,?)';
set @a=2, @b=3;
execute pr2 using @a,@b;
prepare pr3 from 'select ? in (1,2,3)';
set @a=4;
execute pr3 using @a;
prepare pr4 from 'select ? in (?,?,?)';
set @a=1, @b=2, @c=3, @d=4;
execute pr4 using @a,@b,@c,@d;
# TestOrderByFuncPlanCache
drop table if exists t;
create table t(a int);
prepare stmt from 'SELECT * FROM t order by rand()';
execute stmt;
prepare stmt from 'SELECT * FROM t order by now()';
execute stmt;
# TestSelectLimitPlanCache
drop table if exists t;
create table t(a int);
insert into t values(1), (2), (3);
set @@session.sql_select_limit = 1;
prepare stmt from 'SELECT * FROM t';
execute stmt;
set @@session.sql_select_limit = default;
execute stmt;
set @@session.sql_select_limit = 2;
execute stmt;
set @@session.sql_select_limit = 1;
execute stmt;
set @@session.sql_select_limit = default;
execute stmt;
set @@session.sql_select_limit = 2;
execute stmt;
set sql_select_limit=default;
# TestPreparePlanCache
set tidb_enable_prepared_plan_cache=ON;
drop table if exists t;
create table t(a int);
prepare stmt from 'select * from t where a = ?';
set @a = 1;
execute stmt using @a;
select @@last_plan_from_cache;
execute stmt using @a;
select @@last_plan_from_cache;
set tidb_enable_prepared_plan_cache=default;
# TestRowCountPlanCache
set tidb_enable_prepared_plan_cache=ON;
drop table if exists t;
create table t(a int auto_increment primary key);
prepare stmt from 'select row_count()';
insert into t values();
execute stmt;
insert into t values(),(),();
execute stmt;
set tidb_enable_prepared_plan_cache=default;
# TestCacheRegexpr
set tidb_enable_prepared_plan_cache=ON;
drop table if exists t1;
create table t1 (a varchar(40));
insert into t1 values ('C1'),('R1');
insert into mysql.expr_pushdown_blacklist values('regexp_like', 'tikv,tiflash,tidb', 'for test');
insert into mysql.expr_pushdown_blacklist values('regexp_substr', 'tikv,tiflash,tidb', 'for test');
insert into mysql.expr_pushdown_blacklist values('regexp_instr', 'tikv,tiflash,tidb', 'for test');
insert into mysql.expr_pushdown_blacklist values('regexp_replace', 'tikv,tiflash,tidb', 'for test');
admin reload expr_pushdown_blacklist;
set tidb_enable_vectorized_expression=ON;
prepare stmt1 from 'select a from t1 where a rlike ?';
prepare stmt2 from 'select a, regexp_substr(a, ?) from t1 order by a asc';
prepare stmt3 from 'select a, regexp_instr(a, ?) from t1 order by a asc';
prepare stmt4 from 'select a, regexp_replace(a, ?, ?) from t1 order by a asc';
set @a='^C.*';
set @r='xxxx';
execute stmt1 using @a;
execute stmt2 using @a;
execute stmt3 using @a;
execute stmt4 using @a, @r;
set @r='yyyy';
execute stmt4 using @a, @r;
set @a='^R.*';
execute stmt1 using @a;
execute stmt2 using @a;
execute stmt3 using @a;
execute stmt4 using @a, @r;
set tidb_enable_vectorized_expression=OFF;
set @a='^C.*';
set @r='xxxx';
execute stmt1 using @a;
execute stmt2 using @a;
execute stmt3 using @a;
execute stmt4 using @a, @r;
set @r='yyyy';
execute stmt4 using @a, @r;
set @a='^R.*';
execute stmt1 using @a;
execute stmt2 using @a;
execute stmt3 using @a;
execute stmt4 using @a, @r;
delete from mysql.expr_pushdown_blacklist where name like 'regexp%' and store_type = 'tikv,tiflash,tidb' and reason = 'for test';
admin reload expr_pushdown_blacklist;
set tidb_enable_prepared_plan_cache=default;
set tidb_enable_vectorized_expression=default;
# TestCacheLikeAndIlike
set tidb_enable_prepared_plan_cache=ON;
drop table if exists t1;
create table t1 (a varchar(40));
insert into t1 values ('C1'),('R1'),('c1'),('r1');
insert into mysql.expr_pushdown_blacklist values('like', 'tikv,tiflash,tidb', 'for test');
insert into mysql.expr_pushdown_blacklist values('ilike', 'tikv,tiflash,tidb', 'for test');
admin reload expr_pushdown_blacklist;
set tidb_enable_vectorized_expression=ON;
prepare stmt1 from 'select a from t1 where a like ? order by a asc';
prepare stmt2 from 'select a from t1 where a ilike ? order by a asc';
set @a='%C%';
execute stmt1 using @a;
execute stmt2 using @a;
set @a='%R%';
execute stmt1 using @a;
execute stmt2 using @a;
set tidb_enable_vectorized_expression=OFF;
set @a='%C%';
execute stmt1 using @a;
execute stmt2 using @a;
set @a='%R%';
execute stmt1 using @a;
execute stmt2 using @a;
delete from mysql.expr_pushdown_blacklist where name in ('like', 'ilike') and store_type = 'tikv,tiflash,tidb' and reason = 'for test';
admin reload expr_pushdown_blacklist;
set tidb_enable_prepared_plan_cache=default;
set tidb_enable_vectorized_expression=default;
# TestCacheAes
set tidb_enable_prepared_plan_cache=ON;
drop table if exists t1;
create table t1 (a varchar(40));
insert into t1 values ('a'),('b');
insert into mysql.expr_pushdown_blacklist values('aes_encrypt', 'tikv,tiflash,tidb', 'for test');
admin reload expr_pushdown_blacklist;
set tidb_enable_vectorized_expression=ON;
prepare stmt1 from 'select a, hex(aes_encrypt(a, ?)) from t1 order by a asc';
set @a='xx';
execute stmt1 using @a;
set @a='yy';
execute stmt1 using @a;
execute stmt2 using @a;
set tidb_enable_vectorized_expression=OFF;
set @a='xx';
execute stmt1 using @a;
set @a='yy';
execute stmt1 using @a;
execute stmt2 using @a;
delete from mysql.expr_pushdown_blacklist where name like 'aes_%' and store_type = 'tikv,tiflash,tidb' and reason = 'for test';
admin reload expr_pushdown_blacklist;
set tidb_enable_prepared_plan_cache=default;
set tidb_enable_vectorized_expression=default;
# TestCacheRefineArgs
set tidb_enable_prepared_plan_cache=ON;
drop table if exists t;
create table t(col_int int);
insert into t values(null);
prepare stmt from 'SELECT ((col_int is true) = ?) AS res FROM t';
set @p0='0.8';
execute stmt using @p0;
set @p0='0';
execute stmt using @p0;
prepare stmt from 'SELECT UCASE(?) < col_int from t;';
set @a1 = 'xayh7vrWVNqZtzlJmdJQUwAHnkI8Ec';
execute stmt using @a1;
delete from t;
insert into t values(1);
prepare stmt from 'SELECT col_int < ? FROM t';
set @p0='-184467440737095516167.1';
execute stmt using @p0;
set tidb_enable_prepared_plan_cache=default;
# TestCacheConstEval
set tidb_enable_prepared_plan_cache=ON;
drop table if exists t;
create table t(col_double double);
insert into t values (1);
set tidb_enable_vectorized_expression=false;
insert into mysql.expr_pushdown_blacklist values('cast', 'tikv,tiflash,tidb', 'for test');
admin reload expr_pushdown_blacklist;
prepare stmt from 'SELECT * FROM (SELECT col_double AS c0 FROM t) t WHERE (ABS((REPEAT(?, ?) OR 5617780767323292672)) < LN(EXP(c0)) + (? ^ ?))';
set @a1 = 'JuvkBX7ykVux20zQlkwDK2DFelgn7';
set @a2 = 1;
set @a3 = -112990.35179796701;
set @a4 = 87997.92704840179;
execute stmt using @a1, @a2, @a3, @a4;
set tidb_enable_vectorized_expression=default;
delete from mysql.expr_pushdown_blacklist where name = 'cast' and store_type = 'tikv,tiflash,tidb' and reason = 'for test';
admin reload expr_pushdown_blacklist;
set tidb_enable_prepared_plan_cache=default;