mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge 10.11 into 11.0
This commit is contained in:
@ -7,6 +7,7 @@
|
||||
--source include/default_optimizer_switch.inc
|
||||
--source include/have_sequence.inc
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_sequence.inc
|
||||
#
|
||||
# TODO:
|
||||
# Add queries with:
|
||||
@ -1756,6 +1757,140 @@ SELECT MIN(pk), a FROM t1 WHERE pk <> 1 GROUP BY a;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-6768 Wrong result with agregate with join with no resultset
|
||||
--echo #
|
||||
|
||||
create table t1
|
||||
(
|
||||
PARENT_ID int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
PARENT_FIELD VARCHAR(10),
|
||||
PRIMARY KEY (PARENT_ID)
|
||||
) engine=innodb;
|
||||
|
||||
create table t2
|
||||
(
|
||||
CHILD_ID INT NOT NULL AUTO_INCREMENT,
|
||||
PARENT_ID INT NOT NULL,
|
||||
CHILD_FIELD varchar(10),
|
||||
PRIMARY KEY (CHILD_ID)
|
||||
)engine=innodb;
|
||||
|
||||
INSERT INTO t1 (PARENT_FIELD)
|
||||
SELECT 'AAAA';
|
||||
|
||||
INSERT INTO t2 (PARENT_ID, CHILD_FIELD)
|
||||
SELECT 1, 'BBBB';
|
||||
|
||||
explain select
|
||||
t1.PARENT_ID,
|
||||
min(CHILD_FIELD)
|
||||
from t1 straight_join t2
|
||||
where t1.PARENT_ID = 1
|
||||
and t1.PARENT_ID = t2.PARENT_ID
|
||||
and t2.CHILD_FIELD = "ZZZZ";
|
||||
|
||||
select
|
||||
t1.PARENT_ID,
|
||||
min(CHILD_FIELD)
|
||||
from t1 straight_join t2
|
||||
where t1.PARENT_ID = 1
|
||||
and t1.PARENT_ID = t2.PARENT_ID
|
||||
and t2.CHILD_FIELD = "ZZZZ";
|
||||
|
||||
select
|
||||
1,
|
||||
min(CHILD_FIELD)
|
||||
from t1 straight_join t2
|
||||
where t1.PARENT_ID = 1
|
||||
and t1.PARENT_ID = t2.PARENT_ID
|
||||
and t2.CHILD_FIELD = "ZZZZ";
|
||||
|
||||
select
|
||||
IFNULL(t1.PARENT_ID,1),
|
||||
min(CHILD_FIELD)
|
||||
from t1 straight_join t2
|
||||
where t1.PARENT_ID = 1
|
||||
and t1.PARENT_ID = t2.PARENT_ID
|
||||
and t2.CHILD_FIELD = "ZZZZ";
|
||||
|
||||
|
||||
--echo # Check that things works with MyISAM (which has different explain)
|
||||
|
||||
alter table t1 engine=myisam;
|
||||
alter table t2 engine=myisam;
|
||||
|
||||
explain select
|
||||
t1.PARENT_ID,
|
||||
min(CHILD_FIELD)
|
||||
from t1 straight_join t2
|
||||
where t1.PARENT_ID = 1
|
||||
and t1.PARENT_ID = t2.PARENT_ID
|
||||
and t2.CHILD_FIELD = "ZZZZ";
|
||||
|
||||
select
|
||||
t1.PARENT_ID,
|
||||
min(CHILD_FIELD)
|
||||
from t1 straight_join t2
|
||||
where t1.PARENT_ID = 1
|
||||
and t1.PARENT_ID = t2.PARENT_ID
|
||||
and t2.CHILD_FIELD = "ZZZZ";
|
||||
|
||||
drop table t1,t2;
|
||||
|
||||
--echo # Check that things works if sub queries are re-executed
|
||||
|
||||
create table t1 (a int primary key, b int);
|
||||
create table t2 (a int primary key, b int);
|
||||
create table t3 (a int primary key, b int);
|
||||
|
||||
insert into t1 values (1,1),(2,2),(3,3);
|
||||
insert into t2 values (1,1),(2,2),(3,3);
|
||||
insert into t3 values (1,1),(3,3);
|
||||
|
||||
explain
|
||||
select *,
|
||||
(select
|
||||
CONCAT('t2:', IFNULL(t2.a, 't2a-null'), ';',
|
||||
'min_t3_b:', IFNULL(min(t3.b), 't3b-null'))
|
||||
from t2,t3
|
||||
where t2.a=1 and t1.b = t3.a) as s1
|
||||
from t1;
|
||||
|
||||
select *,
|
||||
(select
|
||||
CONCAT('t2:', IFNULL(t2.a, 't2a-null'), ';',
|
||||
'min_t3_b:', IFNULL(min(t3.b), 't3b-null'))
|
||||
from t2,t3
|
||||
where t2.a=1 and t1.b = t3.a) as s1
|
||||
from t1;
|
||||
|
||||
drop table t1,t2,t3;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-31380: Assertion `s->table->opt_range_condition_rows <= s->found_records' failed
|
||||
--echo # (assertion in 10.6+, DBL_MAX costs in 10.5)
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY(a), KEY(b)) ENGINE=InnoDB;
|
||||
INSERT INTO t1 SELECT seq, seq FROM seq_1_to_100;
|
||||
|
||||
SET
|
||||
@tmp=@@optimizer_use_condition_selectivity,
|
||||
optimizer_use_condition_selectivity = 1,
|
||||
@tmp2=@@optimizer_trace,
|
||||
optimizer_trace=1;
|
||||
|
||||
SELECT DISTINCT * FROM t1 WHERE a IN (1, 2);
|
||||
|
||||
select
|
||||
CAST(json_value(json_extract(trace, '$**.chosen_access_method.cost'), '$[0]')
|
||||
as DOUBLE) < 1.0e100
|
||||
from information_schema.optimizer_trace;
|
||||
|
||||
set optimizer_use_condition_selectivity = @tmp, optimizer_trace=@tmp2;
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.5 tests
|
||||
--echo #
|
||||
|
Reference in New Issue
Block a user