Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into rakia.(none):/home/kgeorge/mysql/autopush/B20792-5.0-opt sql/sql_select.cc: Auto merged
This commit is contained in:
commit
d81d6e7430
@ -752,7 +752,7 @@ public:
|
||||
virtual bool find_item_in_field_list_processor(byte *arg) { return 0; }
|
||||
virtual bool change_context_processor(byte *context) { return 0; }
|
||||
virtual bool reset_query_id_processor(byte *query_id) { return 0; }
|
||||
virtual bool func_type_checker_processor(byte *arg) { return 0; }
|
||||
virtual bool is_expensive_processor(byte *arg) { return 0; }
|
||||
|
||||
virtual Item *equal_fields_propagator(byte * arg) { return this; }
|
||||
virtual Item *set_no_const_sub(byte *arg) { return this; }
|
||||
|
@ -399,9 +399,9 @@ Field *Item_func::tmp_table_field(TABLE *t_arg)
|
||||
}
|
||||
|
||||
|
||||
bool Item_func::func_type_checker_processor(byte *arg)
|
||||
bool Item_func::is_expensive_processor(byte *arg)
|
||||
{
|
||||
return *((Functype*)arg) == functype();
|
||||
return is_expensive();
|
||||
}
|
||||
|
||||
|
||||
|
@ -189,7 +189,8 @@ public:
|
||||
Item *transform(Item_transformer transformer, byte *arg);
|
||||
void traverse_cond(Cond_traverser traverser,
|
||||
void * arg, traverse_order order);
|
||||
bool func_type_checker_processor(byte *arg);
|
||||
bool is_expensive_processor(byte *arg);
|
||||
virtual bool is_expensive() { return 0; }
|
||||
};
|
||||
|
||||
|
||||
@ -947,6 +948,7 @@ public:
|
||||
void cleanup();
|
||||
Item_result result_type () const { return udf.result_type(); }
|
||||
table_map not_null_tables() const { return 0; }
|
||||
bool is_expensive() { return 1; }
|
||||
};
|
||||
|
||||
|
||||
@ -1475,6 +1477,7 @@ public:
|
||||
virtual enum Functype functype() const { return FUNC_SP; }
|
||||
|
||||
bool fix_fields(THD *thd, Item **ref);
|
||||
bool is_expensive() { return 1; }
|
||||
};
|
||||
|
||||
|
||||
|
@ -1073,10 +1073,7 @@ JOIN::optimize()
|
||||
for (ORDER *tmp_order= order; tmp_order ; tmp_order=tmp_order->next)
|
||||
{
|
||||
Item *item= *tmp_order->item;
|
||||
Item_func::Functype type=Item_func::FUNC_SP;
|
||||
Item_func::Functype type1=Item_func::UDF_FUNC;
|
||||
if (item->walk(&Item::func_type_checker_processor,(byte*)&type) ||
|
||||
item->walk(&Item::func_type_checker_processor,(byte*)&type1))
|
||||
if (item->walk(&Item::is_expensive_processor,(byte*)0))
|
||||
{
|
||||
/* Force tmp table without sort */
|
||||
need_tmp=1; simple_order=simple_group=0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user