mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
revision of fix_fields() calls (BUG2838)
mysql-test/r/subselect.result: test suite for BUG#2838 mysql-test/t/subselect.test: test suite for BUG#2838 sql/item.cc: revision of fix_fields() calls removed unnecessary variabl, and used correct last parameter of fix_fields() sql/item_cmpfunc.cc: revision of fix_fields() calls (BUG#2838) sql/item_func.cc: revision of fix_fields() calls sql/item_row.cc: changed for efficience (and to be similar for Item_func::fix_fields) sql/item_subselect.cc: fixed last arguments for fix_fields call sql/item_sum.cc: layout fixed revision of fix_fields() calls sql/log_event.cc: revision of fix_fields() calls sql/set_var.cc: revision of fix_fields() calls sql/sql_base.cc: revision of fix_fields() calls sql/sql_class.cc: revision of fix_fields() calls sql/sql_handler.cc: revision of fix_fields() calls
This commit is contained in:
@ -62,19 +62,21 @@ bool Item_row::fix_fields(THD *thd, TABLE_LIST *tabl, Item **ref)
|
||||
{
|
||||
if ((*arg)->fix_fields(thd, tabl, arg))
|
||||
return 1;
|
||||
used_tables_cache |= (*arg)->used_tables();
|
||||
if (const_item_cache&= (*arg)->const_item() && !with_null)
|
||||
// we can't assign 'item' before, because fix_fields() can change arg
|
||||
Item *item= *arg;
|
||||
used_tables_cache |= item->used_tables();
|
||||
if (const_item_cache&= item->const_item() && !with_null)
|
||||
{
|
||||
if ((*arg)->cols() > 1)
|
||||
with_null|= (*arg)->null_inside();
|
||||
if (item->cols() > 1)
|
||||
with_null|= item->null_inside();
|
||||
else
|
||||
{
|
||||
(*arg)->val_int();
|
||||
with_null|= (*arg)->null_value;
|
||||
item->val_int();
|
||||
with_null|= item->null_value;
|
||||
}
|
||||
}
|
||||
maybe_null|= (*arg)->maybe_null;
|
||||
with_sum_func= with_sum_func || (*arg)->with_sum_func;
|
||||
maybe_null|= item->maybe_null;
|
||||
with_sum_func= with_sum_func || item->with_sum_func;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user