* ramil@stripped <ramil@stripped> [07/08/02 14:00]:
> ChangeSet@stripped, 2007-08-02 14:51:03+05:00, ramil@stripped +3 -0
> Fix for bug #30200: mysqlbinlog.test: connection_id() not restored under
> ps-protocol
>
> Problem: thd->thread_specific_used flag is not set executing a statement
> containig connection_id() function using PS protocol, that leads to
> improper binlog event creation.
>
> Fix: set the flag in the Item_func_connection_id::fix_fields().
OK to push.
> --- a/sql/item_create.cc 2007-08-01 15:27:00 +05:00
> +++ b/sql/item_create.cc 2007-08-02 14:51:00 +05:00
> @@ -72,7 +72,6 @@ Item *create_func_connection_id(void)
> {
> THD *thd= current_thd;
> thd->lex->safe_to_cache_query= 0;
> - thd->thread_specific_used= TRUE;
> return new Item_func_connection_id();
> }
>
> diff -Nrup a/sql/item_func.cc b/sql/item_func.cc
> --- a/sql/item_func.cc 2007-08-02 05:13:03 +05:00
> +++ b/sql/item_func.cc 2007-08-02 14:51:00 +05:00
> @@ -649,6 +649,7 @@ bool Item_func_connection_id::fix_fields
> {
> if (Item_int_func::fix_fields(thd, ref))
> return TRUE;
> + thd->thread_specific_used= TRUE;
> value= thd->variables.pseudo_thread_id;
> return FALSE;
> }
> diff -Nrup a/sql/sql_parse.cc b/sql/sql_parse.cc
> --- a/sql/sql_parse.cc 2007-07-30 20:27:30 +05:00
> +++ b/sql/sql_parse.cc 2007-08-02 14:51:00 +05:00
> @@ -5847,6 +5847,7 @@ void mysql_reset_thd_for_next_command(TH
> SERVER_QUERY_NO_GOOD_INDEX_USED);
> DBUG_ASSERT(thd->security_ctx== &thd->main_security_ctx);
> thd->tmp_table_used= 0;
> + thd->thread_specific_used= FALSE;
> if (!thd->in_sub_stmt)
> {
> if (opt_bin_log)
--
-- Konstantin Osipov Software Developer, Moscow, Russia
-- MySQL AB, www.mysql.com The best DATABASE COMPANY in the GALAXY