-
Konstantin Osipov authored
and a backport of relevant changes from the 6.0 version of the fix done by Ingo Struewing. The bug itself was fixed by the patch for Bug#54811. MyISAMMRG engine would try to use MMAP on its children even on platforms that don't support it and even if myisam_use_mmap option was off. This lead to an infinite hang in INSERT ... SELECT into a MyISAMMRG table when the destination MyISAM table was also selected from. A bug in duplicate detection fixed by 54811 was essential to the hang - when a duplicate is detected, the optimizer disables the use of memory mapped files, and it wasn't the case. The patch below is also to not turn on MMAP on children tables if myisam_use_mmap is off. A test case is added to cover MyISAMMRG and myisam_use_mmap option. mysql-test/r/merge_mmap.result: Result file - Bug#50788. mysql-test/t/merge_mmap-master.opt: An option file for the test for Bug#50788 -- use mmap. mysql-test/t/merge_mmap.test: Try INSERT ... SELECT into a merge table when myisam_use_mmap is on (Bug#50788). storage/myisam/mi_statrec.c: Fixed misinterpretation of the return value of my_b_read(). storage/myisammrg/ha_myisammrg.cc: Skip HA_EXTRA_MMAP if MyISAM memory mapping is disabled.
1afe6ff0