mirror of
https://github.com/MariaDB/server.git
synced 2025-05-20 13:13:59 +03:00
away. During optimization stage the WHERE conditions can be changed or even be removed at all if they know for sure to be true of false. Thus they aren't showed in the EXPLAIN EXTENDED which prints conditions after optimization. Now if all elements of an Item_cond were removed this Item_cond is substituted for an Item_int with the int value of the Item_cond. If there were conditions that were totally optimized away then values of the saved cond_value and having_value will be printed instead. mysql-test/t/explain.test: Added a test case for the bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized away. mysql-test/r/subselect.result: Corrected test case result after fix for bug#22331. mysql-test/r/func_test.result: Corrected test case result after fix for bug#22331. mysql-test/r/explain.result: Added a test case for the bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized away. sql/sql_select.cc: Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized away. Now if all elements of an Item_cond were removed this Item_cond is substituted for an Item_int with the int value of the Item_cond. If there were conditions that were totally optimized away then values of the saved cond_value and having_value will be printed instead. sql/sql_lex.h: Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized away. The cond_value and the having_value variables are added to the SELECT_LEX class. sql/sql_lex.cc: Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized away. The initialization of the cond_value and the having_value variables. sql/sql_select.h: Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were optimized away. Now having_value is also stored in the JOIN class.
69 lines
1.8 KiB
Plaintext
69 lines
1.8 KiB
Plaintext
#
|
|
# Test of different EXPLAIN's
|
|
|
|
--disable_warnings
|
|
drop table if exists t1;
|
|
--enable_warnings
|
|
create table t1 (id int not null, str char(10), unique(str));
|
|
explain select * from t1;
|
|
insert into t1 values (1, null),(2, null),(3, "foo"),(4, "bar");
|
|
select * from t1 where str is null;
|
|
select * from t1 where str="foo";
|
|
explain select * from t1 where str is null;
|
|
explain select * from t1 where str="foo";
|
|
explain select * from t1 ignore key (str) where str="foo";
|
|
explain select * from t1 use key (str,str) where str="foo";
|
|
|
|
#The following should give errors
|
|
--error 1176
|
|
explain select * from t1 use key (str,str,foo) where str="foo";
|
|
--error 1176
|
|
explain select * from t1 ignore key (str,str,foo) where str="foo";
|
|
drop table t1;
|
|
|
|
explain select 1;
|
|
|
|
create table t1 (a int not null);
|
|
explain select count(*) from t1;
|
|
insert into t1 values(1);
|
|
explain select count(*) from t1;
|
|
insert into t1 values(1);
|
|
explain select count(*) from t1;
|
|
drop table t1;
|
|
|
|
#
|
|
# Bug #3403 Wrong encoding in EXPLAIN SELECT output
|
|
#
|
|
set names koi8r;
|
|
create table ÔÁÂ (ËÏÌ0 int, ËÏÌ1 int, key ÉÎÄ0 (ËÏÌ0), key ÉÎÄ01 (ËÏÌ0,ËÏÌ1));
|
|
insert into ÔÁÂ (ËÏÌ0) values (1);
|
|
insert into ÔÁÂ (ËÏÌ0) values (2);
|
|
explain select ËÏÌ0 from ÔÁÂ where ËÏÌ0=1;
|
|
drop table ÔÁÂ;
|
|
set names latin1;
|
|
|
|
# End of 4.1 tests
|
|
|
|
|
|
#
|
|
# Bug#15463: EXPLAIN SELECT..INTO hangs the client (QB, command line)
|
|
#
|
|
select 3 into @v1;
|
|
explain select 3 into @v1;
|
|
|
|
#
|
|
# Bug#22331: Wrong WHERE in EXPLAIN EXTENDED when all expressions were
|
|
# optimized away.
|
|
#
|
|
create table t1(f1 int, f2 int);
|
|
insert into t1 values (1,1);
|
|
create view v1 as select * from t1 where f1=1;
|
|
explain extended select * from v1 where f2=1;
|
|
explain extended select * from t1 where 0;
|
|
explain extended select * from t1 where 1;
|
|
explain extended select * from t1 having 0;
|
|
explain extended select * from t1 having 1;
|
|
drop table t1;
|
|
|
|
# End of 5.0 tests.
|