1. 12 Aug, 2008 7 commits
    • Marc Alff's avatar
      Merge mysql-5.1-bugteam -> local bugfix branch · 9922445c
      Marc Alff authored
      9922445c
    • Marc Alff's avatar
      Bug#38296 (low memory crash with many conditions in a query) · f60bbd90
      Marc Alff authored
      This fix is for 5.1 only : back porting the 6.0 patch manually
      
      The parser code in sql/sql_yacc.yy needs to be more robust to out of
      memory conditions, so that when parsing a query fails due to OOM,
      the thread gracefully returns an error.
      
      Before this fix, a new/alloc returning NULL could:
      - cause a crash, if dereferencing the NULL pointer,
      - produce a corrupted parsed tree, containing NULL nodes,
      - alter the semantic of a query, by silently dropping token values or nodes
      
      With this fix:
      - C++ constructors are *not* executed with a NULL "this" pointer
      when operator new fails.
      This is achieved by declaring "operator new" with a "throw ()" clause,
      so that a failed new gracefully returns NULL on OOM conditions.
      
      - calls to new/alloc are tested for a NULL result,
      
      - The thread diagnostic area is set to an error status when OOM occurs.
      This ensures that a request failing in the server properly returns an
      ER_OUT_OF_RESOURCES error to the client.
      
      - OOM conditions cause the parser to stop immediately (MYSQL_YYABORT).
      This prevents causing further crashes when using a partially built parsed
      tree in further rules in the parser.
      
      No test scripts are provided, since automating OOM failures is not
      instrumented in the server.
      Tested under the debugger, to verify that an error in alloc_root cause the
      thread to returns gracefully all the way to the client application, with
      an ER_OUT_OF_RESOURCES error.
      f60bbd90
    • Davi Arnaut's avatar
      Merge and fix tree name. · faa54a07
      Davi Arnaut authored
      faa54a07
    • Davi Arnaut's avatar
      Merge and fix tree name. · 9fda5e47
      Davi Arnaut authored
      9fda5e47
    • Davi Arnaut's avatar
      Merge mysql-5.0-bugteam into mysql-5.0 · 17544370
      Davi Arnaut authored
      17544370
    • Davi Arnaut's avatar
      Merge mysql-5.1-bugteam into mysql-5.1 main. · e1127015
      Davi Arnaut authored
      e1127015
    • Davi Arnaut's avatar
      a92cf7b6
  2. 11 Aug, 2008 13 commits
  3. 07 Aug, 2008 4 commits
  4. 06 Aug, 2008 5 commits
  5. 04 Aug, 2008 1 commit
  6. 01 Aug, 2008 1 commit
    • Davi Arnaut's avatar
      Bug#37003: Tests sporadically crashes with embedded server · e69f3315
      Davi Arnaut authored
      Post-merge fix: Alter linking order so that the thread linking
      flags appear last in the list. This needs to be done this way
      because some linkers will not search the thread archive again
      if a undefined symbol (pthread_kill in this case) appears later.
      
      client/Makefile.am:
        Link mysys before thread libs.
      e69f3315
  7. 31 Jul, 2008 2 commits
  8. 30 Jul, 2008 1 commit
    • Georgi Kodinov's avatar
      Bug#37662 nested if() inside sum() is parsed in exponential time · 03805cbb
      Georgi Kodinov authored
            
      min() and max() functions are implemented in MySQL as macros.
      This means that max(a,b) is expanded to: ((a) > (b) ? (a) : (b))
      Note how 'a' is quoted two times.
      Now imagine 'a' is a recursive function call that's several 10s of levels deep.
      And the recursive function does max() with a function arg as well to dive into
      recursion.
      This means that simple function call can take most of the clock time.
      Identified and fixed several such calls to max()/min() : including the IF() 
      sql function implementation.
      
      mysql-test/r/func_if.result:
        Bug#37662 test case
      mysql-test/t/func_if.test:
        Bug#37662 test case
      sql/item.cc:
        Bug#37662 don't call expensive functions as arguments to min/max
      sql/item_cmpfunc.cc:
        Bug#37662 don't call expensive functions as arguments to min/max
      sql/item_func.cc:
        Bug#37662 don't call expensive functions as arguments to min/max
      03805cbb
  9. 29 Jul, 2008 4 commits
  10. 28 Jul, 2008 1 commit
  11. 26 Jul, 2008 1 commit
    • Igor Babaev's avatar
      Fixed bug #38191. · 59229a6b
      Igor Babaev authored
      Calling List<Cached_item>::delete_elements for the same list twice
      caused a crash of the server in the function JOIN::cleaunup.
      Ensured that delete_elements() in JOIN::cleanup would be called only once.
      
      
      mysql-test/r/subselect.result:
        Added a test case for bug #38191.
      mysql-test/t/subselect.test:
        Added a test case for bug #38191.
      sql/sql_select.cc:
        Fixed bug #38191.
        Ensured that delete_elements() in JOIN::cleanup would be called only once.
      59229a6b