List:Commits« Previous MessageNext Message »
From:ahristov Date:September 12 2006 10:26am
Subject:bk commit into 5.1 tree (andrey:1.2309)
View as plain text  
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@stripped, 2006-09-12 12:26:12+02:00, andrey@stripped +12 -0
  WL#3337 (Event scheduler new architecture)
  
  Remove SHOW SCHEDULER STATUS command and migrate the
  information output to `mysqladmin debug` (COM_DEBUG)
  
  SHOW SCHEDULER STATUS was introduced in 5.1.11, provided
  some debug information about event scheduler internals and
  was enabled only in debug builds.

  sql/event_queue.cc@stripped, 2006-09-12 12:26:05+02:00, andrey@stripped +23 -94
    Remove SHOW SCHEDULER STATUS. Reporting still will be
    there but through COM_DEBUG (mysqladmin debug)

  sql/event_queue.h@stripped, 2006-09-12 12:26:05+02:00, andrey@stripped +3 -2
    dump_internal_status cannot return an error, therefore it
    should be void.

  sql/event_scheduler.cc@stripped, 2006-09-12 12:26:05+02:00, andrey@stripped +16 -96
    Remove SHOW SCHEDULER STATUS. Reporting still will be
    there but through COM_DEBUG (mysqladmin debug)

  sql/event_scheduler.h@stripped, 2006-09-12 12:26:05+02:00, andrey@stripped +2 -2
    dump_internal_status cannot return an error, therefore it
    should be void.

  sql/events.cc@stripped, 2006-09-12 12:26:05+02:00, andrey@stripped +8 -20
    Change from outputting the internal data from
    the wire to the standard output. SHOW SCHEDULER STATUS was
    removed.

  sql/events.h@stripped, 2006-09-12 12:26:05+02:00, andrey@stripped +2 -2
    dump_internal_status() cannot return an error, therefore
    it should be void

  sql/lex.h@stripped, 2006-09-12 12:26:05+02:00, andrey@stripped +0 -1
    remove SCHEDULER as recognized word. This is part
    of removing SHOW SCHEDULER STATUS

  sql/sp_head.cc@stripped, 2006-09-12 12:26:05+02:00, andrey@stripped +0 -1
    SQLCOM_SHOW_SCHEDULER_STATUS has been removed

  sql/sql_lex.h@stripped, 2006-09-12 12:26:05+02:00, andrey@stripped +0 -1
    SQLCOM_SHOW_SCHEDULER_STATUS has been removed

  sql/sql_parse.cc@stripped, 2006-09-12 12:26:05+02:00, andrey@stripped +0 -7
    SQLCOM_SHOW_SCHEDULER_STATUS has been removed

  sql/sql_test.cc@stripped, 2006-09-12 12:26:06+02:00, andrey@stripped +4 -0
    Dump Events' internal information on COM_DEBUG

  sql/sql_yacc.yy@stripped, 2006-09-12 12:26:06+02:00, andrey@stripped +0 -11
    SQLCOM_SHOW_SCHEDULER_STATUS has been removed

# 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:	example.com
# Root:	/work/mysql-5.1-runtime-wl3337-tree4

--- 1.163/sql/lex.h	2006-09-12 12:26:23 +02:00
+++ 1.164/sql/lex.h	2006-09-12 12:26:23 +02:00
@@ -452,7 +452,6 @@ static SYMBOL symbols[] = {
   { "RTREE",		SYM(RTREE_SYM)},
   { "SAVEPOINT",	SYM(SAVEPOINT_SYM)},
   { "SCHEDULE",		SYM(SCHEDULE_SYM)},
-  { "SCHEDULER",	SYM(SCHEDULER_SYM)},
   { "SCHEMA",		SYM(DATABASE)},
   { "SCHEMAS",          SYM(DATABASES)},
   { "SECOND",		SYM(SECOND_SYM)},

--- 1.240/sql/sql_lex.h	2006-09-12 12:26:23 +02:00
+++ 1.241/sql/sql_lex.h	2006-09-12 12:26:23 +02:00
@@ -113,7 +113,6 @@ enum enum_sql_command {
   SQLCOM_SHOW_CONTRIBUTORS,
   SQLCOM_CREATE_EVENT, SQLCOM_ALTER_EVENT, SQLCOM_DROP_EVENT,
   SQLCOM_SHOW_CREATE_EVENT, SQLCOM_SHOW_EVENTS, 
-  SQLCOM_SHOW_SCHEDULER_STATUS,
 
   /* This should be the last !!! */
 

--- 1.573/sql/sql_parse.cc	2006-09-12 12:26:23 +02:00
+++ 1.574/sql/sql_parse.cc	2006-09-12 12:26:23 +02:00
@@ -3960,13 +3960,6 @@ end_with_restore_list:
     }
     break;
   }
