summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.com>2018-04-03 20:06:57 +0400
committerAlexander Barkov <bar@mariadb.com>2018-04-03 20:06:57 +0400
commitb7ea56349189489e0276ad78a27214b8f76193ef (patch)
treeb380e08ff8099d1e5f7c680a4cb706ecb1386f0d
parent94ecd2314d74eb3a77cf5ba762a2fabe21f211ac (diff)
downloadmariadb-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.test2
-rw-r--r--sql/sql_lex.cc6
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);
}