1. 09 Dec, 2010 1 commit
    • Ramil Kalimullin's avatar
      Fix for bug#48451: my_seek and my_tell ignore MY_WME flag · 0137e028
      Ramil Kalimullin authored
       my_seek() and my_tell() functions now honour MY_WME flag.
      
      
      include/mysys_err.h:
        Fix for bug#48451: my_seek and my_tell ignore MY_WME flag
          - EE_CANT_SEEK added, used in my_seek() and my_tell() functions.
      mysys/errors.c:
        Fix for bug#48451: my_seek and my_tell ignore MY_WME flag
          - EE_CANT_SEEK added, used in my_seek() and my_tell() functions.
      mysys/my_seek.c:
        Fix for bug#48451: my_seek and my_tell ignore MY_WME flag
          - my_seek() and my_tell() handle MY_WME flag.
      mysys/my_symlink.c:
        Fix for bug#48451: my_seek and my_tell ignore MY_WME flag
          - __attribute__((unused)) removed, as myf MyFlags is
        actually used in the my_realpath() function.
      storage/myisam/ha_myisam.cc:
        Fix for bug#48451: my_seek and my_tell ignore MY_WME flag
          - check my_seek() result.
      0137e028
  2. 07 Dec, 2010 1 commit
    • Luis Soares's avatar
      BUG#58416 · 3cecccff
      Luis Soares authored
      Automerging bzr bundle from bug report into latest 
      mysql-5.1-bugteam.
      3cecccff
  3. 02 Dec, 2010 3 commits
  4. 01 Dec, 2010 3 commits
    • Mats Kindahl's avatar
      9c87ae9b
    • Mats Kindahl's avatar
      BUG#58246: INSTALL PLUGIN not secure & crashable · fc9f3efa
      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).
      
      include/config-netware.h:
        Adding FN_DIRSEP
        ******
        Adding FN_DIRSEP
      include/config-win.h:
        Adding FN_DIRSEP
        ******
        Adding FN_DIRSEP
      include/m_ctype.h:
        Adding my_strspn() and my_strcspn().
        
        ******
        Adding my_strspn() and my_strcspn().
      include/my_global.h:
        Adding FN_DIRSEP
        ******
        Adding FN_DIRSEP
      mysql-test/t/plugin_not_embedded.test:
        Adding test that file names containing / is
        disallowed on *all* platforms.
        ******
        Adding test that file names containing / is
        disallowed on *all* platforms.
      sql/sql_plugin.cc:
        Introducing check_if_path() function for
        checking if filename is a path to include
        / on Windows.
        ******
        Introducing check_if_path() function for
        checking if filename is a path to include
        / on Windows.
      sql/sql_udf.cc:
        Switching to use check_if_path() function.
        ******
        Switching to use check_if_path() function.
      strings/my_strchr.c:
        Adding my_strspn() and my_strcspn().
        ******
        Adding my_strspn() and my_strcspn().
      fc9f3efa
    • Nirbhay Choubey's avatar
      Additional fix for bug#54899 · 2d81ad5b
      Nirbhay Choubey authored
      Fixing the testcase to use the database name
      as connected_db instead of 'test' database.
      
      mysql-test/r/mysql.result:
        Additional fix in the test for bug#54899.
      mysql-test/t/mysql.test:
        Additional fix in the test for bug#54899.
      2d81ad5b
  5. 30 Nov, 2010 1 commit
  6. 27 Nov, 2010 1 commit
    • Luis Soares's avatar
      BUG#58416: binlog.binlog_row_failure_mixing_engines fails on · 6ce0bd8a
      Luis Soares authored
      win x86 debug_max
      
      The windows MTR run exhibited a different test execution 
      ordering (due to the fact that in these platforms MTR is invoked
      with --parallel > 1). This uncovered a bug in the aforementioned
      test case, which is triggered by the following conditions:
      
        1. server is not restarted between two different tests;
        2. the test before binlog.binlog_row_failure_mixing_engines
           issues flush logs;
        3. binlog.binlog_row_failure_mixing_engines uses binlog
           positions to limit the output of show_binlog_events;
        4. binlog.binlog_row_failure_mixing_engines does not state which
           binlog file to use, thence it uses a wrong binlog file with
           the correct position.
      
      There are two possible fixes: 1. make sure that the test start 
      from a clean slate - binlog wise; 2. in addition to the position, 
      also state the binary log file before sourcing 
      show_binlog_events.inc .
      
      We go for fix #1, ie, deploy a RESET MASTER before the test is 
      actually started.
      6ce0bd8a
  7. 26 Nov, 2010 1 commit
    • Davi Arnaut's avatar
      Bug#51817: incorrect assumption: thd->query at 0x2ab2a8360360 is an invalid pointer · d5e92895
      Davi Arnaut authored
      The problem is that the logic which checks if a pointer is
      valid relies on a poor heuristic based on the start and end
      addresses of the data segment and heap.
      
      Apart from miscalculating the heap bounds, this approach also
      suffers from the fact that memory can come from places other
      than the heap. See Bug#58528 for a more detailed explanation.
      
      On Linux, the solution is to access the process's memory
      through /proc/self/task/<tid>/mem, which allows for retrieving
      the contents of pages within the virtual address space of
      the calling process. If a address range is not mapped, a
      input/output error is returned.
      
      client/mysqltest.cc:
        Use new interface to my_safe_print_str.
      include/my_stacktrace.h:
        Drop name from my_safe_print_str.
      mysys/stacktrace.c:
        Access the process's memory through a file descriptor and
        dump the contents of the memory range. The file descriptor
        offset is equivalent to a offset into the address space.
        
        Do not print the name of the variable associated with the
        address. It can be better accomplished at a higher level.
      sql/mysqld.cc:
        Put the variable dumping information within its own newline block.
        Use symbolic names which better convey information to the user.
      d5e92895
  8. 30 Nov, 2010 7 commits
    • Luis Soares's avatar
      2bdeabe7
    • Christopher Powers's avatar
      Null-merge from mysql-5.0-bugteam · e05bfa68
      Christopher Powers authored
      e05bfa68
    • Luis Soares's avatar
      BUG#57288: binlog_tmp_table fails sporadically: "Failed to write · b0094227
      Luis Soares authored
      the DROP statement ..."
            
      Problem: When using temporary tables and closing a session, an
      implicit DROP TEMPORARY TABLE IF EXISTS is written to the binary
      log (while cleaning up the context of the session THD - see:
      sql_class.cc:THD::cleanup which calls close_temporary_tables).
           
      close_temporary_tables, first checks if the binary log is opened
      and then proceeds to creating the DROP statements. Then, such
      statements, are written to the binary log through
      MYSQL_BIN_LOG::write(Log_event *). Inside, there is another check
      if the binary log is opened and if not an error is returned. This
      is where the faulty behavior is triggered. Given that the test
      case replays a binary log, with temp tables statements, and right
      after it issues RESET MASTER, there is a chance that is_open will
      report false (when the mysql session is closed and the temporary
      tables are written).
            
      is_open may return false, because MYSQL_BIN_LOG::reset_logs is
      not setting the correct flag (LOG_CLOSE_TO_BE_OPENED), on the
      MYSQL_LOG_BIN::log_state (instead it sets just the
      LOG_CLOSE_INDEX flag, leaving the log_state to
      LOG_CLOSED). Thence, when writing the DROP statement as part of
      the THD::cleanup, the thread could get a return value of false
      for is_open - inside MYSQL_BIN_LOG::write, ultimately reporting
      that it can't write the event to the binary log.
            
      Fix: We fix this by adding the correct flag, missing in the
      second close.
      b0094227
    • Christopher Powers's avatar
      Bug#35333, "If Federated table can't connect to remote host, can't retrieve metadata" · bc0f5b24
      Christopher Powers authored
      mysql-test/r/show_check.result:
        Fixed corrupted result file
      bc0f5b24
    • Christopher Powers's avatar
      Bug#35333, "If Federated table can't connect to remote host, can't retrieve · 4edea18f
      Christopher Powers authored
      metadata"
                  
      Improved error handling such that queries against Information_Schema.Tables won't
      fail if a federated table can't make a remote connection.
      
      mysql-test/r/merge.result:
        Updated with warnings that were previously masked.
      mysql-test/r/show_check.result:
        Updated with warnings that were previously masked.
      mysql-test/r/view.result:
        Updated with warnings that were previously masked.
      sql/sql_show.cc:
        If get_schema_tables_record() encounters an error, push a warning,
        set the TABLE COMMENT column with the error text, and clear the
        error so that the operation can continue.
      4edea18f
    • Christopher Powers's avatar
      merge · f6887139
      Christopher Powers authored
      f6887139
    • Christopher Powers's avatar
      Bug#35333, "If Federated table can't connect to remote host, can't retrieve metadata" · e199c7cd
      Christopher Powers authored
      Improved error handling such that queries against Information_Schema.Tables won't
      fail if a Federated table is unable to connect to remote host.
      
      
      
      sql/sql_show.cc:
        If Handler::Info() fails, save error text in TABLE COMMENTS column, clear error.
      e199c7cd
  9. 29 Nov, 2010 3 commits
  10. 28 Nov, 2010 1 commit
    • unknown's avatar
      BUG#54903 BINLOG statement toggles session variables · f225470b
      unknown authored
      When using BINLOG statement to execute rows log events, session variables
      foreign_key_checks and unique_checks are changed temporarily.  As each rows
      log event has their own special session environment and its own
      foreign_key_checks and unique_checks can be different from current session
      which executing the BINLOG statement. But these variables are not restored
      correctly after BINLOG statement. This problem will cause that the following
      statements fail or generate unexpected data.
      
      In this patch, code is added to backup and restore these two variables.
      So BINLOG statement will not affect current session's variables again.
      
      
      mysql-test/extra/binlog_tests/binlog.test:
        Add test to verify this patch.
      mysql-test/suite/binlog/r/binlog_row_binlog.result:
        Add test to verify this patch.
      mysql-test/suite/binlog/r/binlog_stm_binlog.result:
        Add test to verify this patch.
      sql/sql_binlog.cc:
        Add code to backup and restore thd->options.
      f225470b
  11. 27 Nov, 2010 1 commit
  12. 26 Nov, 2010 6 commits
    • Georgi Kodinov's avatar
      merge · d6d0827e
      Georgi Kodinov authored
      d6d0827e
    • Alexander Barkov's avatar
      Bug#56639 Character Euro (0x88) not converted from cp1251 to utf8 · a7c09ea9
      Alexander Barkov authored
      Problem: MySQL cp1251 did not support 'U+20AC EURO SIGN'
      which was assigned a few years ago to 0x88.
      
      Fix: adding mapping: 0x88 <-> U+20AC 
      
        @ mysql-test/include/ctype_8bit.inc
        New shared file to test 8bit character sets.
      
        @ mysql-test/r/ctype_cp1251.result
        @ mysql-test/t/ctype_cp1251.test
        Adding tests
      
        @ sql/share/charsets/cp1251.xml
        Adding mapping
      
        @ strings/ctype-extra.c
        Regenerating ctype-extra.c using strings/conf_to_src
        according to new cp1251.xml
      a7c09ea9
    • Nirbhay Choubey's avatar
      Bug #54899 : --one-database option cannot handle DROP/CREATE DATABASE commands · e1b773cb
      Nirbhay Choubey authored
      After dropping and recreating the database specified along with --one-database
      option at command line, mysql client keeps filtering the statements even after
      the execution of a 'USE' command on the same database.
      
      --one-database option enables the filtering of statements when the current
      database is not the one specified at the command line. However, when the same
      database is dropped and recreated the variable (current_db) that holds the
      inital database name gets altered. This bug exploits the fact that current_db
      initially gets set to null value (0) when a 'use db_name' follows the recreation
      of same database db_name (speficied at the command line) and hence skip_updates
      gets set to 1, which inturn triggers the further filtering of statements.
      
      Fixed by making get_current_db() a no-op function when one_database is set,
      and hence, under that condition current_db will not get altered.
      Note, however the value of current_db can change when we execute 'connect'
      command with a differnet database to reconnect to the server, in which case,
      the behavior of --one-database will be formulated using this new database.
      
      
      client/mysql.cc:
        Bug #54899 : --one-database option cannot handle DROP/CREATE DATABASE commands
        
        Added an if statement at the beginnning of get_current_db() , which makes it
        a no-op function if one-database option is specified, and hence current_db
        remains unchanged.
        
        Changed the help message for one-database option to a more appropriate message
        as specified in mysql documentation.
      mysql-test/r/mysql.result:
        Added a test case for bug#54899 and some more test cases to
        check other one-database option related behaviors.
      mysql-test/t/mysql.test:
        Added a test case for bug#54899 and some more test cases to
        check other one-database option related behaviors.
      e1b773cb
    • Bjorn Munch's avatar
      Bug #58515 Tests: use use exec echo, not write_file to write mysqld.1.expect · 067710eb
      Bjorn Munch authored
      Fixed as suggested in the .inc file and two tests
      Could not reproduce problem, but tested tests on Windows
      067710eb
    • Georgi Kodinov's avatar
      merge · db8bd7be
      Georgi Kodinov authored
      db8bd7be
    • Georgi Kodinov's avatar
      bumped up the version string. · b7e69aef
      Georgi Kodinov authored
      b7e69aef
  13. 25 Nov, 2010 3 commits
    • Bjorn Munch's avatar
      Bug #58482 mtr doesn't use suite names from individually specified test cases · f6c89f46
      Bjorn Munch authored
      It does work in general, the problem here was that the test name
      'alter_table' matches 'main.alter_table-big' which has already been found.
      Fixed by matching more explicitly (with/without suite name)
      f6c89f46
    • Tatiana Azundris Nurnberg's avatar
      merge · 01e0be66
      Tatiana Azundris Nurnberg authored
      01e0be66
    • Tatiana A. Nurnberg's avatar
      Assorted post-merge fixes, clean-up, integration, compat with 5.6. · 7336ac45
      Tatiana A. Nurnberg authored
      43233/55794.
      
      mysql-test/r/change_user.result:
        Don't use -1 integer wrap around. It used to work, but now we do what's
        actually in the documentation. In tests, we now use DEFAULT or the
        numeral equivalent (as we do in the 5.6 tests).
      mysql-test/r/key_cache.result:
        Can't drop default key case is an error now, not a warning, for compatibility
        with 5.6.
      mysql-test/r/variables.result:
        Can't drop default key case is an error now, not a warning, for compatibility
        with 5.6.
      mysql-test/t/change_user.test:
        Don't use -1 integer wrap around. It used to work, but now we do what's
        actually in the documentation. In tests, we now use DEFAULT or the
        numeral equivalent (as we do in the 5.6 tests).
      mysql-test/t/key_cache.test:
        Can't drop default key case is an error now, not a warning, for compatibility
        with 5.6.
      mysql-test/t/variables.test:
        Can't drop default key case is an error now, not a warning, for compatibility
        with 5.6.
      sql/mysqld.cc:
        0 is a legal (albeit magic) value: "drop key cache."
      sql/set_var.cc:
        bound_unsigned() can go now, it was just a kludge until things are done
        The Right Way, which they are now.
        
        Can't drop default key case is an error now, not a warning, for compatibility
        with 5.6.
      tests/mysql_client_test.c:
        Don't use -1 integer wrap around. It used to work, but now we do what's
        actually in the documentation. In tests, we now use DEFAULT or the
        numeral equivalent (as we do in the 5.6 tests).
      7336ac45
  14. 24 Nov, 2010 6 commits
  15. 23 Nov, 2010 2 commits
    • Bjorn Munch's avatar
      Bug #43418 MTR2: does not notice a memory leak occuring at shutdown of mysqld w/ --valgrind · b768d7fd
      Bjorn Munch authored
      Follow-up discussed with Reporter:
      Avoid hard shutdown after test failure, if caused by server log warning
        AND we are running valgrind
      More general pick-up of valgrind summaries, order may apparently vary
      Do exit(1) if we did find valgrind summary warnings
      b768d7fd
    • Sergey Glukhov's avatar
      Bug#56862 Execution of a query that uses index merge returns a wrong result · cf0cc723
      Sergey Glukhov authored
      In case of low memory sort buffer QUICK_INDEX_MERGE_SELECT creates
      temporary file where is stores row ids which meet QUICK_SELECT ranges
      except of clustered pk range, clustered range is processed separately.
      In init_read_record we check if temporary file is used and choose
      appropriate record access method. It does not take into account that
      temporary file contains partial result in case of QUICK_INDEX_MERGE_SELECT
      with clustered pk range.
      The fix is always to use rr_quick if QUICK_INDEX_MERGE_SELECT
      with clustered pk range is used.
      
      
      mysql-test/suite/innodb/r/innodb_mysql.result:
        test case
      mysql-test/suite/innodb/t/innodb_mysql.test:
        test case
      mysql-test/suite/innodb_plugin/r/innodb_mysql.result:
        test case
      mysql-test/suite/innodb_plugin/t/innodb_mysql.test:
        test case
      sql/opt_range.h:
        added new method
      sql/records.cc:
        The fix is always to use rr_quick if QUICK_INDEX_MERGE_SELECT
        with clustered pk range is used.
      cf0cc723