summaryrefslogtreecommitdiff
path: root/sql/sql_class.h
diff options
context:
space:
mode:
authorunknown <mats@mysql.com>2006-06-22 13:28:04 +0200
committerunknown <mats@mysql.com>2006-06-22 13:28:04 +0200
commitab28aa9ce067d2e520b8cec5bebb2f6ff171a68b (patch)
treeaa0fbfe682c27bcd1216fb2d55d8ed96c3146104 /sql/sql_class.h
parent767cb0b4a6ed04113da94848f20442b84f73d61c (diff)
downloadmariadb-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.h13
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;
};