@@ -6965,7 +6965,6 @@ QUICK_SELECT_I *TRP_ROR_UNION::make_quick(PARAM *param,
6965
6965
field field in the predicate
6966
6966
lt_value constant that field should be smaller
6967
6967
gt_value constant that field should be greaterr
6968
- cmp_type compare type for the field
6969
6968
6970
6969
RETURN
6971
6970
# Pointer to tree built tree
@@ -6974,38 +6973,36 @@ QUICK_SELECT_I *TRP_ROR_UNION::make_quick(PARAM *param,
6974
6973
6975
6974
SEL_TREE *Item_bool_func::get_ne_mm_tree (RANGE_OPT_PARAM *param,
6976
6975
Field *field,
6977
- Item *lt_value, Item *gt_value,
6978
- Item_result cmp_type)
6976
+ Item *lt_value, Item *gt_value)
6979
6977
{
6980
6978
SEL_TREE *tree;
6981
- tree= get_mm_parts (param, field, Item_func::LT_FUNC, lt_value, cmp_type );
6979
+ tree= get_mm_parts (param, field, Item_func::LT_FUNC, lt_value);
6982
6980
if (tree)
6983
6981
tree= tree_or (param, tree, get_mm_parts (param, field, Item_func::GT_FUNC,
6984
- gt_value, cmp_type ));
6982
+ gt_value));
6985
6983
return tree;
6986
6984
}
6987
6985
6988
6986
6989
6987
SEL_TREE *Item_func_between::get_func_mm_tree (RANGE_OPT_PARAM *param,
6990
- Field *field, Item *value,
6991
- Item_result cmp_type)
6988
+ Field *field, Item *value)
6992
6989
{
6993
6990
SEL_TREE *tree;
6994
6991
DBUG_ENTER (" Item_func_between::get_func_mm_tree" );
6995
6992
if (!value)
6996
6993
{
6997
6994
if (negated)
6998
6995
{
6999
- tree= get_ne_mm_tree (param, field, args[1 ], args[2 ], cmp_type );
6996
+ tree= get_ne_mm_tree (param, field, args[1 ], args[2 ]);
7000
6997
}
7001
6998
else
7002
6999
{
7003
- tree= get_mm_parts (param, field, Item_func::GE_FUNC, args[1 ], cmp_type );
7000
+ tree= get_mm_parts (param, field, Item_func::GE_FUNC, args[1 ]);
7004
7001
if (tree)
7005
7002
{
7006
7003
tree= tree_and (param, tree, get_mm_parts (param, field,
7007
7004
Item_func::LE_FUNC,
7008
- args[2 ], cmp_type ));
7005
+ args[2 ]));
7009
7006
}
7010
7007
}
7011
7008
}
@@ -7017,18 +7014,17 @@ SEL_TREE *Item_func_between::get_func_mm_tree(RANGE_OPT_PARAM *param,
7017
7014
Item_func::LT_FUNC):
7018
7015
(value == (Item*)1 ? Item_func::LE_FUNC :
7019
7016
Item_func::GE_FUNC)),
7020
- args[0 ], cmp_type );
7017
+ args[0 ]);
7021
7018
}
7022
7019
DBUG_RETURN (tree);
7023
7020
}
7024
7021
7025
7022
7026
7023
SEL_TREE *Item_func_in::get_func_mm_tree (RANGE_OPT_PARAM *param,
7027
- Field *field, Item *value,
7028
- Item_result cmp_type)
7024
+ Field *field, Item *value)
7029
7025
{
7030
7026
SEL_TREE *tree= 0 ;
7031
- DBUG_ENTER (" Iten_func_in ::get_func_mm_tree" );
7027
+ DBUG_ENTER (" Item_func_in ::get_func_mm_tree" );
7032
7028
/*
7033
7029
Array for IN() is constructed when all values have the same result
7034
7030
type. Tree won't be built for values with different result types,
@@ -7090,8 +7086,7 @@ SEL_TREE *Item_func_in::get_func_mm_tree(RANGE_OPT_PARAM *param,
7090
7086
do
7091
7087
{
7092
7088
array->value_to_item (i, value_item);
7093
- tree= get_mm_parts (param, field, Item_func::LT_FUNC,
7094
- value_item, cmp_type);
7089
+ tree= get_mm_parts (param, field, Item_func::LT_FUNC, value_item);
7095
7090
if (!tree)
7096
7091
break ;
7097
7092
i++;
@@ -7109,8 +7104,7 @@ SEL_TREE *Item_func_in::get_func_mm_tree(RANGE_OPT_PARAM *param,
7109
7104
{
7110
7105
/* Get a SEL_TREE for "-inf < X < c_i" interval */
7111
7106
array->value_to_item (i, value_item);
7112
- tree2= get_mm_parts (param, field, Item_func::LT_FUNC,
7113
- value_item, cmp_type);
7107
+ tree2= get_mm_parts (param, field, Item_func::LT_FUNC, value_item);
7114
7108
if (!tree2)
7115
7109
{
7116
7110
tree= NULL ;
@@ -7171,37 +7165,35 @@ SEL_TREE *Item_func_in::get_func_mm_tree(RANGE_OPT_PARAM *param,
7171
7165
Get the SEL_TREE for the last "c_last < X < +inf" interval
7172
7166
(value_item cotains c_last already)
7173
7167
*/
7174
- tree2= get_mm_parts (param, field, Item_func::GT_FUNC,
7175
- value_item, cmp_type);
7168
+ tree2= get_mm_parts (param, field, Item_func::GT_FUNC, value_item);
7176
7169
tree= tree_or (param, tree, tree2);
7177
7170
}
7178
7171
}
7179
7172
else
7180
7173
{
7181
- tree= get_ne_mm_tree (param, field, args[1 ], args[1 ], cmp_type );
7174
+ tree= get_ne_mm_tree (param, field, args[1 ], args[1 ]);
7182
7175
if (tree)
7183
7176
{
7184
7177
Item **arg, **end;
7185
7178
for (arg= args + 2 , end= arg + arg_count - 2 ; arg < end ; arg++)
7186
7179
{
7187
7180
tree= tree_and (param, tree, get_ne_mm_tree (param, field,
7188
- *arg, *arg, cmp_type ));
7181
+ *arg, *arg));
7189
7182
}
7190
7183
}
7191
7184
}
7192
7185
}
7193
7186
else
7194
7187
{
7195
- tree= get_mm_parts (param, field, Item_func::EQ_FUNC, args[1 ], cmp_type );
7188
+ tree= get_mm_parts (param, field, Item_func::EQ_FUNC, args[1 ]);
7196
7189
if (tree)
7197
7190
{
7198
7191
Item **arg, **end;
7199
7192
for (arg= args + 2 , end= arg + arg_count - 2 ;
7200
7193
arg < end ; arg++)
7201
7194
{
7202
7195
tree= tree_or (param, tree, get_mm_parts (param, field,
7203
- Item_func::EQ_FUNC,
7204
- *arg, cmp_type));
7196
+ Item_func::EQ_FUNC, *arg));
7205
7197
}
7206
7198
}
7207
7199
}
@@ -7304,9 +7296,8 @@ SEL_TREE *Item_bool_func::get_full_func_mm_tree(RANGE_OPT_PARAM *param,
7304
7296
ref_tables|= arg->used_tables ();
7305
7297
}
7306
7298
Field *field= field_item->field ;
7307
- Item_result cmp_type= field->cmp_type ();
7308
7299
if (!((ref_tables | field->table ->map ) & param_comp))
7309
- ftree= get_func_mm_tree (param, field, value, cmp_type );
7300
+ ftree= get_func_mm_tree (param, field, value);
7310
7301
Item_equal *item_equal= field_item->item_equal ;
7311
7302
if (item_equal)
7312
7303
{
@@ -7318,7 +7309,7 @@ SEL_TREE *Item_bool_func::get_full_func_mm_tree(RANGE_OPT_PARAM *param,
7318
7309
continue ;
7319
7310
if (!((ref_tables | f->table ->map ) & param_comp))
7320
7311
{
7321
- tree= get_func_mm_tree (param, f, value, cmp_type );
7312
+ tree= get_func_mm_tree (param, f, value);
7322
7313
ftree= !ftree ? tree : tree_and (param, ftree, tree);
7323
7314
}
7324
7315
}
@@ -7562,8 +7553,7 @@ SEL_TREE *Item_equal::get_mm_tree(RANGE_OPT_PARAM *param, Item **cond_ptr)
7562
7553
Field *field= it.get_curr_field ();
7563
7554
if (!((ref_tables | field->table ->map ) & param_comp))
7564
7555
{
7565
- tree= get_mm_parts (param, field, Item_func::EQ_FUNC,
7566
- value, field->cmp_type ());
7556
+ tree= get_mm_parts (param, field, Item_func::EQ_FUNC, value);
7567
7557
ftree= !ftree ? tree : tree_and (param, ftree, tree);
7568
7558
}
7569
7559
}
@@ -7645,8 +7635,7 @@ SEL_TREE *Item_bool_func2::get_mm_tree(RANGE_OPT_PARAM *param, Item **cond_ptr)
7645
7635
7646
7636
SEL_TREE *
7647
7637
Item_bool_func::get_mm_parts (RANGE_OPT_PARAM *param, Field *field,
7648
- Item_func::Functype type,
7649
- Item *value, Item_result cmp_type)
7638
+ Item_func::Functype type, Item *value)
7650
7639
{
7651
7640
DBUG_ENTER (" get_mm_parts" );
7652
7641
if (field->table != param->table )
0 commit comments