diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2021-03-05 12:54:43 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2021-03-05 12:54:43 +0200 |
commit | 10d544aa7b305210246a976ca47a7559f8b78f72 (patch) | |
tree | a6df2319a67afbc523be05789c77e9a28a49e29c /sql/sql_prepare.cc | |
parent | aa4f76bed715ec1016260f593e9cf4a8a1a4da36 (diff) | |
parent | fcc9f8b10cd2f497ff410b592808eedb3ee5f212 (diff) | |
download | mariadb-git-10d544aa7b305210246a976ca47a7559f8b78f72.tar.gz |
Merge 10.4 into 10.5
Diffstat (limited to 'sql/sql_prepare.cc')
-rw-r--r-- | sql/sql_prepare.cc | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index 21c8f739dd2..33ced717ab9 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -4260,6 +4260,16 @@ bool Prepared_statement::prepare(const char *packet, uint packet_len) */ MDL_savepoint mdl_savepoint= thd->mdl_context.mdl_savepoint(); + /* + Set variables specified by + SET STATEMENT var1=value1 [, var2=value2, ...] FOR <statement> + clause for duration of prepare phase. Original values of variable + listed in the SET STATEMENT clause is restored right after return + from the function check_prepared_statement() + */ + if (likely(error == 0)) + error= run_set_statement_if_requested(thd, lex); + /* The only case where we should have items in the thd->free_list is after stmt->set_params_from_vars(), which may in some cases create @@ -4278,6 +4288,12 @@ bool Prepared_statement::prepare(const char *packet, uint packet_len) lex->context_analysis_only&= ~CONTEXT_ANALYSIS_ONLY_PREPARE; } + /* + Restore original values of variables modified on handling + SET STATEMENT clause. + */ + thd->lex->restore_set_statement_var(); + /* The order is important */ lex->unit.cleanup(); |