summaryrefslogtreecommitdiff
path: root/sql/sp_rcontext.cc
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.org>2017-10-03 07:54:22 +0400
committerAlexander Barkov <bar@mariadb.org>2017-10-03 08:03:51 +0400
commitfcf631eafb7455bafde3847b4ab13a6ff245a703 (patch)
treecfdd7142cc132162332dcd640c8719ec3902dbbd /sql/sp_rcontext.cc
parent8ae8cd63485eb063de0b70ea6f3acf7102a61fef (diff)
downloadmariadb-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.cc14
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;
}