summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOleksandr Byelkin <sanja@mariadb.com>2014-11-05 11:05:01 +0100
committerOleksandr Byelkin <sanja@mariadb.com>2014-11-05 11:05:01 +0100
commit953dd8d87fea224e26d11452eb458c79ba098f4a (patch)
treee650c8a11e5dd5f46a4a51526c8186a222da1df5
parentd6981391eb8f904135dfdedb5b90a7592b35e648 (diff)
downloadmariadb-git-bb-10.1-set-statement.tar.gz
MDEV-6997 MDEV-6996 MDEV-7002 MDEV-7006 MDEV-7009 MDEV-7012 MDEV-7015 MDEV-6977bb-10.1-set-statement
-rw-r--r--mysql-test/r/set_statement.result34
-rw-r--r--mysql-test/t/set_statement.test35
-rw-r--r--sql/sys_vars.cc37
3 files changed, 88 insertions, 18 deletions
diff --git a/mysql-test/r/set_statement.result b/mysql-test/r/set_statement.result
index 3afc097ad47..efe5286147c 100644
--- a/mysql-test/r/set_statement.result
+++ b/mysql-test/r/set_statement.result
@@ -1066,3 +1066,37 @@ set statement skip_replication=default for select 1;
ERROR 42000: The system variable skip_replication cannot be set in SET STATEMENT.
set statement default_master_connection=default for select 1;
ERROR 42000: The system variable default_master_connection cannot be set in SET STATEMENT.
+set statement default_master_connection=default for select 1;
+ERROR 42000: The system variable default_master_connection cannot be set in SET STATEMENT.
+set statement last_insert_id=1 for select 1;
+ERROR 42000: The system variable last_insert_id cannot be set in SET STATEMENT.
+set statement sql_log_off=default for select 1;
+ERROR 42000: The system variable sql_log_off cannot be set in SET STATEMENT.
+set statement long_query_time=default for select 1;
+ERROR 42000: The system variable long_query_time cannot be set in SET STATEMENT.
+set statement log_slow_filter=default for select 1;
+ERROR 42000: The system variable log_slow_filter cannot be set in SET STATEMENT.
+set statement log_slow_verbosity=default for select 1;
+ERROR 42000: The system variable log_slow_verbosity cannot be set in SET STATEMENT.
+set statement log_slow_rate_limit=default for select 1;
+ERROR 42000: The system variable log_slow_rate_limit cannot be set in SET STATEMENT.
+set statement slow_query_log=default for select 1;
+ERROR 42000: The system variable slow_query_log cannot be set in SET STATEMENT.
+set statement min_examined_row_limit=default for select 1;
+ERROR 42000: The system variable min_examined_row_limit cannot be set in SET STATEMENT.
+set statement character_set_client=default for select 1;
+ERROR 42000: The system variable character_set_client cannot be set in SET STATEMENT.
+set statement character_set_connection=default for select 1;
+ERROR 42000: The system variable character_set_connection cannot be set in SET STATEMENT.
+set statement character_set_filesystem=default for select 1;
+ERROR 42000: The system variable character_set_filesystem cannot be set in SET STATEMENT.
+set statement collation_connection=default for select 1;
+ERROR 42000: The system variable collation_connection cannot be set in SET STATEMENT.
+set statement old_passwords=default for select 1;
+ERROR 42000: The system variable old_passwords cannot be set in SET STATEMENT.
+set statement query_cache_type=default for select 1;
+ERROR 42000: The system variable query_cache_type cannot be set in SET STATEMENT.
+set statement wait_timeout=default for select 1;
+ERROR 42000: The system variable wait_timeout cannot be set in SET STATEMENT.
+set statement interactive_timeout=default for select 1;
+ERROR 42000: The system variable interactive_timeout cannot be set in SET STATEMENT.
diff --git a/mysql-test/t/set_statement.test b/mysql-test/t/set_statement.test
index b92e90937f3..a65807192b5 100644
--- a/mysql-test/t/set_statement.test
+++ b/mysql-test/t/set_statement.test
@@ -1012,3 +1012,38 @@ set statement rand_seed2=default for select 1;
set statement skip_replication=default for select 1;
--error ER_SET_STATEMENT_NOT_SUPPORTED
set statement default_master_connection=default for select 1;
+--error ER_SET_STATEMENT_NOT_SUPPORTED
+set statement default_master_connection=default for select 1;
+--error ER_SET_STATEMENT_NOT_SUPPORTED
+set statement last_insert_id=1 for select 1;
+--error ER_SET_STATEMENT_NOT_SUPPORTED
+set statement sql_log_off=default for select 1;
+--error ER_SET_STATEMENT_NOT_SUPPORTED
+set statement long_query_time=default for select 1;
+--error ER_SET_STATEMENT_NOT_SUPPORTED
+set statement log_slow_filter=default for select 1;
+--error ER_SET_STATEMENT_NOT_SUPPORTED
+set statement log_slow_verbosity=default for select 1;
+--error ER_SET_STATEMENT_NOT_SUPPORTED
+set statement log_slow_rate_limit=default for select 1;
+--error ER_SET_STATEMENT_NOT_SUPPORTED
+set statement slow_query_log=default for select 1;
+--error ER_SET_STATEMENT_NOT_SUPPORTED
+set statement min_examined_row_limit=default for select 1;
+--error ER_SET_STATEMENT_NOT_SUPPORTED
+set statement character_set_client=default for select 1;
+--error ER_SET_STATEMENT_NOT_SUPPORTED
+set statement character_set_connection=default for select 1;
+--error ER_SET_STATEMENT_NOT_SUPPORTED
+set statement character_set_filesystem=default for select 1;
+--error ER_SET_STATEMENT_NOT_SUPPORTED
+set statement collation_connection=default for select 1;
+--error ER_SET_STATEMENT_NOT_SUPPORTED
+set statement old_passwords=default for select 1;
+--error ER_SET_STATEMENT_NOT_SUPPORTED
+set statement query_cache_type=default for select 1;
+--error ER_SET_STATEMENT_NOT_SUPPORTED
+set statement wait_timeout=default for select 1;
+--error ER_SET_STATEMENT_NOT_SUPPORTED
+set statement interactive_timeout=default for select 1;
+
diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc
index 95beed887df..20193fedcc4 100644
--- a/sql/sys_vars.cc
+++ b/sql/sys_vars.cc
@@ -636,7 +636,7 @@ static bool fix_thd_charset(sys_var *self, THD *thd, enum_var_type type)
static Sys_var_struct Sys_character_set_client(
"character_set_client", "The character set for statements "
"that arrive from the client",
- SESSION_VAR(character_set_client), NO_CMD_LINE,
+ NO_SET_STMT SESSION_VAR(character_set_client), NO_CMD_LINE,
offsetof(CHARSET_INFO, csname), DEFAULT(&default_charset_info),
NO_MUTEX_GUARD, IN_BINLOG, ON_CHECK(check_cs_client),
ON_UPDATE(fix_thd_charset));
@@ -645,7 +645,7 @@ static Sys_var_struct Sys_character_set_connection(
"character_set_connection", "The character set used for "
"literals that do not have a character set introducer and for "
"number-to-string conversion",
- SESSION_VAR(collation_connection), NO_CMD_LINE,
+ NO_SET_STMT SESSION_VAR(collation_connection), NO_CMD_LINE,
offsetof(CHARSET_INFO, csname), DEFAULT(&default_charset_info),
NO_MUTEX_GUARD, IN_BINLOG, ON_CHECK(check_charset_not_null),
ON_UPDATE(fix_thd_charset));
@@ -659,7 +659,7 @@ static Sys_var_struct Sys_character_set_results(
static Sys_var_struct Sys_character_set_filesystem(
"character_set_filesystem", "The filesystem character set",
- SESSION_VAR(character_set_filesystem), NO_CMD_LINE,
+ NO_SET_STMT SESSION_VAR(character_set_filesystem), NO_CMD_LINE,
offsetof(CHARSET_INFO, csname), DEFAULT(&character_set_filesystem),
NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(check_charset_not_null),
ON_UPDATE(fix_thd_charset));
@@ -705,7 +705,7 @@ static bool check_collation_not_null(sys_var *self, THD *thd, set_var *var)
static Sys_var_struct Sys_collation_connection(
"collation_connection", "The collation of the connection "
"character set",
- SESSION_VAR(collation_connection), NO_CMD_LINE,
+ NO_SET_STMT SESSION_VAR(collation_connection), NO_CMD_LINE,
offsetof(CHARSET_INFO, name), DEFAULT(&default_charset_info),
NO_MUTEX_GUARD, IN_BINLOG, ON_CHECK(check_collation_not_null),
ON_UPDATE(fix_thd_charset));
@@ -1024,7 +1024,7 @@ static Sys_var_ulong Sys_interactive_timeout(
"interactive_timeout",
"The number of seconds the server waits for activity on an interactive "
"connection before closing it",
- SESSION_VAR(net_interactive_timeout),
+ NO_SET_STMT SESSION_VAR(net_interactive_timeout),
CMD_LINE(REQUIRED_ARG),
VALID_RANGE(1, LONG_TIMEOUT), DEFAULT(NET_WAIT_TIMEOUT), BLOCK_SIZE(1));
@@ -1182,7 +1182,7 @@ static Sys_var_double Sys_long_query_time(
"Log all queries that have taken more than long_query_time seconds "
"to execute to file. The argument will be treated as a decimal value "
"with microsecond precision",
- SESSION_VAR(long_query_time_double),
+ NO_SET_STMT SESSION_VAR(long_query_time_double),
CMD_LINE(REQUIRED_ARG), VALID_RANGE(0, LONG_TIMEOUT), DEFAULT(10),
NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
ON_UPDATE(update_cached_long_query_time));
@@ -2037,7 +2037,7 @@ static Sys_var_ulong Sys_min_examined_row_limit(
"min_examined_row_limit",
"Don't write queries to slow log that examine fewer rows "
"than that",
- SESSION_VAR(min_examined_row_limit), CMD_LINE(REQUIRED_ARG),
+ NO_SET_STMT SESSION_VAR(min_examined_row_limit), CMD_LINE(REQUIRED_ARG),
VALID_RANGE(0, UINT_MAX), DEFAULT(0), BLOCK_SIZE(1));
#ifdef _WIN32
@@ -2130,8 +2130,9 @@ static bool check_old_passwords(sys_var *self, THD *thd, set_var *var)
static Sys_var_mybool Sys_old_passwords(
"old_passwords",
"Use old password encryption method (needed for 4.0 and older clients)",
- SESSION_VAR(old_passwords), CMD_LINE(OPT_ARG), DEFAULT(FALSE),
- NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(check_old_passwords));
+ NO_SET_STMT SESSION_VAR(old_passwords), CMD_LINE(OPT_ARG),
+ DEFAULT(FALSE), NO_MUTEX_GUARD, NOT_IN_BINLOG,
+ ON_CHECK(check_old_passwords));
export sys_var *Sys_old_passwords_ptr= &Sys_old_passwords; // for sql_acl.cc
static Sys_var_ulong Sys_open_files_limit(
@@ -2675,7 +2676,7 @@ static Sys_var_enum Sys_query_cache_type(
"OFF = Don't cache or retrieve results. ON = Cache all results "
"except SELECT SQL_NO_CACHE ... queries. DEMAND = Cache only "
"SELECT SQL_CACHE ... queries",
- SESSION_VAR(query_cache_type), CMD_LINE(REQUIRED_ARG),
+ NO_SET_STMT SESSION_VAR(query_cache_type), CMD_LINE(REQUIRED_ARG),
query_cache_type_names, DEFAULT(1), NO_MUTEX_GUARD, NOT_IN_BINLOG,
ON_CHECK(check_query_cache_type),
ON_UPDATE(fix_query_cache_type));
@@ -3284,7 +3285,7 @@ static Sys_var_ulong Sys_net_wait_timeout(
"wait_timeout",
"The number of seconds the server waits for activity on a "
"connection before closing it",
- SESSION_VAR(net_wait_timeout), CMD_LINE(REQUIRED_ARG),
+ NO_SET_STMT SESSION_VAR(net_wait_timeout), CMD_LINE(REQUIRED_ARG),
VALID_RANGE(1, IF_WIN(INT_MAX32/1000, LONG_TIMEOUT)),
DEFAULT(NET_WAIT_TIMEOUT), BLOCK_SIZE(1));
@@ -3424,7 +3425,7 @@ static Sys_var_bit Sys_big_selects(
static Sys_var_bit Sys_log_off(
"sql_log_off", "sql_log_off",
- SESSION_VAR(option_bits), NO_CMD_LINE, OPTION_LOG_OFF,
+ NO_SET_STMT SESSION_VAR(option_bits), NO_CMD_LINE, OPTION_LOG_OFF,
DEFAULT(FALSE), NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(check_has_super));
/**
@@ -3618,7 +3619,7 @@ static ulonglong read_last_insert_id(THD *thd)
}
static Sys_var_session_special Sys_last_insert_id(
"last_insert_id", "The value to be returned from LAST_INSERT_ID()",
- sys_var::ONLY_SESSION, NO_CMD_LINE,
+ NO_SET_STMT sys_var::ONLY_SESSION, NO_CMD_LINE,
VALID_RANGE(0, ULONGLONG_MAX), BLOCK_SIZE(1),
NO_MUTEX_GUARD, IN_BINLOG, ON_CHECK(0),
ON_UPDATE(update_last_insert_id), ON_READ(read_last_insert_id));
@@ -3740,7 +3741,7 @@ static Sys_var_session_special Sys_warning_count(
static Sys_var_ulong Sys_default_week_format(
"default_week_format",
"The default week format used by WEEK() functions",
- SESSION_VAR(default_week_format), CMD_LINE(REQUIRED_ARG),
+ NO_SET_STMT SESSION_VAR(default_week_format), CMD_LINE(REQUIRED_ARG),
VALID_RANGE(0, 7), DEFAULT(0), BLOCK_SIZE(1));
static Sys_var_ulonglong Sys_group_concat_max_len(
@@ -3963,7 +3964,7 @@ static Sys_var_mybool Sys_slow_query_log(
"Log slow queries to a table or log file. Defaults logging to a file "
"'hostname'-slow.log or a table mysql.slow_log if --log-output=TABLE is "
"used. Must be enabled to activate other slow log options",
- SESSION_VAR(sql_log_slow), CMD_LINE(OPT_ARG),
+ NO_SET_STMT SESSION_VAR(sql_log_slow), CMD_LINE(OPT_ARG),
DEFAULT(FALSE), NO_MUTEX_GUARD, NOT_IN_BINLOG,
ON_CHECK(0), ON_UPDATE(fix_log_state));
@@ -4834,7 +4835,7 @@ static const char *log_slow_filter_names[]=
static Sys_var_set Sys_log_slow_filter(
"log_slow_filter",
"Log only certain types of queries",
- SESSION_VAR(log_slow_filter), CMD_LINE(REQUIRED_ARG),
+ NO_SET_STMT SESSION_VAR(log_slow_filter), CMD_LINE(REQUIRED_ARG),
log_slow_filter_names,
DEFAULT(MAX_SET(array_elements(log_slow_filter_names)-1)));
@@ -4881,7 +4882,7 @@ static Sys_var_ulong Sys_log_slow_rate_limit(
"Write to slow log every #th slow query. Set to 1 to log everything. "
"Increase it to reduce the size of the slow or the performance impact "
"of slow logging",
- SESSION_VAR(log_slow_rate_limit), CMD_LINE(REQUIRED_ARG),
+ NO_SET_STMT SESSION_VAR(log_slow_rate_limit), CMD_LINE(REQUIRED_ARG),
VALID_RANGE(1, UINT_MAX), DEFAULT(1), BLOCK_SIZE(1));
static const char *log_slow_verbosity_names[]= { "innodb", "query_plan",
@@ -4889,7 +4890,7 @@ static const char *log_slow_verbosity_names[]= { "innodb", "query_plan",
static Sys_var_set Sys_log_slow_verbosity(
"log_slow_verbosity",
"Verbosity level for the slow log",
- SESSION_VAR(log_slow_verbosity), CMD_LINE(REQUIRED_ARG),
+ NO_SET_STMT SESSION_VAR(log_slow_verbosity), CMD_LINE(REQUIRED_ARG),
log_slow_verbosity_names, DEFAULT(LOG_SLOW_VERBOSITY_INIT));
static Sys_var_ulong Sys_join_cache_level(