diff options
author | Oleksandr Byelkin <sanja@mariadb.com> | 2014-10-26 16:20:39 +0100 |
---|---|---|
committer | Oleksandr Byelkin <sanja@mariadb.com> | 2014-10-26 16:20:39 +0100 |
commit | 52a93f7c2cea157753f0c1dfddc468cca35127cb (patch) | |
tree | 348611a19659d76d42d823fa5e03d81c18dc3309 | |
parent | 5c5fd70fe6a0b4a3301fef386cdfa01e6d0e122b (diff) | |
download | mariadb-git-52a93f7c2cea157753f0c1dfddc468cca35127cb.tar.gz |
MDEV-6940: SET STATEMENT executed after SET GLOBAL does not work
SET STATEMENT is actually session variables SET so option_type should be set.
-rw-r--r-- | mysql-test/r/set_statement.result | 12 | ||||
-rw-r--r-- | mysql-test/t/set_statement.test | 12 | ||||
-rw-r--r-- | sql/sql_yacc.yy | 1 |
3 files changed, 25 insertions, 0 deletions
diff --git a/mysql-test/r/set_statement.result b/mysql-test/r/set_statement.result index 8bdcdde58fb..ae474882687 100644 --- a/mysql-test/r/set_statement.result +++ b/mysql-test/r/set_statement.result @@ -1040,3 +1040,15 @@ SELECT @@MAX_STATEMENT_TIME; 0.000000 SET STATEMENT keycache1.key_buffer_size=1024 FOR SELECT 1; ERROR HY000: Variable 'key_buffer_size' is a GLOBAL variable and should be set with SET GLOBAL +set @save_general_log=@@general_log; +# SET STATEMENT works (OK) +set statement lock_wait_timeout=1 for select @@lock_wait_timeout; +@@lock_wait_timeout +1 +# Setting a totally unrelated global variable +set global general_log=0; +# SET STATEMENT should work +set statement lock_wait_timeout=1 for select @@lock_wait_timeout; +@@lock_wait_timeout +1 +set global general_log=@save_general_log; diff --git a/mysql-test/t/set_statement.test b/mysql-test/t/set_statement.test index c1615321d33..6382a35d63d 100644 --- a/mysql-test/t/set_statement.test +++ b/mysql-test/t/set_statement.test @@ -982,3 +982,15 @@ SELECT @@MAX_STATEMENT_TIME; --error ER_GLOBAL_VARIABLE SET STATEMENT keycache1.key_buffer_size=1024 FOR SELECT 1; + +# +# MDEV-6940: SET STATEMENT executed after SET GLOBAL does not work +# +set @save_general_log=@@general_log; +--echo # SET STATEMENT works (OK) +set statement lock_wait_timeout=1 for select @@lock_wait_timeout; +--echo # Setting a totally unrelated global variable +set global general_log=0; +--echo # SET STATEMENT should work +set statement lock_wait_timeout=1 for select @@lock_wait_timeout; +set global general_log=@save_general_log; diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 08223819e7d..256c78058f4 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -14398,6 +14398,7 @@ set: { LEX *lex= Lex; mysql_init_select(lex); + lex->option_type= OPT_SESSION; lex->sql_command= SQLCOM_SET_OPTION; lex->autocommit= 0; } |