1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

Fix for BUG#13419: In "ref" optimizer, take into account that item=Item_func_in(x,y) is

not equivalent to "x=y" when item->negated == TRUE.
This commit is contained in:
sergefp@mysql.com
2005-09-23 13:43:20 +04:00
parent 4700631aa8
commit 40ba88ca07
3 changed files with 18 additions and 2 deletions

View File

@ -2140,7 +2140,6 @@ merge_key_fields(KEY_FIELD *start,KEY_FIELD *new_fields,KEY_FIELD *end,
field Field used in comparision
eq_func True if we used =, <=> or IS NULL
value Value used for comparison with field
Is NULL for BETWEEN and IN
usable_tables Tables which can be used for key optimization
NOTES
@ -2325,7 +2324,8 @@ add_key_fields(KEY_FIELD **key_fields,uint *and_level,
add_key_field(key_fields,*and_level,cond_func,
((Item_field*)(cond_func->key_item()->real_item()))->field,
cond_func->argument_count() == 2 &&
cond_func->functype() == Item_func::IN_FUNC,
cond_func->functype() == Item_func::IN_FUNC &&
!((Item_func_in*)cond_func)->negated,
cond_func->arguments()+1, cond_func->argument_count()-1,
usable_tables);
break;