mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
merge.
checkpoint. does not compile.
This commit is contained in:
@ -136,9 +136,9 @@ Event_queue::init_queue(THD *thd)
|
||||
|
||||
LOCK_QUEUE_DATA();
|
||||
|
||||
if (init_queue_ex(&queue, EVENT_QUEUE_INITIAL_SIZE , 0 /*offset*/,
|
||||
0 /*max_on_top*/, event_queue_element_compare_q,
|
||||
NULL, EVENT_QUEUE_EXTENT))
|
||||
if (::init_queue(&queue, EVENT_QUEUE_INITIAL_SIZE , 0 /*offset*/,
|
||||
0 /*max_on_top*/, event_queue_element_compare_q,
|
||||
NullS, 0, EVENT_QUEUE_EXTENT))
|
||||
{
|
||||
sql_print_error("Event Scheduler: Can't initialize the execution queue");
|
||||
goto err;
|
||||
@ -325,11 +325,13 @@ void
|
||||
Event_queue::drop_matching_events(THD *thd, LEX_STRING pattern,
|
||||
bool (*comparator)(LEX_STRING, Event_basic *))
|
||||
{
|
||||
uint i= 0;
|
||||
uint i;
|
||||
DBUG_ENTER("Event_queue::drop_matching_events");
|
||||
DBUG_PRINT("enter", ("pattern=%s", pattern.str));
|
||||
|
||||
while (i < queue.elements)
|
||||
for (i= queue_first_element(&queue) ;
|
||||
i <= queue_last_element(&queue) ;
|
||||
)
|
||||
{
|
||||
Event_queue_element *et= (Event_queue_element *) queue_element(&queue, i);
|
||||
DBUG_PRINT("info", ("[%s.%s]?", et->dbname.str, et->name.str));
|
||||
@ -339,7 +341,8 @@ Event_queue::drop_matching_events(THD *thd, LEX_STRING pattern,
|
||||
The queue is ordered. If we remove an element, then all elements
|
||||
after it will shift one position to the left, if we imagine it as
|
||||
an array from left to the right. In this case we should not
|
||||
increment the counter and the (i < queue.elements) condition is ok.
|
||||
increment the counter and the (i <= queue_last_element() condition
|
||||
is ok.
|
||||
*/
|
||||
queue_remove(&queue, i);
|
||||
delete et;
|
||||
@ -403,7 +406,9 @@ Event_queue::find_n_remove_event(LEX_STRING db, LEX_STRING name)
|
||||
uint i;
|
||||
DBUG_ENTER("Event_queue::find_n_remove_event");
|
||||
|
||||
for (i= 0; i < queue.elements; ++i)
|
||||
for (i= queue_first_element(&queue);
|
||||
i <= queue_last_element(&queue);
|
||||
i++)
|
||||
{
|
||||
Event_queue_element *et= (Event_queue_element *) queue_element(&queue, i);
|
||||
DBUG_PRINT("info", ("[%s.%s]==[%s.%s]?", db.str, name.str,
|
||||
@ -441,7 +446,9 @@ Event_queue::recalculate_activation_times(THD *thd)
|
||||
|
||||
LOCK_QUEUE_DATA();
|
||||
DBUG_PRINT("info", ("%u loaded events to be recalculated", queue.elements));
|
||||
for (i= 0; i < queue.elements; i++)
|
||||
for (i= queue_first_element(&queue);
|
||||
i <= queue_last_element(&queue);
|
||||
i++)
|
||||
{
|
||||
((Event_queue_element*)queue_element(&queue, i))->compute_next_execution_time();
|
||||
((Event_queue_element*)queue_element(&queue, i))->update_timing_fields(thd);
|
||||
@ -454,16 +461,19 @@ Event_queue::recalculate_activation_times(THD *thd)
|
||||
have removed all. The queue has been ordered in a way the disabled
|
||||
events are at the end.
|
||||
*/
|
||||
for (i= queue.elements; i > 0; i--)
|
||||
for (i= queue_last_element(&queue);
|
||||
(int) i >= (int) queue_first_element(&queue);
|
||||
i--)
|
||||
{
|
||||
Event_queue_element *element = (Event_queue_element*)queue_element(&queue, i - 1);
|
||||
Event_queue_element *element=
|
||||
(Event_queue_element*)queue_element(&queue, i);
|
||||
if (element->status != Event_parse_data::DISABLED)
|
||||
break;
|
||||
/*
|
||||
This won't cause queue re-order, because we remove
|
||||
always the last element.
|
||||
*/
|
||||
queue_remove(&queue, i - 1);
|
||||
queue_remove(&queue, i);
|
||||
delete element;
|
||||
}
|
||||
UNLOCK_QUEUE_DATA();
|
||||
@ -499,7 +509,9 @@ Event_queue::empty_queue()
|
||||
sql_print_information("Event Scheduler: Purging the queue. %u events",
|
||||
queue.elements);
|
||||
/* empty the queue */
|
||||
for (i= 0; i < queue.elements; ++i)
|
||||
for (i= queue_first_element(&queue);
|
||||
i <= queue_last_element(&queue);
|
||||
i++)
|
||||
{
|
||||
Event_queue_element *et= (Event_queue_element *) queue_element(&queue, i);
|
||||
delete et;
|
||||
@ -525,7 +537,9 @@ Event_queue::dbug_dump_queue(time_t now)
|
||||
uint i;
|
||||
DBUG_ENTER("Event_queue::dbug_dump_queue");
|
||||
DBUG_PRINT("info", ("Dumping queue . Elements=%u", queue.elements));
|
||||
for (i = 0; i < queue.elements; i++)
|
||||
for (i= queue_first_element(&queue);
|
||||
i <= queue_last_element(&queue);
|
||||
i++)
|
||||
{
|
||||
et= ((Event_queue_element*)queue_element(&queue, i));
|
||||
DBUG_PRINT("info", ("et: 0x%lx name: %s.%s", (long) et,
|
||||
@ -595,7 +609,7 @@ Event_queue::get_top_for_execution_if_time(THD *thd,
|
||||
continue;
|
||||
}
|
||||
|
||||
top= ((Event_queue_element*) queue_element(&queue, 0));
|
||||
top= (Event_queue_element*) queue_top(&queue);
|
||||
|
||||
thd->set_current_time(); /* Get current time */
|
||||
|
||||
@ -641,10 +655,10 @@ Event_queue::get_top_for_execution_if_time(THD *thd,
|
||||
top->dbname.str, top->name.str,
|
||||
top->dropped? "Dropping.":"");
|
||||
delete top;
|
||||
queue_remove(&queue, 0);
|
||||
queue_remove_top(&queue);
|
||||
}
|
||||
else
|
||||
queue_replaced(&queue);
|
||||
queue_replace_top(&queue);
|
||||
|
||||
dbug_dump_queue(thd->query_start());
|
||||
break;
|
||||
|
Reference in New Issue
Block a user