summaryrefslogtreecommitdiff
path: root/sql/sp_head.cc
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2016-11-10 16:10:41 +0100
committerSergei Golubchik <serg@mariadb.org>2018-09-04 08:37:44 +0200
commit3b365fa82917ea0a29e11f160a80707d27b9948a (patch)
treebdb910f764802ab38f4163371bf52aee4f453845 /sql/sp_head.cc
parent22bcfa011acd81c44c2ad969a0edc2401a32a311 (diff)
downloadmariadb-git-3b365fa82917ea0a29e11f160a80707d27b9948a.tar.gz
cleanup: sp_head::add_used_tables_to_table_list()
Use TABLE::init_one_table(), don't duplicate it. Put additional initializations into TABLE::init_one_table_for_prelocking() Backport of f1362910980
Diffstat (limited to 'sql/sp_head.cc')
-rw-r--r--sql/sp_head.cc33
1 files changed, 6 insertions, 27 deletions
diff --git a/sql/sp_head.cc b/sql/sp_head.cc
index 164ceb677ee..4c88fc5809a 100644
--- a/sql/sp_head.cc
+++ b/sql/sp_head.cc
@@ -4219,7 +4219,7 @@ sp_head::add_used_tables_to_table_list(THD *thd,
if (stab->temp)
continue;
- if (!(tab_buff= (char *)thd->calloc(ALIGN_SIZE(sizeof(TABLE_LIST)) *
+ if (!(tab_buff= (char *)thd->alloc(ALIGN_SIZE(sizeof(TABLE_LIST)) *
stab->lock_count)) ||
!(key_buff= (char*)thd->memdup(stab->qname.str,
stab->qname.length)))
@@ -4228,32 +4228,11 @@ sp_head::add_used_tables_to_table_list(THD *thd,
for (uint j= 0; j < stab->lock_count; j++)
{
table= (TABLE_LIST *)tab_buff;
-
- table->db= key_buff;
- table->db_length= stab->db_length;
- table->table_name= table->db + table->db_length + 1;
- table->table_name_length= stab->table_name_length;
- table->alias= table->table_name + table->table_name_length + 1;
- table->lock_type= stab->lock_type;
- table->cacheable_table= 1;
- table->prelocking_placeholder= 1;
- table->belong_to_view= belong_to_view;
- table->trg_event_map= stab->trg_event_map;
- /*
- Since we don't allow DDL on base tables in prelocked mode it
- is safe to infer the type of metadata lock from the type of
- table lock.
- */
- table->mdl_request.init(MDL_key::TABLE, table->db, table->table_name,
- table->lock_type >= TL_WRITE_ALLOW_WRITE ?
- MDL_SHARED_WRITE : MDL_SHARED_READ,
- MDL_TRANSACTION);
-
- /* Everyting else should be zeroed */
-
- **query_tables_last_ptr= table;
- table->prev_global= *query_tables_last_ptr;
- *query_tables_last_ptr= &table->next_global;
+ table->init_one_table_for_prelocking(key_buff, stab->db_length,
+ key_buff + stab->db_length + 1, stab->table_name_length,
+ key_buff + stab->db_length + stab->table_name_length + 2,
+ stab->lock_type, belong_to_view, stab->trg_event_map,
+ query_tables_last_ptr);
tab_buff+= ALIGN_SIZE(sizeof(TABLE_LIST));
result= TRUE;