Below is the list of changes that have just been committed into a local
5.1 repository of andrey. When andrey does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet
1.1994 05/12/13 13:21:11 andrey@lmy004. +4 -0
WL#1034 update
cleanup before throwin away DYNAMIC_ARRAY for event storage,
once reallocated I get dangling pointers so that's not good.
solution will be found however ;)
sql/event_timed.cc
1.10 05/12/13 13:21:05 andrey@lmy004. +5 -37
cleanup
sql/event_priv.h
1.8 05/12/13 13:21:05 andrey@lmy004. +1 -3
-cleanup
sql/event_executor.cc
1.8 05/12/13 13:21:05 andrey@lmy004. +2 -5
- cleanup
sql/event.cc
1.11 05/12/13 13:21:05 andrey@lmy004. +11 -58
- remove unneeded variables
- remove commented out code
- remove non-cs compliant comment
- fix a bug when removing from memory cache
- better close the tables than relying on sql_parse.cc::do_command()
to do that
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: andrey
# Host: lmy004.
# Root: /work/mysql-5.1-tt-copy-works
--- 1.10/sql/event.cc 2005-12-12 21:19:12 +01:00
+++ 1.11/sql/event.cc 2005-12-13 13:21:05 +01:00
@@ -73,17 +73,11 @@
bool mysql_event_table_exists= 1;
DYNAMIC_ARRAY events_array;
-DYNAMIC_ARRAY EXEC_QUEUE_DARR_NAME;
-QUEUE EXEC_QUEUE_QUEUE_NAME;
+QUEUE EVEX_EQ_NAME;
MEM_ROOT evex_mem_root;
-//extern volatile uint thread_running;
-////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////
-//////////////// Static functions follow ///////////////////////////
-////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////
+
void
evex_queue_init(EVEX_QUEUE_TYPE *queue)
{
@@ -202,6 +196,7 @@
DBUG_RETURN(0);
}
+
int
evex_time_diff(TIME *a, TIME *b)
{
@@ -519,14 +514,17 @@
mysql_bin_log.write(&qinfo);
}
- // No need to close the table, it will be closed in sql_parse::do_command
if (dbchanged)
(void) mysql_change_db(thd, olddb, 1);
+ if (table)
+ close_thread_tables(thd);
DBUG_RETURN(EVEX_OK);
err:
if (dbchanged)
(void) mysql_change_db(thd, olddb, 1);
+ if (table)
+ close_thread_tables(thd);
DBUG_RETURN(EVEX_GENERAL_ERROR);
}
@@ -742,9 +740,7 @@
VOID(push_dynamic(&events_array,(gptr) ett));
ett_copy= dynamic_element(&events_array, events_array.elements - 1,
event_timed*);
-/**
- VOID(push_dynamic(&evex_executing_queue, (gptr) &ett_copy));
-**/
+
evex_queue_insert(&EVEX_EQ_NAME, (EVEX_PTOQEL) ett_copy);
/*
@@ -754,19 +750,6 @@
ett->free_sphead_on_delete= false;
delete ett;
- /*
- We find where the first element resides in the array. And then do a
- qsort of events_array.elements (the current number of elements).
- We know that the elements are stored in a contiguous block w/o holes.
- */
-/**
- qsort((gptr) dynamic_element(&evex_executing_queue, 0, event_timed**),
- evex_executing_queue.elements,
- sizeof(event_timed **),
- (qsort_cmp) event_timed_compare);
-**/
- evex_queue_sort(&EVEX_EQ_NAME);
-
if (use_lock)
VOID(pthread_mutex_unlock(&LOCK_event_arrays));
@@ -791,40 +774,10 @@
if (use_lock)
VOID(pthread_mutex_lock(&LOCK_event_arrays));
-/**
- for (i= 0; i < evex_executing_queue.elements; ++i)
- {
- event_timed *et= *dynamic_element(&evex_executing_queue, i, event_timed**);
- DBUG_PRINT("info", ("[%s.%s]==[%s.%s]?",db->str,name->str, et->dbname.str,
- et->name.str));
- if (!sortcmp_lex_string(*name, et->name, system_charset_info) &&
- !sortcmp_lex_string(*db, et->dbname, system_charset_info))
- {
- int idx= get_index_dynamic(&events_array, (gptr) et);
- //we are lucky the event is in the executing queue, no need of second pass
- if (idx == -1)
- {
- //this should never happen
- DBUG_PRINT("error", (" get_index_dynamic problem. %d."
- "i=%d idx=%d evex_ex_queue.buf=%p evex_ex_queue.elements=%d et=%p\n"
- "events_array=%p events_array.elements=%d events_array.buf=%p et=%p\n",
- __LINE__, i, idx, &evex_executing_queue.buffer,
- evex_executing_queue.elements, et, &events_array,
- events_array.elements, events_array.buffer, et));
- DBUG_ASSERT(0);
- }
- //destruct first and then remove. the destructor will delete sp_head
- et->free_sp();
- delete_dynamic_element(&events_array, idx);
- delete_dynamic_element(&evex_executing_queue, i);
- // ok, we have cleaned
- goto done;
- }
- }
-**/
+
for (i= 0; i < evex_queue_num_elements(EVEX_EQ_NAME); ++i)
{
- event_timed *et= *evex_queue_element(&EVEX_EQ_NAME, i, event_timed**);
+ event_timed *et= evex_queue_element(&EVEX_EQ_NAME, i, event_timed*);
DBUG_PRINT("info", ("[%s.%s]==[%s.%s]?",db->str,name->str, et->dbname.str,
et->name.str));
if (!sortcmp_lex_string(*name, et->name, system_charset_info) &&
@@ -834,7 +787,7 @@
//we are lucky the event is in the executing queue, no need of second pass
//destruct first and then remove. the destructor will delete sp_head
et->free_sp();
- evex_queue_delete_element(&EVEX_EQ_NAME, idx);
+ delete_dynamic_element(&events_array, idx);
evex_queue_delete_element(&EVEX_EQ_NAME, i);
// ok, we have cleaned
goto done;
--- 1.7/sql/event_executor.cc 2005-12-12 21:19:12 +01:00
+++ 1.8/sql/event_executor.cc 2005-12-13 13:21:05 +01:00
@@ -25,7 +25,7 @@
are not possible because the scheduler thread code is ran inside the
main thread (no spawning takes place. If you want to debug client
connection then start with --one-thread and make the define
- DBUG_FAULTY_THR2 !
+ DBUG_FAULTY_THR !
*/
#define DBUG_FAULTY_THR2
@@ -202,9 +202,6 @@
thus data should be freed at later stage.
*/
VOID(my_init_dynamic_array(&events_array, sizeof(event_timed), 50, 100));
-/**
- VOID(my_init_dynamic_array(&evex_executing_queue, sizeof(event_timed *), 50, 100));
-**/
evex_queue_init(&EVEX_EQ_NAME);
@@ -533,7 +530,7 @@
while (!(read_record_info.read_record(&read_record_info)))
{
event_timed *et, *et_copy;
- if (!(et= new event_timed()))
+ if (!(et= new event_timed))
{
DBUG_PRINT("evex_load_events_from_db", ("Out of memory"));
ret= -1;
--- 1.7/sql/event_priv.h 2005-12-12 21:19:12 +01:00
+++ 1.8/sql/event_priv.h 2005-12-13 13:21:05 +01:00
@@ -113,13 +113,11 @@
extern bool evex_is_running;
extern bool mysql_event_table_exists;
extern DYNAMIC_ARRAY events_array;
-extern DYNAMIC_ARRAY EXEC_QUEUE_DARR_NAME;
-extern QUEUE EXEC_QUEUE_QUEUE_NAME;
extern MEM_ROOT evex_mem_root;
extern pthread_mutex_t LOCK_event_arrays,
LOCK_workers_count,
LOCK_evex_running;
extern ulonglong evex_main_thread_id;
-
+extern QUEUE EVEX_EQ_NAME;
#endif /* _EVENT_PRIV_H_ */
--- 1.9/sql/event_timed.cc 2005-12-12 21:19:12 +01:00
+++ 1.10/sql/event_timed.cc 2005-12-13 13:21:05 +01:00
@@ -776,17 +776,7 @@
uint len, tmp_len;
len = strlen("CREATE EVENT ") + dbname.length + strlen(".") + name.length +
- strlen(" ON SCHEDULE ") + strlen("EVERY 5 MINUTE ")
-/*
- + strlen("ON COMPLETION ")
- + (on_completion==MYSQL_EVENT_ON_COMPLETION_DROP?
- strlen("NOT PRESERVE "):strlen("PRESERVE "))
- + (status==MYSQL_EVENT_ENABLED?
- strlen("ENABLE "):strlen("DISABLE "))
- + strlen("COMMENT \"") + comment.length + strlen("\" ")
-*/
- + strlen("DO ") +
- + body.length + strlen(";");
+ strlen(" ON SCHEDULE EVERY 5 MINUTE DO ") + body.length + strlen(";");
ret= dst= (char*) alloc_root(thd->mem_root, len + 1);
memcpy(dst, "CREATE EVENT ", tmp_len= strlen("CREATE EVENT "));
@@ -797,31 +787,8 @@
dst+= tmp_len;
memcpy(dst, name.str, tmp_len= name.length);
dst+= tmp_len;
- memcpy(dst, " ON SCHEDULE ", tmp_len= strlen(" ON SCHEDULE "));
- dst+= tmp_len;
- memcpy(dst, "EVERY 5 MINUTE ", tmp_len= strlen("EVERY 5 MINUTE "));
- dst+= tmp_len;
-/*
- memcpy(dst, "ON COMPLETION ", tmp_len =strlen("ON COMPLETION "));
- dst+= tmp_len;
- memcpy(dst, (on_completion==MYSQL_EVENT_ON_COMPLETION_DROP?
- "NOT PRESERVE ":"PRESERVE "),
- tmp_len =(on_completion==MYSQL_EVENT_ON_COMPLETION_DROP? 13:9));
- dst+= tmp_len;
-
- memcpy(dst, (status==MYSQL_EVENT_ENABLED?
- "ENABLE ":"DISABLE "),
- tmp_len= (status==MYSQL_EVENT_ENABLED? 8:9));
- dst+=tmp_len;
-
- memcpy(dst, "COMMENT \"", tmp_len= strlen("COMMENT \""));
- dst+= tmp_len;
- memcpy(dst, comment.str, tmp_len= comment.length);
- dst+= tmp_len;
- memcpy(dst, "\" ", tmp_len=2);
- dst+= tmp_len;
-*/
- memcpy(dst, "DO ", tmp_len=3);
+ memcpy(dst, " ON SCHEDULE EVERY 5 MINUTE DO ",
+ tmp_len= strlen(" ON SCHEDULE EVERY 5 MINUTE DO "));
dst+= tmp_len;
memcpy(dst, body.str, tmp_len= body.length);
@@ -829,9 +796,10 @@
memcpy(dst, ";", 1);
++dst;
*dst= '\0';
-
+
*length= len;
dst[len]= '\0';
+ sql_print_information("%d %d[%s]", len, dst-ret, ret);
return ret;
}
| Thread |
|---|
| • bk commit into 5.1 tree (andrey:1.1994) | ahristov | 13 Dec |