mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
5.1 -> 5.5 merge
This commit is contained in:
commit
197bef3876
4 changed files with 25 additions and 4 deletions
|
@ -1377,6 +1377,18 @@ NULL
|
|||
SELECT ADDDATE(MONTH(FROM_UNIXTIME(NULL)),INTERVAL 1 HOUR);
|
||||
ADDDATE(MONTH(FROM_UNIXTIME(NULL)),INTERVAL 1 HOUR)
|
||||
NULL
|
||||
#
|
||||
# Bug#11889186 60503: CRASH IN MAKE_DATE_TIME WITH DATE_FORMAT / STR_TO_DATE COMBINATION
|
||||
#
|
||||
SELECT DATE_FORMAT('0000-00-11', '%W');
|
||||
DATE_FORMAT('0000-00-11', '%W')
|
||||
NULL
|
||||
SELECT DATE_FORMAT('0000-00-11', '%a');
|
||||
DATE_FORMAT('0000-00-11', '%a')
|
||||
NULL
|
||||
SELECT DATE_FORMAT('0000-00-11', '%w');
|
||||
DATE_FORMAT('0000-00-11', '%w')
|
||||
NULL
|
||||
End of 5.1 tests
|
||||
#
|
||||
# Bug#57039: constant subtime expression returns incorrect result.
|
||||
|
|
|
@ -894,6 +894,14 @@ SELECT CAST((MONTH(FROM_UNIXTIME(@@GLOBAL.SQL_MODE))) AS BINARY(1025));
|
|||
|
||||
SELECT ADDDATE(MONTH(FROM_UNIXTIME(NULL)),INTERVAL 1 HOUR);
|
||||
|
||||
--echo #
|
||||
--echo # Bug#11889186 60503: CRASH IN MAKE_DATE_TIME WITH DATE_FORMAT / STR_TO_DATE COMBINATION
|
||||
--echo #
|
||||
|
||||
SELECT DATE_FORMAT('0000-00-11', '%W');
|
||||
SELECT DATE_FORMAT('0000-00-11', '%a');
|
||||
SELECT DATE_FORMAT('0000-00-11', '%w');
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
--echo #
|
||||
|
|
|
@ -772,7 +772,7 @@ long calc_daynr(uint year,uint month,uint day)
|
|||
int y= year; /* may be < 0 temporarily */
|
||||
DBUG_ENTER("calc_daynr");
|
||||
|
||||
if (y == 0 && month == 0 && day == 0)
|
||||
if (y == 0 && month == 0)
|
||||
DBUG_RETURN(0); /* Skip errors */
|
||||
/* Cast to int to be able to handle month == 0 */
|
||||
delsum= (long) (365 * y + 31 *((int) month - 1) + (int) day);
|
||||
|
@ -783,6 +783,7 @@ long calc_daynr(uint year,uint month,uint day)
|
|||
temp=(int) ((y/100+1)*3)/4;
|
||||
DBUG_PRINT("exit",("year: %d month: %d day: %d -> daynr: %ld",
|
||||
y+(month <= 2),month,day,delsum+y/4-temp));
|
||||
DBUG_ASSERT(delsum+(int) y/4-temp > 0);
|
||||
DBUG_RETURN(delsum+(int) y/4-temp);
|
||||
} /* calc_daynr */
|
||||
|
||||
|
|
|
@ -669,7 +669,7 @@ bool make_date_time(DATE_TIME_FORMAT *format, MYSQL_TIME *l_time,
|
|||
system_charset_info);
|
||||
break;
|
||||
case 'W':
|
||||
if (type == MYSQL_TIMESTAMP_TIME)
|
||||
if (type == MYSQL_TIMESTAMP_TIME || !(l_time->month || l_time->year))
|
||||
return 1;
|
||||
weekday= calc_weekday(calc_daynr(l_time->year,l_time->month,
|
||||
l_time->day),0);
|
||||
|
@ -678,7 +678,7 @@ bool make_date_time(DATE_TIME_FORMAT *format, MYSQL_TIME *l_time,
|
|||
system_charset_info);
|
||||
break;
|
||||
case 'a':
|
||||
if (type == MYSQL_TIMESTAMP_TIME)
|
||||
if (type == MYSQL_TIMESTAMP_TIME || !(l_time->month || l_time->year))
|
||||
return 1;
|
||||
weekday=calc_weekday(calc_daynr(l_time->year,l_time->month,
|
||||
l_time->day),0);
|
||||
|
@ -837,7 +837,7 @@ bool make_date_time(DATE_TIME_FORMAT *format, MYSQL_TIME *l_time,
|
|||
}
|
||||
break;
|
||||
case 'w':
|
||||
if (type == MYSQL_TIMESTAMP_TIME)
|
||||
if (type == MYSQL_TIMESTAMP_TIME || !(l_time->month || l_time->year))
|
||||
return 1;
|
||||
weekday=calc_weekday(calc_daynr(l_time->year,l_time->month,
|
||||
l_time->day),1);
|
||||
|
|
Loading…
Reference in a new issue