Commit 9beab523 authored by unknown's avatar unknown
Browse files

Merge bk-internal.mysql.com:/data0/bk/mysql-5.1

into  bk-internal.mysql.com:/data0/bk/mysql-5.1-arch


sql/handler.cc:
  Auto merged
sql/handler.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
parents a1db0e72 6baa7573
Loading
Loading
Loading
Loading
+15 −23
Original line number Diff line number Diff line
@@ -376,11 +376,12 @@ int ha_finalize_handlerton(st_plugin_int *plugin)
  case SHOW_OPTION_YES:
    if (installed_htons[hton->db_type] == hton)
      installed_htons[hton->db_type]= NULL;
    if (hton->panic && hton->panic(hton, HA_PANIC_CLOSE))
      DBUG_RETURN(1);
    break;
  };

  if (hton->panic)
    hton->panic(hton, HA_PANIC_CLOSE);

  if (plugin->plugin->deinit)
  {
    /*
@@ -509,31 +510,22 @@ int ha_init()
  DBUG_RETURN(error);
}

/*
  close, flush or restart databases
  Ignore this for other databases than ours
*/

static my_bool panic_handlerton(THD *unused1, st_plugin_int *plugin, void *arg)
int ha_end()
{
  handlerton *hton= (handlerton *)plugin->data;
  if (hton->state == SHOW_OPTION_YES && hton->panic)
    ((int*)arg)[0]|= hton->panic(hton, (enum ha_panic_function)((int*)arg)[1]);
  return FALSE;
}

  int error= 0;
  DBUG_ENTER("ha_end");

int ha_panic(enum ha_panic_function flag)
{
  int error[2];

  error[0]= 0; error[1]= (int)flag;
  plugin_foreach(NULL, panic_handlerton, MYSQL_STORAGE_ENGINE_PLUGIN, error);
  /* 
    This should be eventualy based  on the graceful shutdown flag.
    So if flag is equal to HA_PANIC_CLOSE, the deallocate
    the errors.
  */
  if (ha_finish_errors())
    error= 1;

  if (flag == HA_PANIC_CLOSE && ha_finish_errors())
    error[0]= 1;
  return error[0];
} /* ha_panic */
  DBUG_RETURN(error);
}

static my_bool dropdb_handlerton(THD *unused1, st_plugin_int *plugin,
                                 void *path)
+1 −0
Original line number Diff line number Diff line
@@ -1654,6 +1654,7 @@ static inline bool ha_storage_engine_is_enabled(const handlerton *db_type)

/* basic stuff */
int ha_init(void);
int ha_end(void);
int ha_initialize_handlerton(st_plugin_int *plugin);
int ha_finalize_handlerton(st_plugin_int *plugin);

+1 −1
Original line number Diff line number Diff line
@@ -1186,7 +1186,6 @@ void clean_up(bool print_message)
  lex_free();				/* Free some memory */
  set_var_free();
  free_charsets();
  (void) ha_panic(HA_PANIC_CLOSE);	/* close all tables and logs */
  if (!opt_noacl)
  {
#ifdef HAVE_DLOPEN
@@ -1194,6 +1193,7 @@ void clean_up(bool print_message)
#endif
  }
  plugin_shutdown();
  ha_end();
  if (tc_log)
    tc_log->close();
  xid_cache_free();