1. 23 Oct, 2009 1 commit
    • Jon Olav Hauglid's avatar
      Bug #47919 assert in open_table during ALTER temporary table · 63541129
      Jon Olav Hauglid authored
      This assertion would occur if UPDATE was used to update multiple
      tables containing an AUTO_INCREMENT column and if the inserted
      row had a user-supplied value for that column. The assertion 
      could then be triggered by the next statement.
      
      The problem was only noticeable on debug builds of the server.
      
      The cause of the problem was that the code for multi update did
      not properly reset the TABLE->auto_increment_if_null flag after update.
      The flag is used to indicate that a non-null value of an auto_increment field
      has been provided by the user or retrieved from a current record.
      Open_tables() contains an assertion that tests this flag, and this
      was triggered in this case by ALTER TABLE.
      
      This patch fixes the problem by resetting the auto_increment_if_null
      field to FALSE once a row has been updated.
      
      This bug is similar to Bug#47274, but for multi update rather
      than INSERT DELAYED.
      
      Test case added to update.test.
      63541129
  2. 21 Oct, 2009 1 commit
  3. 20 Oct, 2009 1 commit
  4. 19 Oct, 2009 2 commits
  5. 18 Oct, 2009 1 commit
  6. 17 Oct, 2009 1 commit
  7. 16 Oct, 2009 10 commits
  8. 15 Oct, 2009 8 commits
  9. 14 Oct, 2009 13 commits
    • Jorgen Loland's avatar
      merge · 565fef25
      Jorgen Loland authored
      565fef25
    • Jorgen Loland's avatar
      Followup patch for BUG#47280 · bf14598c
      Jorgen Loland authored
      Temporary tables may set join->group to 0 even though there is 
      grouping. Also need to test if sum_func_count>0 when JOIN::exec() 
      decides whether to present results in a grouped manner.
      
      sql/sql_select.cc:
        Temporary tables may set join->group to 0 even though there is 
        grouping. Also need to test if sum_func_count>0 when JOIN::exec() 
        decides whether to present results in a grouped manner.
      bf14598c
    • Georgi Kodinov's avatar
      merge · 26b3613b
      Georgi Kodinov authored
      26b3613b
    • Georgi Kodinov's avatar
      merge · c8c0dad8
      Georgi Kodinov authored
      c8c0dad8
    • Georgi Kodinov's avatar
      version change · 903d2128
      Georgi Kodinov authored
      903d2128
    • Georgi Kodinov's avatar
      merge · 67113c2e
      Georgi Kodinov authored
      67113c2e
    • Georgi Kodinov's avatar
      merged main to mysql-5.0-bugteam · 3eb048ab
      Georgi Kodinov authored
      3eb048ab
    • Georgi Kodinov's avatar
      merged 5.1-main · 445454f7
      Georgi Kodinov authored
      445454f7
    • He Zhenxing's avatar
      Attempt to fix Windows testcase output issue · 7048cfde
      He Zhenxing authored
      7048cfde
    • Jorgen Loland's avatar
      Bug#47280 - strange results from count(*) with order by multiple · 6da93b22
      Jorgen Loland authored
                  columns without where/group
                           
      Simple SELECT with implicit grouping used to return many rows if
      the query was ordered by the aggregated column in the SELECT
      list. This was incorrect because queries with implicit grouping
      should only return a single record.
                                    
      The problem was that when JOIN:exec() decided if execution needed
      to handle grouping, it was assumed that sum_func_count==0 meant
      that there were no aggregate functions in the query. This
      assumption was not correct in JOIN::exec() because the aggregate
      functions might have been optimized away during JOIN::optimize().
                        
      The reason why queries without ordering behaved correctly was
      that sum_func_count is only recalculated if the optimizer chooses
      to use temporary tables (which it does in the ordered case).
      Hence, non-ordered queries were correctly treated as grouped.
                        
      The fix for this bug was to remove the assumption that
      sum_func_count==0 means that there is no need for grouping. This
      was done by introducing variable "bool implicit_grouping" in the
      JOIN object.
      
      mysql-test/r/func_group.result:
        Add test for BUG#47280
      mysql-test/t/func_group.test:
        Add test for BUG#47280
      sql/opt_sum.cc:
        Improve comment for opt_sum_query()
      sql/sql_class.h:
        Add comment for variables in TMP_TABLE_PARAM
      sql/sql_select.cc:
        Introduce and use variable implicit_grouping instead of (!group_list && sum_func_count) in places that need to test if grouping is required. Also added comments for: optimization of aggregate fields for implicitly grouped queries  (JOIN::optimize) and choice of end_select method (JOIN::execute)
      sql/sql_select.h:
        Add variable implicit_grouping, which will be TRUE for queries that contain aggregate functions but no GROUP BY clause. Also added comment to sort_and_group variable.
      6da93b22
    • unknown's avatar
      Null-merge from mysql-5.0.84sp1-release · ecb9119b
      unknown authored
      ecb9119b
    • Bjorn Munch's avatar
      Bug #46007 Tests fail due to a crash while running 'check testcase before test' · 972e938d
      Bjorn Munch authored
      Difficult to debug due to lacking report
      This does not solve the real issue, but extracts server log when it happens
      Forst commit was incomplete, didn't cover all cases
      972e938d
    • unknown's avatar
      Bug#46640: output from mysqlbinlog command in 5.1 breaks replication · f9c67302
      unknown authored
            
      The BINLOG statement was sharing too much code with the slave SQL thread, introduced with
      the patch for Bug#32407. This caused statements to be logged with the wrong server_id, the
      id stored inside the events of the BINLOG statement rather than the id of the running 
      server.
            
      Fix by rearranging code a bit so that only relevant parts of the code are executed by
      the BINLOG statement, and the server_id of the server executing the statements will 
      not be overrided by the server_id stored in the 'format description BINLOG statement'.
      
      mysql-test/extra/binlog_tests/binlog.test:
        Added test to verify if the server_id stored in the 'format 
        description BINLOG statement' will override the server_id
        of the server executing the statements.
      mysql-test/suite/binlog/r/binlog_row_binlog.result:
        Test result for bug#46640
      mysql-test/suite/binlog/r/binlog_stm_binlog.result:
        Test result for bug#46640
      sql/log_event.cc:
        Moved rows_event_stmt_clean() call from update_pos() to apply_event(). This in any case
        makes more sense, and is needed as update_pos() is no longer called when executing
        BINLOG statements.
        
        Moved setting of rli->relay_log.description_event_for_exec from 
        Format_description_log_event::do_update_pos() to 
        Format_description_log_event::do_apply_event()
      sql/log_event_old.cc:
        Moved rows_event_stmt_clean() call from update_pos() to apply_event(). This in any case
        makes more sense, and is needed as update_pos() is no longer called when executing
        BINLOG statements.
      sql/slave.cc:
        The skip flag is no longer needed, as the code path for BINLOG statement has been 
        cleaned up.
      sql/sql_binlog.cc:
        Don't invoke the update_pos() code path for the BINLOG statement, as it contains code 
        that is redundant and/or harmful (especially setting thd->server_id).
      f9c67302
  10. 13 Oct, 2009 2 commits