List:Commits« Previous MessageNext Message »
From:antony Date:May 31 2006 8:25pm
Subject:bk commit into 5.1 tree (acurtis:1.2395) BUG#20168
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of antony. When antony 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.2395 06/05/31 13:24:53 acurtis@stripped +5 -0
  Bug#20168
    "Change in behavior --default-storage-engine=ndb or ndbcluster"
    Reduce use of legacy_db_type, some code cleanup.

  sql/sql_tablespace.cc
    1.5 06/05/31 13:24:47 acurtis@stripped +1 -1
    use ha_default_handlerton instead of resolving DB_TYPE_DEFAULT

  sql/sql_plugin.h
    1.8 06/05/31 13:24:47 acurtis@stripped +5 -5
    compiler hints, consts

  sql/sql_plugin.cc
    1.21 06/05/31 13:24:47 acurtis@stripped +11 -11
    compiler hints, consts

  sql/handler.h
    1.210 06/05/31 13:24:47 acurtis@stripped +2 -5
    Bug#20168
      remove some use of legacy_db_type
      cleanup code, new func for default type

  sql/handler.cc
    1.232 06/05/31 13:24:47 acurtis@stripped +59 -25
    Bug#20168
      remove some use of legacy_db_type
      cleanup code, new func for default type

# 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:	acurtis
# Host:	localhost.(none)
# Root:	/home/antony/work2/p2-bug20168.1

--- 1.231/sql/handler.cc	2006-05-05 10:08:36 -07:00
+++ 1.232/sql/handler.cc	2006-05-31 13:24:47 -07:00
@@ -87,14 +87,14 @@ ulong total_ha_2pc;
 /* size of savepoint storage area (see ha_init) */
 ulong savepoint_alloc_size;
 
