diff options
author | Sergei Golubchik <serg@mariadb.org> | 2014-06-14 22:15:52 +0200 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2014-06-15 18:42:31 +0200 |
commit | cf1a09e42f695bcd24dd8a4a928cd1f560c3c00a (patch) | |
tree | 1d9c502f2529f0240fb91d88ed4012c9a9989d2e /sql/sys_vars.h | |
parent | 2edcf8f9ff2a1afb1d2bd5028a93b5f07ef0644e (diff) | |
download | mariadb-git-cf1a09e42f695bcd24dd8a4a928cd1f560c3c00a.tar.gz |
MDEV-6107 merge default_tmp_storage_engine
Adapt default_tmp_storage_engine implementation from mysql-5.6
New feature (as compared to 5.6), default_tmp_storage_engine=NULL
means that temporary tables will use default_storage_engine value.
This makes the behavior backward compatible.
Diffstat (limited to 'sql/sys_vars.h')
-rw-r--r-- | sql/sys_vars.h | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/sql/sys_vars.h b/sql/sys_vars.h index 495099b9c59..cbf924ee036 100644 --- a/sql/sys_vars.h +++ b/sql/sys_vars.h @@ -1344,7 +1344,7 @@ public: // special code for storage engines (e.g. to handle historical aliases) if (plugin_type == MYSQL_STORAGE_ENGINE_PLUGIN) - plugin= ha_resolve_by_name(thd, &pname); + plugin= ha_resolve_by_name(thd, &pname, false); else plugin= my_plugin_lock_by_name(thd, &pname, plugin_type); if (!plugin) @@ -1366,7 +1366,7 @@ public: plugin_ref oldval= *valptr; if (oldval != newval) { - *valptr= my_plugin_lock(NULL, newval); + *valptr= newval ? my_plugin_lock(NULL, newval) : 0; plugin_unlock(NULL, oldval); } } @@ -1385,23 +1385,28 @@ public: void session_save_default(THD *thd, set_var *var) { plugin_ref plugin= global_var(plugin_ref); - var->save_result.plugin= my_plugin_lock(thd, plugin); + var->save_result.plugin= plugin ? my_plugin_lock(thd, plugin) : 0; } void global_save_default(THD *thd, set_var *var) { LEX_STRING pname; - char **default_value= reinterpret_cast<char**>(option.def_value); - pname.str= *default_value; - pname.length= strlen(pname.str); - - plugin_ref plugin; - if (plugin_type == MYSQL_STORAGE_ENGINE_PLUGIN) - plugin= ha_resolve_by_name(thd, &pname); + char *default_value= *reinterpret_cast<char**>(option.def_value); + if (!default_value) + var->save_result.plugin= 0; else - plugin= my_plugin_lock_by_name(thd, &pname, plugin_type); - DBUG_ASSERT(plugin); + { + pname.str= default_value; + pname.length= strlen(pname.str); + + plugin_ref plugin; + if (plugin_type == MYSQL_STORAGE_ENGINE_PLUGIN) + plugin= ha_resolve_by_name(thd, &pname, false); + else + plugin= my_plugin_lock_by_name(thd, &pname, plugin_type); + DBUG_ASSERT(plugin); - var->save_result.plugin= my_plugin_lock(thd, plugin); + var->save_result.plugin= my_plugin_lock(thd, plugin); + } } bool check_update_type(Item_result type) { return type != STRING_RESULT; } |