mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
A fix (Bug#5219: Cannot use '||' with MBRContains(..)).
This commit is contained in:
@ -1302,14 +1302,14 @@ tree_and(PARAM *param,SEL_TREE *tree1,SEL_TREE *tree2)
|
||||
if (*key2 && !(*key2)->simple_key())
|
||||
flag|=CLONE_KEY2_MAYBE;
|
||||
*key1=key_and(*key1,*key2,flag);
|
||||
if ((*key1)->type == SEL_ARG::IMPOSSIBLE)
|
||||
if (*key1 && (*key1)->type == SEL_ARG::IMPOSSIBLE)
|
||||
{
|
||||
tree1->type= SEL_TREE::IMPOSSIBLE;
|
||||
#ifdef EXTRA_DEBUG
|
||||
(*key1)->test_use_count(*key1);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
#ifdef EXTRA_DEBUG
|
||||
(*key1)->test_use_count(*key1);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
DBUG_RETURN(tree1);
|
||||
@ -1401,6 +1401,12 @@ key_and(SEL_ARG *key1,SEL_ARG *key2,uint clone_flag)
|
||||
return key2;
|
||||
if (!key2)
|
||||
return key1;
|
||||
if ((key1->min_flag | key2->min_flag) & GEOM_FLAG)
|
||||
{
|
||||
key1->free_tree();
|
||||
key2->free_tree();
|
||||
return 0; // Can't optimize this
|
||||
}
|
||||
if (key1->part != key2->part)
|
||||
{
|
||||
if (key1->part > key2->part)
|
||||
@ -1538,7 +1544,8 @@ key_or(SEL_ARG *key1,SEL_ARG *key2)
|
||||
key1->use_count--;
|
||||
key2->use_count--;
|
||||
|
||||
if (key1->part != key2->part)
|
||||
if (key1->part != key2->part ||
|
||||
(key1->min_flag | key2->min_flag) & GEOM_FLAG)
|
||||
{
|
||||
key1->free_tree();
|
||||
key2->free_tree();
|
||||
|
Reference in New Issue
Block a user