1. 28 Apr, 2009 1 commit
    • Vladislav Vaintroub's avatar
      Bug #44530 mtr v2 startup very slow on Windows. · ca0e746d
      Vladislav Vaintroub authored
      MTR is stuck for about 20 seconds checking for free ports.
      The reason is that perl's connect()  takes 1 second on windows
      if port is not opened.
      
      This patch fixes the mtr_ping_port implementation on Windows
      to use Net::Ping for the port checking with small (0.1sec) timeout.
      
      This patch also removes pointless second call to check_ports_free() 
      in case of auto build thread.
      ca0e746d
  2. 23 Apr, 2009 1 commit
    • Vladislav Vaintroub's avatar
      Bug #42804 --parallel option does not work for MTR under ActiveState · 2943d2b7
      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.
      2943d2b7
  3. 17 Apr, 2009 1 commit
  4. 16 Apr, 2009 1 commit
  5. 08 Apr, 2009 1 commit
  6. 02 Apr, 2009 2 commits
  7. 01 Apr, 2009 5 commits
  8. 31 Mar, 2009 4 commits
  9. 30 Mar, 2009 1 commit
  10. 27 Mar, 2009 10 commits
  11. 26 Mar, 2009 5 commits
  12. 25 Mar, 2009 8 commits
    • Ramil Kalimullin's avatar
      Manual merge. · aca1a83f
      Ramil Kalimullin authored
      aca1a83f
    • Ramil Kalimullin's avatar
      Auto-merge · eccad3f2
      Ramil Kalimullin authored
      eccad3f2
    • Ramil Kalimullin's avatar
      Fix for bug#35383: binlog playback and replication breaks · bce4c76a
      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 ...".
      bce4c76a
    • Tatiana A. Nurnberg's avatar
      Bug#43748: crash when non-super user tries to kill the replication threads · 4f5f7f35
      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
      4f5f7f35
    • Tatiana A. Nurnberg's avatar
      Bug#43748: crash when non-super user tries to kill the replication threads · e46c139d
      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+.
      e46c139d
    • Georgi Kodinov's avatar
      Bug#43748: crash when non-super user tries to kill the replication threads · 9536bd65
      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!
      9536bd65
    • Andrei Elkin's avatar
      Bug#42977 RBR logs for rows with more than 250 column results in corrupt binlog · 67f9a6d1
      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.
      67f9a6d1
    • Leonard Zhou's avatar
      Merge · 6c0abff9
      Leonard Zhou authored
      6c0abff9