summaryrefslogtreecommitdiff
path: root/sql/item_timefunc.cc
diff options
context:
space:
mode:
authorunknown <holyfoot/hf@mysql.com/hfmain.(none)>2007-04-29 18:46:06 +0500
committerunknown <holyfoot/hf@mysql.com/hfmain.(none)>2007-04-29 18:46:06 +0500
commit95f51da26013aa962e5e8648e5bcad8bebc06b4e (patch)
tree305dac52043ee4eb275a83ea81b31c318a9e874c /sql/item_timefunc.cc
parent2031f55751dad44950252ab711cde893b3bce674 (diff)
downloadmariadb-git-95f51da26013aa962e5e8648e5bcad8bebc06b4e.tar.gz
merging fix
Diffstat (limited to 'sql/item_timefunc.cc')
-rw-r--r--sql/item_timefunc.cc25
1 files changed, 24 insertions, 1 deletions
diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc
index 4d6ca2a9b3e..0fd57264784 100644
--- a/sql/item_timefunc.cc
+++ b/sql/item_timefunc.cc
@@ -2056,7 +2056,30 @@ bool Item_date_add_interval::get_date(MYSQL_TIME *ltime, uint fuzzy_date)
if (date_sub_interval)
interval.neg = !interval.neg;
- return (null_value= date_add_interval(ltime, int_type, interval));
+ if ((null_value= date_add_interval(ltime, int_type, interval)))
+ return 1;
+
+ /* Adjust cached_field_type according to the detected type. */
+ if (cached_field_type == MYSQL_TYPE_STRING)
+ {
+ switch (ltime->time_type)
+ {
+ case MYSQL_TIMESTAMP_DATE:
+ cached_field_type= MYSQL_TYPE_DATE;
+ break;
+ case MYSQL_TIMESTAMP_DATETIME:
+ cached_field_type= MYSQL_TYPE_DATETIME;
+ break;
+ case MYSQL_TIMESTAMP_TIME:
+ cached_field_type= MYSQL_TYPE_TIME;
+ break;
+ default:
+ /* Shouldn't get here. */
+ DBUG_ASSERT(0);
+ break;
+ }
+ }
+ return 0;
}