List:Commits« Previous MessageNext Message »
From:Davi Arnaut Date:October 3 2008 4:21pm
Subject:bzr push into mysql-6.0 branch (davi:2722 to 2723)
View as plain text  
 2723 Davi Arnaut	2008-10-03
      Rework the backup error handling to remove a dependency on the internals
      and lifetime of MYSQL_ERROR by maintaining a private copy of the error.
modified:
  sql/backup/error.h
  sql/backup/kernel.cc
  sql/backup/logger.cc
  sql/backup/logger.h

 2722 Konstantin Osipov	2008-10-03
      Fix Bug#38249 innodb_log_arch_dir still in support files
      Remove a non-supported variable from cnf file templates.
modified:
  support-files/my-huge.cnf.sh
  support-files/my-large.cnf.sh
  support-files/my-medium.cnf.sh
  support-files/my-small.cnf.sh

=== modified file 'sql/backup/error.h'
--- a/sql/backup/error.h	2008-04-08 15:32:47 +0000
+++ b/sql/backup/error.h	2008-10-03 14:15:40 +0000
@@ -3,6 +3,14 @@
 
 namespace util {
 
+/// Used to save messages pushed into the stack
+struct SAVED_MYSQL_ERROR {
+  uint code;
+  MYSQL_ERROR::enum_warning_level level;
+  char *msg;
+};
+
+
 /**
   Report error stored in MYSQL_ERROR structure to a client.
 
@@ -11,7 +19,7 @@ namespace util {
   @returns 0 if error was reported, non-zero otherwise.
  */
 inline
-int report_mysql_error(THD* thd, MYSQL_ERROR *err, int code= 0)
+int report_mysql_error(THD* thd, SAVED_MYSQL_ERROR *err, int code= 0)
 {
   DBUG_ASSERT(err);
 

=== modified file 'sql/backup/kernel.cc'
--- a/sql/backup/kernel.cc	2008-10-01 10:14:28 +0000
+++ b/sql/backup/kernel.cc	2008-10-03 14:15:40 +0000
@@ -264,7 +264,7 @@ execute_backup_command(THD *thd, LEX *le
  */
 int send_error(Backup_restore_ctx &log, int error_code, ...)
 {
-  MYSQL_ERROR *error= log.last_saved_error();
+  util::SAVED_MYSQL_ERROR *error= log.last_saved_error();
 
   if (error && !util::report_mysql_error(log.thd(), error, error_code))
   {

=== modified file 'sql/backup/logger.cc'
--- a/sql/backup/logger.cc	2008-08-27 15:48:32 +0000
+++ b/sql/backup/logger.cc	2008-10-03 14:15:40 +0000
@@ -47,8 +47,12 @@ int Logger::write_message(log_level::val
    switch (level) {
    case log_level::ERROR:
      if (m_save_errors)
-       errors.push_front(new MYSQL_ERROR(::current_thd, error_code,
-                                         MYSQL_ERROR::WARN_LEVEL_ERROR, msg));
+     {
+       error.code= error_code;
+       error.level= MYSQL_ERROR::WARN_LEVEL_ERROR;
+       error.msg= sql_strdup(msg);
+     }
+
      sql_print_error(out);
      push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
                          error_code, msg);

=== modified file 'sql/backup/logger.h'
--- a/sql/backup/logger.h	2008-07-09 18:37:42 +0000
+++ b/sql/backup/logger.h	2008-10-03 14:15:40 +0000
@@ -65,7 +65,7 @@ class Logger
    void save_errors();
    void stop_save_errors();
    void clear_saved_errors();
-   MYSQL_ERROR *last_saved_error();
+   util::SAVED_MYSQL_ERROR *last_saved_error();
 
  protected:
 
@@ -86,8 +86,7 @@ class Logger
   int write_message(log_level::value level , int error_code, const char *msg);
 
  private:
-
-  List<MYSQL_ERROR> errors;  ///< Used to store saved errors.
+  util::SAVED_MYSQL_ERROR error;   ///< Used to store saved errors.
   bool m_save_errors;        ///< Flag telling if errors should be saved.
 };
 
@@ -208,15 +207,15 @@ void Logger::stop_save_errors()
 /// Delete all saved errors to free resources.
 inline
 void Logger::clear_saved_errors()
-{ 
-  errors.delete_elements();
+{
+  memset(&error, 0, sizeof(error));
 }
 
 /// Return a pointer to most recent saved error.
 inline
-MYSQL_ERROR *Logger::last_saved_error()
+util::SAVED_MYSQL_ERROR *Logger::last_saved_error()
 { 
-  return errors.is_empty() ? NULL : errors.head();
+  return error.code ? &error : NULL;
 }
 
 /// Report start of an operation.

Thread
bzr push into mysql-6.0 branch (davi:2722 to 2723) Davi Arnaut3 Oct