diff options
author | Alexander Barkov <bar@mariadb.org> | 2017-10-03 07:54:22 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.org> | 2017-10-03 08:03:51 +0400 |
commit | fcf631eafb7455bafde3847b4ab13a6ff245a703 (patch) | |
tree | cfdd7142cc132162332dcd640c8719ec3902dbbd /sql/sp_rcontext.cc | |
parent | 8ae8cd63485eb063de0b70ea6f3acf7102a61fef (diff) | |
download | mariadb-git-fcf631eafb7455bafde3847b4ab13a6ff245a703.tar.gz |
A cleanup for MDEV-10914 ROW data type for stored routine variables
Changing datatypes for:
- Item_spvar_args::m_table
- sp_rcontext::m_var_table
- return value of create_virtual_tmp_table()
from TABLE* to Virtual_tmp_table*
Advantages:
- Stricter data type control
- Removing the duplicate code (a loop with free_blobs)
from destructors ~sp_rcontext() and ~Item_spvar_args(),
using "delete m_(var_)table" in both instead.
- Using Virtual_tmp_table::delete makes the code call Field::delete,
which calls TRASH() for the freed fields,
which is good for valgrind test runs.
Diffstat (limited to 'sql/sp_rcontext.cc')
-rw-r--r-- | sql/sp_rcontext.cc | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/sql/sp_rcontext.cc b/sql/sp_rcontext.cc index 43a42b579bd..8290a927a77 100644 --- a/sql/sp_rcontext.cc +++ b/sql/sp_rcontext.cc @@ -51,9 +51,7 @@ sp_rcontext::sp_rcontext(const sp_pcontext *root_parsing_ctx, sp_rcontext::~sp_rcontext() { - if (m_var_table) - free_blobs(m_var_table); - + delete m_var_table; // Leave m_handlers, m_handler_call_stack, m_var_items, m_cstack // and m_case_expr_holders untouched. // They are allocated in mem roots and will be freed accordingly. @@ -375,10 +373,16 @@ bool Item_spvar_args::row_create_items(THD *thd, List<Spvar_definition> *list) } +Field *Item_spvar_args::get_row_field(uint i) const +{ + DBUG_ASSERT(m_table); + return m_table->field[i]; +} + + Item_spvar_args::~Item_spvar_args() { - if (m_table) - free_blobs(m_table); + delete m_table; } |