1. 01 Dec, 2010 14 commits
    • Mats Kindahl's avatar
      d2bebbc3
    • Mats Kindahl's avatar
      214abbc9
    • Marc Alff's avatar
      Local merge · 0f634686
      Marc Alff authored
      0f634686
    • Marc Alff's avatar
      Local merge · e7631760
      Marc Alff authored
      e7631760
    • Marc Alff's avatar
      Local merge · c58d8d37
      Marc Alff authored
      c58d8d37
    • Marc Alff's avatar
      Local merge · dd114917
      Marc Alff authored
      dd114917
    • Mats Kindahl's avatar
      BUG#58246: INSTALL PLUGIN not secure & crashable · 43c3e4ab
      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().
      43c3e4ab
    • Mikael Ronstrom's avatar
    • Marc Alff's avatar
      Bug#53696 Performance schema engine violates the PSEA API by calling my_error() · abc2ff00
      Marc Alff authored
      This is a code cleanup.
      
      The implementation of a storage engine (subclasses of handler) is not supposed
      to call my_error() directly inside the engine implementation, 
      but only return error codes, and report errors later at the demand
      of the sql layer only (if needed), using handler::print_error().
      
      This fix removes misplaced calls to my_error(),
      and provide an implementation of print_error() instead.
      
      Given that the sql layer implementation of create table, ha_create_table(),
      does not use print_error() but returns ER_CANT_CREATE_TABLE directly,
      the return code for create table statements using the performance schema
      has changed to ER_CANT_CREATE_TABLE.
      
      Adjusted the test suite accordingly.
      abc2ff00
    • Marc Alff's avatar
      Bug#56618 Thread_ID is not assigned in ascending sequence (after disconnect) · ad3e8b12
      Marc Alff authored
      Before this fix, the test thread_cache failed with spurious failures.
      
      The test used:
      -- disconnect X
      -- connect Y
      
      while assuming that connection Y would reuse connection X slot in the thread cache.
      
      For this to happen, the disconnect X operation must be given enough time to complete,
      otherwise connect Y can be executed in the server before X actually finishes.
      
      This fix uses wait conditions to make the test execution more controlled,
      and more reproductible.
      ad3e8b12
    • Marc Alff's avatar
      Bug#58512 Performance_schema.myisam_file_io fails sporadically in PB2 · ee7a0d96
      Marc Alff authored
      Before this fix, the test myisam_file_io executed:
      - (a) an update on setup_instrument to disable non myisam file io instruments
      - (b) a truncate on events_waits_history_long
      and later
      - (c) a select on events_waits_history_long
      
      Surprisingly, events that were supposed to be disabled in (a) and removed in (b)
      still were found in (c).
      
      This happened for events such as 
        wait/io/file/innodb/innodb_data_file fil0fil.c: sync  
      because the sync was started before (a) and completed after (b),
      and as a consequence was added in the performance schema history, as expected.
      
      Presence of these records in the history made the test fail. 
      
      This fix makes the test script more robust to account for extra spill waits records in (c).
      ee7a0d96
    • Marc Alff's avatar
      Bug#58621 perfschema.dml_ews_by_thread_by_event_name test failure · c1f9a9d9
      Marc Alff authored
      This fix affects the test suite only.
      
      Before this fix, performance schema tests dml_*.test could
      fail with spurious failure, depending on the table content.
      
      This fix simplifies the SELECT tests in the dml_*.test scripts,
      to only verify that the SELECT operation passed the security checks
      and succeeded, which was the original intent of the test.
      
      Usage of 
        --replace_column 1 # 2 # 3 # 4 # ...
      to discard the test output was replaced by a simpler and more maintainable 
        --disable_result_log
      which also work for empty tables.
      c1f9a9d9
    • Nirbhay Choubey's avatar
      Merging from mysql-5.1-bugteam · 59f56444
      Nirbhay Choubey authored
      59f56444
    • Nirbhay Choubey's avatar
      Additional fix for bug#54899 · 82802ef0
      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.
      82802ef0
  2. 30 Nov, 2010 14 commits
    • Davi Arnaut's avatar
      41049c85
    • Davi Arnaut's avatar
      Bug#56760: my_atomics failures on osx10.5-x86-64bit · 4e3ec118
      Davi Arnaut authored
      The problem was due to a misuse of GCC asm constraints used to
      implement a atomic load. On x86_64, the load was implemented
      as a cmpxchg which implicitly uses the eax register as a
      source and destination operand, yet the dummy value used for
      comparison wasn't being properly loaded into eax (and other
      problems).
      
      The core problem is that cmpxchg is unnecessary as a load
      on x86_64 as there are other simpler instructions such
      as xadd. Even though, such instructions are only used to
      have a memory barrier as load and stores are atomic by
      definition. Hence, the solution is to explicitly issue the
      required CPU and compiler barriers.
      
      include/atomic/x86-gcc.h:
        Issue a synchronizing instruction before loading the value.
        Afterwards, issue a compiler barrier to prevent reordering.
      4e3ec118
    • Davi Arnaut's avatar
      Workaround a GCC warning about a pointer being cast to a larger · 934e5295
      Davi Arnaut authored
      integral type. Use intptr which is designed to hold pointer values
      and pass it to off_t.
      
      mysys/stacktrace.c:
        Add a compile time assert to ensure that off_t is large enough
        to hold the pointer value.
      934e5295
    • Davi Arnaut's avatar
      d1aa0ae8
    • Luis Soares's avatar
    • Luis Soares's avatar
      cd8a9c78
    • Christopher Powers's avatar
      Null-merge from mysql-5.1-bugteam · a7ea019b
      Christopher Powers authored
      a7ea019b
    • Christopher Powers's avatar
      Null-merge from mysql-5.0-bugteam · 1ced4122
      Christopher Powers authored
      1ced4122
    • Christopher Powers's avatar
      Bug#35333, "If Federated table can't connect to remote host, can't retrieve · 331e1030
      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/lock_multi.result:
        Updated with warnings that were previously masked.
      mysql-test/r/mdl_sync.result:
        Updated with warnings that were previously masked.
      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.
      mysql-test/suite/federated/federated_bug_35333.result:
        New test results for bug#35333
      mysql-test/suite/federated/federated_bug_35333.test:
        New test or bug#35333
      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.
      331e1030
    • Luis Soares's avatar
      BUG#57288: binlog_tmp_table fails sporadically: "Failed to write · 594787cf
      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.
      594787cf
    • Christopher Powers's avatar
      Bug#35333, "If Federated table can't connect to remote host, can't retrieve metadata" · f8ee5c7b
      Christopher Powers authored
      mysql-test/r/show_check.result:
        Fixed corrupted result file
      f8ee5c7b
    • Christopher Powers's avatar
      Bug#35333, "If Federated table can't connect to remote host, can't retrieve · 50561337
      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.
      50561337
    • Christopher Powers's avatar
      merge · 698e97e5
      Christopher Powers authored
      698e97e5
    • Christopher Powers's avatar
      Bug#35333, "If Federated table can't connect to remote host, can't retrieve metadata" · 4d87c1d9
      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.
      4d87c1d9
  3. 29 Nov, 2010 5 commits
    • Georgi Kodinov's avatar
      merge · c78e497b
      Georgi Kodinov authored
      c78e497b
    • Georgi Kodinov's avatar
      null merge · 3cc33221
      Georgi Kodinov authored
      3cc33221
    • Georgi Kodinov's avatar
      Fixed bteam issue #37235: 5.0 trees now will work correctly in pb2 and · 6ce8f143
      Georgi Kodinov authored
      will not display "indicated result file not found" due to wrongly named
      var directory.
      6ce8f143
    • Georgi Kodinov's avatar
      9790ac1f
    • unknown's avatar
      Bug #57666 Unclear warning with broken text in error log on INSERT DELAYED · 8a7d266d
      unknown authored
      It is not necessary to support INSERT DELAYED for a single value insert,
      while we do not support that for multi-values insert when binlog is
      enabled in SBR.
      
      The lock_type is upgrade to TL_WRITE from TL_WRITE_DELAYED for
      INSERT DELAYED for single value insert as multi-values insert
      did when binlog is enabled. Then it's safe. And binlog it as
      INSERT without DELAYED.
      
      mysql-test/extra/binlog_tests/binlog_insert_delayed.test:
        Added test case for bug#57666.
      mysql-test/suite/binlog/r/binlog_row_binlog.result:
        Updated for bug#57666
      mysql-test/suite/binlog/r/binlog_statement_insert_delayed.result:
        Updated for bug#57666
      mysql-test/suite/binlog/r/binlog_stm_binlog.result:
        Updated for bug#57666
      mysql-test/suite/rpl/r/rpl_stm_insert_delayed.result:
        Updated for bug#57666
      sql/sql_insert.cc:
        Updated code for the following things:
        1. Upgrade the lock_type to TL_WRITE from TL_WRITE_DELAYED
        for INSERT DELAYED for single value insert as multi-values
        insert did when binlog is enabled.
        2. Clear code to not binlog INSERT DELAYED STMT in SBR.
        3. Get rid of privilege check for log_on.
      8a7d266d
  4. 28 Nov, 2010 2 commits
    • unknown's avatar
      Manual merge · aef037d3
      unknown authored
      aef037d3
    • unknown's avatar
      BUG#54903 BINLOG statement toggles session variables · a9398ce0
      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.
      a9398ce0
  5. 27 Nov, 2010 4 commits
  6. 26 Nov, 2010 1 commit
    • Davi Arnaut's avatar
      Bug#51817: incorrect assumption: thd->query at 0x2ab2a8360360 is an invalid pointer · 90b8410d
      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.
      90b8410d