summaryrefslogtreecommitdiff
path: root/sql/sys_vars.cc
diff options
context:
space:
mode:
authorAlexander Nozdrin <alik@sun.com>2010-04-27 13:58:21 +0400
committerAlexander Nozdrin <alik@sun.com>2010-04-27 13:58:21 +0400
commite642701c325e7b557d1a16d98f110581c26c2f28 (patch)
tree6fc830df498046ca29b2381fb809726faeb04f52 /sql/sys_vars.cc
parenta0f8951963443db308d072dbc0794bb93d2fcf45 (diff)
parentb6dcd0ecbee17787297e882ed63cf4e13d981943 (diff)
downloadmariadb-git-e642701c325e7b557d1a16d98f110581c26c2f28.tar.gz
Manual merge from mysql-trunk.
Conflicts: - mysql-test/suite/rpl/r/rpl_stm_mixing_engines.result
Diffstat (limited to 'sql/sys_vars.cc')
-rw-r--r--sql/sys_vars.cc47
1 files changed, 23 insertions, 24 deletions
diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc
index 49d272af8d3..c6481891ca1 100644
--- a/sql/sys_vars.cc
+++ b/sql/sys_vars.cc
@@ -258,6 +258,12 @@ static bool check_has_super(sys_var *self, THD *thd, set_var *var)
}
static bool binlog_format_check(sys_var *self, THD *thd, set_var *var)
{
+ if (check_has_super(self, thd, var))
+ return true;
+
+ if (var->type == OPT_GLOBAL)
+ return false;
+
/*
If RBR and open temporary tables, their CREATE TABLE may not be in the
binlog, so we can't toggle to SBR in this connection.
@@ -289,18 +295,12 @@ static bool binlog_format_check(sys_var *self, THD *thd, set_var *var)
/*
Make the session variable 'binlog_format' read-only inside a transaction.
*/
- if (thd->active_transaction() && (var->type == OPT_SESSION))
+ if (thd->active_transaction())
{
my_error(ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_FORMAT, MYF(0));
return true;
}
- if (check_has_super(self, thd, var))
- return true;
- if (var->type == OPT_GLOBAL ||
- (thd->variables.binlog_format == var->save_result.ulonglong_value))
- return false;
-
return false;
}
@@ -329,32 +329,31 @@ static Sys_var_enum Sys_binlog_format(
static bool binlog_direct_check(sys_var *self, THD *thd, set_var *var)
{
+ if (check_has_super(self, thd, var))
+ return true;
+
+ if (var->type == OPT_GLOBAL)
+ return false;
+
/*
Makes the session variable 'binlog_direct_non_transactional_updates'
- read-only inside a transaction.
+ read-only if within a procedure, trigger or function.
*/
- if (thd->active_transaction() && (var->type == OPT_SESSION))
+ if (thd->in_sub_stmt)
{
- my_error(ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_DIRECT, MYF(0));
- return 1;
+ my_error(ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_DIRECT, MYF(0));
+ return true;
}
/*
Makes the session variable 'binlog_direct_non_transactional_updates'
- read-only if within a procedure, trigger or function.
+ read-only inside a transaction.
*/
- if (thd->in_sub_stmt)
+ if (thd->active_transaction())
{
- my_error(ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_DIRECT, MYF(0));
- return 1;
+ my_error(ER_INSIDE_TRANSACTION_PREVENTS_SWITCH_BINLOG_DIRECT, MYF(0));
+ return true;
}
- if (check_has_super(self, thd, var))
- return true;
- if (var->type == OPT_GLOBAL ||
- (thd->variables.binlog_direct_non_trans_update ==
- static_cast<my_bool>(var->save_result.ulonglong_value)))
- return false;
-
return false;
}
@@ -1930,7 +1929,7 @@ static Sys_var_set Sys_sql_mode(
sql_mode_names, DEFAULT(0), NO_MUTEX_GUARD, NOT_IN_BINLOG,
ON_CHECK(check_sql_mode), ON_UPDATE(fix_sql_mode));
-#ifdef HAVE_OPENSSL
+#if defined(HAVE_OPENSSL) && !defined(EMBEDDED_LIBRARY)
#define SSL_OPT(X) CMD_LINE(REQUIRED_ARG,X)
#else
#define SSL_OPT(X) NO_CMD_LINE
@@ -2827,7 +2826,7 @@ static Sys_var_charptr Sys_slave_load_tmpdir(
static bool fix_slave_net_timeout(sys_var *self, THD *thd, enum_var_type type)
{
mysql_mutex_lock(&LOCK_active_mi);
- DBUG_PRINT("info", ("slave_net_timeout=%lu mi->heartbeat_period=%.3f",
+ DBUG_PRINT("info", ("slave_net_timeout=%u mi->heartbeat_period=%.3f",
slave_net_timeout,
(active_mi? active_mi->heartbeat_period : 0.0)));
if (active_mi && slave_net_timeout < active_mi->heartbeat_period)