summaryrefslogtreecommitdiff
path: root/sql/item_timefunc.h
diff options
context:
space:
mode:
authorunknown <gluh@gluh.mysql.r18.ru>2003-07-08 15:06:05 +0500
committerunknown <gluh@gluh.mysql.r18.ru>2003-07-08 15:06:05 +0500
commit4adf180432bba0e2f7e67ecb8fa5aa6d9ed86bdb (patch)
treea979e1c2c78c95f85202f78b6dd431c7f083b46b /sql/item_timefunc.h
parent01e7f418afb1ab646487e4a14179ed2d2bd8f008 (diff)
downloadmariadb-git-4adf180432bba0e2f7e67ecb8fa5aa6d9ed86bdb.tar.gz
SAPDB date/time finctions
mysql-test/r/cast.result: Changes for SAPDB date/time finctions
Diffstat (limited to 'sql/item_timefunc.h')
-rw-r--r--sql/item_timefunc.h82
1 files changed, 18 insertions, 64 deletions
diff --git a/sql/item_timefunc.h b/sql/item_timefunc.h
index ea29731fe35..20b95f8e22d 100644
--- a/sql/item_timefunc.h
+++ b/sql/item_timefunc.h
@@ -557,6 +557,8 @@ class Item_date_typecast :public Item_typecast
{
public:
Item_date_typecast(Item *a) :Item_typecast(a) {}
+ String *val_str(String *str);
+ bool get_date(TIME *ltime, bool fuzzy_date);
const char *func_name() const { return "date"; }
enum_field_types field_type() const { return MYSQL_TYPE_DATE; }
Field *tmp_table_field() { return result_field; }
@@ -571,6 +573,8 @@ class Item_time_typecast :public Item_typecast
{
public:
Item_time_typecast(Item *a) :Item_typecast(a) {}
+ String *val_str(String *str);
+ bool get_time(TIME *ltime);
const char *func_name() const { return "time"; }
enum_field_types field_type() const { return MYSQL_TYPE_TIME; }
Field *tmp_table_field() { return result_field; }
@@ -585,6 +589,7 @@ class Item_datetime_typecast :public Item_typecast
{
public:
Item_datetime_typecast(Item *a) :Item_typecast(a) {}
+ String *val_str(String *str);
const char *func_name() const { return "datetime"; }
enum_field_types field_type() const { return MYSQL_TYPE_DATETIME; }
Field *tmp_table_field() { return result_field; }
@@ -604,7 +609,7 @@ public:
void fix_length_and_dec()
{
decimals=0;
- max_length=8*my_charset_bin.mbmaxlen;
+ max_length=8*MY_CHARSET_BIN_MB_MAXLEN;
}
Field *tmp_table_field() { return result_field; }
Field *tmp_table_field(TABLE *t_arg)
@@ -613,18 +618,26 @@ public:
}
};
+
class Item_func_add_time :public Item_str_func
{
+ const bool is_date;
int sign;
enum_field_types cached_field_type;
public:
- Item_func_add_time(Item *a, Item *b, bool neg_arg)
- :Item_str_func(a, b) { sign= neg_arg ? -1 : 1; }
+ Item_func_add_time(Item *a, Item *b, bool type_arg, bool neg_arg)
+ :Item_str_func(a, b), is_date(type_arg) { sign= neg_arg ? -1 : 1; }
String *val_str(String *str);
const char *func_name() const { return "addtime"; }
enum_field_types field_type() const { return cached_field_type; }
void fix_length_and_dec();
+
+/*
+ TODO:
+ Change this when we support
+ microseconds in TIME/DATETIME
+*/
Field *tmp_table_field() { return result_field; }
Field *tmp_table_field(TABLE *t_arg)
{
@@ -647,7 +660,7 @@ public:
void fix_length_and_dec()
{
decimals=0;
- max_length=17*my_charset_bin.mbmaxlen;
+ max_length=17*MY_CHARSET_BIN_MB_MAXLEN;
}
Field *tmp_table_field() { return result_field; }
Field *tmp_table_field(TABLE *t_arg)
@@ -667,66 +680,7 @@ public:
void fix_length_and_dec()
{
decimals=0;
- max_length=8*my_charset_bin.mbmaxlen;
- }
- Field *tmp_table_field() { return result_field; }
- Field *tmp_table_field(TABLE *t_arg)
- {
- return (new Field_time(maybe_null, name, t_arg, &my_charset_bin));
- }
-};
-
-class Item_func_timestamp :public Item_str_func
-{
-public:
- Item_func_timestamp(Item *a, Item *b) :Item_str_func(a, b) {}
- String *val_str(String *str);
- const char *func_name() const { return "timestamp"; }
- enum_field_types field_type() const { return MYSQL_TYPE_DATETIME; }
- void fix_length_and_dec()
- {
- decimals=0;
- max_length=26*my_charset_bin.mbmaxlen;
- }
- Field *tmp_table_field() { return result_field; }
- Field *tmp_table_field(TABLE *t_arg)
- {
- return (new Field_datetime(maybe_null, name, t_arg, &my_charset_bin));
- }
-};
-
-class Item_func_date :public Item_str_func
-{
-public:
- Item_func_date(Item *a)
- :Item_str_func(a) {}
- String *val_str(String *str);
- const char *func_name() const { return "date"; }
- enum_field_types field_type() const { return MYSQL_TYPE_DATE; }
- void fix_length_and_dec()
- {
- decimals=0;
- max_length=10*my_charset_bin.mbmaxlen;
- }
- Field *tmp_table_field() { return result_field; }
- Field *tmp_table_field(TABLE *t_arg)
- {
- return (new Field_date(maybe_null, name, t_arg, &my_charset_bin));
- }
-};
-
-class Item_func_time :public Item_str_func
-{
-public:
- Item_func_time(Item *a)
- :Item_str_func(a) {}
- String *val_str(String *str);
- const char *func_name() const { return "time"; }
- enum_field_types field_type() const { return MYSQL_TYPE_TIME; }
- void fix_length_and_dec()
- {
- decimals=0;
- max_length=15*my_charset_bin.mbmaxlen;
+ max_length=8*MY_CHARSET_BIN_MB_MAXLEN;
}
Field *tmp_table_field() { return result_field; }
Field *tmp_table_field(TABLE *t_arg)