1. 03 Dec, 2008 1 commit
    • Mats Kindahl's avatar
      Bug #40116: Uncommited changes are replicated and stay on slave · c0297b70
      Mats Kindahl authored
      after rollback on master
      
      When starting a transaction with a statement containing changes
      to both transactional tables and non-transactional tables, the
      statement is considered as non-transactional and is therefore
      written directly to the binary log. This behaviour was present
      in 5.0, and has propagated to 5.1.
      
      If a trigger containing a change of a non-transactional table is
      added to a transactional table, any changes to the transactional
      table is "tainted" as non-transactional.
      
      This patch solves the problem by removing the existing "hack" that
      allows non-transactional statements appearing first in a transaction
      to be written directly to the binary log. Instead, anything inside
      a transaction is treaded as part of the transaction and not written
      to the binary log until the transaction is committed.
      
      mysql-test/suite/rpl/t/rpl_row_create_table.test:
        Removing positions from SHOW BINLOG EVENTS and using
        reset_master_and_slave to start on a fresh binary log each time.
      mysql-test/suite/rpl/t/rpl_slave_skip.test:
        Adding explicit commit in AUTOCOMMIT=0 to make test work correctly.
      mysql-test/suite/rpl/t/rpl_trigger.test:
        Adding test case for BUG#40116.
      sql/log.cc:
        Changing commit logic in binlog_commit() to only commit when
        committing a real transaction or committing a punch transaction.
      c0297b70
  2. 03 Nov, 2008 3 commits
    • Mats Kindahl's avatar
      Merging with 5.1-5.1.29-rc · 60cfe6fb
      Mats Kindahl authored
      60cfe6fb
    • Mats Kindahl's avatar
      Bug #40360: Binlog related errors with binlog off · ef5f147a
      Mats Kindahl authored
      Adding missing drop of created table and tidying display.
      
      
      mysql-test/t/innodb_mysql.test:
        Adding drop of created table and cleaning variable display
      ef5f147a
    • Mats Kindahl's avatar
      Bug #40360: Binlog related errors with binlog off · 6efe866c
      Mats Kindahl authored
            
      When statement-based replication is used, and the
      transaction isolation level is READ-COMMITTED or stricter,
      InnoDB will print an error because statement-based
      replication might lead to inconsistency between master
      and slave databases. However, when the binary log is not
      engaged, this is not an issue and an error should
      not be printed.
      
      This patch makes thd_binlog_format() return BINLOG_FORMAT_
      UNSPEC when the binary log is not engaged for the given
      thread.
      
      mysql-test/t/innodb_mysql.test:
        Adding test that no error message is printed from inside
        InnoDB when the binary log is turned off.
      6efe866c
  3. 31 Oct, 2008 1 commit
  4. 29 Oct, 2008 2 commits
  5. 24 Oct, 2008 1 commit
    • Ramil Kalimullin's avatar
      Fix for bug#23113: Different behavior on altering ENUM fields between 5.0 and 5.1 · abe09fb5
      Ramil Kalimullin authored
      Problem: mysqld doesn't detect that enum data must be reinserted performing
      'ALTER TABLE' in some cases.
      
      Fix: reinsert data altering an enum field if enum values are changed.
      
      
      mysql-test/r/alter_table.result:
        Fix for bug#23113: Different behavior on altering ENUM fields between 5.0 and 5.1
          - test result.
      mysql-test/t/alter_table.test:
        Fix for bug#23113: Different behavior on altering ENUM fields between 5.0 and 5.1
          - test case.
      sql/field.cc:
        Fix for bug#23113: Different behavior on altering ENUM fields between 5.0 and 5.1
          - Field_enum::is_equal() introduced, which is called to detect that a field
        is changing by 'ALTER TABLE'.
      sql/field.h:
        Fix for bug#23113: Different behavior on altering ENUM fields between 5.0 and 5.1
          - Field_enum::is_equal() introduced, which is called to detect that a field
        is changing by 'ALTER TABLE'.
      abe09fb5
  6. 23 Oct, 2008 3 commits
  7. 22 Oct, 2008 2 commits
  8. 21 Oct, 2008 6 commits
    • Davi Arnaut's avatar
      Merge post-merge fix from mysql-5.0-bugteam. · cbd5cc23
      Davi Arnaut authored
      cbd5cc23
    • Davi Arnaut's avatar
      Post-merge fix: drop table at the end of test. · e88c3241
      Davi Arnaut authored
      mysql-test/r/xa.result:
        Update test case result.
      mysql-test/t/xa.test:
        Drop table used for test.
      e88c3241
    • Davi Arnaut's avatar
      Merge Bug#28323 to mysql-5.1.29-rc · 2fa5f730
      Davi Arnaut authored
      2fa5f730
    • Davi Arnaut's avatar
      Bug#28323: Server crashed in xid cache operations · 2503f00d
      Davi Arnaut authored
      The problem was that the server did not robustly handle a
      unilateral roll back issued by the Resource Manager (RM)
      due to a resource deadlock within the transaction branch.
      By not acknowledging the roll back, the server (TM) would
      eventually corrupt the XA transaction state and crash.
      
      The solution is to mark the transaction as rollback-only
      if the RM indicates that it rolled back its branch of the
      transaction.
      
      mysql-test/r/xa.result:
        Add test case result for Bug#28323
      mysql-test/t/xa.test:
        Add test case for Bug#28323
      sql/handler.cc:
        Reset XID only at the end of the global transaction.
      sql/share/errmsg.txt:
        Add new error codes.
      sql/sql_class.h:
        Remember the error reported by the Resource Manager.
      sql/sql_parse.cc:
        Rollback the transaction if the Resource Manager reported
        a error and rolled back its branch of the transaction.
      2503f00d
    • unknown's avatar
      Merge from mysql-5.0.70-release · f956333d
      unknown authored
      f956333d
    • Kristofer Pettersson's avatar
      Bug#39451 Debug builds broken with Sun Studio compiler · 7908c85a
      Kristofer Pettersson authored
                  
      Debug builds of MySQL 5.1, 6.0 with Sun Studio 12 broke because of
      use of gcc specific feature.
                  
      The fix is to replace __FUNCTION__ with the corresponding character string
      7908c85a
  9. 20 Oct, 2008 1 commit
    • Mats Kindahl's avatar
      Bug #40004 Replication failure with no PK + no indexes · 6a387b7f
      Mats Kindahl authored
      In certain situations, a scan of the table will return the error
      code HA_ERR_RECORD_DELETED, and this error code is not 
      correctly caught in the Rows_log_event::find_row() function, which
      causes an error to be returned for this case.
      
      This patch fixes the problem by adding code to either ignore the
      record and continuing with the next one, the the event of a table
      scan, or change the error code to HA_ERR_KEY_NOT_FOUND, in the event
      that a key lookup is attempted.
      6a387b7f
  10. 17 Oct, 2008 1 commit
    • Ramil Kalimullin's avatar
      Fix for bug #40053: 'check table .. for upgrade' doesn't detect · 931f05d8
      Ramil Kalimullin authored
      collation change made in 5.1.24-rc
      
      Problem: 'CHECK TABLE ... FOR UPGRADE' did not check for 
      incompatible collation changes made in MySQL 5.1.24-rc.
      
      Fix: add the check.
      
      
      sql/handler.cc:
          - check for incompatible collation changes made in 5.1.24-rc:
        bug #27877:
          utf8_general_ci
          ucs2_general_ci
      931f05d8
  11. 13 Oct, 2008 1 commit
  12. 10 Oct, 2008 2 commits
  13. 09 Oct, 2008 4 commits
  14. 08 Oct, 2008 10 commits
    • Georgi Kodinov's avatar
      fixed a compile warning in 5.1-5.1.29-rc · 720f7039
      Georgi Kodinov authored
      720f7039
    • Georgi Kodinov's avatar
      b44aa11e
    • Ramil Kalimullin's avatar
      Fix for bug#39585: innodb and myisam corruption after binary · 0d1b38ba
      Ramil Kalimullin authored
      upgrade from <=5.0.46 to >=5.0.48
      
      Problem: 'check table .. for upgrade' doesn't detect 
      incompatible collation changes made in 5.0.48.
      
      Fix: check for incompatible collation changes.
      
      
      sql/handler.cc:
        Fix for bug#39585: innodb and myisam corruption after binary 
        upgrade from <=5.0.46 to >=5.0.48
          - check for incompatible collation changes made in 5.0.48:
        bug #29461
          latin7_general_ci
          latin7_general_cs
          latin7_estonian_cs
          latin2_hungarian_ci
          koi8u_general_ci
          cp1251_ukrainian_ci
          cp1250_general_ci
        bug #29499, bug #27562
          ascii_general_ci
      0d1b38ba
    • Mats Kindahl's avatar
      Merging with 5.1-5.1.29-rc · 24d772a6
      Mats Kindahl authored
      24d772a6
    • Georgi Kodinov's avatar
      merged 5.1-5.1.29-rc -> 5.1-bugteam · 4ed09e5e
      Georgi Kodinov authored
      4ed09e5e
    • Mats Kindahl's avatar
      Bug #34707: Row based replication: slave creates table within wrong database · 2b5ea13f
      Mats Kindahl authored
      The failure was caused by executing a CREATE-SELECT statement that creates a
      table in another database than the current one. In row-based logging, the
      CREATE statement was written to the binary log without the database, hence
      creating the table in the wrong database, causing the following inserts to
      fail since the table didn't exist in the given database.
      
      Fixed the bug by adding a parameter to store_create_info() that will make
      the function print the database name before the table name and used that
      in the calls that write the CREATE statement to the binary log. The database
      name is only printed if it is different than the currently selected database.
      
      The output of SHOW CREATE TABLE has not changed and is still printed without
      the database name.
      
      mysql-test/suite/rpl/t/rpl_row_create_table.test:
        Added test to check that CREATE-SELECT into another database than the
        current one replicates.
      sql/sql_insert.cc:
        Adding parameter to calls to store_create_info().
      sql/sql_show.cc:
        Adding parameter to calls to store_create_info().
        
        Extending store_create_info() with parameter 'show_database' that will cause
        the database to be written before the table name.
      sql/sql_show.h:
        Adding parameter to call to store_create_info() to tell if the database should be shown or not.
      sql/sql_table.cc:
        Adding parameter to calls to store_create_info().
      2b5ea13f
    • Georgi Kodinov's avatar
      merged 5.0-bugteam -> 5.1-bugteam · 67c86b17
      Georgi Kodinov authored
      disabled a randomly failing test and opened a bug report
      67c86b17
    • Georgi Kodinov's avatar
      merged 5.1-5.1.29-rc -> 5.1-bugteam · 34cdf649
      Georgi Kodinov authored
      34cdf649
    • Georgi Kodinov's avatar
      merged 5.0-5.1.29-rc -> 5.0-bugteam · 3e3f7180
      Georgi Kodinov authored
      3e3f7180
    • Mattias Jonsson's avatar
      Bug#37453: Dropping/creating index on partitioned table with · 23c4a202
      Mattias Jonsson authored
      InnoDB Plugin locks table
      
      This is a pre fix update that does the change to the handler api.
      
      This is done since there are already changes in this version,
      so the real fix does not need to change the api.
      
      sql/handler.h:
        Bug#37453: Dropping/creating index on partitioned table with
        InnoDB Plugin locks table
        
        The check for which alter table flags a handler have is done through the
        handlerton, which will not work correctly for any partitioned table.
        It must be through the handler interface.
        
        To be able to fix this I have to add a virtual function to the handler class.
      23c4a202
  15. 07 Oct, 2008 2 commits
    • Gleb Shchepa's avatar
      7c70643d
    • Gleb Shchepa's avatar
      Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while · fd777ae1
      Gleb Shchepa authored
                ``FLUSH TABLES WITH READ LOCK''
      
      Concurrent execution of 1) multitable update with a
      NATURAL/USING join and 2) a such query as "FLUSH TABLES
      WITH READ LOCK" or "ALTER TABLE" of updating table led
      to a server crash.
      
      
      The mysql_multi_update_prepare() function call is optimized
      to lock updating tables only, so it postpones locking to
      the last, and if locking fails, it does cleanup of modified
      syntax structures and repeats a query analysis.  However,
      that cleanup procedure was incomplete for NATURAL/USING join
      syntax data: 1) some Field_item items pointed into freed
      table structures, and 2) the TABLE_LIST::join_columns fields
      was not reset.
      
      Major change:
        short-living Field *Natural_join_column::table_field has
        been replaced with long-living Item*.
      
      
      mysql-test/r/lock_multi.result:
        Added test case for bug #38691.
      mysql-test/t/lock_multi.test:
        Added test case for bug #38691.
      sql/item.cc:
        Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while
                  ``FLUSH TABLES WITH READ LOCK''
        
        The Item_field constructor has been modified to allocate
        and copy original database/table/field names always (not
        during PS preparation/1st execution only), because
        an initialization of Item_field items with a pointer to
        short-living Field structures is a common practice.
      sql/sql_base.cc:
        Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while
                  ``FLUSH TABLES WITH READ LOCK''
        
        1) Type adjustment for Natural_join_column::table_field
           (Field to Item_field);
        2) The setup_natural_join_row_types function has been
           updated to take into account new
           first_natural_join_processing flag to skip unnecessary
           reinitialization of Natural_join_column::join_columns
           during table reopening after lock_tables() failure
           (like the 'first_execution' flag for PS).
      sql/sql_lex.cc:
        Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while
                  ``FLUSH TABLES WITH READ LOCK''
        
        Initialization of the new
        st_select_lex::first_natural_join_processing flag has
        been added.
      sql/sql_lex.h:
        Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while
                  ``FLUSH TABLES WITH READ LOCK''
        
        The st_select_lex::first_natural_join_processing flag
        has been added to skip unnecessary rebuilding of
        NATURAL/USING JOIN structures during table reopening
        after lock_tables failure.
      sql/sql_update.cc:
        Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while
                  ``FLUSH TABLES WITH READ LOCK''
        
        Extra cleanup calls have been added to reset
        Natural_join_column::table_field items.
      sql/table.cc:
        Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while
                  ``FLUSH TABLES WITH READ LOCK''
        
        Type adjustment for Natural_join_column::table_field
        (Field to Item_field).
      sql/table.h:
        Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while
                  ``FLUSH TABLES WITH READ LOCK''
        
        Type of the Natural_join_column::table_field field has
        been changed from Field that points into short-living
        TABLE memory to long-living Item_field that can be
        linked to (fixed) reopened table.
      fd777ae1