• unknown's avatar
    BUG#29582: huge memory consumption with union, subselect, joins: · 8a68e7d2
    unknown authored
    - Don't call mysql_select() several times for the select that enumerates
      a temporary table with the results of the UNION. Making this call for
      every subquery execution caused O(#enumerated-rows-in-the-outer-query) 
      memory allocations.
    - Instead, call join->reinit() and join->exec(), and
      = disable constant table detection for such joins,  
      = provide special handling for table-less constant subqueries.
    
    
    sql/sql_select.cc:
      BUG#29582: huge memory consumption with union, subselect, joins:
       - Don't mark tables as constant if JOIN::no_const_tables flag is set
    sql/sql_select.h:
      BUG#29582: huge memory consumption with union, subselect, joins:
       - Don't mark tables as constant if JOIN::no_const_tables flag is set
    sql/sql_union.cc:
      BUG#29582: huge memory consumption with union, subselect, joins:
      - Don't call mysql_select() several times for the select that enumerates
        a temporary table with UNION results. 
      - Instead, call join->reinit() and join->exec().
      - Provide special handling for table-less constant subqueries.
    8a68e7d2
sql_union.cc 22.1 KB