diff options
author | unknown <mats@mysql.com> | 2006-06-22 13:28:04 +0200 |
---|---|---|
committer | unknown <mats@mysql.com> | 2006-06-22 13:28:04 +0200 |
commit | ab28aa9ce067d2e520b8cec5bebb2f6ff171a68b (patch) | |
tree | aa0fbfe682c27bcd1216fb2d55d8ed96c3146104 /sql/sql_class.h | |
parent | 767cb0b4a6ed04113da94848f20442b84f73d61c (diff) | |
download | mariadb-git-ab28aa9ce067d2e520b8cec5bebb2f6ff171a68b.tar.gz |
Patch to handle some bad situations resulting from the fix for BUG#19995.
sql/handler.cc:
Generating table maps from all locks that can be available: THD::extra_lock,
THD::lock, and THD::locked_tables.
sql/sql_class.h:
Adding member Open_tables:state::extra_lock to hold the extra lock used by select_create.
Removing select_insert::lock.
sql/sql_insert.cc:
Adding member Open_tables:state::extra_lock to hold the extra lock used by select_create.
Removing select_insert::lock.
Diffstat (limited to 'sql/sql_class.h')
-rw-r--r-- | sql/sql_class.h | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/sql/sql_class.h b/sql/sql_class.h index b6283b6d174..fa4a29ff112 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -693,6 +693,14 @@ public: THD::prelocked_mode for more info.) */ MYSQL_LOCK *locked_tables; + + /* + CREATE-SELECT keeps an extra lock for the table being + created. This field is used to keep the extra lock available for + lower level routines, which would otherwise miss that lock. + */ + MYSQL_LOCK *extra_lock; + /* prelocked_mode_type enum and prelocked_mode member are used for indicating whenever "prelocked mode" is on, and what type of @@ -745,7 +753,7 @@ public: void reset_open_tables_state() { open_tables= temporary_tables= handler_tables= derived_tables= 0; - lock= locked_tables= 0; + extra_lock= lock= locked_tables= 0; prelocked_mode= NON_PRELOCKED; state_flags= 0U; } @@ -1591,9 +1599,6 @@ class select_insert :public select_result_interceptor { bool send_eof(); /* not implemented: select_insert is never re-used in prepared statements */ void cleanup(); - -protected: - MYSQL_LOCK *lock; }; |