mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-4.1
into sanja.is.com.ua:/home/bell/mysql/bk/work-top-4.1
This commit is contained in:
@@ -393,16 +393,24 @@ int Arg_comparator::compare_e_row()
|
||||
return 1;
|
||||
}
|
||||
|
||||
bool Item_in_optimizer::preallocate_row()
|
||||
|
||||
bool Item_in_optimizer::fix_left(THD *thd,
|
||||
struct st_table_list *tables,
|
||||
Item **ref)
|
||||
{
|
||||
return (!(cache= Item_cache::get_cache(ROW_RESULT)));
|
||||
if (args[0]->fix_fields(thd, tables, ref) ||
|
||||
(!cache && !(cache= Item_cache::get_cache(args[0]->result_type()))))
|
||||
return 1;
|
||||
cache->setup(args[0]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool Item_in_optimizer::fix_fields(THD *thd, struct st_table_list *tables,
|
||||
Item ** ref)
|
||||
{
|
||||
if (args[0]->fix_fields(thd, tables, args))
|
||||
if (fix_left(thd, tables, ref))
|
||||
return 1;
|
||||
if (args[0]->maybe_null)
|
||||
maybe_null=1;
|
||||
@@ -415,9 +423,6 @@ bool Item_in_optimizer::fix_fields(THD *thd, struct st_table_list *tables,
|
||||
with_sum_func= args[0]->with_sum_func;
|
||||
used_tables_cache= args[0]->used_tables();
|
||||
const_item_cache= args[0]->const_item();
|
||||
if (!cache && !(cache= Item_cache::get_cache(args[0]->result_type())))
|
||||
return 1;
|
||||
cache->setup(args[0]);
|
||||
if (cache->cols() == 1)
|
||||
{
|
||||
if (args[0]->used_tables())
|
||||
@@ -436,7 +441,7 @@ bool Item_in_optimizer::fix_fields(THD *thd, struct st_table_list *tables,
|
||||
((Item_cache *)cache->el(i))->set_used_tables(0);
|
||||
}
|
||||
}
|
||||
if (args[1]->fix_fields(thd, tables, args))
|
||||
if (!args[1]->fixed && args[1]->fix_fields(thd, tables, args))
|
||||
return 1;
|
||||
Item_in_subselect * sub= (Item_in_subselect *)args[1];
|
||||
if (args[0]->cols() != sub->engine->cols())
|
||||
@@ -1673,7 +1678,8 @@ Item_cond::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref)
|
||||
}
|
||||
if (abort_on_null)
|
||||
item->top_level_item();
|
||||
if (item->fix_fields(thd, tables, li.ref()) || item->check_cols(1))
|
||||
if ((!item->fixed &&
|
||||
item->fix_fields(thd, tables, li.ref())) || item->check_cols(1))
|
||||
return 1; /* purecov: inspected */
|
||||
used_tables_cache|=item->used_tables();
|
||||
with_sum_func= with_sum_func || item->with_sum_func;
|
||||
|
Reference in New Issue
Block a user