Commit 45a5d797 authored by Konstantin Osipov's avatar Konstantin Osipov

Backport of:

------------------------------------------------------------
revno: 2630.4.39
committer: Dmitry Lenev <dlenev@mysql.com>
branch nick: mysql-6.0-3726-w2
timestamp: Thu 2008-06-26 13:08:27 +0400
message:
  Fix warnings about passing pointer to not fully-initialized THD
  object to constructor of base Open_tables_state classe, which
  appeared on Windows and were introduced by one of the patches
  implementing WL#3726 "DDL locking for all metadata objects".
parent ef15a335
...@@ -202,12 +202,6 @@ bool foreign_key_prefix(Key *a, Key *b) ...@@ -202,12 +202,6 @@ bool foreign_key_prefix(Key *a, Key *b)
** Thread specific functions ** Thread specific functions
****************************************************************************/ ****************************************************************************/
Open_tables_state::Open_tables_state(THD *thd, ulong version_arg)
:version(version_arg), state_flags(0U)
{
reset_open_tables_state(thd);
}
/* /*
The following functions form part of the C plugin API The following functions form part of the C plugin API
*/ */
...@@ -440,7 +434,7 @@ bool Drop_table_error_handler::handle_condition(THD *thd, ...@@ -440,7 +434,7 @@ bool Drop_table_error_handler::handle_condition(THD *thd,
THD::THD() THD::THD()
:Statement(&main_lex, &main_mem_root, CONVENTIONAL_EXECUTION, :Statement(&main_lex, &main_mem_root, CONVENTIONAL_EXECUTION,
/* statement id */ 0), /* statement id */ 0),
Open_tables_state(this, refresh_version), rli_fake(0), rli_fake(0),
lock_id(&main_lock_id), lock_id(&main_lock_id),
user_time(0), in_sub_stmt(0), user_time(0), in_sub_stmt(0),
sql_log_bin_toplevel(false), sql_log_bin_toplevel(false),
...@@ -542,6 +536,9 @@ THD::THD() ...@@ -542,6 +536,9 @@ THD::THD()
command=COM_CONNECT; command=COM_CONNECT;
*scramble= '\0'; *scramble= '\0';
/* Call to init() below requires fully initialized Open_tables_state. */
init_open_tables_state(this, refresh_version);
init(); init();
#if defined(ENABLED_PROFILING) #if defined(ENABLED_PROFILING)
profiling.set_thd(this); profiling.set_thd(this);
......
...@@ -984,13 +984,22 @@ class Open_tables_state ...@@ -984,13 +984,22 @@ class Open_tables_state
MDL_CONTEXT mdl_context; MDL_CONTEXT mdl_context;
MDL_CONTEXT handler_mdl_context; MDL_CONTEXT handler_mdl_context;
/* /**
This constructor serves for creation of Open_tables_state instances This constructor initializes Open_tables_state instance which can only
which are used as backup storage. be used as backup storage. To prepare Open_tables_state instance for
operations which open/lock/close tables (e.g. open_table()) one has to
call init_open_tables_state().
*/ */
Open_tables_state() : state_flags(0U) { } Open_tables_state() : state_flags(0U) { }
Open_tables_state(THD *thd, ulong version_arg); /**
Prepare Open_tables_state instance for operations dealing with tables.
*/
void init_open_tables_state(THD *thd, ulong version_arg)
{
reset_open_tables_state(thd);
version= version_arg;
}
void set_open_tables_state(Open_tables_state *state) void set_open_tables_state(Open_tables_state *state)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment