Commit 4bd7d6c5 authored by unknown's avatar unknown

Merge mysql.com:/home/hf/work/mrg/mysql-5.0-opt

into  mysql.com:/home/hf/work/mrg/mysql-5.1-opt


sql/item_timefunc.h:
  merging
parents 475384c9 2b983572
...@@ -351,7 +351,7 @@ class Item_date :public Item_func ...@@ -351,7 +351,7 @@ class Item_date :public Item_func
enum_field_types field_type() const { return MYSQL_TYPE_DATE; } enum_field_types field_type() const { return MYSQL_TYPE_DATE; }
String *val_str(String *str); String *val_str(String *str);
longlong val_int(); longlong val_int();
double val_real() { DBUG_ASSERT(fixed == 1); return (double) val_int(); } double val_real() { return val_real_from_decimal(); }
const char *func_name() const { return "date"; } const char *func_name() const { return "date"; }
void fix_length_and_dec() void fix_length_and_dec()
{ {
...@@ -389,6 +389,7 @@ class Item_date_func :public Item_str_func ...@@ -389,6 +389,7 @@ class Item_date_func :public Item_str_func
return tmp_table_field_from_field_type(table, 0); return tmp_table_field_from_field_type(table, 0);
} }
bool result_as_longlong() { return TRUE; } bool result_as_longlong() { return TRUE; }
double val_real() { return (double) val_int(); }
my_decimal *val_decimal(my_decimal *decimal_value) my_decimal *val_decimal(my_decimal *decimal_value)
{ {
DBUG_ASSERT(fixed == 1); DBUG_ASSERT(fixed == 1);
...@@ -411,13 +412,14 @@ class Item_str_timefunc :public Item_str_func ...@@ -411,13 +412,14 @@ class Item_str_timefunc :public Item_str_func
enum_field_types field_type() const { return MYSQL_TYPE_TIME; } enum_field_types field_type() const { return MYSQL_TYPE_TIME; }
void fix_length_and_dec() void fix_length_and_dec()
{ {
decimals=0; decimals= DATETIME_DEC;
max_length=MAX_TIME_WIDTH*MY_CHARSET_BIN_MB_MAXLEN; max_length=MAX_TIME_WIDTH*MY_CHARSET_BIN_MB_MAXLEN;
} }
Field *tmp_table_field(TABLE *table) Field *tmp_table_field(TABLE *table)
{ {
return tmp_table_field_from_field_type(table, 0); return tmp_table_field_from_field_type(table, 0);
} }
double val_real() { return val_real_from_decimal(); }
my_decimal *val_decimal(my_decimal *decimal_value) my_decimal *val_decimal(my_decimal *decimal_value)
{ {
DBUG_ASSERT(fixed == 1); DBUG_ASSERT(fixed == 1);
...@@ -521,7 +523,6 @@ class Item_func_now :public Item_date_func ...@@ -521,7 +523,6 @@ class Item_func_now :public Item_date_func
Item_func_now() :Item_date_func() {} Item_func_now() :Item_date_func() {}
Item_func_now(Item *a) :Item_date_func(a) {} Item_func_now(Item *a) :Item_date_func(a) {}
enum Item_result result_type () const { return STRING_RESULT; } enum Item_result result_type () const { return STRING_RESULT; }
double val_real() { DBUG_ASSERT(fixed == 1); return (double) value; }
longlong val_int() { DBUG_ASSERT(fixed == 1); return value; } longlong val_int() { DBUG_ASSERT(fixed == 1); return value; }
int save_in_field(Field *to, bool no_conversions); int save_in_field(Field *to, bool no_conversions);
String *val_str(String *str); String *val_str(String *str);
...@@ -611,11 +612,6 @@ class Item_func_from_unixtime :public Item_date_func ...@@ -611,11 +612,6 @@ class Item_func_from_unixtime :public Item_date_func
THD *thd; THD *thd;
public: public:
Item_func_from_unixtime(Item *a) :Item_date_func(a) {} Item_func_from_unixtime(Item *a) :Item_date_func(a) {}
double val_real()
{
DBUG_ASSERT(fixed == 1);
return (double) Item_func_from_unixtime::val_int();
}
longlong val_int(); longlong val_int();
String *val_str(String *str); String *val_str(String *str);
const char *func_name() const { return "from_unixtime"; } const char *func_name() const { return "from_unixtime"; }
...@@ -653,7 +649,6 @@ class Item_func_convert_tz :public Item_date_func ...@@ -653,7 +649,6 @@ class Item_func_convert_tz :public Item_date_func
Item_func_convert_tz(Item *a, Item *b, Item *c): Item_func_convert_tz(Item *a, Item *b, Item *c):
Item_date_func(a, b, c), from_tz_cached(0), to_tz_cached(0) {} Item_date_func(a, b, c), from_tz_cached(0), to_tz_cached(0) {}
longlong val_int(); longlong val_int();
double val_real() { return (double) val_int(); }
String *val_str(String *str); String *val_str(String *str);
const char *func_name() const { return "convert_tz"; } const char *func_name() const { return "convert_tz"; }
void fix_length_and_dec(); void fix_length_and_dec();
...@@ -678,7 +673,6 @@ class Item_func_sec_to_time :public Item_str_timefunc ...@@ -678,7 +673,6 @@ class Item_func_sec_to_time :public Item_str_timefunc
Item_str_timefunc::fix_length_and_dec(); Item_str_timefunc::fix_length_and_dec();
collation.set(&my_charset_bin); collation.set(&my_charset_bin);
maybe_null=1; maybe_null=1;
decimals= DATETIME_DEC;
} }
const char *func_name() const { return "sec_to_time"; } const char *func_name() const { return "sec_to_time"; }
bool result_as_longlong() { return TRUE; } bool result_as_longlong() { return TRUE; }
...@@ -700,7 +694,6 @@ class Item_date_add_interval :public Item_date_func ...@@ -700,7 +694,6 @@ class Item_date_add_interval :public Item_date_func
const char *func_name() const { return "date_add_interval"; } const char *func_name() const { return "date_add_interval"; }
void fix_length_and_dec(); void fix_length_and_dec();
enum_field_types field_type() const { return cached_field_type; } enum_field_types field_type() const { return cached_field_type; }
double val_real() { DBUG_ASSERT(fixed == 1); return (double) val_int(); }
longlong val_int(); longlong val_int();
bool get_date(TIME *res, uint fuzzy_date); bool get_date(TIME *res, uint fuzzy_date);
bool eq(const Item *item, bool binary_cmp) const; bool eq(const Item *item, bool binary_cmp) const;
...@@ -805,6 +798,7 @@ class Item_date_typecast :public Item_typecast_maybe_null ...@@ -805,6 +798,7 @@ class Item_date_typecast :public Item_typecast_maybe_null
} }
bool result_as_longlong() { return TRUE; } bool result_as_longlong() { return TRUE; }
longlong val_int(); longlong val_int();
double val_real() { return (double) val_int(); }
my_decimal *val_decimal(my_decimal *decimal_value) my_decimal *val_decimal(my_decimal *decimal_value)
{ {
DBUG_ASSERT(fixed == 1); DBUG_ASSERT(fixed == 1);
...@@ -832,6 +826,7 @@ class Item_time_typecast :public Item_typecast_maybe_null ...@@ -832,6 +826,7 @@ class Item_time_typecast :public Item_typecast_maybe_null
} }
bool result_as_longlong() { return TRUE; } bool result_as_longlong() { return TRUE; }
longlong val_int(); longlong val_int();
double val_real() { return val_real_from_decimal(); }
my_decimal *val_decimal(my_decimal *decimal_value) my_decimal *val_decimal(my_decimal *decimal_value)
{ {
DBUG_ASSERT(fixed == 1); DBUG_ASSERT(fixed == 1);
...@@ -863,6 +858,7 @@ class Item_datetime_typecast :public Item_typecast_maybe_null ...@@ -863,6 +858,7 @@ class Item_datetime_typecast :public Item_typecast_maybe_null
} }
bool result_as_longlong() { return TRUE; } bool result_as_longlong() { return TRUE; }
longlong val_int(); longlong val_int();
double val_real() { return val_real_from_decimal(); }
double val() { return (double) val_int(); } double val() { return (double) val_int(); }
my_decimal *val_decimal(my_decimal *decimal_value) my_decimal *val_decimal(my_decimal *decimal_value)
{ {
...@@ -912,6 +908,7 @@ class Item_func_add_time :public Item_str_func ...@@ -912,6 +908,7 @@ class Item_func_add_time :public Item_str_func
void print(String *str); void print(String *str);
const char *func_name() const { return "add_time"; } const char *func_name() const { return "add_time"; }
bool check_partition_func_processor(byte *int_arg) {return FALSE;} bool check_partition_func_processor(byte *int_arg) {return FALSE;}
double val_real() { return val_real_from_decimal(); }
my_decimal *val_decimal(my_decimal *decimal_value) my_decimal *val_decimal(my_decimal *decimal_value)
{ {
DBUG_ASSERT(fixed == 1); DBUG_ASSERT(fixed == 1);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment