1. 30 Nov, 2011 1 commit
  2. 29 Nov, 2011 6 commits
    • Andrei Elkin's avatar
    • Andrei Elkin's avatar
      Bug#13437900 - VALGRIND REPORTS A LEAK FOR REPL_IGNORE_SERVER_IDS · ca128143
      Andrei Elkin authored
      There was memory leak when running some tests on PB2.
      The reason of the failure is an early return from change_master()
      that was supposed to deallocate a dyn-array.
      
      Fixed with relocating the dyn-array's destructor at ~LEX() that is
      the end of the session, per Gleb's patch idea.
      Two optimizations were done: the static buffer for the dyn-array to base on,
      and the array initialization is called precisely when it's necessary rather than
      per each CHANGE-MASTER as before.
       
      
      mysql-test/suite/rpl/t/rpl_empty_master_host.test:
        the test is binlog-format insensitive so it will be run with MIXED mode only.
      sql/sql_lex.cc:
        the new flag is initialized.
      sql/sql_lex.h:
        A new bool flag new member to LEX.mi is added to stay UP since after
        LEX.mi.repl_ignore_server_ids dynarray initialization was called
        for the first time on the session. So it is set once and its life time 
        is session.
        
        The array is destroyed at the end of the session.
      sql/sql_repl.cc:
        dyn-array destruction is relocated to ~LEX.
      sql/sql_yacc.yy:
        Refining logics of Lex->mi.repl_ignore_server_ids initialization.
        The array is initialized once a corresponding option in CHANGE MASTER token sequence
        is found.
        The fact of initialization is memorized into the new flag.
      ca128143
    • Tor Didriksen's avatar
      Build broken for gcc 4.5.1 in optimized mode. · 4775084b
      Tor Didriksen authored
      readline.cc: In function char* batch_readline(LINE_BUFFER*):
      readline.cc:60:9: error: out_length may be used uninitialized in this function
      log.cc: In function int find_uniq_filename(char*):
      log.cc:1857:8: error: number may be used uninitialized in this function
      4775084b
    • Luis Soares's avatar
      BUG#11745230 · d896e623
      Luis Soares authored
      Automerged approved bzr bundle into latest mysql-5.5.
      d896e623
    • Nirbhay Choubey's avatar
      d40db893
    • Nirbhay Choubey's avatar
      Bug#11756764 48726: MYSQLD KEEPS CRASHING WITH SIGSEGV · 11b2a2fe
      Nirbhay Choubey authored
                          WITH MYISAM_USE_MMAP ENABLED
      
      MySQL server can crash due to segmentation fault when
      started with myisam_use_mmap.
      
      The reason behind this being, while making a request to
      unmap (munmap) the previously mapped memory (mmap), the
      size passed was 7 bytes larger than the size requested at
      the time of mapping. This can eventually unmap the adjacent
      memory mapped block, belonging to some other memory-map pool.
      Hence the subsequent call to mmap can map a region which was
      still a valid memory mapped area.
      
      Fixed by removing the extra 7-byte margin which was erroneously
      added to the size, used for unmappping.
      
      
      storage/myisam/mi_close.c:
        Bug#11756764 48726: MYSQLD KEEPS CRASHING WITH SIGSEGV
                            WITH MYISAM_USE_MMAP ENABLED
        
        Added a condition to call _mi_unmap_file() in case
        of compressed records. mi_munmap_file() is called
        otherwise.
      storage/myisam/mi_packrec.c:
        Bug#11756764 48726: MYSQLD KEEPS CRASHING WITH SIGSEGV
                            WITH MYISAM_USE_MMAP ENABLED
        
        mi_dynmap_file() function, after successfully executing
        mmap, stores the total size in info->s->mapped_length
        variable. Now, if mi_dynmap_file() is invoked with a size
        with an extra 7-byte margin (MEMMAP_EXTRA_MARGIN),
        the margin will eventually also get stored in mapped_length.
        So, un-mapping function can simply use the value stored in
        mapped_length in order to unmap the previously mapped
        region.
      11b2a2fe
  3. 24 Nov, 2011 3 commits
    • Luis Soares's avatar
      BUG#11745230: 12133: MASTER.INDEX FILE KEEPS MYSQLD FROM STARTING IF · 52935833
      Luis Soares authored
                    BIN LOG HAS BEEN MOVED 
      
      When moving the binary/relay log files from one location to
      another and restarting the server with a different log-bin or
      relay-log paths, would cause the startup process to abort. The
      root cause was that the server would not be able to find the log
      files because it would consider old paths for entries in the
      index file instead of the new location.  What's even worse, the
      relative paths would not be considered relative to the path
      provided in log-bin and relay-log, but to mysql_data_dir.
            
      We fix the cases where the server contains relative paths. When
      the server is reading from the index file, it checks whether the
      entry contains relative paths. If it does, we replace it with the
      absolute path set in log-bin/relay-log option. Absolute paths
      remain unchanged and the index must be manually edited to
      consider the new log-bin and/or relay-log path (this should be
      documented). This is a fix for a GA version, that does not break
      behavior (that much).
            
      For development versions, we should go with Zhenxing's approach 
      that removes paths altogether from index files.
      
      mysql-test/include/begin_include_file.inc:
        Added parameter to keep the begin_include_file.inc silent. Useful when 
        including scripts that contain platform dependent parameters, for example:
        
        --let $rpl_server_parameters=--log-bin=$tmpdir/slave-bin --relay-log=$tmpdir/slave-relay-bin
        --let $keep_include_silent=1
        source include/rpl_start_server.inc;
        --let $keep_include_silent=0
        
        We want the paths ($tmpdir/slave-bin and $tmpdir/slave-relay-bin) not to be in the 
        result file.
      mysql-test/suite/rpl/t/rpl_binlog_index.test:
        Test case.
      sql/log.cc:
        When finding the corresponding log entry in the index file, we first 
        normalize the paths before doing the comparison. This will make relative
        paths to be turned into absolute paths (based on the opt_bin_logname or
        opt_relay_logname) and then compared against also, expanded paths entered, 
        through CHANGE MASTER for instance.
      sql/log.h:
        Added normalize_binlog_name, which turns relative paths, into absolute paths
        given the parameter: is_relay_log ? opt_relay_logname : opt_bin_logname .
      sql/mysqld.cc:
        Exposing opt_bin_logname.
      sql/mysqld.h:
        Exposing opt_bin_logname.
      52935833
    • Luis Soares's avatar
      BUG#13427949 · 6818c8ba
      Luis Soares authored
      Automerged against latest mysql-5.5.
      6818c8ba
    • Luis Soares's avatar
      BUG#13427949: CHANGE MASTER TO USER='' (EMPTY USER) CAUSES ERRORS ON VALGRING · 20736851
      Luis Soares authored
        
      When passing an empty user to the connect function will cause
      valgrind warnings. Seems that the client code is not prepared 
      to handle empty users. On 5.6 this can even be triggered by 
      START SLAVE PASSWORD='...'; i.e., without setting USER='...' on
      the START SLAVE command (see WL#4143 for details on the new
      additional START SLAVE commands).
        
      To fix this, we disallow empty users when configuring the slave
      connection parameters (this decision might be revisited if the 
      client code accepts empty users in the future).
      
      sql/slave.cc:
        We throw an error if an empty user is supplied to the connection 
        function.
      20736851
  4. 23 Nov, 2011 3 commits
  5. 22 Nov, 2011 2 commits
  6. 21 Nov, 2011 1 commit
  7. 22 Nov, 2011 2 commits
  8. 21 Nov, 2011 4 commits
    • Sneha Modi's avatar
      Bug#11748731:SOME 'BIG' TESTS FAILING ON 6.0 · fe97bc3a
      Sneha Modi authored
      A patch for alter_table-big.test has been committed earlier.
      This is a patch for create-big.test:
      The test used to time-out after 900 seconds. 
      It relied on debug sleeps that are no longer present in the 
      code. Since the sleeps are long gone, fixing the problem didn't 
      involve just updating the result file or using macro 
      "show_binlog_events2.inc" instead of "show binlog events" 
      statement. The test needed to be rewritten using debug sync 
      points, and result then needed to be updated.
      So, the sleeps have been replaced by debug_sync points and the test execution time has 
      been reduced significantly.
      fe97bc3a
    • Bjorn Munch's avatar
      Followup to 11750417: · f8d65ceb
      Bjorn Munch authored
        Disable federated_plugin test for embedded, like other federated tests
        Also removed redundant include/not_embedded.inc from federated.test
      f8d65ceb
    • Sneha Modi's avatar
      Bug#11748572:ALLOCATING A LARGE QUERY CACHE IS NOT DETERMINISTIC · 65ac18fd
      Sneha Modi authored
      Setting query_cache_size to larger values might fail depending on the memory 
      pressure being put on the system. This can be seen on pushbuild as the test 
      case query_cache_size_basic tries to allocate a +3GB query cache, which 
      succeeds in some machines and fails in others.
      
      So this part of the code where the test case tries to allocate +3GB query cache has been 
      disabled for now to get the test running on pb2.
      65ac18fd
    • Jimmy Yang's avatar
      Fix Bug #13405367 - 60212 SERVER CRASH WITH CORRUPT FETCH BUFFER · daa96534
      Jimmy Yang authored
      rb://608 approved by Sunny Bains
      daa96534
  9. 18 Nov, 2011 6 commits
  10. 17 Nov, 2011 3 commits
  11. 16 Nov, 2011 2 commits
  12. 15 Nov, 2011 5 commits
    • Dmitry Lenev's avatar
      Fix for bug#12695572 - "IMPROVE MDL PERFORMANCE IN PRE-VISTA · a3957a43
      Dmitry Lenev authored
      BY CACHING OR REDUCING CREATEEVENT CALLS".
       
      5.5 versions of MySQL server performed worse than 5.1 versions 
      under single-connection workload in autocommit mode on Windows XP.
       
      Part of this slowdown can be attributed to overhead associated
      with constant creation/destruction of MDL_lock objects in the MDL
      subsystem. The problem is that creation/destruction of these
      objects causes creation and destruction of associated
      synchronization primitives, which are expensive on Windows XP.
       
      This patch tries to alleviate this problem by introducing a cache
      of unused MDL_object_lock objects. Instead of destroying such
      objects we put them into the cache and then reuse with a new
      key when creation of a new object is requested.
      
      To limit the size of this cache, a new --metadata-locks-cache-size
      start-up parameter was introduced.
      
      mysql-test/r/mysqld--help-notwin.result:
        Updated test after adding --metadata-locks-cache-size
        parameter.
      mysql-test/r/mysqld--help-win.result:
        Updated test after adding --metadata-locks-cache-size
        parameter.
      mysql-test/suite/sys_vars/r/metadata_locks_cache_size_basic.result:
        Added test coverage for newly introduced --metadata_locks_cache_size
        start-up parameter and corresponding global read-only variable.
      mysql-test/suite/sys_vars/t/metadata_locks_cache_size_basic-master.opt:
        Added test coverage for newly introduced --metadata_locks_cache_size
        start-up parameter and corresponding global read-only variable.
      mysql-test/suite/sys_vars/t/metadata_locks_cache_size_basic.test:
        Added test coverage for newly introduced --metadata_locks_cache_size
        start-up parameter and corresponding global read-only variable.
      sql/mdl.cc:
        Introduced caching of unused MDL_object_lock objects, in order to
        avoid costs associated with constant creation and destruction of
        such objects in single-connection workloads run in autocommit mode.
        Such costs can be pretty high on systems where creation and 
        destruction of synchronization primitives require a system call 
        (e.g. Windows XP).
         
        To implement this cache,a list of unused MDL_object_lock instances 
        was added to MDL_map object. Instead of being destroyed 
        MDL_object_lock instances are put into this list and re-used later 
        when creation of a new instance is required. Also added 
        MDL_lock::m_version counter to allow threads having outstanding 
        references to an MDL_object_lock instance to notice that it has 
        been moved to the unused objects list.
         
        Added a global variable for a start-up parameter that limits
        the size of the unused objects list.
         
        Note that we don't cache MDL_scoped_lock objects since they
        are supposed to be created only during execution of DDL 
        statements and therefore should not affect performance much.
      sql/mdl.h:
        Added a global variable for start-up parameter that limits the
        size of the unused MDL_object_lock objects list and constant
        for its default value.
      sql/sql_plist.h:
        Added I_P_List<>::pop_front() function.
      sql/sys_vars.cc:
        Introduced --metadata-locks-cache-size start-up parameter
        for specifying size of the cache of unused MDL_object_lock
        objects.
      a3957a43
    • Luis Soares's avatar
      BUG#11760927 · 70b494be
      Luis Soares authored
      Follow up to fix freebsd compile issue.
      70b494be
    • Luis Soares's avatar
      BUG#11760927 · 697096cb
      Luis Soares authored
      Automerged approved bzr bundle in latest mysql-5.5.
      697096cb
    • Nirbhay Choubey's avatar
      Bug#11827359 60223: MYSQL_UPGRADE PROBLEM WITH · d8e84fad
      Nirbhay Choubey authored
                          OPTION SKIP-WRITE-BINLOG
      
      System tables were not getting upgraded when
      mysql_upgrade was run with --skip-write-binlog
      option. (Same for --write-binlog.) Also, with
      this option, mysql_upgrade_info file was not
      getting created after the upgrade.
      
      mysql_upgrade makes use of mysql client tool in
      order to run upgrade scripts, while doing so it
      passes some of the command line options (used to
      start mysql_upgrade) directly to mysql client.
      The reason behind this bug being, some options
      like skip-write-binlog and upgrade-system-tables
      were being passed to mysql tool along with other
      options, and hence mysql execution failed due
      presence of these invalid options.
      
      Fixed this issue by filtering out the above mentioned
      options from the list of options that will be passed to
      mysql and mysqlcheck tools. However, since --write-binlog
      is supported by mysqlcheck, this option would be used
      explicitly while running mysqlcheck. (not part of patch,
      already there)
      
      Checking the contents of general log after the upgrade
      is not doable via an mtr test. So performed manual test.
      Added a test to verify the creation of mysql_upgrade_info.
      
      
      client/mysql_upgrade.c:
        Bug#11827359 60223: MYSQL_UPGRADE PROBLEM WITH
                            OPTION SKIP-WRITE-BINLOG
        
        With this patch, --upgrade-system-tables and
        --write-binlog options will not be added to the
        list of options, used to start mysql and mysqlcheck
        tools.
      mysql-test/r/mysql_upgrade.result:
        Added a testcase for Bug#11827359.
      mysql-test/t/mysql_upgrade.test:
        Added a testcase for Bug#11827359.
      d8e84fad
    • Tor Didriksen's avatar
      Bug#13261955 TRUNCATE(DBL_MAX) RETURNS DBL_MAX RATHER THAN 'INF' · c41cae5a
      Tor Didriksen authored
      my_double_round(DBL_MAX, -12, ....)
      should return 'inf' rather than DBL_MAX
      
      The problem is that floor(value/tmp) * tmp
      is inlined, and optimized away.
      
      The solution seems to be to prevent inlining by pre-computing value/tmp and
      storing it in a variable.
      
      No new test case: main.type_float fails without this patch.
      c41cae5a
  13. 11 Nov, 2011 2 commits
    • unknown's avatar
      BUG#12929028: mysql_plugin : the --mysqld option is required, but not used · 14feb08f
      unknown authored
      This patch corrects a defect whereby the --mysqld, --my-print-defaults, 
      and --plugin-ini were required. These options are not required and the
      code has been fixed accordingly.
      14feb08f
    • Luis Soares's avatar
      BUG#11760927: 53375: RBR + NO PK => HIGH LOAD ON SLAVE (TABLE · fb537354
      Luis Soares authored
                    SCAN/CPU) => SLAVE FAILURE
      
      When a statement containing a large amount of ROWs to be applied on
      the slave, and the slave's table does not contain a PK, it can take a
      considerable amount of time to find and change all the rows that are
      to be changed.
      
      The proper slave enhancement will be implemented in WL 5597. However,
      in this bug we are making it clear to the user what the problem is, by
      printing a message to the error log if the execution time, for a given
      statement in RBR, takes more than LONG_FIND_ROW_THRESHOLD (set to 60
      seconds). This shall help the DBA to diagnose what's happening when
      facing a slave server that is quiet for no apparent reason...
      
      The note is only printed to the error log if log_warnings is set to be
      greater than 1.
      
      
      sql/log_event.cc:
        Core of the patch. 
        
        In Rows_log_event::do_apply_event, sets STMT start 
        timestamp.
        
        In Rows_log_event::find_row, if a PK is not used, then the start 
        timestamp is checked to see if the time spent on this STMT is enough
        to justify the printing of a note (only if it was not printed before).
      sql/log_event.h:
        Defining LONG_FIND_ROW_THRESHOLD.
      sql/rpl_rli.cc:
        Resets long_find_row state in rli->context_cleanup().
      sql/rpl_rli.h:
        Two new rli properties that are necessary to control when to
        emit a note in the error log: 1) timestamp that states when the
        ROW statement started; 2) flag indicating whether the note has
        been emitted for the current statement or not. Also deployed
        accessors.
      fb537354