| 6961 | */ |
| 6962 | |
| 6963 | static void |
| 6964 | add_key_equal_fields(JOIN *join, KEY_FIELD **key_fields, uint and_level, |
| 6965 | Item_bool_func *cond, Item *field_item, |
| 6966 | bool eq_func, Item **val, |
| 6967 | uint num_values, table_map usable_tables, |
| 6968 | SARGABLE_PARAM **sargables, uint row_col_no= 0) |
| 6969 | { |
| 6970 | Field *field= ((Item_field *) (field_item->real_item()))->field; |
| 6971 | add_key_field(join, key_fields, and_level, cond, field, |
| 6972 | eq_func, val, num_values, usable_tables, sargables, |
| 6973 | row_col_no); |
| 6974 | Item_equal *item_equal= field_item->get_item_equal(); |
| 6975 | if (item_equal) |
| 6976 | { |
| 6977 | /* |
| 6978 | Add to the set of possible key values every substitution of |
| 6979 | the field for an equal field included into item_equal |
| 6980 | */ |
| 6981 | Item_equal_fields_iterator it(*item_equal); |
| 6982 | while (it++) |
| 6983 | { |
| 6984 | Field *equal_field= it.get_curr_field(); |
| 6985 | if (!field->eq(equal_field)) |
| 6986 | { |
| 6987 | add_key_field(join, key_fields, and_level, cond, equal_field, |
| 6988 | eq_func, val, num_values, usable_tables, |
| 6989 | sargables, row_col_no); |
| 6990 | } |
| 6991 | } |
| 6992 | } |
| 6993 | } |
| 6994 | |
| 6995 | |
| 6996 | /** |
no test coverage detected