summaryrefslogtreecommitdiff
path: root/sql/sys_vars.h
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2014-06-14 22:15:52 +0200
committerSergei Golubchik <serg@mariadb.org>2014-06-15 18:42:31 +0200
commitcf1a09e42f695bcd24dd8a4a928cd1f560c3c00a (patch)
tree1d9c502f2529f0240fb91d88ed4012c9a9989d2e /sql/sys_vars.h
parent2edcf8f9ff2a1afb1d2bd5028a93b5f07ef0644e (diff)
downloadmariadb-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.h31
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; }