Commit 62273f8e authored by unknown's avatar unknown

remove assert


sql/event_data_objects.cc:
  add a comments that using gmt_sec_to_TIME() won't
  be safe after 2038. per andrey's request
sql/event_queue.cc:
  remove assert, which aborts server in the case when it shouldn't
parent 0c55e29a
...@@ -395,7 +395,14 @@ Event_parse_data::init_starts(THD *thd) ...@@ -395,7 +395,14 @@ Event_parse_data::init_starts(THD *thd)
if ((not_used= item_starts->get_date(&ltime, TIME_NO_ZERO_DATE))) if ((not_used= item_starts->get_date(&ltime, TIME_NO_ZERO_DATE)))
goto wrong_value; goto wrong_value;
/* Let's check whether time is in the past */ /*
Let's check whether time is in the past.
Note: This call is not post year 2038 safe. That's because
thd->query_start() is of time_t, while gmt_sec_to_TIME()
wants my_time_t. In the case time_t is larger than my_time_t
an overflow might happen and events subsystem will not work as
expected.
*/
thd->variables.time_zone->gmt_sec_to_TIME(&time_tmp, thd->variables.time_zone->gmt_sec_to_TIME(&time_tmp,
(my_time_t) thd->query_start()); (my_time_t) thd->query_start());
...@@ -407,12 +414,12 @@ Event_parse_data::init_starts(THD *thd) ...@@ -407,12 +414,12 @@ Event_parse_data::init_starts(THD *thd)
goto wrong_value; goto wrong_value;
/* /*
This may result in a 1970-01-01 date if ltime is > 2037-xx-xx. Again, after 2038 this code won't work. As
CONVERT_TZ has similar problem.
mysql_priv.h currently lists mysql_priv.h currently lists
#define TIMESTAMP_MAX_YEAR 2038 (see TIME_to_timestamp()) #define TIMESTAMP_MAX_YEAR 2038 (see TIME_to_timestamp())
*/ */
my_tz_UTC->gmt_sec_to_TIME(&ltime,t=TIME_to_timestamp(thd, &ltime, &not_used)); my_tz_UTC->gmt_sec_to_TIME(&ltime,t=TIME_to_timestamp(thd, &ltime,
&not_used));
if (!t) if (!t)
goto wrong_value; goto wrong_value;
...@@ -465,13 +472,13 @@ Event_parse_data::init_ends(THD *thd) ...@@ -465,13 +472,13 @@ Event_parse_data::init_ends(THD *thd)
goto error_bad_params; goto error_bad_params;
/* /*
This may result in a 1970-01-01 date if ltime is > 2037-xx-xx. Again, after 2038 this code won't work. As
CONVERT_TZ has similar problem.
mysql_priv.h currently lists mysql_priv.h currently lists
#define TIMESTAMP_MAX_YEAR 2038 (see TIME_to_timestamp()) #define TIMESTAMP_MAX_YEAR 2038 (see TIME_to_timestamp())
*/ */
DBUG_PRINT("info", ("get the UTC time")); DBUG_PRINT("info", ("get the UTC time"));
my_tz_UTC->gmt_sec_to_TIME(&ltime,t=TIME_to_timestamp(thd, &ltime, &not_used)); my_tz_UTC->gmt_sec_to_TIME(&ltime,t=TIME_to_timestamp(thd, &ltime,
&not_used));
if (!t) if (!t)
goto error_bad_params; goto error_bad_params;
......
...@@ -160,7 +160,6 @@ Event_queue::init_queue(THD *thd, Event_db_repository *db_repo) ...@@ -160,7 +160,6 @@ Event_queue::init_queue(THD *thd, Event_db_repository *db_repo)
{ {
sql_print_error("SCHEDULER: sizeof(my_time_t) != sizeof(time_t) ." sql_print_error("SCHEDULER: sizeof(my_time_t) != sizeof(time_t) ."
"The scheduler may not work correctly. Stopping"); "The scheduler may not work correctly. Stopping");
DBUG_ASSERT(0);
goto err; goto err;
} }
......
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