1. 02 Dec, 2010 1 commit
  2. 01 Dec, 2010 6 commits
    • Marko Mäkelä's avatar
      Bug#58212 Possible deadlock in change buffer in debug builds · 019cbc17
      Marko Mäkelä authored
      ibuf_page(): Renamed to ibuf_page_low(). Add the parameters file, line
      so that the latch diagnostics will be more meaningful.
      In debug builds, add the parameter ibool x_latch. When x_latch=FALSE,
      do not x-latch the page, but only buffer-fix it for reading the bit.
      In UNIV_SYNC_DEBUG, display a message if an insert buffer bitmap page
      was already latched. (The message should be displayed in those cases
      where the code would have previously failed.)
      
      ibuf_page(): A wrapper macro for ibuf_page_low(). Pass x_latch=TRUE.
      
      ibuf_bitmap_page_get_bits(): Renamed to ibuf_bitmap_page_get_bits_low().
      In UNIV_DEBUG, add the parameter latch_mode.
      Remove the parameter mtr unless UNIV_DEBUG is defined.
      
      ibuf_bitmap_page_get_bits(): A wrapper macro for
      ibuf_bitmap_page_get_bits_low(). Pass latch_type=MTR_MEMO_PAGE_X_FIX.
      
      buf_page_get_gen(): Use ibuf_page_low(x_latch=FALSE) in the debug assertion.
      This avoids the possible deadlock.
      019cbc17
    • Marko Mäkelä's avatar
      Bug#58226 Some InnoDB debug checks consume too much CPU time · ac884765
      Marko Mäkelä authored
      Do not disable InnoDB inlining when UNIV_DEBUG is defined. The
      inlining is now solely controlled by the preprocessor symbol
      UNIV_MUST_NOT_INLINE and by any compiler options.
      
      mtr_memo_contains(): Add an explicit type conversion from void*, so
      that the function can be compiled by a C++ compiler. Previously, this
      function was never seen by the C++ compiler, because it is only
      present in UNIV_DEBUG builds and InnoDB inlining used to be disabled.
      
      buf_flush_validate_skip(): A wrapper that skips most calls of
      buf_flush_validate_low(). Invoked by debug assertions in
      buf_flush_insert_into_flush_list() and buf_flush_remove().
      
      fil_validate_skip(): A wrapper that skips most calls of
      fil_validate(). Invoked by debug assertions in fil_io() and fil_io_wait().
      
      os_aio_validate_skip(): A wrapper that skips most calls of
      os_aio_validate(). Invoked by debug assertions in
      os_aio_func(), os_aio_windows_handle() and os_aio_simulated_handle.
      
      os_get_os_version(): Only include this function if __WIN__ is defined.
      
      sync_array_deadlock_step(): Slight optimizations. This function is a
      major CPU consumer in UNIV_SYNC_DEBUG builds.
      ac884765
    • Marko Mäkelä's avatar
      Fix a compilation error that was introduced in the Bug #55222 fix · ba874a7d
      Marko Mäkelä authored
      (bzr revision id kevin.lewis@oracle.com-20101130182552-hfydggaeeys3tjqx).
      ba874a7d
    • Marko Mäkelä's avatar
      2ed5c7d1
    • Marko Mäkelä's avatar
      Bug#58623: Bogus debug assertion failure in i_s_locks_row_validate() · 55a12f88
      Marko Mäkelä authored
      This bogus assertion was introduced in the fix of Bug #57802:
      Empty ASSERTION parameter passed to the HASH_SEARCH macro.
      55a12f88
    • kevin.lewis@oracle.com's avatar
      dd143b89
  3. 30 Nov, 2010 5 commits
    • kevin.lewis@oracle.com's avatar
      Bug#55222 - RB://517 - Approved by Sunny · a53845ca
      kevin.lewis@oracle.com authored
      InnoDB does not attempt to handle lower_case_table_names == 2 when looking
      up foreign table names and referenced table name.  It turned that server
      variable into a boolean and ignored the possibility of it being '2'.  
      
      The setting lower_case_table_names == 2 means that it should be stored and
      displayed in mixed case as given, but compared internally in lower case.
      Normally the server deals with this since it stores table names.  But
      InnoDB stores referential constraints for the server, so it needs to keep
      track of both lower case and given names.
      
      This solution creates two table name pointers for each foreign and referenced
      table name.  One to display the name, and one to look it up.  Both pointers
      point to the same allocated string unless this setting is 2.  So the overhead
      added is not too much.
      
      Two functions are created in dict0mem.c to populate the ..._lookup versions
      of these pointers.  Both dict_mem_foreign_table_name_lookup_set() and
      dict_mem_referenced_table_name_lookup_set() are called 5 times each.
      a53845ca
    • kevin.lewis@oracle.com's avatar
      Null Merge from mysql-5.1-innodb · a2cd4e18
      kevin.lewis@oracle.com authored
      a2cd4e18
    • kevin.lewis@oracle.com's avatar
      RB://518 approved by Jimmy Yang and Sunny bains · 234a67bb
      kevin.lewis@oracle.com authored
          
      Code cleanup after changes for Bug 56628.  The general approach for 
      InnoDB is to make a reference to each enum value whenever it is used in a
      switch statement.  In addition, no default case should be used for switch 
      statements on enum types.  This assures that if there is ever any change 
      in the enum values, the switch will need to change to reflect it since a 
      compiler warning will occur.  In this case, the enum row_type is declared 
      in handler.h and could be changed for another storage engine.  If so, a 
      warning will occur in the InnoDB build.  
      
      Other changes;
      * This patch uses 2 macros to help consolidate warning messages that
         need to occur twice in the single switch for row_format.
      * Using row_format as the variable name to distinguish it from the enum
        type.
      * Function declaration format correction.
      234a67bb
    • kevin.lewis@oracle.com's avatar
      RB://518 approved by Jimmy Yang and Sunny bains · 03d1576b
      kevin.lewis@oracle.com authored
          
      Code cleanup after changes for Bug 56628.  The general approach for 
      InnoDB is to make a reference to each enum value whenever it is used in a
      switch statement.  In addition, no default case should be used for switch 
      statements on enum types.  This assures that if there is ever any change 
      in the enum values, the switch will need to change to reflect it since a 
      compiler warning will occur.  In this case, the enum row_type is declared 
      in handler.h and could be changed for another storage engine.  If so, a 
      warning will occur in the InnoDB build.  
      
      Other changes;
      * This patch uses 2 macros to help consolidate warning messages that
         need to occur twice in the single switch for row_format.
      * Using row_format as the variable name to distinguish it from the enum
        type.
      * Function declaration format correction.
      03d1576b
    • Sunny Bains's avatar
      Fix Bug# 58459 - assert slot->in_use == FALSE while starting purge thread. · 42116cfe
      Sunny Bains authored
      Fix a race condition in srv_master_thread(). We need to acquire the kernel
      mutex before calling srv_table_reserve_slot(). Add a mutex_own() assertion
      in srv_table_reserve_slot().
      42116cfe
  4. 29 Nov, 2010 7 commits
  5. 28 Nov, 2010 2 commits
    • 's avatar
      Manual merge · 30376d28
      authored
      30376d28
    • 's avatar
      BUG#54903 BINLOG statement toggles session variables · abb201c1
      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.
      abb201c1
  6. 27 Nov, 2010 4 commits
  7. 26 Nov, 2010 15 commits
    • Georgi Kodinov's avatar
      merge · d6ad6b3d
      Georgi Kodinov authored
      d6ad6b3d
    • Georgi Kodinov's avatar
      merge · 7c0b2859
      Georgi Kodinov authored
      7c0b2859
    • Georgi Kodinov's avatar
      merge · 534ba9c9
      Georgi Kodinov authored
      534ba9c9
    • Georgi Kodinov's avatar
      merge · 96d45ed2
      Georgi Kodinov authored
      96d45ed2
    • Alexander Barkov's avatar
      Merging from mysql-5.1-bugteam · 43cd0871
      Alexander Barkov authored
      43cd0871
    • Alexander Barkov's avatar
      Bug#56639 Character Euro (0x88) not converted from cp1251 to utf8 · bd3a5831
      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
      bd3a5831
    • Nirbhay Choubey's avatar
      Bug #54899 : --one-database option cannot handle DROP/CREATE DATABASE commands · 8629024b
      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.
      8629024b
    • Bjorn Munch's avatar
      upmerge 58515 · 1be5458a
      Bjorn Munch authored
      1be5458a
    • Bjorn Munch's avatar
      Bug #58515 Tests: use use exec echo, not write_file to write mysqld.1.expect · 7c6151ff
      Bjorn Munch authored
      Fixed as suggested in the .inc file and two tests
      Could not reproduce problem, but tested tests on Windows
      7c6151ff
    • Georgi Kodinov's avatar
      merge · c5987223
      Georgi Kodinov authored
      c5987223
    • Alexander Barkov's avatar
      Bug#57737 Character sets: search fails with like, contraction, index · 93386d73
      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. 
      93386d73
    • Georgi Kodinov's avatar
      bumped up the version string. · dce374bb
      Georgi Kodinov authored
      dce374bb
    • Bjorn Munch's avatar
      upmerge 58482 · 2405f2bc
      Bjorn Munch authored
      2405f2bc
    • Bjorn Munch's avatar
      Bug #58412 mysqltest: allow quoting of strings in let and in if comparison · 20851e40
      Bjorn Munch authored
      Stripping quotes in let was a bad idea, will not fix
      Added code to strip quotes from rhs in comparisons
      20851e40
    • Vasil Dimov's avatar
      Fix the PAUSE instruction handling in InnoDB · e8cdc991
      Vasil Dimov authored
      Previously HAVE_IB_PAUSE_INSTRUCTION was never defined and thus InnoDB
      never used the PAUSE instruction on non-windows even if it was available.
      Probably the check was never migrated from autotools'
      storage/innobase/plug.in to storage/innobase/CMakeLists.txt.
      
      Since the check for PAUSE is done at top-level configure.cmake we can
      use the result from there (HAVE_PAUSE_INSTRUCTION) instead of rolling
      InnoDB's own HAVE_IB_PAUSE_INSTRUCTION (the check is identical anyway).
      e8cdc991