1. 11 Aug, 2008 9 commits
    • Davi Arnaut's avatar
      Bug#38486: Crash when using cursor protocol · 1912eaac
      Davi Arnaut authored
      Post-merge fix: mysql_client_test.c is compiled by C compilers
      and some C compilers don't support mixed declarations and code
      and it's explicitly forbidden by ISO C90.
      
      tests/mysql_client_test.c:
        Don't mix declarations and code.
      1912eaac
    • Marc Alff's avatar
      Merge mysql-5.0-bugteam -> local bugfix branch · 2f3b8603
      Marc Alff authored
      2f3b8603
    • Marc Alff's avatar
      Bug#37302 (missing DBUG_RETURN macro in function "find_key_block" (5.0 only)) · b4418b5c
      Marc Alff authored
      Fixed missing DBUG_RETURN in the function find_key_block
      b4418b5c
    • Chad MILLER's avatar
      Merge from bugteam 5.0 trunk. · 26ed51d0
      Chad MILLER authored
      26ed51d0
    • Marc Alff's avatar
      Bug#38296 (low memory crash with many conditions in a query) · e04dfffb
      Marc Alff authored
      This fix is for 5.0 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.
      e04dfffb
    • Chad MILLER's avatar
      b615e3d5
    • Davi Arnaut's avatar
      Post-merge fix: Silence warning due to type mismatch. · d622b04f
      Davi Arnaut authored
      client/mysql_upgrade.c:
        Silence warning due to type mismatch.
      d622b04f
    • Kristofer Pettersson's avatar
      Automerge · 861c06f0
      Kristofer Pettersson authored
      861c06f0
    • Kristofer Pettersson's avatar
      Bug#38486 Crash when using cursor protocol · 75a5ecbd
      Kristofer Pettersson authored
                  
      Server side cursors were not initialized properly and this caused a reference to
      uninitialized memory.
      75a5ecbd
  2. 07 Aug, 2008 1 commit
    • Chad MILLER's avatar
      Bug#31605: mysql_upgrade relies on Linux /proc filesystem when not \ · abeda651
      Chad MILLER authored
      	running on Windows
      
      We used two OS-specific methods of looking up the executable 
      name, which don't work outside of those two kinds of OSes 
      (Linux+Solaris and Windows).
      
      We assume that if the user ran this program with a certain 
      name, we can run the other sibling programs with a similar name.
      
      (re-patch in bzr)
      abeda651
  3. 06 Aug, 2008 2 commits
  4. 04 Aug, 2008 1 commit
  5. 31 Jul, 2008 1 commit
  6. 30 Jul, 2008 1 commit
    • Georgi Kodinov's avatar
      Bug#37662 nested if() inside sum() is parsed in exponential time · ae4a35fd
      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
      ae4a35fd
  7. 29 Jul, 2008 3 commits
  8. 28 Jul, 2008 1 commit
  9. 26 Jul, 2008 1 commit
    • Igor Babaev's avatar
      Fixed bug #38191. · b6e3a9e2
      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.
      b6e3a9e2
  10. 24 Jul, 2008 1 commit
  11. 23 Jul, 2008 1 commit
    • Georgi Kodinov's avatar
      Bug#37830 : ORDER BY ASC/DESC - no difference · dd85aa78
      Georgi Kodinov authored
                        
      Range scan in descending order for c <= <col> <= c type of
      ranges was ignoring the DESC flag.
      However some engines like InnoDB have the primary key parts 
      as a suffix for every secondary key.
      When such primary key suffix is used for ordering ignoring 
      the DESC is not valid.
      But we generally would like to do this because it's faster.
                  
      Fixed by performing only reverse scan if the primary key is used.
      Removed some dead code in the process.
      
      mysql-test/r/innodb_mysql.result:
        Bug#37830 : test case
      mysql-test/t/innodb_mysql.test:
        Bug#37830 : test case
      sql/opt_range.cc:
        Bug#37830 : 
        - preserve and use used_key_parts to
          distinguish when a primary key suffix is used
        - removed some dead code
      sql/opt_range.h:
        Bug#37830 : 
        - preserve used_key_parts
        - dead code removed
      sql/sql_select.cc:
        Bug#37830 : Do only reverse order traversal
        if the primary key suffix is used.
      dd85aa78
  12. 22 Jul, 2008 1 commit
  13. 21 Jul, 2008 1 commit
  14. 24 Jul, 2008 1 commit
  15. 21 Jul, 2008 1 commit
  16. 19 Jul, 2008 2 commits
  17. 18 Jul, 2008 2 commits
  18. 17 Jul, 2008 2 commits
  19. 16 Jul, 2008 5 commits
  20. 15 Jul, 2008 3 commits
    • Sergey Petrunia's avatar
      Merge · 7315a700
      Sergey Petrunia authored
      7315a700
    • Kristofer Pettersson's avatar
      auto merge · f81c2f07
      Kristofer Pettersson authored
      f81c2f07
    • Sergey Petrunia's avatar
      BUG#35478: sort_union() returns bad data when sort_buffer_size is hit · 62513bb1
      Sergey Petrunia authored
      - In QUICK_INDEX_MERGE_SELECT::read_keys_and_merge: when we got table->sort from Unique,
        tell init_read_record() not to use rr_from_cache() because a) rowids are already sorted
        and b) it might be that the the data is used by filesort(), which will need record rowids
        (which rr_from_cache() cannot provide).
      - Fully de-initialize the table->sort read in QUICK_INDEX_MERGE_SELECT::get_next(). This fixes BUG#35477.
      (bk trigger: file as fix for BUG#35478).
      
      sql/filesort.cc:
        BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
        - make find_all_keys() use quick->get_next() instead of init_read_record(r)/r.read_record() calls
        - added dbug printout
      sql/mysql_priv.h:
        BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
        - Added parameter to init_read_record
      sql/opt_range.cc:
        BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
        - In QUICK_INDEX_MERGE_SELECT::read_keys_and_merge: when we got table->sort from Unique,
          tell init_read_record() not to use rr_from_cache() because a) rowids are already sorted
          and b) it might be that the the data is used by filesort(), which will need record rowids
          (which rr_from_cache() cannot provide).
        - Fully de-initialize the table->sort read in QUICK_INDEX_MERGE_SELECT::get_next().
      sql/records.cc:
        BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
        - Added disable_rr_cache parameter to init_read_record
        - Added comment
      sql/sql_acl.cc:
        BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
        - Added parameter to init_read_record
      sql/sql_delete.cc:
        BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
        - Added parameter to init_read_record
      sql/sql_help.cc:
        BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
        - Added parameter to init_read_record
      sql/sql_select.cc:
        BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
        - Added parameter to init_read_record
      sql/sql_table.cc:
        BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
        - Added parameter to init_read_record
      sql/sql_udf.cc:
        BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
        - Added parameter to init_read_record
      sql/sql_update.cc:
        BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
        - Added parameter to init_read_record
      62513bb1