Bug#21811 Odd casting with date + INTERVAL arithmetic

- The definition of the result type of a type_date function didn't
  include INTERVAL_WEEK
- This patch adds an explicit test for INTERVAL_WEEK which results 
  in the result type for an item_date_add_intervall operation 
  being DATE rather than DATETIME when one parameter is
  INTERVAL_WEEK.
parent a86f035a
...@@ -1876,7 +1876,7 @@ void Item_date_add_interval::fix_length_and_dec() ...@@ -1876,7 +1876,7 @@ void Item_date_add_interval::fix_length_and_dec()
cached_field_type= MYSQL_TYPE_DATETIME; cached_field_type= MYSQL_TYPE_DATETIME;
else if (arg0_field_type == MYSQL_TYPE_DATE) else if (arg0_field_type == MYSQL_TYPE_DATE)
{ {
if (int_type <= INTERVAL_DAY || int_type == INTERVAL_YEAR_MONTH) if (int_type <= INTERVAL_DAY || int_type == INTERVAL_YEAR_MONTH || int_type == INTERVAL_WEEK )
cached_field_type= arg0_field_type; cached_field_type= arg0_field_type;
else else
cached_field_type= MYSQL_TYPE_DATETIME; cached_field_type= MYSQL_TYPE_DATETIME;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment