summaryrefslogtreecommitdiff
path: root/sql/item_timefunc.h
diff options
context:
space:
mode:
authorunknown <monty@mashka.mysql.fi>2002-12-14 17:43:01 +0200
committerunknown <monty@mashka.mysql.fi>2002-12-14 17:43:01 +0200
commitf935c6a2861414dac42b77c80010881ca674b1f0 (patch)
treeec4419624a982054d0682faee38e3ea102cd16d9 /sql/item_timefunc.h
parent4a81706558ca558abd22fbcaee2a41ecba66c2d7 (diff)
downloadmariadb-git-f935c6a2861414dac42b77c80010881ca674b1f0.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 mysql-test/r/cast.result: New result for time mysql-test/r/delayed.result: Timestamp update mysql-test/r/derived.result: Fix after bulk insert change mysql-test/r/explain.result: Fix after bulk insert change mysql-test/r/func_date_add.result: Timestamp change mysql-test/r/func_str.result: Timestamp change mysql-test/r/func_time.result: Timestamp change mysql-test/r/innodb.result: Timestamp change mysql-test/r/join_outer.result: Fix after bulk insert change mysql-test/r/key_primary.result: Fix after bulk insert change mysql-test/r/keywords.result: Timestamp change mysql-test/r/merge.result: Removed warning mysql-test/r/odbc.result: Fix after bulk insert change mysql-test/r/range.result: Fix after bulk insert change mysql-test/r/select.result: Fix after bulk insert change mysql-test/r/subselect.result: Fixed EXPLAIN output mysql-test/r/type_datetime.result: Timestamp update mysql-test/r/type_ranges.result: Timestamp update mysql-test/r/type_timestamp.result: Timestamp update mysql-test/r/union.result: EXPLAIN UPDATE mysql-test/t/func_str.test: Timestamp update mysql-test/t/func_time.test: New test for interval type result mysql-test/t/merge.test: Remove warnings of wrong drop table mysql-test/t/type_datetime.test: Timestamp change mysql-test/t/type_timestamp.test: Timestamp change sql/field.cc: Changed timestamp to return string in YYYY-MM-DD HH:MM:SS format sql/field.h: Changed timestamp to return string in YYYY-MM-DD HH:MM:SS format sql/item.cc: Binary protocol update sql/item.h: Binary protocol update sql/item_func.cc: Added comment sql/item_func.h: @variables are always returned to the client as strings sql/item_timefunc.cc: Changed INTERVAL to return correct type sql/item_timefunc.h: Changed INTERVAL to return correct type sql/mysqld.cc: Changed default pthread_attr_setstacksize to 129K sql/protocol.cc: More type checking sql/set_var.cc: Fixed that @convert works ok with new protocol sql/sql_analyse.cc: Fixed bug in analyze sql/sql_class.cc: Fixed bug from last push in LIMIT sql/sql_error.cc: More optimal types sql/sql_repl.cc: Binary protocol changes sql/sql_select.cc: Fixed bug in multi-table-update Changed EXPLAIN to return NULL instead of empty strings sql/sql_show.cc: Binary protocol
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);