diff options
author | monty@mashka.mysql.fi <> | 2002-12-14 17:43:01 +0200 |
---|---|---|
committer | monty@mashka.mysql.fi <> | 2002-12-14 17:43:01 +0200 |
commit | d49167bae5cfd3419261e29558bc17d2d36ad94d (patch) | |
tree | ec4419624a982054d0682faee38e3ea102cd16d9 /sql/item_timefunc.h | |
parent | a241d9a0f7c1a00c143adb98e2e251f324391430 (diff) | |
download | mariadb-git-d49167bae5cfd3419261e29558bc17d2d36ad94d.tar.gz |
Fixes for binary protocol (complement to last push)
Changed timestamp to return string in YYYY-MM-DD HH:MM:SS format.
DATE_ADD() and related functions now returns correct DATE/DATETIME type depending on argument types.
Now all tests passes, still some work left to remove warnings in log files from mysql-test-run
Diffstat (limited to 'sql/item_timefunc.h')
-rw-r--r-- | sql/item_timefunc.h | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/sql/item_timefunc.h b/sql/item_timefunc.h index b4a0b517090..aa075e1a91d 100644 --- a/sql/item_timefunc.h +++ b/sql/item_timefunc.h @@ -443,7 +443,6 @@ class Item_func_from_unixtime :public Item_date_func decimals=0; max_length=19*thd_charset()->mbmaxlen; } -// enum Item_result result_type () const { return STRING_RESULT; } bool get_date(TIME *res,bool fuzzy_date); }; @@ -470,32 +469,34 @@ public: } }; +/* + The following must be sorted so that simple intervals comes first. + (get_interval_value() depends on this) +*/ + +enum interval_type +{ + INTERVAL_YEAR, INTERVAL_MONTH, INTERVAL_DAY, INTERVAL_HOUR, INTERVAL_MINUTE, + INTERVAL_SECOND, INTERVAL_YEAR_MONTH, INTERVAL_DAY_HOUR, INTERVAL_DAY_MINUTE, + INTERVAL_DAY_SECOND, INTERVAL_HOUR_MINUTE, INTERVAL_HOUR_SECOND, + INTERVAL_MINUTE_SECOND +}; -enum interval_type { INTERVAL_YEAR, INTERVAL_MONTH, INTERVAL_DAY, - INTERVAL_HOUR, INTERVAL_MINUTE, INTERVAL_SECOND, - INTERVAL_YEAR_MONTH, INTERVAL_DAY_HOUR, - INTERVAL_DAY_MINUTE, INTERVAL_DAY_SECOND, - INTERVAL_HOUR_MINUTE, INTERVAL_HOUR_SECOND, - INTERVAL_MINUTE_SECOND}; class Item_date_add_interval :public Item_date_func { const interval_type int_type; String value; const bool date_sub_interval; + enum_field_types cached_field_type; public: Item_date_add_interval(Item *a,Item *b,interval_type type_arg,bool neg_arg) :Item_date_func(a,b),int_type(type_arg), date_sub_interval(neg_arg) {} String *val_str(String *); const char *func_name() const { return "date_add_interval"; } - void fix_length_and_dec() - { - set_charset(thd_charset()); - maybe_null=1; - max_length=19*thd_charset()->mbmaxlen; - value.alloc(32); - } + void fix_length_and_dec(); + enum_field_types field_type() const { return cached_field_type; } double val() { return (double) val_int(); } longlong val_int(); bool get_date(TIME *res,bool fuzzy_date); |