1. 09 Dec, 2008 3 commits
  2. 08 Dec, 2008 20 commits
  3. 07 Dec, 2008 1 commit
  4. 05 Dec, 2008 3 commits
    • Vladislav Vaintroub's avatar
      Bug#39750 -cannot create temp file on Windows. · ac00df9a
      Vladislav Vaintroub authored
      The problem appears often in conjuction with temp files, when temp-pool is used, so that names of temp files are not unique.
      
      The reason is that rapid deletiion and creation of fiiles with the same name on Windows is not guaranteed to succeed. File disappears from the file system only when the last handle to it is closed. If for example  a virus scanner, a backup or indexing  application  opens the  temp file just before MySQL deletes it, the file will enter "delete pending" state. In this state,it is not possible to open the file , or create a file with the same name (CreateFile returns  ERROR_ACCESS_DENED, posix open returns EACESS)
      
      Fix (rather a cheap workarounf) is not to use temp-pool when working with temporary files- this will make filenames unique. 
      With this patch , temp- pool setting will be ignored on anything but Linux(the option only made sense for Linux since its invention anyway).
      ac00df9a
    • Georgi Kodinov's avatar
      84dfabfa
    • Mats Kindahl's avatar
      Bug #40116: · 96f1821f
      Mats Kindahl authored
      Uncommited changes are replicated and stay on slave after
      rollback on master
      
      Making test slightly more generic and robust.
      
      mysql-test/suite/rpl/t/rpl_trigger.test:
        Adding code to check that InnoDB is available on slave as well.
        Making code slightly more generic.
      96f1821f
  5. 04 Dec, 2008 2 commits
    • Vladislav Vaintroub's avatar
      Bug#38522: 5 seconds delay when closing application using embedded server · ec5ce9b0
      Vladislav Vaintroub authored
                        
      The problem here is that embedded server starts handle_thread manager 
      thread  on mysql_library_init() does not stop it on mysql_library_end().
      At shutdown, my_thread_global_end() waits for thread count to become 0,
      but since we did not stop the thread it will give up after 5 seconds.
                   
      Solution is to move shutdown for handle_manager thread from kill_server()
      (mysqld specific) to clean_up() that is used by both embedded and mysqld.
                  
      This patch also contains some refactorings - to avoid duplicate code,
      start_handle_manager() and stop_handle_manager() functions are introduced.
      Unused variables are eliminated. handle_manager does not rely on global
      variable abort_loop anymore to stop (abort_loop is not set for embedded).
                  
      Note: Specifically on Windows and when using DBUG version of libmysqld, 
      the complete solution requires removing obsolete code my_thread_init() 
      from my_thread_var(). This has a side effect that a DBUG statement 
      after my_thread_end() can cause thread counter to be incremented, and 
      embedded will hang for some seconds. Or worse, my_thread_init() will 
      crash if critical sections have been deleted by the global cleanup 
      routine that runs in a different thread. 
      
      This patch also fixes and revert prior changes for Bug#38293 
      "Libmysqld crash in mysql_library_init if language file missing".
      
      Root cause of the crash observed in Bug#38293  was bug in my_thread_init() 
      described above
      
      
      
      
      client/mysql.cc:
        sql_protocol_typelib is not exported from libmysqld
        (does not make sense either)
        thus excluded from embedded client
      dbug/dbug.c:
        revert changes for Bug#38293
      include/my_dbug.h:
        revert changes for Bug#38293
      libmysql/libmysql.c:
        Removed DBUG_POP call, because when called after my_end(), will access
        THR_key_mysys that is already deleted. The result of pthread_get_specific
        is not predictable in this case and hence DBUG_POP can crash.
      libmysqld/examples/CMakeLists.txt:
        Revert changes for Bug#38293.
      libmysqld/lib_sql.cc:
        code to start handle manager is factored out into 
        start_handle_manager() function
      libmysqld/libmysqld.def:
        Revert changes for Bug #38293
        Remove excessive exports from libmysqld, export what API documents.
      mysys/my_thr_init.c:
        Remove windows-DLL-specific workaround for something (old code, no documentation for
        what specifically). The problem is that even after my_thread_end() is finished, 
        DBUG statement can initiate my_thread_init(). This does not happen anywhere else and 
        should not happen on  Windows either.
      sql/mysql_priv.h:
        - new functions start_handle_manager() and stop_handle_manager()
        - move manager_thread_in_use  variable to sql_manager.cc and made
        it static
        - remove manager_status, as it is unused
      sql/mysqld.cc:
        Code to start/stop handle_manager thread is factored out into start_handle_manager()
      ec5ce9b0
    • Andrei Elkin's avatar
      Bug #33420 Test 'rpl_packet' fails randomly with changed "Exec_Master_Log_Pos" · 8425ef46
      Andrei Elkin authored
      Bug #41173 rpl_packet fails sporadically on pushbuild: query 'DROP TABLE t1' failed
      
      
      The both issues appeared to be a race between the SQL thread executing CREATE table t1
      and the IO thread that is expected to stop at the consequent big size event.
      The two events need serialization which is implemented.
      The early bug required back-porting a part fixes for bug#38350 exclusively for 5.0 version.
      
      
      
      mysql-test/r/rpl_packet.result:
        results changed due to bug#33420, bug#41173.
      mysql-test/t/rpl_packet.test:
        adding synchronization for sql and io thread (bug#41173 problem).
        simplifying the output to show only a relevant info (5.0 sole problem bug#33420).
      8425ef46
  6. 03 Dec, 2008 3 commits
    • 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
    • Alexey Kopytov's avatar
      Fix for bug #27483: Casting 'scientific notation type' to 'unsigned · 7aa1074c
      Alexey Kopytov authored
                          bigint' fails on windows.
      
      Visual Studio does not take into account some x86 hardware limitations
      which leads to incorrect results when converting large DOUBLE values
      to BIGINT UNSIGNED ones.
      
      Fixed by adding a workaround for double->ulonglong conversion on
      Windows.
      
      
      include/config-win.h:
        Added double2ulonglong(double) function implementing a workaround for
        broken double->ulonglong conversion on Windows/x86.
      include/my_global.h:
        Define double2ulonglong() as a simple typecast for anything but
        Windows.
      mysql-test/r/type_float.result:
        Added a test case for bug #27483.
      mysql-test/t/type_float.test:
        Added a test case for bug #27483.
      7aa1074c
    • unknown's avatar
      Raise version number after cloning 5.0.74 · 0e559993
      unknown authored
      0e559993
  7. 02 Dec, 2008 4 commits
    • Andrei Elkin's avatar
      Bug #40221 Replication failure on RBR + UPDATE the primary key · 2cb9ed41
      Andrei Elkin authored
      A transaction could result in having an extra event after a query that
      errored e.g because of a dup key. Such a query is rolled back in
      innodb, as specified, but has not been in binlog.
      It appeares that the binlog engine did not always register for a query
      (statement) because the previous query had not reset at its statement
      commit time. Because of that fact there was no roll-back to the
      trx_data->before_stmt_pos position and a the pending event of the
      errorred query could become flushed to the binlog file.
      
      Fixed with deploying the reset of trx_data->before_stmt_pos at the end
      of the query processing.
      
      
      mysql-test/suite/binlog/r/binlog_innodb_row.result:
        a new test file to contain tests dealing with binlogging innodb with
        the row-based format.
      mysql-test/suite/binlog/t/binlog_innodb_row.test:
        a new test file to contain tests dealing with binlogging innodb with
        the row-based format.
      sql/log.cc:
        Flushing the pending row event at binlog_end_trans() is moved down to the commit
        branch.
        Resetting of trx_data->before_stmt_pos to the uninitialized value at the end of the
        statement is implemented in binlog_commit() and binlog_rollback().
        Asserting emptiness the transaction cache after reset() and the uninitilized value for the statement's savepoint binlog position.
      2cb9ed41
    • Georgi Kodinov's avatar
      moved the version to 5.0-main · 13d8f68a
      Georgi Kodinov authored
      13d8f68a
    • Georgi Kodinov's avatar
      Fixed a bad merge (5.0->5.1) of the fix for bug 37339. · 7faad2a1
      Georgi Kodinov authored
      There was a missing initialization.
      
      sql/set_var.h:
        Added an initialization missing during the merge of 37339.
      7faad2a1
    • Georgi Kodinov's avatar
      Addendum to the fix for bug #39178: Server crash in YaSSL · 996345f3
      Georgi Kodinov authored
      with non-RSA-requesting client if server uses RSA key
      
      matchSuite() may not find a match. 
      It will return error in this case.
      Added a error checking code that will prevent using uninitialized 
      memory in the code based on the assumption 
      that matchSuite() has found a match.
      
      extra/yassl/src/yassl_imp.cpp:
        Bug #39178: Correct error checking added
      996345f3
  8. 01 Dec, 2008 4 commits