summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
Diffstat (limited to 'sql')
-rw-r--r--sql/sql_lex.cc7
-rw-r--r--sql/sql_lex.h2
-rw-r--r--sql/sql_prepare.cc2
3 files changed, 6 insertions, 5 deletions
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc
index ed0b4b36553..125bbfe1bfd 100644
--- a/sql/sql_lex.cc
+++ b/sql/sql_lex.cc
@@ -4766,18 +4766,19 @@ void LEX::free_arena_for_set_stmt()
DBUG_VOID_RETURN;
}
-void LEX::restore_set_statement_var()
+bool LEX::restore_set_statement_var()
{
+ bool err= false;
DBUG_ENTER("LEX::restore_set_statement_var");
if (!old_var_list.is_empty())
{
DBUG_PRINT("info", ("vars: %d", old_var_list.elements));
- sql_set_variables(thd, &old_var_list, false);
+ err= sql_set_variables(thd, &old_var_list, false);
old_var_list.empty();
free_arena_for_set_stmt();
}
DBUG_ASSERT(!is_arena_for_set_stmt());
- DBUG_VOID_RETURN;
+ DBUG_RETURN(err);
}
/*
diff --git a/sql/sql_lex.h b/sql/sql_lex.h
index bdf52e8ef7b..5585a95f67f 100644
--- a/sql/sql_lex.h
+++ b/sql/sql_lex.h
@@ -3094,7 +3094,7 @@ public:
int print_explain(select_result_sink *output, uint8 explain_flags,
bool is_analyze, bool *printed_anything);
- void restore_set_statement_var();
+ bool restore_set_statement_var();
void init_last_field(Column_definition *field, const char *name, CHARSET_INFO *cs);
void set_last_field_type(const Lex_field_type_st &type);
diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc
index 9339cb925e5..bb1a99d9eef 100644
--- a/sql/sql_prepare.cc
+++ b/sql/sql_prepare.cc
@@ -4283,7 +4283,7 @@ bool Prepared_statement::prepare(const char *packet, uint packet_len)
Restore original values of variables modified on handling
SET STATEMENT clause.
*/
- thd->lex->restore_set_statement_var();
+ error|= thd->lex->restore_set_statement_var();
/* The order is important */
lex->unit.cleanup();