| 7236 | |
| 7237 | |
| 7238 | void |
| 7239 | Item_bool_func2::add_key_fields_optimize_op(JOIN *join, KEY_FIELD **key_fields, |
| 7240 | uint *and_level, |
| 7241 | table_map usable_tables, |
| 7242 | SARGABLE_PARAM **sargables, |
| 7243 | bool equal_func) |
| 7244 | { |
| 7245 | /* If item is of type 'field op field/constant' add it to key_fields */ |
| 7246 | if (is_local_field(args[0])) |
| 7247 | { |
| 7248 | add_key_equal_fields(join, key_fields, *and_level, this, |
| 7249 | (Item_field*) args[0]->real_item(), equal_func, |
| 7250 | args + 1, 1, usable_tables, sargables); |
| 7251 | } |
| 7252 | else |
| 7253 | { |
| 7254 | Item_field *field= NULL; |
| 7255 | int value_idx= -1; |
| 7256 | /* Handle SUBSTR(key,1,N)='const', 'const'=SUBSTR(key,1,N), etc */ |
| 7257 | if (with_sargable_substr(&field, &value_idx)) |
| 7258 | { |
| 7259 | add_key_equal_fields(join, key_fields, *and_level, this, field, |
| 7260 | false, args + value_idx, 1, usable_tables, sargables); |
| 7261 | } |
| 7262 | } |
| 7263 | if (is_local_field(args[1])) |
| 7264 | { |
| 7265 | add_key_equal_fields(join, key_fields, *and_level, this, |
| 7266 | (Item_field*) args[1]->real_item(), equal_func, |
| 7267 | args, 1, usable_tables, sargables); |
| 7268 | } |
| 7269 | } |
| 7270 | |
| 7271 | |
| 7272 | void |
nothing calls this directly
no test coverage detected