1. 23 Apr, 2009 1 commit
    • Vladislav Vaintroub's avatar
      Bug #42804 --parallel option does not work for MTR under ActiveState · 7fbe3c57
      Vladislav Vaintroub authored
      perl 
      
      The problem here was the method how MTR gets its unique thread ids.
      Prior to this patch, the method to do it was to maintain a global 
      table of pid,mtr_unique_id) pairs. The table was backed by a text 
      file. The table was cleaned up one in a while and dead processes leaking
      unique_ids were determined with with kill(0) or with scripting tasklist
      on Windows.
      
      This method is flawed specifically on native Windows Perl. fork() is 
      implemented with starting a new thread, give it a syntetic negative PID
      (threadID*(-1)), until this thread creates a new process with exec()
      However,  neither tasklist nor any other native Windows tool can cope with
      negative perl PIDs. This lead to incorrect determination of dead process 
      and reusing already used mtr_unique_id.
      
      The patch introduces alternative portable  method of solving unique-id 
      problem. When a process needs a unique id in range [min...max], it just 
      starts  to open files named min, min+1,...max in a loop . After file is 
      opened, we do non-blocking flock(). When flock() succeeds, process has 
      allocated the ID. When process dies, file is unlocked . Checks for zombies 
      are not necessary.
      
      Since the change would create a co-existence problems with older version
      of MTR, because of different way to calculate IDs, the default ID range
      is changed from 250-299 to 300-349.
      
      Another fix that was necessary enable --parallel option was to serialize 
      spawn() calls on Windows. specifically, IO redirects needed to be protected.
      
      This patch also fixes hanging CRTL-C (as described in Bug #38629) for the
      "new"  MTR. The fix was already in 6.0 and is now downported.
      7fbe3c57
  2. 17 Apr, 2009 1 commit
  3. 16 Apr, 2009 1 commit
  4. 08 Apr, 2009 1 commit
  5. 02 Apr, 2009 2 commits
  6. 01 Apr, 2009 5 commits
  7. 31 Mar, 2009 4 commits
  8. 30 Mar, 2009 1 commit
  9. 27 Mar, 2009 10 commits
  10. 26 Mar, 2009 5 commits
  11. 25 Mar, 2009 9 commits
    • Ramil Kalimullin's avatar
      Manual merge. · 7bdc4a26
      Ramil Kalimullin authored
      7bdc4a26
    • Ramil Kalimullin's avatar
      Auto-merge · 301ac2da
      Ramil Kalimullin authored
      301ac2da
    • Ramil Kalimullin's avatar
      Fix for bug#35383: binlog playback and replication breaks · 28e9aa4d
      Ramil Kalimullin authored
      due to name_const substitution
      
      Problem:
      "In general, statements executed within a stored procedure
      are written to the binary log using the same rules that
      would apply were the statements to be executed in standalone
      fashion. Some special care is taken when logging procedure
      statements because statement execution within procedures
      is not quite the same as in non-procedure context".
      
      For example, each reference to a local variable in SP's
      statements is replaced by NAME_CONST(var_name, var_value).
      Queries like
      "CREATE TABLE ... SELECT FUNC(local_var ..."
      are logged as
      "CREATE TABLE ... SELECT FUNC(NAME_CONST("local_var", var_value) ..."
      that leads to differrent field names and
      might result in "Incorrect column name" if var_value is long enough.
      
      Fix: in 5.x we'll issue a warning in such a case.
      In 6.0 we should get rid of NAME_CONST().
      
      Note: this issue and change should be described in the documentation
      ("Binary Logging of Stored Programs").
      
      
      mysql-test/r/binlog.result:
        Fix for bug#35383: binlog playback and replication breaks
        due to name_const substitution
          - test result.
      mysql-test/t/binlog.test:
        Fix for bug#35383: binlog playback and replication breaks
        due to name_const substitution
          - test case.
      sql/sp_head.cc:
        Fix for bug#35383: binlog playback and replication breaks 
        due to name_const substitution
          - set thd->query_name_consts if there's NAME_CONST()
        substitution(s).
      sql/sql_parse.cc:
        Fix for bug#35383: binlog playback and replication breaks 
        due to name_const substitution
          - issue a warning if there's NAME_CONST() substitution and
        binary logging is on for "CREATE TABLE ... SELECT ...".
      28e9aa4d
    • Tatiana A. Nurnberg's avatar
      Bug#43748: crash when non-super user tries to kill the replication threads · 461f754c
      Tatiana A. Nurnberg authored
      manual merge. also adds test specific to 5.1+
      
      mysql-test/suite/rpl/r/rpl_temporary.result:
        show that a non-privileged user trying to
        kill system-threads no longer crashes the
        server. test in 5.1+ only.
      mysql-test/suite/rpl/t/rpl_temporary.test:
        show that a non-privileged user trying to
        kill system-threads no longer crashes the
        server. test in 5.1+ only.
      sql/sql_class.cc:
        manual merge
      sql/sql_class.h:
        manual merge
      sql/sql_parse.cc:
        manual merge
      461f754c
    • Tatiana A. Nurnberg's avatar
      Bug#43748: crash when non-super user tries to kill the replication threads · eeef9467
      Tatiana A. Nurnberg authored
      Fine-tuning. Broke out comparison into method by
      suggestion of Davi. Clarified comments. Reverting
      test-case which I find too brittle; proper test
      case in 5.1+.
      eeef9467
    • Georgi Kodinov's avatar
      Bug#43748: crash when non-super user tries to kill the replication threads · 4abb1a7d
      Georgi Kodinov authored
      (Pushing for Azundris)
            
      We allow security-contexts with NULL users (for
      system-threads and for unauthenticated users).
      If a non-SUPER-user tried to KILL such a thread,
      we tried to compare the user-fields to see whether
      they owned that thread. Comparing against NULL was
      not a good idea.
            
      If KILLer does not have SUPER-privilege, we
      specifically check whether both KILLer and KILLee
      have a non-NULL user before testing for string-
      equality. If either is NULL, we reject the KILL.
      
      mysql-test/r/rpl_temporary.result:
        Try to have a non-SUPER user KILL a system thread.
      mysql-test/t/rpl_temporary.test:
        Try to have a non-SUPER user KILL a system thread.
      sql/sql_parse.cc:
        Make sure security contexts of both KILLer *and*
                KILLee are non-NULL before testing for string-equality!
      4abb1a7d
    • Andrei Elkin's avatar
      Bug#42977 RBR logs for rows with more than 250 column results in corrupt binlog · 6df3b6fe
      Andrei Elkin authored
                  
      The issue happened to be two-fold.
      The table map event was recorded into binlog having
      an incorrect size when number of columns exceeded 251. 
      The Row-based event had incorrect recording and restoring m_width member within
      the same as above conditions.
      
      Fixed with correcting m_data_size and m_width.
      
      
      mysql-test/suite/rpl/r/rpl_row_wide_table.result:
        the new test results.
      mysql-test/suite/rpl/t/rpl_row_wide_table.test:
        regression test for bug#42977.
      sql/log_event.cc:
        0. all buffers that used in net_store_length() are augmented with 1 for safety
        to be able to contain the magic and the content of ulonglong as well;
        1. Rows_log_event::get_data_size() yieled incorrect size |m_width/8| whereas 
           it should be m_width;
        2. Table_map_log_event::Table_map_log_event yieled incorrect value for
           `m_data_size' probably presuming 1-byte integer max for the column number;
      sql/rpl_utility.h:
        DBUG_PRINT_BITSET() macro is left 256-cols limited but has made safe and commented.
      6df3b6fe
    • Leonard Zhou's avatar
      Merge · e9b62249
      Leonard Zhou authored
      e9b62249
    • Alexey Kopytov's avatar