1. 01 Dec, 2010 3 commits
    • Marc Alff's avatar
      Bug#56618 Thread_ID is not assigned in ascending sequence (after disconnect) · ea35bf7a
      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.
      ea35bf7a
    • Nirbhay Choubey's avatar
      Merging from mysql-5.1-bugteam · 45e17739
      Nirbhay Choubey authored
      45e17739
    • 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
  2. 30 Nov, 2010 14 commits
    • Davi Arnaut's avatar
      2f0c4841
    • Davi Arnaut's avatar
      Bug#56760: my_atomics failures on osx10.5-x86-64bit · cfe8acb1
      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.
      cfe8acb1
    • Davi Arnaut's avatar
      Workaround a GCC warning about a pointer being cast to a larger · cd504e49
      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.
      cd504e49
    • Davi Arnaut's avatar
      e1e81ceb
    • Luis Soares's avatar
    • Luis Soares's avatar
      2bdeabe7
    • Christopher Powers's avatar
      Null-merge from mysql-5.1-bugteam · f4807a3c
      Christopher Powers authored
      f4807a3c
    • Christopher Powers's avatar
      Null-merge from mysql-5.0-bugteam · e05bfa68
      Christopher Powers authored
      e05bfa68
    • Christopher Powers's avatar
      Bug#35333, "If Federated table can't connect to remote host, can't retrieve · 8f3d884d
      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.
      8f3d884d
    • 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
  3. 29 Nov, 2010 5 commits
    • Georgi Kodinov's avatar
      merge · 7009fd0e
      Georgi Kodinov authored
      7009fd0e
    • Georgi Kodinov's avatar
      null merge · c5276a75
      Georgi Kodinov authored
      c5276a75
    • Georgi Kodinov's avatar
      Fixed bteam issue #37235: 5.0 trees now will work correctly in pb2 and · 2551fff8
      Georgi Kodinov authored
      will not display "indicated result file not found" due to wrongly named
      var directory.
      2551fff8
    • Georgi Kodinov's avatar
      6bef32a7
    • unknown's avatar
      Bug #57666 Unclear warning with broken text in error log on INSERT DELAYED · cd64b23f
      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.
      cd64b23f
  4. 28 Nov, 2010 2 commits
    • unknown's avatar
      Manual merge · d08be72f
      unknown authored
      d08be72f
    • 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
  5. 27 Nov, 2010 4 commits
  6. 26 Nov, 2010 12 commits
    • 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
    • Georgi Kodinov's avatar
      merge · a94f829c
      Georgi Kodinov authored
      a94f829c
    • Georgi Kodinov's avatar
      merge · edf1641c
      Georgi Kodinov authored
      edf1641c
    • Georgi Kodinov's avatar
      merge · d6d0827e
      Georgi Kodinov authored
      d6d0827e
    • Georgi Kodinov's avatar
      merge · 6fe1b33f
      Georgi Kodinov authored
      6fe1b33f
    • Alexander Barkov's avatar
      Merging from mysql-5.1-bugteam · f8269706
      Alexander Barkov authored
      f8269706
    • 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
      upmerge 58515 · a6bd3ba9
      Bjorn Munch authored
      a6bd3ba9
    • 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
    • Alexander Barkov's avatar
      Bug#57737 Character sets: search fails with like, contraction, index · e3dee8a7
      Alexander Barkov authored
      Problem: LIKE over an indexed column optimized away good results,
      because my_like_range_utf32/utf16 returned wrong ranges for contractions.
      Contraction related code was missing in my_like_range_utf32/utf16,
      but did exist in my_like_range_ucs2/utf8.
      It was forgotten in utf32/utf16 versions (during mysql-6.0 push/revert mess).
      
      Fix:
      The patch removes individual functions my_like_range_ucs2,
      my_like_range_utf16, my_like_range_utf32 and introduces a single function
      my_like_range_generic() instead. The new function handles contractions
      correctly. It can handle any character set with cs->min_sort_char and
      cs->max_sort_char represented in Unicode code points.
      
      added:
        @ mysql-test/include/ctype_czech.inc
        @ mysql-test/include/ctype_like_ignorable.inc
        @ mysql-test/r/ctype_like_range.result
        @ mysql-test/t/ctype_like_range.test
        Adding tests
      
      
      modified:
      
        @ include/m_ctype.h
        - Adding helper functions for contractions.
        - Prototypes: removing ucs2,utf16,utf32 functions, adding generic function.
        @ mysql-test/r/ctype_uca.result
        @ mysql-test/r/ctype_utf16_uca.result
        @ mysql-test/r/ctype_utf32_uca.result
        @ mysql-test/t/ctype_uca.test
        @ mysql-test/t/ctype_utf16_uca.test
        @ mysql-test/t/ctype_utf32_uca.test
        - Adding tests.
      
        @ strings/ctype-mb.c
        - Pad function did not put the last character.
        - Implementing my_like_range_generic() - an universal replacement
          for three separate functions
          my_like_range_ucs2(), my_like_range_utf16() and my_like_range_utf32(),
          with correct contraction handling.
      
        @ strings/ctype-ucs2.c
        - my_fill_mb2 did not put the high byte, as previously
          it was used to put only characters in ASCII range.
          Now it puts high byte as well
          (needed to pupulate cs->max_sort_char correctly).
        - Adding DBUG_ASSERT()
        - Removing character set specific functions:
          my_like_range_ucs2(), my_like_range_utf16() and my_like_range_utf32().
        - Using my_like_range_generic() instead of the old functions.
      
        @ strings/ctype-uca.c
        - Using generic function instead of the old character set specific ones.
      
        @ sql/item_create.cc
        @ sql/item_strfunc.cc
        @ sql/item_strfunc.h
        - Adding SQL functions LIKE_RANGE_MIN and LIKE_RANGE_MAX,
          available only in debug build to make sure like_range()
          works correctly for all character sets and collations. 
      e3dee8a7