Commit 32d1ad79 authored by kaa@polly.local's avatar kaa@polly.local

Fix for bug #24261 "crash when WHERE contains NOT IN ('<negative value>') for unsigned column type"

When calculating a SEL_TREE for the "c_{i-1} < X < c_i" interval, check if the tree returned for the "-inf < X < c_0" interval is NULL
parent 8471897f
...@@ -342,4 +342,8 @@ select some_id from t1 where some_id not in(-4,-1,3423534,2342342); ...@@ -342,4 +342,8 @@ select some_id from t1 where some_id not in(-4,-1,3423534,2342342);
some_id some_id
1 1
2 2
select some_id from t1 where some_id not in('-1', '0');
some_id
1
2
drop table t1; drop table t1;
...@@ -231,4 +231,11 @@ insert into t1 values (1),(2); ...@@ -231,4 +231,11 @@ insert into t1 values (1),(2);
select some_id from t1 where some_id not in(2,-1); select some_id from t1 where some_id not in(2,-1);
select some_id from t1 where some_id not in(-4,-1,-4); select some_id from t1 where some_id not in(-4,-1,-4);
select some_id from t1 where some_id not in(-4,-1,3423534,2342342); select some_id from t1 where some_id not in(-4,-1,3423534,2342342);
#
# BUG#24261: crash when WHERE contains NOT IN ('<negative value>') for unsigned column type
#
select some_id from t1 where some_id not in('-1', '0');
drop table t1; drop table t1;
...@@ -3703,7 +3703,8 @@ static SEL_TREE *get_func_mm_tree(PARAM *param, Item_func *cond_func, ...@@ -3703,7 +3703,8 @@ static SEL_TREE *get_func_mm_tree(PARAM *param, Item_func *cond_func,
for (uint idx= 0; idx < param->keys; idx++) for (uint idx= 0; idx < param->keys; idx++)
{ {
SEL_ARG *new_interval, *last_val; SEL_ARG *new_interval, *last_val;
if (((new_interval= tree2->keys[idx])) && if (((new_interval= tree2->keys[idx])) &&
(tree->keys[idx]) &&
((last_val= tree->keys[idx]->last()))) ((last_val= tree->keys[idx]->last())))
{ {
new_interval->min_value= last_val->max_value; new_interval->min_value= last_val->max_value;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment