summaryrefslogtreecommitdiff
path: root/sql/item_timefunc.h
diff options
context:
space:
mode:
authormonty@mashka.mysql.fi <>2002-12-14 17:43:01 +0200
committermonty@mashka.mysql.fi <>2002-12-14 17:43:01 +0200
commitd49167bae5cfd3419261e29558bc17d2d36ad94d (patch)
treeec4419624a982054d0682faee38e3ea102cd16d9 /sql/item_timefunc.h
parenta241d9a0f7c1a00c143adb98e2e251f324391430 (diff)
downloadmariadb-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.h29
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);