summaryrefslogtreecommitdiff
path: root/sql/sp_head.h
diff options
context:
space:
mode:
authorunknown <sergefp@mysql.com>2005-08-03 03:47:07 +0000
committerunknown <sergefp@mysql.com>2005-08-03 03:47:07 +0000
commite442059c0dbfeadaabf7e12e905fec0b94c153a6 (patch)
tree551d1a44fe7c14ba73b87378e84fb04d7228ab30 /sql/sp_head.h
parent88105618c5eba3714189875a8d799cb7503bd657 (diff)
parentb323667ffc7176482073ca7d626560dcd8d7ee75 (diff)
downloadmariadb-git-e442059c0dbfeadaabf7e12e905fec0b94c153a6.tar.gz
Manual merge
mysql-test/r/sp.result: Auto merged mysql-test/r/view.result: Auto merged mysql-test/t/view.test: Auto merged sql/item_func.cc: Auto merged sql/sp.cc: Auto merged sql/sp_head.cc: Auto merged sql/sp_head.h: Auto merged sql/sql_base.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_class.h: Auto merged sql/sql_lex.cc: Auto merged sql/sql_parse.cc: Auto merged sql/sql_trigger.h: Auto merged
Diffstat (limited to 'sql/sp_head.h')
-rw-r--r--sql/sp_head.h26
1 files changed, 25 insertions, 1 deletions
diff --git a/sql/sp_head.h b/sql/sp_head.h
index 09b9c8f47a1..e15b68be158 100644
--- a/sql/sp_head.h
+++ b/sql/sp_head.h
@@ -282,6 +282,10 @@ private:
/*
Multi-set representing optimized list of tables to be locked by this
routine. Does not include tables which are used by invoked routines.
+
+ Note: for prelocking-free SPs this multiset is constructed too.
+ We do so because the same instance of sp_head may be called both
+ in prelocked mode and in non-prelocked mode.
*/
HASH m_sptabs;
@@ -383,7 +387,8 @@ class sp_lex_keeper
public:
sp_lex_keeper(LEX *lex, bool lex_resp)
- : m_lex(lex), m_lex_resp(lex_resp)
+ : m_lex(lex), m_lex_resp(lex_resp),
+ lex_query_tables_own_last(NULL)
{
lex->sp_lex_in_use= TRUE;
}
@@ -418,6 +423,25 @@ private:
for LEX deletion.
*/
bool m_lex_resp;
+
+ /*
+ Support for being able to execute this statement in two modes:
+ a) inside prelocked mode set by the calling procedure or its ancestor.
+ b) outside of prelocked mode, when this statement enters/leaves
+ prelocked mode itself.
+ */
+
+ /*
+ List of additional tables this statement needs to lock when it
+ enters/leaves prelocked mode on its own.
+ */
+ TABLE_LIST *prelocking_tables;
+
+ /*
+ The value m_lex->query_tables_own_last should be set to this when the
+ statement enters/leaves prelocked mode on its own.
+ */
+ TABLE_LIST **lex_query_tables_own_last;
};