mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Optimize Sql_alloc
- Remove 'dummy_for_valgrind' overrun marker as this doesn't help much. The element also distorts the sizes of objects a bit, which makes it harder to calculate gain in object sizes when doing size optimizations. - Replace usage of thd_get_current_thd() with _current_thd() - Avoid one extra call indirection when using thd_get_current_thd(), which is used by Sql_alloc, by replacing it with _current_thd()
This commit is contained in:
@ -44,7 +44,6 @@ void thd_clear_errors(THD *thd);
|
|||||||
void thd_set_thread_stack(THD *thd, char *stack_start);
|
void thd_set_thread_stack(THD *thd, char *stack_start);
|
||||||
void thd_lock_thread_count(THD *thd);
|
void thd_lock_thread_count(THD *thd);
|
||||||
void thd_close_connection(THD *thd);
|
void thd_close_connection(THD *thd);
|
||||||
THD *thd_get_current_thd();
|
|
||||||
void thd_lock_data(THD *thd);
|
void thd_lock_data(THD *thd);
|
||||||
void thd_unlock_data(THD *thd);
|
void thd_unlock_data(THD *thd);
|
||||||
bool thd_is_transaction_active(THD *thd);
|
bool thd_is_transaction_active(THD *thd);
|
||||||
|
@ -447,10 +447,10 @@ Item::Item():
|
|||||||
name(null_clex_str), orig_name(0), is_expensive_cache(-1)
|
name(null_clex_str), orig_name(0), is_expensive_cache(-1)
|
||||||
{
|
{
|
||||||
DBUG_ASSERT(my_progname == NULL); // before main()
|
DBUG_ASSERT(my_progname == NULL); // before main()
|
||||||
|
common_flags= IS_AUTO_GENERATED_NAME;
|
||||||
marker= 0;
|
marker= 0;
|
||||||
maybe_null= with_window_func= with_field= in_rollup= with_param= 0;
|
maybe_null= with_window_func= with_field= in_rollup= with_param= 0;
|
||||||
fixed= 1;
|
fixed= 1;
|
||||||
null_value= 0;
|
|
||||||
join_tab_idx= MAX_TABLES;
|
join_tab_idx= MAX_TABLES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -663,6 +663,12 @@ static std::atomic<char*> shutdown_user;
|
|||||||
|
|
||||||
static thread_local THD *THR_THD;
|
static thread_local THD *THR_THD;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get current THD object from thread local data
|
||||||
|
|
||||||
|
@retval The THD object for the thread, NULL if not connection thread
|
||||||
|
*/
|
||||||
|
|
||||||
MYSQL_THD _current_thd() { return THR_THD; }
|
MYSQL_THD _current_thd() { return THR_THD; }
|
||||||
void set_current_thd(THD *thd) { THR_THD= thd; }
|
void set_current_thd(THD *thd) { THR_THD= thd; }
|
||||||
|
|
||||||
|
@ -18,20 +18,18 @@
|
|||||||
|
|
||||||
#include <my_sys.h> /* alloc_root, MEM_ROOT, TRASH */
|
#include <my_sys.h> /* alloc_root, MEM_ROOT, TRASH */
|
||||||
|
|
||||||
THD *thd_get_current_thd();
|
/* MariaDB standard class memory allocator */
|
||||||
|
|
||||||
/* mysql standard class memory allocator */
|
|
||||||
|
|
||||||
class Sql_alloc
|
class Sql_alloc
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static void *operator new(size_t size) throw ()
|
static void *operator new(size_t size) throw ()
|
||||||
{
|
{
|
||||||
return thd_alloc(thd_get_current_thd(), size);
|
return thd_alloc(_current_thd(), size);
|
||||||
}
|
}
|
||||||
static void *operator new[](size_t size) throw ()
|
static void *operator new[](size_t size) throw ()
|
||||||
{
|
{
|
||||||
return thd_alloc(thd_get_current_thd(), size);
|
return thd_alloc(_current_thd(), size);
|
||||||
}
|
}
|
||||||
static void *operator new[](size_t size, MEM_ROOT *mem_root) throw ()
|
static void *operator new[](size_t size, MEM_ROOT *mem_root) throw ()
|
||||||
{ return alloc_root(mem_root, size); }
|
{ return alloc_root(mem_root, size); }
|
||||||
@ -42,9 +40,5 @@ public:
|
|||||||
static void operator delete[](void *, MEM_ROOT *)
|
static void operator delete[](void *, MEM_ROOT *)
|
||||||
{ /* never called */ }
|
{ /* never called */ }
|
||||||
static void operator delete[](void *ptr, size_t size) { TRASH_FREE(ptr, size); }
|
static void operator delete[](void *ptr, size_t size) { TRASH_FREE(ptr, size); }
|
||||||
#ifdef HAVE_valgrind
|
|
||||||
bool dummy_for_valgrind;
|
|
||||||
inline Sql_alloc() :dummy_for_valgrind(0) {}
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
#endif /* SQL_ALLOC_INCLUDED */
|
#endif /* SQL_ALLOC_INCLUDED */
|
||||||
|
@ -325,17 +325,6 @@ bool Foreign_key::validate(List<Create_field> &table_fields)
|
|||||||
** Thread specific functions
|
** Thread specific functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/**
|
|
||||||
Get current THD object from thread local data
|
|
||||||
|
|
||||||
@retval The THD object for the thread, NULL if not connection thread
|
|
||||||
*/
|
|
||||||
THD *thd_get_current_thd()
|
|
||||||
{
|
|
||||||
return current_thd;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
extern "C" unsigned long long thd_query_id(const MYSQL_THD thd)
|
extern "C" unsigned long long thd_query_id(const MYSQL_THD thd)
|
||||||
{
|
{
|
||||||
return((unsigned long long)thd->query_id);
|
return((unsigned long long)thd->query_id);
|
||||||
|
@ -7812,7 +7812,7 @@ int ha_rocksdb::create(const char *const name, TABLE *const table_arg,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FOREIGN KEY isn't supported yet
|
// FOREIGN KEY isn't supported yet
|
||||||
THD *const thd = my_core::thd_get_current_thd();
|
THD *const thd = _current_thd();
|
||||||
if (contains_foreign_key(thd)) {
|
if (contains_foreign_key(thd)) {
|
||||||
my_error(ER_NOT_SUPPORTED_YET, MYF(0),
|
my_error(ER_NOT_SUPPORTED_YET, MYF(0),
|
||||||
"FOREIGN KEY for the RocksDB storage engine");
|
"FOREIGN KEY for the RocksDB storage engine");
|
||||||
|
Reference in New Issue
Block a user