mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge 10.5 into 10.6
This commit is contained in:
@@ -299,6 +299,8 @@ void set_postjoin_aggr_write_func(JOIN_TAB *tab);
|
||||
|
||||
static Item **get_sargable_cond(JOIN *join, TABLE *table);
|
||||
|
||||
bool is_eq_cond_injected_for_split_opt(Item_func_eq *eq_item);
|
||||
|
||||
static
|
||||
bool build_notnull_conds_for_range_scans(JOIN *join, COND *cond,
|
||||
table_map allowed);
|
||||
@@ -22783,6 +22785,21 @@ make_cond_for_table_from_pred(THD *thd, Item *root_cond, Item *cond,
|
||||
cond->marker=3; // Checked when read
|
||||
return (COND*) 0;
|
||||
}
|
||||
/*
|
||||
If cond is an equality injected for split optimization then
|
||||
a. when retain_ref_cond == false : cond is removed unconditionally
|
||||
(cond that supports ref access is removed by the preceding code)
|
||||
b. when retain_ref_cond == true : cond is removed if it does not
|
||||
support ref access
|
||||
*/
|
||||
if (left_item->type() == Item::FIELD_ITEM &&
|
||||
is_eq_cond_injected_for_split_opt((Item_func_eq *) cond) &&
|
||||
(!retain_ref_cond ||
|
||||
!test_if_ref(root_cond, (Item_field*) left_item,right_item)))
|
||||
{
|
||||
cond->marker=3;
|
||||
return (COND*) 0;
|
||||
}
|
||||
}
|
||||
cond->marker=2;
|
||||
cond->set_join_tab_idx(join_tab_idx_arg);
|
||||
|
Reference in New Issue
Block a user