Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 18 additions & 1 deletion sql/sql_cache.cc
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,9 @@ TODO list:
*/

#include "mariadb.h" /* NO_EMBEDDED_ACCESS_CHECKS */
#if defined(DBUG_OFF) && defined(HAVE_MADVISE)
#include <sys/mman.h>
#endif
#include "sql_priv.h"
#include "sql_basic_types.h"
#include "sql_cache.h"
Expand Down Expand Up @@ -2591,7 +2594,7 @@ size_t Query_cache::init_cache()
{
size_t mem_bin_count, num, step;
size_t mem_bin_size, prev_size, inc;
size_t additional_data_size, max_mem_bin_size, approx_additional_data_size;
size_t max_mem_bin_size, approx_additional_data_size;
int align;

DBUG_ENTER("Query_cache::init_cache");
Expand Down Expand Up @@ -2656,6 +2659,13 @@ size_t Query_cache::init_cache()
if (!(cache= (uchar *)
my_malloc_lock(query_cache_size+additional_data_size, MYF(0))))
goto err;
#if defined(DBUG_OFF) && defined(HAVE_MADVISE) && defined(MADV_DONTDUMP)
if (madvise(cache, query_cache_size+additional_data_size, MADV_DONTDUMP))
{
DBUG_PRINT("warning", ("coudn't mark query cache memory as MADV_DONTDUMP: %s",
strerror(errno)));
}
#endif

DBUG_PRINT("qcache", ("cache length %zu, min unit %zu, %zu bins",
query_cache_size, min_allocation_unit, mem_bin_num));
Expand Down Expand Up @@ -2818,6 +2828,13 @@ void Query_cache::free_cache()
} while (block != queries_blocks);
}

#if defined(DBUG_OFF) && defined(HAVE_MADVISE) && defined(MADV_DODUMP)
if (madvise(cache, query_cache_size+additional_data_size, MADV_DODUMP))
{
DBUG_PRINT("warning", ("coudn't mark query cache memory as MADV_DODUMP: %s",
strerror(errno)));
}
#endif
my_free(cache);
make_disabled();
my_hash_free(&queries);
Expand Down
1 change: 1 addition & 0 deletions sql/sql_cache.h
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,7 @@ class Query_cache
till the end of a flush operation.
*/
mysql_mutex_t structure_guard_mutex;
size_t additional_data_size;
uchar *cache; // cache memory
Query_cache_block *first_block; // physical location block list
Query_cache_block *queries_blocks; // query list (LIFO)
Expand Down