summaryrefslogtreecommitdiff
path: root/sql/sql_error.cc
diff options
context:
space:
mode:
authormonty@mysql.com <>2004-11-08 01:13:54 +0200
committermonty@mysql.com <>2004-11-08 01:13:54 +0200
commitb903a129e26e217cf3c891a604ec1733df8fa9ff (patch)
tree7a3852793309c847d2ee83023b9429b28913b390 /sql/sql_error.cc
parente93450d4421c3794d569f529b1f123cd3ca2eaf7 (diff)
downloadmariadb-git-b903a129e26e217cf3c891a604ec1733df8fa9ff.tar.gz
Simpler arena swapping code
Now thd->mem_root is a pointer to thd->main_mem_root and THR_MALLOC is a pointer to thd->mem_root. This gives us the following benefits: - Allow us to easily detect if arena has already been swapped before (this fixes a bug in setup_conds() where arena was swaped twice in some cases) - Faster swaps of arenas (as we don't have to copy the whole MEM_ROOT) - We don't anymore have to call my_pthread_setspecific_ptr(THR_MALLOC,...) to change where memory is alloced. Now it's enough to set thd->mem_root
Diffstat (limited to 'sql/sql_error.cc')
-rw-r--r--sql/sql_error.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/sql/sql_error.cc b/sql/sql_error.cc
index 87644300535..eab5ec890df 100644
--- a/sql/sql_error.cc
+++ b/sql/sql_error.cc
@@ -113,12 +113,12 @@ MYSQL_ERROR *push_warning(THD *thd, MYSQL_ERROR::enum_warning_level level,
The following code is here to change the allocation to not
use the thd->mem_root, which is freed after each query
*/
- MEM_ROOT *old_root=my_pthread_getspecific_ptr(MEM_ROOT*,THR_MALLOC);
- my_pthread_setspecific_ptr(THR_MALLOC, &thd->warn_root);
+ MEM_ROOT *old_root= thd->mem_root;
+ thd->mem_root= &thd->warn_root;
err= new MYSQL_ERROR(thd, code, level, msg);
if (err)
thd->warn_list.push_back(err);
- my_pthread_setspecific_ptr(THR_MALLOC, old_root);
+ thd->mem_root= old_root;
}
thd->warn_count[(uint) level]++;
thd->total_warn_count++;