1. 19 Dec, 2010 1 commit
    • Sven Sandberg's avatar
      BUG#49978: Replication tests don't clean up replication state at the end · 09c80e12
      Sven Sandberg authored
      Major replication test framework cleanup. This does the following:
       - Ensure that all tests clean up the replication state when they
         finish, by making check-testcase check the output of SHOW SLAVE STATUS.
         This implies:
          - Slave must not be running after test finished. This is good
            because it removes the risk for sporadic errors in subsequent
            tests when a test forgets to sync correctly.
          - Slave SQL and IO errors must be cleared when test ends. This is
            good because we will notice if a test gets an unexpected error in
            the slave threads near the end.
          - We no longer have to clean up before a test starts.
       - Ensure that all tests that wait for an error in one of the slave
         threads waits for a specific error. It is no longer possible to
         source wait_for_slave_[sql|io]_to_stop.inc when there is an error
         in one of the slave threads. This is good because:
          - If a test expects an error but there is a bug that causes
            another error to happen, or if it stops the slave thread without
            an error, then we will notice.
          - When developing tests, wait_for_*_to_[start|stop].inc will fail
            immediately if there is an error in the relevant slave thread.
            Before this patch, we had to wait for the timeout.
       - Remove duplicated and repeated code for setting up unusual replication
         topologies. Now, there is a single file that is capable of setting
         up arbitrary topologies (include/rpl_init.inc, but
         include/master-slave.inc is still available for the most common
         topology). Tests can now end with include/rpl_end.inc, which will clean
         up correctly no matter what topology is used. The topology can be
         changed with include/rpl_change_topology.inc.
       - Improved debug information when tests fail. This includes:
          - debug info is printed on all servers configured by include/rpl_init.inc
          - User can set $rpl_debug=1, which makes auxiliary replication files
            print relevant debug info.
       - Improved documentation for all auxiliary replication files. Now they
         describe purpose, usage, parameters, and side effects.
       - Many small code cleanups:
          - Made have_innodb.inc output a sensible error message.
          - Moved contents of rpl000017-slave.sh into rpl000017.test
          - Added mysqltest variables that expose the current state of
            disable_warnings/enable_warnings and friends.
          - Too many to list here: see per-file comments for details.
      09c80e12
  2. 17 Dec, 2010 3 commits
    • Georgi Kodinov's avatar
      merge · 82e887e3
      Georgi Kodinov authored
      82e887e3
    • Georgi Kodinov's avatar
      post-merge test suite update · 6c3d3714
      Georgi Kodinov authored
      6c3d3714
    • Luis Soares's avatar
      BUG#46166 · 9e161d30
      Luis Soares authored
      Post-push fixes:
      
        - fixed platform dependent result files
        - appeasing valgrind warnings:
         
          Fault injection was also uncovering a previously existing 
          potential mem leaks. For BUG#46166 testing purposes, fixed 
          by forcing handling the leak when injecting faults.
      9e161d30
  3. 16 Dec, 2010 2 commits
  4. 15 Dec, 2010 1 commit
  5. 14 Dec, 2010 10 commits
    • Gleb Shchepa's avatar
    • Gleb Shchepa's avatar
      backport of bug #54476 fix from 5.1-bugteam to 5.0-bugteam. · 01521a0a
      Gleb Shchepa authored
      Original revid: alexey.kopytov@sun.com-20100723115254-jjwmhq97b9wl932l
      
       > Bug #54476: crash when group_concat and 'with rollup' in
       >                      prepared statements
       >
       > Using GROUP_CONCAT() together with the WITH ROLLUP modifier
       > could crash the server.
       >
       > The reason was a combination of several facts:
       >
       > 1. The Item_func_group_concat class stores pointers to ORDER
       > objects representing the columns in the ORDER BY clause of
       > GROUP_CONCAT().
       >
       > 2. find_order_in_list() called from
       > Item_func_group_concat::setup() modifies the ORDER objects so
       > that their 'item' member points to the arguments list
       > allocated in the Item_func_group_concat constructor.
       >
       > 3. In some cases (e.g. in JOIN::rollup_make_fields) a copy of
       > the original Item_func_group_concat object could be created by
       > using the Item_func_group_concat::Item_func_group_concat(THD
       > *thd, Item_func_group_concat *item) copy constructor. The
       > latter essentially creates a shallow copy of the source
       > object. Memory for the arguments array is allocated on
       > thd->mem_root, but the pointers for arguments and ORDER are
       > copied verbatim.
       >
       > What happens in the test case is that when executing the query
       > for the first time, after a copy of the original
       > Item_func_group_concat object has been created by
       > JOIN::rollup_make_fields(), find_order_in_list() is called for
       > this new object. It then resolves ORDER BY by modifying the
       > ORDER objects so that they point to elements of the arguments
       > array which is local to the cloned object. When thd->mem_root
       > is freed upon completing the execution, pointers in the ORDER
       > objects become invalid. Those ORDER objects, however, are also
       > shared with the original Item_func_group_concat object which is
       > preserved between executions of a prepared statement. So the
       > first call to find_order_in_list() for the original object on
       > the second execution tries to dereference an invalid pointer.
       >
       > The solution is to create copies of the ORDER objects when
       > copying Item_func_group_concat to not leave any stale pointers
       > in other instances with different lifecycles.
      01521a0a
    • Luis Soares's avatar
      BUG#46697 · e4ad12dc
      Luis Soares authored
      Autmoerging into latest mysql-5.1-bugteam.
      e4ad12dc
    • Luis Soares's avatar
      BUG 46697 · 1d0eae6f
      Luis Soares authored
      Addressing review comments.
      1d0eae6f
    • Luis Soares's avatar
      089327bf
    • Sergey Glukhov's avatar
      Bug#57818 string conversion function died · 622ae418
      Sergey Glukhov authored
      Bug#57913 large negative number to string conversion functions crash
      String object which is used as result container of the item
      has uninitialized 'str_charset' field. This object
      might be used later to preform some internal operations
      and str_charset field is involved in these operations.
      It leads to crash.
      The fix is to intialize str_charset in my_decimal2string() func.
      622ae418
    • Mattias Jonsson's avatar
      merge · 6e3314b0
      Mattias Jonsson authored
      6e3314b0
    • Mattias Jonsson's avatar
      merge · c070dc57
      Mattias Jonsson authored
      c070dc57
    • Mattias Jonsson's avatar
      Bug#45717: A few test cases are disabled due to closed Bug#30577 · cd27e25d
      Mattias Jonsson authored
      Backport from 5.5. OK from Anitha G. to push to 5.1.
      
      Removed floor(float_col) tests, enabled floor(decimal_col) tests
      cd27e25d
    • Sergey Glukhov's avatar
      Fixed following problems: · cd36a6a5
      Sergey Glukhov authored
      --Bug#52157 various crashes and assertions with multi-table update, stored function
      --Bug#54475 improper error handling causes cascading crashing failures in innodb/ndb
      --Bug#57703 create view cause Assertion failed: 0, file .\item_subselect.cc, line 846
      --Bug#57352 valgrind warnings when creating view
      --Recently discovered problem when a nested materialized derived table is used
        before being populated and it leads to incorrect result
      
      We have several modes when we should disable subquery evaluation.
      The reasons for disabling are different. It could be
      uselessness of the evaluation as in case of 'CREATE VIEW'
      or 'PREPARE stmt', or we should disable subquery evaluation
      if tables are not locked yet as it happens in bug#54475, or
      too early evaluation of subqueries can lead to wrong result
      as it happened in Bug#19077.
      Main problem is that if subquery items are treated as const
      they are evaluated in ::fix_fields(), ::fix_length_and_dec()
      of the parental items as a lot of these methods have
      Item::val_...() calls inside.
      We have to make subqueries non-const to prevent unnecessary
      subquery evaluation. At the moment we have different methods
      for this. Here is a list of these modes:
      
      1. PREPARE stmt;
      We use UNCACHEABLE_PREPARE flag.
      It is set during parsing in sql_parse.cc, mysql_new_select() for
      each SELECT_LEX object and cleared at the end of PREPARE in
      sql_prepare.cc, init_stmt_after_parse(). If this flag is set
      subquery becomes non-const and evaluation does not happen.
      
      2. CREATE|ALTER VIEW, SHOW CREATE VIEW, I_S tables which
         process FRM files
      We use LEX::view_prepare_mode field. We set it before
      view preparation and check this flag in
      ::fix_fields(), ::fix_length_and_dec().
      Some bugs are fixed using this approach,
      some are not(Bug#57352, Bug#57703). The problem here is
      that we have a lot of ::fix_fields(), ::fix_length_and_dec()
      where we use Item::val_...() calls for const items.
      
      3. Derived tables with subquery = wrong result(Bug19077)
      The reason of this bug is too early subquery evaluation.
      It was fixed by adding Item::with_subselect field
      The check of this field in appropriate places prevents
      const item evaluation if the item have subquery.
      The fix for Bug19077 fixes only the problem with
      convert_constant_item() function and does not cover
      other places(::fix_fields(), ::fix_length_and_dec() again)
      where subqueries could be evaluated.
      
      Example:
      CREATE TABLE t1 (i INT, j BIGINT);
      INSERT INTO t1 VALUES (1, 2), (2, 2), (3, 2);
      SELECT * FROM (SELECT MIN(i) FROM t1
      WHERE j = SUBSTRING('12', (SELECT * FROM (SELECT MIN(j) FROM t1) t2))) t3;
      DROP TABLE t1;
      
      4. Derived tables with subquery where subquery
         is evaluated before table locking(Bug#54475, Bug#52157)
      
      Suggested solution is following:
      
      -Introduce new field LEX::context_analysis_only with the following
       possible flags:
       #define CONTEXT_ANALYSIS_ONLY_PREPARE 1
       #define CONTEXT_ANALYSIS_ONLY_VIEW    2
       #define CONTEXT_ANALYSIS_ONLY_DERIVED 4
      -Set/clean these flags when we perform
       context analysis operation
      -Item_subselect::const_item() returns
       result depending on LEX::context_analysis_only.
       If context_analysis_only is set then we return
       FALSE that means that subquery is non-const.
       As all subquery types are wrapped by Item_subselect
       it allow as to make subquery non-const when
       it's necessary.
      cd36a6a5
  6. 13 Dec, 2010 3 commits
  7. 09 Dec, 2010 2 commits
  8. 07 Dec, 2010 3 commits
    • Luis Soares's avatar
      BUG#46166 · bd0709cc
      Luis Soares authored
      Post merge fix. In write_incident, check if binlog file is
      opened before actually trying to write the incident event.
      bd0709cc
    • Luis Soares's avatar
      BUG#46166 · 5a63ecaf
      Luis Soares authored
      Automerged bzr bundle from bug report.
      5a63ecaf
    • Davi Arnaut's avatar
      Bug#57991: Compiler flag change build error : adler32.c · 6a84582c
      Davi Arnaut authored
      Do not use the same maintainer mode flags for both GCC and ICC.
      The -Wall option for ICC enables more warnings than its GCC
      counterpart.
      6a84582c
  9. 10 Dec, 2010 1 commit
    • Dmitry Shulga's avatar
      Fixed bug#54486 - assert in my_seek, concurrent · dfb62272
      Dmitry Shulga authored
      DROP/CREATE SCHEMA, CREATE TABLE, REPAIR.
      
      The cause of assert was concurrent execution of
      DROP DATABASE and REPAIR TABLE where first statement
      deleted table's file .TMD at the same time as
      REPAIR TABLE tried to read file details from the old file
      that was just removed.
      
      Additionally was fixed trouble when DROP TABLE try delete
      all files belong to table being dropped at the same time
      when REPAIR TABLE statement has just deleted .TMD file.
      
      No regression test added because this would require adding a
      sync point to mysys/my_redel.c. Since this bug is not present in
      5.5+, adding test coverage was considered unnecessary.
      The patch has been verified using RQG testing.
      dfb62272
  10. 09 Dec, 2010 4 commits
  11. 07 Dec, 2010 1 commit
    • Luis Soares's avatar
      BUG#58416 · a9d18aaf
      Luis Soares authored
      Automerging bzr bundle from bug report into latest 
      mysql-5.1-bugteam.
      a9d18aaf
  12. 03 Dec, 2010 1 commit
    • Luis Soares's avatar
      BUG#46697: Table name in error message is not populated · 8282ddc4
      Luis Soares authored
      When a query fails with a different error on the slave,
      the sql thread outputs a message (M) containing:
      
        1. the error message format for the master error code
        2. the master error code
        3. the error message for the slave's error code
        4. the slave error code
      
      Given that the slave has no information on the error message
      itself that the master outputs, it can only print its own
      version of the message format (but stripped from the 
      additional data if the message format requires). This may
      confuse users.
      
      To fix this we augment the slave's message (M) to explicitly
      state that the master's message is actually an error message 
      format, the one associated with the given master error code 
      and that the slave server knows about.
      8282ddc4
  13. 02 Dec, 2010 3 commits
  14. 01 Dec, 2010 4 commits
    • Mats Kindahl's avatar
      bfb43fb4
    • Mats Kindahl's avatar
      BUG#58246: INSTALL PLUGIN not secure & crashable · 91a4a8ab
      Mats Kindahl authored
      When installing plugins, there is a missing check
      for slash (/) in the path on Windows. Note that on
      Windows, both / and \ can be used to separate
      directories.
      
      This patch fixes the issue by:
      - Adding a FN_DIRSEP symbol for all platforms
        consisting of a string of legal directory
        separators.
      - Adding a charset-aware version of strcspn().
      - Adding a check_valid_path() function that uses
        my_strcspn() to check if any FN_DIRSEP character
        is in the supplied string.
      - Using the check_valid_path() function in
        sql_plugin.cc and sql_udf.cc (which means
        replacing the existing test there).
      91a4a8ab
    • Bjorn Munch's avatar
      Bug #58092 Test "rpl_cross_version" has "copy_file" failing · 9dca123d
      Bjorn Munch authored
      I am not fixing the test failure
      Adds printing of my_errno when commands fail, could hopefully help
      9dca123d
    • Nirbhay Choubey's avatar
      Additional fix for bug#54899 · c8310653
      Nirbhay Choubey authored
      Fixing the testcase to use the database name
      as connected_db instead of 'test' database.
      c8310653
  15. 30 Nov, 2010 1 commit
    • Luis Soares's avatar
      BUG#46166: MYSQL_BIN_LOG::new_file_impl is not propagating error · aaefb52d
      Luis Soares authored
                 when generating new name.
            
      If find_uniq_filename returns an error, then this error is not
      being propagated upwards, and execution does not report error to
      the user (although a entry in the error log is generated).
                        
      Additionally, some more errors were ignored in new_file_impl:
      - when writing the rotate event
      - when reopening the index and binary log file
                        
      This patch addresses this by propagating the error up in the
      execution stack. Furthermore, when rotation of the binary log
      fails, an incident event is written, because there may be a
      chance that some changes for a given statement, were not properly
      logged. For example, in SBR, LOAD DATA INFILE statement requires
      more than one event to be logged, should rotation fail while
      logging part of the LOAD DATA events, then the logged data would
      become inconsistent with the data in the storage engine.
      aaefb52d