mirror of
https://github.com/MariaDB/server.git
synced 2026-04-29 11:45:32 +02:00
MDEV-31893 Valgrind reports issues in main.join_cache_notasan
This is also related to
MDEV-31348 Assertion `last_key_entry >= end_pos' failed in virtual bool
JOIN_CACHE_HASHED::put_record()
Valgrind exposed a problem with the join_cache for hash joins:
=25636== Conditional jump or move depends on uninitialised value(s)
==25636== at 0xA8FF4E: JOIN_CACHE_HASHED::init_hash_table()
(sql_join_cache.cc:2901)
The reason for this was that avg_record_length contained a random value
if one had used SET optimizer_switch='optimize_join_buffer_size=off'.
This causes either 'random size' memory to be allocated (up to
join_buffer_size) which can increase memory usage or, if avg_record_length
is less than the row size, memory overwrites in thd->mem_root, which is
bad.
Fixed by setting avg_record_length in JOIN_CACHE_HASHED::init()
before it's used.
There is no test case for MDEV-31893 as valgrind of join_cache_notasan
checks that.
I added a test case for MDEV-31348.
This commit is contained in:
parent
0ede90dd31
commit
2aea938749
6 changed files with 70 additions and 11 deletions
|
|
@ -130,6 +130,7 @@ protected:
|
|||
case 4: int4store(ptr, (uint32) ofs); return;
|
||||
}
|
||||
}
|
||||
size_t calc_avg_record_length();
|
||||
|
||||
/*
|
||||
The maximum total length of the fields stored for a record in the cache.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue