← Back to team overview

maria-developers team mailing list archive

Re: Rev 3671: MDEV-4652 Wrong result for CONCAT(GREATEST(TIME('00:00:01'), TIME('00:00:00')))

 

Hi, Alexander!

On Aug 07, Alexander Barkov wrote:
> At lp:~maria-captains/maria/5.3
> 
> ------------------------------------------------------------
> revno: 3671
> revision-id: bar@xxxxxxxxxxx-20130807093420-khdah292yerbor8y
> parent: sergii@xxxxxxxxx-20130715163225-6ch6x34lsufode3d
> committer: Alexander Barkov <bar@xxxxxxxxxxx>
> branch nick: 5.3.b4652
> timestamp: Wed 2013-08-07 13:34:20 +0400
> message:
>   MDEV-4652 Wrong result for CONCAT(GREATEST(TIME('00:00:01'),TIME('00:00:00')))

Ok to push.

> === modified file 'sql/item.cc'
> --- a/sql/item.cc	2013-07-03 07:46:20 +0000
> +++ b/sql/item.cc	2013-08-07 09:34:20 +0000
> @@ -252,7 +252,8 @@ String *Item::val_string_from_decimal(St
>  String *Item::val_string_from_date(String *str)
>  {
>    MYSQL_TIME ltime;
> -  if (get_date(&ltime, 0) ||
> +  if (get_date(&ltime,
> +               field_type() == MYSQL_TYPE_TIME ? TIME_TIME_ONLY : 0) ||
>        str->alloc(MAX_DATE_STRING_REP_LENGTH))
>    {
>      null_value= 1;
> 
> === modified file 'sql/item_func.cc'
> --- a/sql/item_func.cc	2013-07-03 07:46:20 +0000
> +++ b/sql/item_func.cc	2013-08-07 09:34:20 +0000
> @@ -2480,6 +2480,13 @@ bool Item_func_min_max::get_date(MYSQL_T
>      ltime->time_type= MYSQL_TIMESTAMP_DATE;
>      ltime->hour= ltime->minute= ltime->second= ltime->second_part= 0;
>    }
> +  else if (compare_as_dates->field_type() == MYSQL_TYPE_TIME)
> +  {
> +    ltime->time_type= MYSQL_TIMESTAMP_TIME;
> +    ltime->hour+= (ltime->month * 32 + ltime->day) * 24;
> +    ltime->month= ltime->day= 0;
> +  }
> +
>  
>    return 0;
>  }
 
Regards,
Sergei