• unknown's avatar
    MDEV-3899 Valgrind warnings (blocks are definitely lost) in filesort on IN... · 1b2692d0
    unknown authored
    MDEV-3899  Valgrind warnings (blocks are definitely lost) in filesort on IN subquery with SUM and DISTINCT
      
    Analysys:
    In the beginning of JOIN::cleanup there is code that is supposed to
    free all filesort buffers. The code assumes that the table being sorted
    is the first non-constant table. To get this table it calls:
    first_top_level_tab(this, WITHOUT_CONST_TABLES)
      
    However, first_top_level_tab() instead returned the wrong table - the first
    one in the plan, instead of the first non-constant table. There is no other
    place outside filesort() where sort buffers may be freed. As a result, the
    sort buffer was not freed, and there was a memory leak.
      
    Solution:
    Change first_top_level_tab(), to test for WITH_CONST_TABLES instead of
    WITHOUT_CONST_TABLES.
    1b2692d0
sql_select.cc 747 KB