mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
# No BUG#, a case brought from 5.2's innodb_mysql_lock.test
- Fix a crash in nested semi-join subquery processing
This commit is contained in:
parent
f75fd03ea9
commit
6765cc3017
7 changed files with 94 additions and 2 deletions
|
@ -1,4 +1,5 @@
|
|||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t11,t12;
|
||||
drop view if exists v2;
|
||||
set @save_optimizer_switch=@@optimizer_switch;
|
||||
set @@optimizer_switch="partial_match_rowid_merge=off,partial_match_table_scan=off";
|
||||
select (select 2);
|
||||
|
@ -4937,3 +4938,20 @@ SELECT * FROM t2 UNION SELECT * FROM t2
|
|||
ORDER BY (SELECT * FROM t1 WHERE MATCH(a) AGAINST ('+abc' IN BOOLEAN MODE));
|
||||
DROP TABLE t1,t2;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# No BUG#, a case brought from 5.2's innodb_mysql_lock.test
|
||||
#
|
||||
create table t1 (i int not null primary key);
|
||||
insert into t1 values (1),(2),(3),(4),(5);
|
||||
create table t2 (j int not null primary key);
|
||||
insert into t2 values (1),(2),(3),(4),(5);
|
||||
create table t3 (k int not null primary key);
|
||||
insert into t3 values (1),(2),(3);
|
||||
create view v2 as select t2.j as j from t2 where t2.j in (select t1.i from t1);
|
||||
select * from t3 where k in (select j from v2);
|
||||
k
|
||||
1
|
||||
2
|
||||
3
|
||||
drop table t1,t2,t3;
|
||||
drop view v2;
|
||||
|
|
|
@ -3,6 +3,7 @@ select @@optimizer_switch like '%materialization=on%';
|
|||
1
|
||||
set optimizer_switch='materialization=off';
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t11,t12;
|
||||
drop view if exists v2;
|
||||
set @save_optimizer_switch=@@optimizer_switch;
|
||||
set @@optimizer_switch="partial_match_rowid_merge=off,partial_match_table_scan=off";
|
||||
select (select 2);
|
||||
|
@ -4941,6 +4942,23 @@ SELECT * FROM t2 UNION SELECT * FROM t2
|
|||
ORDER BY (SELECT * FROM t1 WHERE MATCH(a) AGAINST ('+abc' IN BOOLEAN MODE));
|
||||
DROP TABLE t1,t2;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# No BUG#, a case brought from 5.2's innodb_mysql_lock.test
|
||||
#
|
||||
create table t1 (i int not null primary key);
|
||||
insert into t1 values (1),(2),(3),(4),(5);
|
||||
create table t2 (j int not null primary key);
|
||||
insert into t2 values (1),(2),(3),(4),(5);
|
||||
create table t3 (k int not null primary key);
|
||||
insert into t3 values (1),(2),(3);
|
||||
create view v2 as select t2.j as j from t2 where t2.j in (select t1.i from t1);
|
||||
select * from t3 where k in (select j from v2);
|
||||
k
|
||||
1
|
||||
2
|
||||
3
|
||||
drop table t1,t2,t3;
|
||||
drop view v2;
|
||||
set optimizer_switch=default;
|
||||
select @@optimizer_switch like '%materialization=on%';
|
||||
@@optimizer_switch like '%materialization=on%'
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
set optimizer_switch='materialization=off,semijoin=off';
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t11,t12;
|
||||
drop view if exists v2;
|
||||
set @save_optimizer_switch=@@optimizer_switch;
|
||||
set @@optimizer_switch="partial_match_rowid_merge=off,partial_match_table_scan=off";
|
||||
select (select 2);
|
||||
|
@ -4938,4 +4939,21 @@ SELECT * FROM t2 UNION SELECT * FROM t2
|
|||
ORDER BY (SELECT * FROM t1 WHERE MATCH(a) AGAINST ('+abc' IN BOOLEAN MODE));
|
||||
DROP TABLE t1,t2;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# No BUG#, a case brought from 5.2's innodb_mysql_lock.test
|
||||
#
|
||||
create table t1 (i int not null primary key);
|
||||
insert into t1 values (1),(2),(3),(4),(5);
|
||||
create table t2 (j int not null primary key);
|
||||
insert into t2 values (1),(2),(3),(4),(5);
|
||||
create table t3 (k int not null primary key);
|
||||
insert into t3 values (1),(2),(3);
|
||||
create view v2 as select t2.j as j from t2 where t2.j in (select t1.i from t1);
|
||||
select * from t3 where k in (select j from v2);
|
||||
k
|
||||
1
|
||||
2
|
||||
3
|
||||
drop table t1,t2,t3;
|
||||
drop view v2;
|
||||
set optimizer_switch=default;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
set optimizer_switch='semijoin=off';
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t11,t12;
|
||||
drop view if exists v2;
|
||||
set @save_optimizer_switch=@@optimizer_switch;
|
||||
set @@optimizer_switch="partial_match_rowid_merge=off,partial_match_table_scan=off";
|
||||
select (select 2);
|
||||
|
@ -4938,4 +4939,21 @@ SELECT * FROM t2 UNION SELECT * FROM t2
|
|||
ORDER BY (SELECT * FROM t1 WHERE MATCH(a) AGAINST ('+abc' IN BOOLEAN MODE));
|
||||
DROP TABLE t1,t2;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# No BUG#, a case brought from 5.2's innodb_mysql_lock.test
|
||||
#
|
||||
create table t1 (i int not null primary key);
|
||||
insert into t1 values (1),(2),(3),(4),(5);
|
||||
create table t2 (j int not null primary key);
|
||||
insert into t2 values (1),(2),(3),(4),(5);
|
||||
create table t3 (k int not null primary key);
|
||||
insert into t3 values (1),(2),(3);
|
||||
create view v2 as select t2.j as j from t2 where t2.j in (select t1.i from t1);
|
||||
select * from t3 where k in (select j from v2);
|
||||
k
|
||||
1
|
||||
2
|
||||
3
|
||||
drop table t1,t2,t3;
|
||||
drop view v2;
|
||||
set optimizer_switch=default;
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
# Initialise
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t11,t12;
|
||||
drop view if exists v2;
|
||||
--enable_warnings
|
||||
|
||||
set @save_optimizer_switch=@@optimizer_switch;
|
||||
|
@ -4206,3 +4207,23 @@ DROP TABLE t1,t2;
|
|||
--enable_result_log
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
--echo #
|
||||
--echo # No BUG#, a case brought from 5.2's innodb_mysql_lock.test
|
||||
--echo #
|
||||
|
||||
create table t1 (i int not null primary key);
|
||||
insert into t1 values (1),(2),(3),(4),(5);
|
||||
|
||||
create table t2 (j int not null primary key);
|
||||
insert into t2 values (1),(2),(3),(4),(5);
|
||||
|
||||
create table t3 (k int not null primary key);
|
||||
insert into t3 values (1),(2),(3);
|
||||
|
||||
create view v2 as select t2.j as j from t2 where t2.j in (select t1.i from t1);
|
||||
|
||||
select * from t3 where k in (select j from v2);
|
||||
|
||||
drop table t1,t2,t3;
|
||||
drop view v2;
|
||||
|
|
|
@ -803,7 +803,7 @@ static bool convert_subq_to_sj(JOIN *parent_join, Item_in_subselect *subq_pred)
|
|||
sj_nest->nested_join->sj_corr_tables= subq_pred->used_tables();
|
||||
sj_nest->nested_join->sj_depends_on= subq_pred->used_tables() |
|
||||
subq_pred->left_expr->used_tables();
|
||||
sj_nest->sj_on_expr= subq_lex->where;
|
||||
sj_nest->sj_on_expr= subq_lex->join->conds;
|
||||
|
||||
/*
|
||||
Create the IN-equalities and inject them into semi-join's ON expression.
|
||||
|
|
|
@ -553,7 +553,6 @@ JOIN::prepare(Item ***rref_pointer_array,
|
|||
}
|
||||
|
||||
int res= check_and_do_in_subquery_rewrites(this);
|
||||
//psergey-merge: if (!thd->lex->view_prepare_mode && !(select_options & SELECT_DESCRIBE))
|
||||
|
||||
select_lex->fix_prepare_information(thd, &conds, &having);
|
||||
|
||||
|
|
Loading…
Reference in a new issue