diff options
author | Dmitry Shulga <Dmitry.Shulga@Sun.COM> | 2010-07-23 18:15:56 +0700 |
---|---|---|
committer | Dmitry Shulga <Dmitry.Shulga@Sun.COM> | 2010-07-23 18:15:56 +0700 |
commit | 25c849dbd3617d2c2b1ae84a2086d3067e95fd09 (patch) | |
tree | 9381a32bdc4bdb5795dd8183ce6760294f74dc6e /sql/sql_class.cc | |
parent | bd41af86ebc53510760504b980f073be4438f6e9 (diff) | |
parent | 9293e4308a8c8987209b4aab5096766072b654cf (diff) | |
download | mariadb-git-25c849dbd3617d2c2b1ae84a2086d3067e95fd09.tar.gz |
Merge 5.1-bugteam -> 5.1-bug-42496
Diffstat (limited to 'sql/sql_class.cc')
-rw-r--r-- | sql/sql_class.cc | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 99792f2b262..7c52e6957cc 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -736,6 +736,9 @@ THD::THD() thr_lock_owner_init(&main_lock_id, &lock_info); m_internal_handler= NULL; + current_user_used= FALSE; + memset(&invoker_user, 0, sizeof(invoker_user)); + memset(&invoker_host, 0, sizeof(invoker_host)); } @@ -1060,6 +1063,9 @@ void add_to_status(STATUS_VAR *to_var, STATUS_VAR *from_var) while (to != end) *(to++)+= *(from++); + + to_var->bytes_received+= from_var->bytes_received; + to_var->bytes_sent+= from_var->bytes_sent; } /* @@ -1085,6 +1091,9 @@ void add_diff_to_status(STATUS_VAR *to_var, STATUS_VAR *from_var, while (to != end) *(to++)+= *(from++) - *(dec++); + + to_var->bytes_received+= from_var->bytes_received - dec_var->bytes_received;; + to_var->bytes_sent+= from_var->bytes_sent - dec_var->bytes_sent; } @@ -1236,6 +1245,7 @@ void THD::cleanup_after_query() where= THD::DEFAULT_WHERE; /* reset table map for multi-table update */ table_map_for_update= 0; + clean_current_user_used(); } @@ -3267,6 +3277,22 @@ void THD::set_query(char *query_arg, uint32 query_length_arg) pthread_mutex_unlock(&LOCK_thd_data); } +void THD::get_definer(LEX_USER *definer) +{ + set_current_user_used(); +#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION) + if (slave_thread && has_invoker()) + { + definer->user = invoker_user; + definer->host= invoker_host; + definer->password.str= NULL; + definer->password.length= 0; + } + else +#endif + get_default_definer(this, definer); +} + /** Mark transaction to rollback and mark error as fatal to a sub-statement. |