968
/****************************************************************************
970
****************************************************************************/
972
void Item_copy_string::copy()
974
String *res=item->val_str(&str_value);
975
if (res && res != &str_value)
976
str_value.copy(*res);
977
null_value=item->null_value;
981
String *Item_copy_string::val_str(String *)
983
// Item_copy_string is used without fix_fields call
990
my_decimal *Item_copy_string::val_decimal(my_decimal *decimal_value)
992
// Item_copy_string is used without fix_fields call
995
string2my_decimal(E_DEC_FATAL_ERROR, &str_value, decimal_value);
996
return (decimal_value);
1001
969
Functions to convert item to field (for send_fields)
1014
double Item_ref_null_helper::val_real()
1017
double tmp= (*ref)->val_result();
1018
owner->was_null|= null_value= (*ref)->null_value;
1023
int64_t Item_ref_null_helper::val_int()
1026
int64_t tmp= (*ref)->val_int_result();
1027
owner->was_null|= null_value= (*ref)->null_value;
1032
my_decimal *Item_ref_null_helper::val_decimal(my_decimal *decimal_value)
1035
my_decimal *val= (*ref)->val_decimal_result(decimal_value);
1036
owner->was_null|= null_value= (*ref)->null_value;
1041
bool Item_ref_null_helper::val_bool()
1044
bool val= (*ref)->val_bool_result();
1045
owner->was_null|= null_value= (*ref)->null_value;
1050
String* Item_ref_null_helper::val_str(String* s)
1053
String* tmp= (*ref)->str_result(s);
1054
owner->was_null|= null_value= (*ref)->null_value;
1059
bool Item_ref_null_helper::get_date(DRIZZLE_TIME *ltime, uint32_t fuzzydate)
1061
return (owner->was_null|= null_value= (*ref)->get_date(ltime, fuzzydate));
1066
984
Mark item and SELECT_LEXs as dependent if item was resolved in
1677
Item *Item_int_with_ref::clone_item()
1679
assert(ref->const_item());
1681
We need to evaluate the constant to make sure it works with
1684
return (ref->unsigned_flag ?
1685
new Item_uint(ref->name, ref->val_int(), ref->max_length) :
1686
new Item_int(ref->name, ref->val_int(), ref->max_length));
1691
1596
This is only called from items that is not of type item_field.
1764
void Item_ref_null_helper::print(String *str, enum_query_type query_type)
1766
str->append(STRING_WITH_LEN("<ref_null_helper>("));
1768
(*ref)->print(str, query_type);
1775
double Item_direct_ref::val_real()
1777
double tmp=(*ref)->val_real();
1778
null_value=(*ref)->null_value;
1783
int64_t Item_direct_ref::val_int()
1785
int64_t tmp=(*ref)->val_int();
1786
null_value=(*ref)->null_value;
1791
String *Item_direct_ref::val_str(String* tmp)
1793
tmp=(*ref)->val_str(tmp);
1794
null_value=(*ref)->null_value;
1799
my_decimal *Item_direct_ref::val_decimal(my_decimal *decimal_value)
1801
my_decimal *tmp= (*ref)->val_decimal(decimal_value);
1802
null_value=(*ref)->null_value;
1807
bool Item_direct_ref::val_bool()
1809
bool tmp= (*ref)->val_bool();
1810
null_value=(*ref)->null_value;
1815
bool Item_direct_ref::is_null()
1817
return (*ref)->is_null();
1821
bool Item_direct_ref::get_date(DRIZZLE_TIME *ltime,uint32_t fuzzydate)
1823
return (null_value=(*ref)->get_date(ltime,fuzzydate));
1827
Prepare referenced outer field then call usual Item_direct_ref::fix_fields
1830
Item_outer_ref::fix_fields()
1831
session thread handler
1832
reference reference on reference where this item stored
1839
bool Item_outer_ref::fix_fields(Session *session, Item **reference)
1842
/* outer_ref->check_cols() will be made in Item_direct_ref::fix_fields */
1843
if ((*ref) && !(*ref)->fixed && ((*ref)->fix_fields(session, reference)))
1845
err= Item_direct_ref::fix_fields(session, reference);
1848
if ((*ref)->type() == Item::FIELD_ITEM)
1849
table_name= ((Item_field*)outer_ref)->table_name;
1853
void Item_outer_ref::fix_after_pullout(st_select_lex *new_parent, Item **ref)
1855
if (depended_from == new_parent)
1858
outer_ref->fix_after_pullout(new_parent, ref);
1863
1669
bool Item_default_value::eq(const Item *item, bool binary_cmp) const
1865
1671
return item->type() == DEFAULT_VALUE_ITEM &&