Commit 1f8064d3 authored by tnurnberg@white.intern.koehntopp.de's avatar tnurnberg@white.intern.koehntopp.de
Browse files

Merge mysql.com:/misc/mysql/mysql-5.0-opt

into  mysql.com:/misc/mysql/32180/50-32180
parents fbac43bb 4a7c8756
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -1270,4 +1270,16 @@ select concat(a,ifnull(min(date_format(now(), '%Y-%m-%d')),' ull')) from t1;
ERROR HY000: Illegal mix of collations (ascii_general_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation 'concat'
set lc_time_names=en_US;
drop table t1;
select DATE_ADD('20071108181000', INTERVAL 1 DAY);
DATE_ADD('20071108181000', INTERVAL 1 DAY)
2007-11-09 18:10:00
select DATE_ADD(20071108181000,   INTERVAL 1 DAY);
DATE_ADD(20071108181000,   INTERVAL 1 DAY)
2007-11-09 18:10:00
select DATE_ADD('20071108',       INTERVAL 1 DAY);
DATE_ADD('20071108',       INTERVAL 1 DAY)
2007-11-09
select DATE_ADD(20071108,         INTERVAL 1 DAY);
DATE_ADD(20071108,         INTERVAL 1 DAY)
2007-11-09
End of 5.0 tests
+10 −0
Original line number Diff line number Diff line
@@ -787,4 +787,14 @@ select concat(a,ifnull(min(date_format(now(), '%Y-%m-%d')),' ull')) from t1;
set lc_time_names=en_US;
drop table t1;

#
# Bug#32180: DATE_ADD treats datetime numeric argument as DATE
#            instead of DATETIME
#

select DATE_ADD('20071108181000', INTERVAL 1 DAY);
select DATE_ADD(20071108181000,   INTERVAL 1 DAY);
select DATE_ADD('20071108',       INTERVAL 1 DAY);
select DATE_ADD(20071108,         INTERVAL 1 DAY);

--echo End of 5.0 tests
+8 −1
Original line number Diff line number Diff line
@@ -1108,9 +1108,14 @@ longlong number_to_datetime(longlong nr, MYSQL_TIME *time_res,
  long part1,part2;

  *was_cut= 0;
  bzero((char*) time_res, sizeof(*time_res));
  time_res->time_type=MYSQL_TIMESTAMP_DATE;

  if (nr == LL(0) || nr >= LL(10000101000000))
  {
    time_res->time_type=MYSQL_TIMESTAMP_DATETIME;
    goto ok;
  }
  if (nr < 101)
    goto err;
  if (nr <= (YY_PART_YEAR-1)*10000L+1231L)
@@ -1134,6 +1139,9 @@ longlong number_to_datetime(longlong nr, MYSQL_TIME *time_res,
  }
  if (nr < 101000000L)
    goto err;

  time_res->time_type=MYSQL_TIMESTAMP_DATETIME;

  if (nr <= (YY_PART_YEAR-1)*LL(10000000000)+LL(1231235959))
  {
    nr= nr+LL(20000000000000);                   /* YYMMDDHHMMSS, 2000-2069 */
@@ -1147,7 +1155,6 @@ longlong number_to_datetime(longlong nr, MYSQL_TIME *time_res,
 ok:
  part1=(long) (nr/LL(1000000));
  part2=(long) (nr - (longlong) part1*LL(1000000));
  bzero((char*) time_res, sizeof(*time_res));
  time_res->year=  (int) (part1/10000L);  part1%=10000L;
  time_res->month= (int) part1 / 100;
  time_res->day=   (int) part1 % 100;