-struct show_table_alias_st sys_table_aliases[]=
+static const LEX_STRING sys_table_aliases[]=
 {
-  {"INNOBASE",  DB_TYPE_INNODB},
-  {"NDB",       DB_TYPE_NDBCLUSTER},
-  {"BDB",       DB_TYPE_BERKELEY_DB},
-  {"HEAP",      DB_TYPE_HEAP},
-  {"MERGE",     DB_TYPE_MRG_MYISAM},
-  {NullS,       DB_TYPE_UNKNOWN}
+  {(char*)STRING_WITH_LEN("INNOBASE")},  {(char*)STRING_WITH_LEN("INNODB")},
+  {(char*)STRING_WITH_LEN("NDB")},       {(char*)STRING_WITH_LEN("NDBCLUSTER")},
+  {(char*)STRING_WITH_LEN("BDB")},       {(char*)STRING_WITH_LEN("BERKELEYDB")},
+  {(char*)STRING_WITH_LEN("HEAP")},      {(char*)STRING_WITH_LEN("MEMORY")},
+  {(char*)STRING_WITH_LEN("MERGE")},     {(char*)STRING_WITH_LEN("MRG_MYISAM")},
+  {NullS, 0}
 };
 
 const char *ha_row_type[] = {
@@ -110,15 +110,50 @@ TYPELIB tx_isolation_typelib= {array_ele
 static TYPELIB known_extensions= {0,"known_exts", NULL, NULL};
 uint known_extensions_id= 0;
 
-handlerton *ha_resolve_by_name(THD *thd, LEX_STRING *name)
+
+/*
+  Return the default storage engine handlerton for thread
+  
+  SYNOPSIS
+    ha_default_handlerton(thd)
+    thd         current thread
+  
+  RETURN
+    pointer to handlerton
+*/
+
+handlerton *ha_default_handlerton(THD *thd)
+{
+  return (thd->variables.table_type != NULL) ?
+          thd->variables.table_type :
+          (global_system_variables.table_type != NULL ?
+           global_system_variables.table_type : &myisam_hton);
+}
+
+
+/*
+  Return the storage engine handlerton for the supplied name
+  
+  SYNOPSIS
+    ha_resolve_by_name(thd, name)
+    thd         current thread
+    name        name of storage engine
+  
+  RETURN
+    pointer to handlerton
+*/
+
+handlerton *ha_resolve_by_name(THD *thd, const LEX_STRING *name)
 {
-  show_table_alias_st *table_alias;
+  const LEX_STRING *table_alias;
   st_plugin_int *plugin;
 
-  if (thd && !my_strnncoll(&my_charset_latin1,
+redo:
+  /* my_strnncoll is a macro and gcc doesn't do early expansion of macro */
+  if (thd && !my_charset_latin1.coll->strnncoll(&my_charset_latin1,
                            (const uchar *)name->str, name->length,
-                           (const uchar *)"DEFAULT", 7))
-    return ha_resolve_by_legacy_type(thd, DB_TYPE_DEFAULT);
+                           (const uchar *)STRING_WITH_LEN("DEFAULT"), 0))
+    return ha_default_handlerton(thd);
 
   if ((plugin= plugin_lock(name, MYSQL_STORAGE_ENGINE_PLUGIN)))
   {
@@ -131,13 +166,15 @@ handlerton *ha_resolve_by_name(THD *thd,
   /*
     We check for the historical aliases.
   */
-  for (table_alias= sys_table_aliases; table_alias->type; table_alias++)
+  for (table_alias= sys_table_aliases; table_alias->str; table_alias+= 2)
   {
     if (!my_strnncoll(&my_charset_latin1,
                       (const uchar *)name->str, name->length,
-                      (const uchar *)table_alias->alias,
-                      strlen(table_alias->alias)))
-      return ha_resolve_by_legacy_type(thd, table_alias->type);
+                      (const uchar *)table_alias->str, table_alias->length))
+    {
+      name= table_alias + 1;
+      goto redo;
+    }
   }
 
   return NULL;
@@ -150,20 +187,20 @@ const char *ha_get_storage_engine(enum l
   {
   case DB_TYPE_DEFAULT:
     return "DEFAULT";
-  case DB_TYPE_UNKNOWN:
-    return "UNKNOWN";
   default:
     if (db_type > DB_TYPE_UNKNOWN && db_type < DB_TYPE_DEFAULT &&
         installed_htons[db_type])
       return installed_htons[db_type]->name;
-      return "*NONE*";
+    /* fall through */
+  case DB_TYPE_UNKNOWN:
+    return "UNKNOWN";
   }
 }
 
 
 static handler *create_default(TABLE_SHARE *table)
 {
-  handlerton *hton=ha_resolve_by_legacy_type(current_thd, DB_TYPE_DEFAULT);
+  handlerton *hton= ha_default_handlerton(current_thd);
   return (hton && hton != &default_hton && hton->create) ? 
         hton->create(table) : NULL;
 }
@@ -174,10 +211,7 @@ handlerton *ha_resolve_by_legacy_type(TH
   switch (db_type)
   {
   case DB_TYPE_DEFAULT:
-    return (thd->variables.table_type != NULL) ?
-            thd->variables.table_type :
-            (global_system_variables.table_type != NULL ?
-             global_system_variables.table_type : &myisam_hton);
+    return ha_default_handlerton(thd);
   case DB_TYPE_UNKNOWN:
     return NULL;
   default:
@@ -218,7 +252,7 @@ handlerton *ha_checktype(THD *thd, enum 
     break;
   }
 
-  return ha_resolve_by_legacy_type(thd, DB_TYPE_DEFAULT);  
+  return ha_default_handlerton(thd);
 } /* ha_checktype */
 
 

--- 1.209/sql/handler.h	2006-05-12 08:50:27 -07:00
+++ 1.210/sql/handler.h	2006-05-31 13:24:47 -07:00
@@ -589,10 +589,6 @@ struct handlerton
 
 extern const handlerton default_hton;
 
-struct show_table_alias_st {
-  const char *alias;
-  enum legacy_db_type type;
-};
 
 /* Possible flags of a handlerton */
 #define HTON_NO_FLAGS                 0
@@ -1536,7 +1532,8 @@ extern ulong total_ha, total_ha_2pc;
 #define ha_rollback(thd) (ha_rollback_trans((thd), TRUE))
 
 /* lookups */
-handlerton *ha_resolve_by_name(THD *thd, LEX_STRING *name);
+handlerton *ha_default_handlerton(THD *thd);
+handlerton *ha_resolve_by_name(THD *thd, const LEX_STRING *name);
 handlerton *ha_resolve_by_legacy_type(THD *thd, enum legacy_db_type db_type);
 const char *ha_get_storage_engine(enum legacy_db_type db_type);
 handler *get_new_handler(TABLE_SHARE *share, MEM_ROOT *alloc,

--- 1.4/sql/sql_tablespace.cc	2006-04-24 09:26:21 -07:00
+++ 1.5/sql/sql_tablespace.cc	2006-05-31 13:24:47 -07:00
@@ -30,7 +30,7 @@ int mysql_alter_tablespace(THD *thd, st_
   */
   if (hton == NULL || hton == &default_hton || hton->state != SHOW_OPTION_YES)
   {
-    hton= ha_resolve_by_legacy_type(thd, DB_TYPE_DEFAULT);
+    hton= ha_default_handlerton(thd);
     if (ts_info->storage_engine != 0)
       push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_ERROR,
                           ER_WARN_USING_OTHER_HANDLER,

--- 1.20/sql/sql_plugin.cc	2006-04-24 14:32:40 -07:00
+++ 1.21/sql/sql_plugin.cc	2006-05-31 13:24:47 -07:00
@@ -23,7 +23,7 @@ extern struct st_mysql_plugin *mysqld_bu
 
 char *opt_plugin_dir_ptr;
 char opt_plugin_dir[FN_REFLEN];
-LEX_STRING plugin_type_names[]=
+const LEX_STRING plugin_type_names[]=
 {
   { (char *)STRING_WITH_LEN("UDF") },
   { (char *)STRING_WITH_LEN("STORAGE ENGINE") },
@@ -56,7 +56,7 @@ static HASH plugin_hash[MYSQL_MAX_PLUGIN
 static rw_lock_t THR_LOCK_plugin;
 static bool initialized= 0;
 
-static struct st_plugin_dl *plugin_dl_find(LEX_STRING *dl)
+static struct st_plugin_dl *plugin_dl_find(const LEX_STRING *dl)
 {
   uint i;
   DBUG_ENTER("plugin_dl_find");
@@ -105,7 +105,7 @@ static inline void free_plugin_mem(struc
     my_free((gptr)p->plugins, MYF(MY_ALLOW_ZERO_PTR));
 }
 
-static st_plugin_dl *plugin_dl_add(LEX_STRING *dl, int report)
+static st_plugin_dl *plugin_dl_add(const LEX_STRING *dl, int report)
 {
 #ifdef HAVE_DLOPEN
   char dlpath[FN_REFLEN];
@@ -287,7 +287,7 @@ static st_plugin_dl *plugin_dl_add(LEX_S
 }
 
 
-static void plugin_dl_del(LEX_STRING *dl)
+static void plugin_dl_del(const LEX_STRING *dl)
 {
 #ifdef HAVE_DLOPEN
   uint i;
@@ -315,7 +315,7 @@ static void plugin_dl_del(LEX_STRING *dl
 }
 
 
-static struct st_plugin_int *plugin_find_internal(LEX_STRING *name, int type)
+static struct st_plugin_int *plugin_find_internal(const LEX_STRING *name, int type)
 {
   uint i;
   DBUG_ENTER("plugin_find_internal");
@@ -338,7 +338,7 @@ static struct st_plugin_int *plugin_find
 }
 
 
-my_bool plugin_is_ready(LEX_STRING *name, int type)
+my_bool plugin_is_ready(const LEX_STRING *name, int type)
 {
   my_bool rc= FALSE;
   struct st_plugin_int *plugin;
@@ -352,7 +352,7 @@ my_bool plugin_is_ready(LEX_STRING *name
 }
 
 
-struct st_plugin_int *plugin_lock(LEX_STRING *name, int type)
+struct st_plugin_int *plugin_lock(const LEX_STRING *name, int type)
 {
   struct st_plugin_int *rc;
   DBUG_ENTER("plugin_lock");
@@ -389,7 +389,7 @@ static st_plugin_int *plugin_insert_or_r
                               struct st_plugin_int *));
 }
 
-static my_bool plugin_add(LEX_STRING *name, LEX_STRING *dl, int report)
+static my_bool plugin_add(const LEX_STRING *name, const LEX_STRING *dl, int report)
 {
   struct st_plugin_int tmp;
   struct st_mysql_plugin *plugin;
@@ -472,7 +472,7 @@ err:
 }
 
 
-static void plugin_del(LEX_STRING *name)
+static void plugin_del(const LEX_STRING *name)
 {
   uint i;
   struct st_plugin_int *plugin;
@@ -809,7 +809,7 @@ void plugin_free(void)
 }
 
 
-my_bool mysql_install_plugin(THD *thd, LEX_STRING *name, LEX_STRING *dl)
+my_bool mysql_install_plugin(THD *thd, const LEX_STRING *name, const LEX_STRING *dl)
 {
   TABLE_LIST tables;
   TABLE *table;
@@ -863,7 +863,7 @@ err:
 }
 
 
-my_bool mysql_uninstall_plugin(THD *thd, LEX_STRING *name)
+my_bool mysql_uninstall_plugin(THD *thd, const LEX_STRING *name)
 {
   TABLE *table;
   TABLE_LIST tables;

--- 1.7/sql/sql_plugin.h	2006-02-14 13:56:53 -08:00
+++ 1.8/sql/sql_plugin.h	2006-05-31 13:24:47 -07:00
@@ -63,15 +63,15 @@ struct st_plugin_int
 
 extern char *opt_plugin_dir_ptr;
 extern char opt_plugin_dir[FN_REFLEN];
-extern LEX_STRING plugin_type_names[];
+extern const LEX_STRING plugin_type_names[];
 extern int plugin_init(void);
 extern void plugin_load(void);
 extern void plugin_free(void);
-extern my_bool plugin_is_ready(LEX_STRING *name, int type);
-extern st_plugin_int *plugin_lock(LEX_STRING *name, int type);
+extern my_bool plugin_is_ready(const LEX_STRING *name, int type);
+extern st_plugin_int *plugin_lock(const LEX_STRING *name, int type);
 extern void plugin_unlock(struct st_plugin_int *plugin);
-extern my_bool mysql_install_plugin(THD *thd, LEX_STRING *name, LEX_STRING *dl);
-extern my_bool mysql_uninstall_plugin(THD *thd, LEX_STRING *name);
+extern my_bool mysql_install_plugin(THD *thd, const LEX_STRING *name, const LEX_STRING *dl);
+extern my_bool mysql_uninstall_plugin(THD *thd, const LEX_STRING *name);
 
 extern my_bool plugin_register_builtin(struct st_mysql_plugin *plugin);
 
Thread
bk commit into 5.1 tree (acurtis:1.2395) BUG#20168antony31 May