mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 10:56:12 +01:00 
			
		
		
		
	 2aea938749
			
		
	
	
	2aea938749
	
	
	
		
			
			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.
		
	
			
		
			
				
	
	
		
			13 lines
		
	
	
	
		
			355 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			13 lines
		
	
	
	
		
			355 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
| # include/no_valgrind_without_big.inc
 | |
| #
 | |
| # If we are running with Valgrind ($VALGRIND_TEST <> 0) than the resource
 | |
| # consumption (storage space needed, runtime ...) will be extreme.
 | |
| # Therefore we require that the option "--big-test" is also set.
 | |
| #
 | |
| 
 | |
| if ($VALGRIND_TEST) {
 | |
|   if (!$BIG_TEST)
 | |
|   {
 | |
|     --skip Need "--big-test" when running with Valgrind
 | |
|   }
 | |
| }
 |