MDEV-5284 Assertion `!(*expr)->fixed' fails in replace_where_subcondition with IN suquery
This commit is contained in:
parent
441192bfb0
commit
b468cd4749
@ -11,3 +11,10 @@ REVERSE(EXISTS(SELECT RAND() FROM t1))
|
|||||||
0
|
0
|
||||||
SET GLOBAL debug=@orig_debug;
|
SET GLOBAL debug=@orig_debug;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
create table t1 (i int);
|
||||||
|
insert into t1 values (1),(2);
|
||||||
|
select * from t1 where (i < 200 or i = 300) and i in (select i from t1);
|
||||||
|
i
|
||||||
|
1
|
||||||
|
2
|
||||||
|
drop table t1;
|
||||||
|
@ -15,3 +15,13 @@ SELECT SUM(EXISTS(SELECT RAND() FROM t1)) FROM t1;
|
|||||||
SELECT REVERSE(EXISTS(SELECT RAND() FROM t1));
|
SELECT REVERSE(EXISTS(SELECT RAND() FROM t1));
|
||||||
SET GLOBAL debug=@orig_debug;
|
SET GLOBAL debug=@orig_debug;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# MDEV-5284 Assertion `!(*expr)->fixed' fails in replace_where_subcondition with IN suquery
|
||||||
|
#
|
||||||
|
|
||||||
|
create table t1 (i int);
|
||||||
|
insert into t1 values (1),(2);
|
||||||
|
select * from t1 where (i < 200 or i = 300) and i in (select i from t1);
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
@ -420,9 +420,7 @@ Currently, solution #2 is implemented.
|
|||||||
|
|
||||||
static
|
static
|
||||||
bool subquery_types_allow_materialization(Item_in_subselect *in_subs);
|
bool subquery_types_allow_materialization(Item_in_subselect *in_subs);
|
||||||
static bool replace_where_subcondition(JOIN *join, Item **expr,
|
static bool replace_where_subcondition(JOIN *, Item **, Item *, Item *, bool);
|
||||||
Item *old_cond, Item *new_cond,
|
|
||||||
bool do_fix_fields);
|
|
||||||
static int subq_sj_candidate_cmp(Item_in_subselect* el1, Item_in_subselect* el2,
|
static int subq_sj_candidate_cmp(Item_in_subselect* el1, Item_in_subselect* el2,
|
||||||
void *arg);
|
void *arg);
|
||||||
static bool convert_subq_to_sj(JOIN *parent_join, Item_in_subselect *subq_pred);
|
static bool convert_subq_to_sj(JOIN *parent_join, Item_in_subselect *subq_pred);
|
||||||
@ -1293,7 +1291,7 @@ static bool replace_where_subcondition(JOIN *join, Item **expr,
|
|||||||
}
|
}
|
||||||
else if (item->type() == Item::COND_ITEM)
|
else if (item->type() == Item::COND_ITEM)
|
||||||
{
|
{
|
||||||
DBUG_ASSERT(!(*expr)->fixed);
|
DBUG_ASSERT(!do_fix_fields || !(*expr)->fixed);
|
||||||
replace_where_subcondition(join, li.ref(),
|
replace_where_subcondition(join, li.ref(),
|
||||||
old_cond, new_cond,
|
old_cond, new_cond,
|
||||||
do_fix_fields);
|
do_fix_fields);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user