-#ifndef DBUG_OFF
-  case SQLCOM_SHOW_SCHEDULER_STATUS:
-  {
-    res= Events::get_instance()->dump_internal_status(thd);
-    break;
-  }
-#endif
   case SQLCOM_CREATE_FUNCTION:                  // UDF function
   {
     if (check_access(thd,INSERT_ACL,"mysql",0,1,0,0))

--- 1.46/sql/sql_test.cc	2006-09-12 12:26:23 +02:00
+++ 1.47/sql/sql_test.cc	2006-09-12 12:26:23 +02:00
@@ -28,6 +28,8 @@
 #include <sys/malloc.h>
 #endif
 
+#include "events.h"
+
 static const char *lock_descriptions[] =
 {
   "No lock",
@@ -532,5 +534,7 @@ Estimated memory (with thread stack):   
 	 (int) info.keepcost,
 	 (long) (thread_count * thread_stack + info.hblkhd + info.arena));
 #endif
+
+  Events::get_instance()->dump_internal_status();
   puts("");
 }

--- 1.495/sql/sql_yacc.yy	2006-09-12 12:26:23 +02:00
+++ 1.496/sql/sql_yacc.yy	2006-09-12 12:26:23 +02:00
@@ -590,7 +590,6 @@ bool my_yyoverflow(short **a, YYSTYPE **
 %token  RTREE_SYM
 %token  SAVEPOINT_SYM
 %token  SCHEDULE_SYM
-%token  SCHEDULER_SYM
 %token  SECOND_MICROSECOND_SYM
 %token  SECOND_SYM
 %token  SECURITY_SYM
@@ -8112,15 +8111,6 @@ show_param:
              if (prepare_schema_table(YYTHD, lex, 0, SCH_EVENTS))
                YYABORT;
            }
