List:Commits« Previous MessageNext Message »
From:kpettersson Date:May 9 2008 12:57pm
Subject:bk commit into 6.0 tree (thek:1.2661) BUG#35997
View as plain text  
Below is the list of changes that have just been committed into a local
6.0 repository of thek.  When thek 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, 2008-05-09 12:56:54+02:00, thek@adventure.(none) +1 -0
  Bug#35997 Event scheduler seems to let the server crash, if it is embedded.
  
  Part 2.
  This patch disable event scheduler code related to the online backup
  subsystem introduced in 6.0.

  sql/si_objects.cc@stripped, 2008-05-09 12:56:49+02:00, thek@adventure.(none) +43 -6
    Disable event code if compiled in embedded mode using the
    HAVE_EVENT_SCHEDULER directive.
    
    Introduced a dummy implementation of ObjIterator interface.

diff -Nrup a/sql/si_objects.cc b/sql/si_objects.cc
--- a/sql/si_objects.cc	2008-04-16 09:53:13 +02:00
+++ b/sql/si_objects.cc	2008-05-09 12:56:49 +02:00
@@ -17,9 +17,11 @@
 #include "si_objects.h"
 #include "ddl_blocker.h"
 #include "sql_show.h"
+#ifdef HAVE_EVENT_SCHEDULER
 #include "events.h"
 #include "event_data_objects.h"
 #include "event_db_repository.h"
+#endif
 #include "sql_trigger.h"
 #include "sp.h"
 #include "sp_head.h" // for sp_add_to_query_tables().
@@ -669,7 +671,7 @@ private:
 };
 
 ///////////////////////////////////////////////////////////////////////////
-
+#ifdef HAVE_EVENT_SCHEDULER
 /**
   @class EventObj
 
@@ -709,6 +711,7 @@ private:
   // These attributes are to be used only for materialization.
   String m_create_stmt;
 };
+#endif  // HAVE_EVENT_SCHEDULER
 
 /**
    @class TablespaceObj
@@ -817,6 +820,20 @@ private:
 
 ///////////////////////////////////////////////////////////////////////////
 
+class ObjIteratorDummyImpl : ObjIterator
+{
+public:
+  ObjIteratorDummyImpl() { return; }
+  virtual ~ObjIteratorDummyImpl() { return; }
+  virtual Obj *next() { return NULL; }
+
+protected:
+  virtual Obj *create_obj(TABLE *t) { return NULL; }
+
+};
+
+
+///////////////////////////////////////////////////////////////////////////
 class DatabaseIterator : public InformationSchemaIterator
 {
 public:
@@ -955,7 +972,7 @@ protected:
 };
 
 ///////////////////////////////////////////////////////////////////////////
-
+#ifdef HAVE_EVENT_SCHEDULER
 class DbEventIterator : public InformationSchemaIterator
 {
 public:
@@ -975,7 +992,7 @@ protected:
 private:
   String m_db_name;
 };
-
+#endif
 
 ///////////////////////////////////////////////////////////////////////////
 
@@ -1292,6 +1309,7 @@ Obj *DbStoredFuncIterator::create_sr_obj
   return new StoredFuncObj(db_name, sr_name);
 }
 
+#ifdef HAVE_EVENT_SCHEDULER
 ///////////////////////////////////////////////////////////////////////////
 
 //
@@ -1299,7 +1317,6 @@ Obj *DbStoredFuncIterator::create_sr_obj
 //
 
 ///////////////////////////////////////////////////////////////////////////
-
 EventObj *DbEventIterator::create_obj(TABLE *t)
 {
   String db_name;
@@ -1315,7 +1332,7 @@ EventObj *DbEventIterator::create_obj(TA
 
   return new EventObj(&db_name, &event_name);
 }
-
+#endif
 ///////////////////////////////////////////////////////////////////////////
 
 //
@@ -1486,9 +1503,11 @@ template
 DbStoredFuncIterator *
 create_is_iterator<DbStoredFuncIterator>(THD *, enum_schema_tables, const String
*);
 
+#ifdef HAVE_EVENT_SCHEDULER
 template
 DbEventIterator *
 create_is_iterator<DbEventIterator>(THD *, enum_schema_tables, const String *);
+#endif
 
 ObjIterator *get_db_tables(THD *thd, const String *db_name)
 {
@@ -1515,10 +1534,17 @@ ObjIterator *get_db_stored_functions(THD
   return create_is_iterator<DbStoredFuncIterator>(thd, SCH_PROCEDURES, db_name);
 }
 
+#ifdef HAVE_EVENT_SCHEDULER
 ObjIterator *get_db_events(THD *thd, const String *db_name)
 {
   return create_is_iterator<DbEventIterator>(thd, SCH_EVENTS, db_name);
 }
+#else
+ObjIterator *get_db_events(THD *thd, const String *db_name)
+{
+  return (ObjIterator *)new ObjIteratorDummyImpl;
+}
+#endif
 
 
 ///////////////////////////////////////////////////////////////////////////
@@ -2257,7 +2283,7 @@ bool StoredFuncObj::drop(THD *thd)
 //
 
 /////////////////////////////////////////////////////////////////////////////
-
+#ifdef HAVE_EVENT_SCHEDULER
 EventObj::EventObj(const String *db_name,
                    const String *event_name)
 {
@@ -2415,6 +2441,7 @@ bool EventObj::drop(THD *thd)
                           &m_db_name,
                           &m_event_name));
 }
+#endif // HAVE_EVENT_SCHEDULER
 
 ///////////////////////////////////////////////////////////////////////////
 
@@ -2584,11 +2611,19 @@ Obj *get_stored_function(const String *d
   return new StoredFuncObj(db_name, sf_name);
 }
 
+#ifdef HAVE_EVENT_SCHEDULER
 Obj *get_event(const String *db_name,
                const String *event_name)
 {
   return new EventObj(db_name, event_name);
 }
+#else
+Obj *get_event(const String *db_name,
+               const String *event_name)
+{
+  return NULL;
+}
+#endif
 
 ///////////////////////////////////////////////////////////////////////////
 
@@ -2657,6 +2692,7 @@ Obj *materialize_stored_function(const S
   return obj;
 }
 
+#ifdef HAVE_EVENT_SCHEDULER
 Obj *materialize_event(const String *db_name,
                        const String *event_name,
                        uint serialization_version,
@@ -2667,6 +2703,7 @@ Obj *materialize_event(const String *db_
 
   return obj;
 }
+#endif
 
 Obj *materialize_tablespace(const String *ts_name,
                             uint serialization_version,
Thread
bk commit into 6.0 tree (thek:1.2661) BUG#35997kpettersson9 May
  • Re: bk commit into 6.0 tree (thek:1.2661) BUG#35997Rafal Somla9 May