diff options
author | Alexander Barkov <bar@mariadb.com> | 2018-04-03 20:06:57 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.com> | 2018-04-03 20:06:57 +0400 |
commit | b7ea56349189489e0276ad78a27214b8f76193ef (patch) | |
tree | b380e08ff8099d1e5f7c680a4cb706ecb1386f0d | |
parent | 94ecd2314d74eb3a77cf5ba762a2fabe21f211ac (diff) | |
download | mariadb-git-b7ea56349189489e0276ad78a27214b8f76193ef.tar.gz |
Cleanup in the system variable parsing code
- Adding "return true" into LEX::set_system_variable()
and LEX::set_default_system_variable() after my_error().
This makes the parser exit on error immediately.
Previously, the error was caught only in mysql_parser(),
a few lines after the parse_sql() call.
- Fixing "--error 1272" to "--error ER_VARIABLE_IS_NOT_STRUCT" in tests
-rw-r--r-- | mysql-test/main/key_cache.test | 2 | ||||
-rw-r--r-- | sql/sql_lex.cc | 6 |
2 files changed, 7 insertions, 1 deletions
diff --git a/mysql-test/main/key_cache.test b/mysql-test/main/key_cache.test index d28e7c23a4c..fb6ae497e74 100644 --- a/mysql-test/main/key_cache.test +++ b/mysql-test/main/key_cache.test @@ -44,7 +44,7 @@ SET @@global.key_buffer_size=@save_key_buffer_size; --error 1064 SELECT @@default.key_buffer_size; ---error 1272 +--error ER_VARIABLE_IS_NOT_STRUCT SELECT @@skr.storage_engine="test"; select @@keycache1.key_cache_block_size; diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index ee434e4ffae..c2f256c73b5 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -7011,7 +7011,10 @@ bool LEX::set_default_system_variable(enum_var_type var_type, if (!var) return true; if (!var->is_struct()) + { my_error(ER_VARIABLE_IS_NOT_STRUCT, MYF(0), name->str); + return true; + } return set_system_variable(var_type, var, &default_base_name, val); } @@ -7040,7 +7043,10 @@ bool LEX::set_system_variable(THD *thd, enum_var_type var_type, return true; } if (!tmp->is_struct()) + { my_error(ER_VARIABLE_IS_NOT_STRUCT, MYF(0), name2->str); + return true; + } return set_system_variable(var_type, tmp, name1, val); } |