-         | SCHEDULER_SYM STATUS_SYM
-           {
-#ifndef DBUG_OFF
-             Lex->sql_command= SQLCOM_SHOW_SCHEDULER_STATUS;
-#else
-             yyerror(ER(ER_SYNTAX_ERROR));
-             YYABORT;           
-#endif
-           }         
          | TABLE_SYM STATUS_SYM opt_db wild_and_where
            {
              LEX *lex= Lex;
@@ -9503,7 +9493,6 @@ keyword_sp:
 	| ROW_SYM		{}
 	| RTREE_SYM		{}
 	| SCHEDULE_SYM		{}	
-	| SCHEDULER_SYM		{}	
 	| SECOND_SYM		{}
 	| SERIAL_SYM		{}
 	| SERIALIZABLE_SYM	{}

--- 1.64/sql/events.cc	2006-09-12 12:26:23 +02:00
+++ 1.65/sql/events.cc	2006-09-12 12:26:23 +02:00
@@ -744,32 +744,20 @@ Events::destroy_mutexes()
 
   SYNOPSIS
     Events::dump_internal_status()
-      thd  Thread
-
-  RETURN VALUE
-    FALSE  OK
-    TRUE   Error
 */
 
-bool
-Events::dump_internal_status(THD *thd)
+void
+Events::dump_internal_status()
 {
   DBUG_ENTER("Events::dump_internal_status");
-  Protocol *protocol= thd->protocol;
-  List<Item> field_list;
-
-  field_list.push_back(new Item_empty_string("Name", 30));
-  field_list.push_back(new Item_empty_string("Value",20));
-  if (protocol->send_fields(&field_list, Protocol::SEND_NUM_ROWS |
-                                         Protocol::SEND_EOF))
-    DBUG_RETURN(TRUE);
+  puts("\n\n\nEvents status:");
+  puts("LLA = Last Locked At  LUA = Last Unlocked At");
+  puts("WOC = Waiting On Condition  DL = Data Locked");
 
-  if (scheduler->dump_internal_status(thd) ||
-      event_queue->dump_internal_status(thd))
-    DBUG_RETURN(TRUE);
+  scheduler->dump_internal_status();
+  event_queue->dump_internal_status();
 
-  send_eof(thd);
-  DBUG_RETURN(FALSE);
+  DBUG_VOID_RETURN;
 }
 
 

--- 1.46/sql/events.h	2006-09-12 12:26:23 +02:00
+++ 1.47/sql/events.h	2006-09-12 12:26:23 +02:00
@@ -112,8 +112,8 @@ public:
   static int
   fill_schema_events(THD *thd, TABLE_LIST *tables, COND * /* cond */);
 
-  bool
-  dump_internal_status(THD *thd);
+  void
+  dump_internal_status();
 
 private:
   bool

--- 1.14/sql/event_queue.cc	2006-09-12 12:26:23 +02:00
+++ 1.15/sql/event_queue.cc	2006-09-12 12:26:23 +02:00
@@ -907,7 +907,7 @@ Event_queue::cond_wait(THD *thd, struct 
     do but we need to obey cond_wait()
   */
   thd->exit_cond("");
-  LOCK_QUEUE_DATA();
+  lock_data(func, line);
 
   DBUG_VOID_RETURN;
 }
@@ -918,102 +918,31 @@ Event_queue::cond_wait(THD *thd, struct 
 
   SYNOPSIS
     Event_queue::dump_internal_status()
-      thd  Thread
-
-  RETURN VALUE
-    FALSE  OK
-    TRUE   Error
 */
 
-bool
-Event_queue::dump_internal_status(THD *thd)
+void
+Event_queue::dump_internal_status()
 {
   DBUG_ENTER("Event_queue::dump_internal_status");
-#ifndef DBUG_OFF
-  CHARSET_INFO *scs= system_charset_info;
-  Protocol *protocol= thd->protocol;
-  List<Item> field_list;
-  int ret;
-  char tmp_buff[5*STRING_BUFFER_USUAL_SIZE];
-  char int_buff[STRING_BUFFER_USUAL_SIZE];
-  String tmp_string(tmp_buff, sizeof(tmp_buff), scs);
-  String int_string(int_buff, sizeof(int_buff), scs);
-  tmp_string.length(0);
-  int_string.length(0);
-
-  /* workers_count */
-  protocol->prepare_for_resend();
-  protocol->store(STRING_WITH_LEN("queue element count"), scs);
-  int_string.set((longlong) queue.elements, scs);
-  protocol->store(&int_string);
-  ret= protocol->write();
-
-  /* queue_data_locked */
-  protocol->prepare_for_resend();
-  protocol->store(STRING_WITH_LEN("queue data locked"), scs);
-  int_string.set((longlong) mutex_queue_data_locked, scs);
-  protocol->store(&int_string);
-  ret= protocol->write();
-
-  /* queue_data_attempting_lock */
-  protocol->prepare_for_resend();
-  protocol->store(STRING_WITH_LEN("queue data attempting lock"), scs);
-  int_string.set((longlong) mutex_queue_data_attempting_lock, scs);
-  protocol->store(&int_string);
-  ret= protocol->write();
-
-  /* last locked at*/
-  protocol->prepare_for_resend();
-  protocol->store(STRING_WITH_LEN("queue last locked at"), scs);
-  tmp_string.length(scs->cset->snprintf(scs, (char*) tmp_string.ptr(),
-                                        tmp_string.alloced_length(), "%s::%d",
-                                        mutex_last_locked_in_func,
-                                        mutex_last_locked_at_line));
-  protocol->store(&tmp_string);
-  ret= protocol->write();
-
-  /* last unlocked at*/
-  protocol->prepare_for_resend();
-  protocol->store(STRING_WITH_LEN("queue last unlocked at"), scs);
-  tmp_string.length(scs->cset->snprintf(scs, (char*) tmp_string.ptr(),
-                                        tmp_string.alloced_length(), "%s::%d",
-                                        mutex_last_unlocked_in_func,
-                                        mutex_last_unlocked_at_line));
-  protocol->store(&tmp_string);
-  ret= protocol->write();
-
-  /* last attempted lock  at*/
-  protocol->prepare_for_resend();
-  protocol->store(STRING_WITH_LEN("queue last attempted lock at"), scs);
-  tmp_string.length(scs->cset->snprintf(scs, (char*) tmp_string.ptr(),
-                                        tmp_string.alloced_length(), "%s::%d",
-                                        mutex_last_attempted_lock_in_func,
-                                        mutex_last_attempted_lock_at_line));
-  protocol->store(&tmp_string);
-  ret= protocol->write();
-
-  /* waiting on */
-  protocol->prepare_for_resend();
-  protocol->store(STRING_WITH_LEN("queue waiting on condition"), scs);
-  int_string.set((longlong) waiting_on_cond, scs);
-  protocol->store(&int_string);
-  ret= protocol->write();
-
-  protocol->prepare_for_resend();
-  protocol->store(STRING_WITH_LEN("next activation at"), scs);
-  tmp_string.length(scs->cset->snprintf(scs, (char*) tmp_string.ptr(),
-                                        tmp_string.alloced_length(),
-                                        "%4d-%02d-%02d %02d:%02d:%02d",
-                                        next_activation_at.year,
-                                        next_activation_at.month,
-                                        next_activation_at.day,
-                                        next_activation_at.hour,
-                                        next_activation_at.minute,
-                                        next_activation_at.second
-                                        ));
-  protocol->store(&tmp_string);
-  ret= protocol->write();
 
-#endif
-  DBUG_RETURN(FALSE);
+  /* element count */
+  puts("");
+  puts("Event queue status:");
+  printf("Element count   : %u\n", queue.elements);
+  printf("Data locked     : %s\n", mutex_queue_data_locked? "YES":"NO");
+  printf("Attempting lock : %s\n", mutex_queue_data_attempting_lock? "YES":"NO");
+  printf("LLA             : %s:%u\n", mutex_last_locked_in_func,
+                                        mutex_last_locked_at_line);
+  printf("LUA             : %s:%u\n", mutex_last_unlocked_in_func,
+                                        mutex_last_unlocked_at_line);
+  if (mutex_last_attempted_lock_at_line)
+    printf("Last lock attempt at: %s:%u\n", mutex_last_attempted_lock_in_func,
+                                            mutex_last_attempted_lock_at_line);
+  printf("WOC             : %s\n", waiting_on_cond? "YES":"NO");
+  printf("Next activation : %04d-%02d-%02d %02d:%02d:%02d\n",
+         next_activation_at.year, next_activation_at.month,
+         next_activation_at.day, next_activation_at.hour,
+         next_activation_at.minute, next_activation_at.second);
+
+  DBUG_VOID_RETURN;
 }

--- 1.11/sql/event_queue.h	2006-09-12 12:26:23 +02:00
+++ 1.12/sql/event_queue.h	2006-09-12 12:26:23 +02:00
@@ -61,8 +61,9 @@ public:
 
   bool
   get_top_for_execution_if_time(THD *thd, Event_job_data **job_data);
-  bool
-  dump_internal_status(THD *thd);
+
+  void
+  dump_internal_status();
 
   int
   load_events_from_db(THD *thd);

--- 1.26/sql/event_scheduler.cc	2006-09-12 12:26:23 +02:00
+++ 1.27/sql/event_scheduler.cc	2006-09-12 12:26:23 +02:00
@@ -38,6 +38,7 @@ extern pthread_attr_t connection_attrib;
 static
 const LEX_STRING scheduler_states_names[] =
 {
+  { C_STRING_WITH_LEN("UNINITIALIZED") },
   { C_STRING_WITH_LEN("INITIALIZED") },
   { C_STRING_WITH_LEN("RUNNING") },
   { C_STRING_WITH_LEN("STOPPING") }
@@ -757,106 +758,25 @@ Event_scheduler::cond_wait(THD *thd, str
 
   SYNOPSIS
     Event_scheduler::dump_internal_status()
-      thd  Thread
-
-  RETURN VALUE
-    FALSE  OK
-    TRUE   Error
 */
 
-bool
-Event_scheduler::dump_internal_status(THD *thd)
+void
+Event_scheduler::dump_internal_status()
 {
-  int ret= 0;
   DBUG_ENTER("Event_scheduler::dump_internal_status");
 
-#ifndef DBUG_OFF
-  CHARSET_INFO *scs= system_charset_info;
-  Protocol *protocol= thd->protocol;
-  char tmp_buff[5*STRING_BUFFER_USUAL_SIZE];
-  char int_buff[STRING_BUFFER_USUAL_SIZE];
-  String tmp_string(tmp_buff, sizeof(tmp_buff), scs);
-  String int_string(int_buff, sizeof(int_buff), scs);
-  tmp_string.length(0);
-  int_string.length(0);
-
-  do
-  {
-    protocol->prepare_for_resend();
-    protocol->store(STRING_WITH_LEN("scheduler state"), scs);
-    protocol->store(scheduler_states_names[state].str,
-                    scheduler_states_names[state].length, scs);
-
-    if ((ret= protocol->write()))
-      break;
-
-    /* thread_id */
-    protocol->prepare_for_resend();
-    protocol->store(STRING_WITH_LEN("thread_id"), scs);
-    if (thread_id)
-    {
-      int_string.set((longlong) scheduler_thd->thread_id, scs);
-      protocol->store(&int_string);
-    }
-    else
-      protocol->store_null();
-    if ((ret= protocol->write()))
-      break;
+  puts("");
+  puts("Event scheduler status:");
+  printf("State      : %s\n", scheduler_states_names[state].str);
+  printf("Thread id  : %lu\n", scheduler_thd? scheduler_thd->thread_id : 0);
+  printf("LLA        : %s:%u\n", mutex_last_locked_in_func,
+                                 mutex_last_locked_at_line);
+  printf("LUA        : %s:%u\n", mutex_last_unlocked_in_func,
+                                 mutex_last_unlocked_at_line);
+  printf("WOC        : %s\n", waiting_on_cond? "YES":"NO");
+  printf("Workers    : %u\n", workers_count());
+  printf("Executed   : %llu\n", started_events);
+  printf("Data locked: %s\n", mutex_scheduler_data_locked ? "YES":"NO");
 
-    /* last locked at*/
-    protocol->prepare_for_resend();
-    protocol->store(STRING_WITH_LEN("scheduler last locked at"), scs);
-    tmp_string.length(scs->cset->snprintf(scs, (char*) tmp_string.ptr(),
-                                          tmp_string.alloced_length(), "%s::%d",
-                                          mutex_last_locked_in_func,
-                                          mutex_last_locked_at_line));
-    protocol->store(&tmp_string);
-    if ((ret= protocol->write()))
-      break;
-
-    /* last unlocked at*/
-    protocol->prepare_for_resend();
-    protocol->store(STRING_WITH_LEN("scheduler last unlocked at"), scs);
-    tmp_string.length(scs->cset->snprintf(scs, (char*) tmp_string.ptr(),
-                                          tmp_string.alloced_length(), "%s::%d",
-                                          mutex_last_unlocked_in_func,
-                                          mutex_last_unlocked_at_line));
-    protocol->store(&tmp_string);
-    if ((ret= protocol->write()))
-      break;
-
-    /* waiting on */
-    protocol->prepare_for_resend();
-    protocol->store(STRING_WITH_LEN("scheduler waiting on condition"), scs);
-    int_string.set((longlong) waiting_on_cond, scs);
-    protocol->store(&int_string);
-    if ((ret= protocol->write()))
-      break;
-
-    /* workers_count */
-    protocol->prepare_for_resend();
-    protocol->store(STRING_WITH_LEN("scheduler workers count"), scs);
-    int_string.set((longlong) workers_count(), scs);
-    protocol->store(&int_string);
-    if ((ret= protocol->write()))
-      break;
-
-    /* workers_count */
-    protocol->prepare_for_resend();
-    protocol->store(STRING_WITH_LEN("scheduler executed events"), scs);
-    int_string.set((longlong) started_events, scs);
-    protocol->store(&int_string);
-    if ((ret= protocol->write()))
-      break;
-
-    /* scheduler_data_locked */
-    protocol->prepare_for_resend();
-    protocol->store(STRING_WITH_LEN("scheduler data locked"), scs);
-    int_string.set((longlong) mutex_scheduler_data_locked, scs);
-    protocol->store(&int_string);
-    ret= protocol->write();
-  } while (0);
-#endif
-
-  DBUG_RETURN(ret);
+  DBUG_VOID_RETURN;
 }

--- 1.17/sql/event_scheduler.h	2006-09-12 12:26:23 +02:00
+++ 1.18/sql/event_scheduler.h	2006-09-12 12:26:23 +02:00
@@ -65,8 +65,8 @@ public:
   bool
   is_running();
 
-  bool
-  dump_internal_status(THD *thd);
+  void
+  dump_internal_status();
 
 private:
   uint

--- 1.235/sql/sp_head.cc	2006-09-12 12:26:23 +02:00
+++ 1.236/sql/sp_head.cc	2006-09-12 12:26:23 +02:00
@@ -196,7 +196,6 @@ sp_get_flags_for_command(LEX *lex)
   case SQLCOM_SHOW_PRIVILEGES:
   case SQLCOM_SHOW_PROCESSLIST:
   case SQLCOM_SHOW_PROC_CODE:
-  case SQLCOM_SHOW_SCHEDULER_STATUS:
   case SQLCOM_SHOW_SLAVE_HOSTS:
   case SQLCOM_SHOW_SLAVE_STAT:
   case SQLCOM_SHOW_STATUS:
Thread
bk commit into 5.1 tree (andrey:1.2309)ahristov12 Sep