1. 02 Jun, 2010 4 commits
    • Alexander Barkov's avatar
      Bug#52520 Difference in tinytext utf column metadata · eed26e92
      Alexander Barkov authored
            Problems:
            - regression (compating to version 5.1) in metadata for BLOB types
            - inconsistency between length metadata in server and embedded for BLOB types
            - wrong max_length calculation in items derived from BLOB columns
           @ libmysqld/lib_sql.cc
              Calculating length metadata in embedded similary to server version,
              using new function char_to_byte_length_safe().
           @ mysql-test/r/ctype_utf16.result
              Adding tests
           @ mysql-test/r/ctype_utf32.result
              Adding tests
           @ mysql-test/r/ctype_utf8.result
              Adding tests
           @ mysql-test/r/ctype_utf8mb4.result
              Adding tests
           @ mysql-test/t/ctype_utf16.test
              Adding tests
           @ mysql-test/t/ctype_utf32.test
              Adding tests
           @ mysql-test/t/ctype_utf8.test
              Adding tests
           @ mysql-test/t/ctype_utf8mb4.test
              Adding tests
           @ sql/field.cc
              Overriding char_length() for Field_blob:
              unlike in generic Item::char_length() we don't
              divide to mbmaxlen for BLOBs.
           @ sql/field.h
              - Making Field::char_length() virtual
              - Adding prototype for Field_blob::char_length()
           @ sql/item.h
              - Adding new helper function char_to_byte_length_safe()
              - Using new function
           @ sql/protocol.cc
              Using new function char_to_byte_length_safe().
      
          modified:
            libmysqld/lib_sql.cc
            mysql-test/r/ctype_utf16.result
            mysql-test/r/ctype_utf32.result
            mysql-test/r/ctype_utf8.result
            mysql-test/r/ctype_utf8mb4.result
            mysql-test/t/ctype_utf16.test
            mysql-test/t/ctype_utf32.test
            mysql-test/t/ctype_utf8.test
            mysql-test/t/ctype_utf8mb4.test
            sql/field.cc
            sql/field.h
            sql/item.h
            sql/protocol.cc
      eed26e92
    • Jonathan Perkin's avatar
      Revert Oracle Enterprise Linux changes. · e0111753
      Jonathan Perkin authored
      e0111753
    • Magnus Blåudd's avatar
      Merge trunk-bug53983 -> trunk-bugfixing · 1d451c9f
      Magnus Blåudd authored
      1d451c9f
    • Magnus Blåudd's avatar
      Bug#53983 Placeholder for MASTER_BIND in master.info · 36f4d92c
      Magnus Blåudd authored
       - Reserve line 17 in master.info for master_bind which has been
         added in MySQL Cluster 6.3
       - move the line for "list of server id for ignorable servers" to line 18
      36f4d92c
  2. 01 Jun, 2010 18 commits
    • Alfranio Correia's avatar
      BUG#50479 DDL stmt on row-only/stmt-only tables generate spurious binlog_format · 2fb387b0
      Alfranio Correia authored
      errors
                  
      In the fix of BUG#39934 in 5.1-rep+3, errors are generated when
      binlog_format=row and a statement modifies a table restricted to
      statement-logging (ER_BINLOG_ROW_MODE_AND_STMT_ENGINE); or if
      binlog_format=statement and a statement modifies a table restricted to
      row-logging (ER_BINLOG_STMT_MODE_AND_ROW_ENGINE).
                  
      However, some DDL statements that lock tables (e.g. ALTER TABLE,
      CREATE INDEX and CREATE TRIGGER) were causing spurious errors,
      although no row might be inserted into the binary log.
                  
      To fix the problem, we tagged statements that may generate
      rows into the binary log and thence the warning messages are
      only printed out when the appropriate conditions hold and rows
      might be changed.
      
      sql/log_event.cc:
        Reorganized the Query_log_event's constructor based on the
        CF_CAN_GENERATE_ROW_EVENTS flag and as such any statement
        that has the associated flag should go through a cache
        before being written to the binary log.
      sql/share/errmsg-utf8.txt:
        Improved the error message ER_BINLOG_UNSAFE_MIXED_STATEMENT according to Paul's
        suggestion.
      sql/sql_class.cc:
        Created a hook to be used by innodb that checks if a statement
        may write rows to the binary log. In other words, if it has
        the CF_CAN_GENERATE_ROW_EVENTS flag associated.
      sql/sql_class.h:
        Defined the CF_CAN_GENERATE_ROW_EVENTS flag.
      sql/sql_parse.cc:
        Updated the sql_command_flags and added a function to check the 
        CF_CAN_GENERATE_ROW_EVENTS.
      sql/sql_parse.h:
        Added a function to check the CF_CAN_GENERATE_ROW_EVENTS.
      storage/innobase/handler/ha_innodb.cc:
        Added a call to the hook thd_generates_rows().
      storage/innobase/handler/ha_innodb.h:
        Defined an external reference to the hook thd_generates_rows().
      2fb387b0
    • Alfranio Correia's avatar
    • Alfranio Correia's avatar
      Post-merge fix for BUG#53421. · 29c7acd6
      Alfranio Correia authored
      29c7acd6
    • Alfranio Correia's avatar
    • Alfranio Correia's avatar
      BUG#53421 Part of transaction not written in binlog after deadlock, replication · ebde6f6d
      Alfranio Correia authored
      breaks
            
      When a "CREATE TEMPORARY TABLE SELECT * FROM" was executed the OPTION_KEEP_LOG was
      not set into the thd->variables.option_bits. For that reason, if the transaction
      had updated only transactional engines and was rolled back at the end (.e.g due to
      a deadlock) the changes were not written to the binary log, including the creation
      of the temporary table.
            
      To fix the problem, we have set the OPTION_KEEP_LOG into the
      thd->variables.option_bits when a "CREATE TEMPORARY TABLE
      SELECT * FROM" is executed.
      ebde6f6d
    • Alfranio Correia's avatar
    • Alexander Nozdrin's avatar
      Auto-merge from mysql-trunk-innodb. · ff6cf4bb
      Alexander Nozdrin authored
      ff6cf4bb
    • Alexander Nozdrin's avatar
      Auto-merge from mysql-trunk-bugfixing. · bf158eed
      Alexander Nozdrin authored
      Due to a BZR bug, that merge was done by the following command:
      bzr merge -r 'revid:tor.didriksen@sun.com-20100527074248-6qtv0p1ugy6o1hjo..' <mysql-trunk-bugfixing path>
      bf158eed
    • Marko Mäkelä's avatar
      Merge a change from mysql-5.1-innodb: · ab6a5b47
      Marko Mäkelä authored
        ------------------------------------------------------------
        revno: 3490
        revision-id: marko.makela@oracle.com-20100601120751-1uq7bbta5n7ts0qr
        parent: marko.makela@oracle.com-20100601120521-q48hk05ne4j1s2o0
        committer: Marko Mäkelä <marko.makela@oracle.com>
        branch nick: 5.1-innodb
        timestamp: Tue 2010-06-01 15:07:51 +0300
        message:
          Minor cleanup.
      
          lock_rec_unlock(): Cache first_lock and rewrite while() loops as for().
      
          btr_cur_optimistic_update(): Use common error handling return.
      
          row_create_prebuilt(): Add Valgrind instrumentation.
      ab6a5b47
    • Marko Mäkelä's avatar
      Merge a change from mysql-5.1-innodb: · 0902cd6b
      Marko Mäkelä authored
        ------------------------------------------------------------
        revno: 3488
        revision-id: marko.makela@oracle.com-20100601103738-upm8awahesmeh9dr
        parent: vasil.dimov@oracle.com-20100531163540-9fu3prbn2asqwdi5
        committer: Marko Mäkelä <marko.makela@oracle.com>
        branch nick: 5.1-innodb
        timestamp: Tue 2010-06-01 13:37:38 +0300
        message:
          Bug#53812: assert row/row0umod.c line 660 in txn rollback after crash recovery
          row_undo_mod_upd_exist_sec(): Tolerate a failure to build the index entry
          for a DYNAMIC or COMPRESSED table during crash recovery.
      0902cd6b
    • Marko Mäkelä's avatar
      Merge from mysql-5.1-innodb: · c0dd8421
      Marko Mäkelä authored
        ------------------------------------------------------------
        revno: 3478.1.3
        revision-id: marko.makela@oracle.com-20100525123748-pmpehbg29oyhc1ns
        parent: marko.makela@oracle.com-20100524114349-5kaw52sz0yh4szkb
        committer: Marko Mäkelä <marko.makela@oracle.com>
        branch nick: 5.1-innodb
        timestamp: Tue 2010-05-25 15:37:48 +0300
        message:
          Suppress bogus Valgrind warnings about buf_buddy_relocate()
          accessing uninitialized memory in Valgrind-instrumented builds.
      c0dd8421
    • Marko Mäkelä's avatar
      Merge from mysql-5.1-innodb: · dfe03ada
      Marko Mäkelä authored
        ------------------------------------------------------------
        revno: 3478.1.4
        revision-id: marko.makela@oracle.com-20100525125352-hgafpmqhrrj7pv5i
        parent: marko.makela@oracle.com-20100525123748-pmpehbg29oyhc1ns
        committer: Marko Mäkelä <marko.makela@oracle.com>
        branch nick: 5.1-innodb
        timestamp: Tue 2010-05-25 15:53:52 +0300
        message:
          row_search_for_mysql(): Add assertions to track down Bug #53627.
      dfe03ada
    • Jonathan Perkin's avatar
      Merge · 5cf1d385
      Jonathan Perkin authored
      5cf1d385
    • Jonathan Perkin's avatar
      Add SELinux checks from distribution-specific spec file, missed in · 99b5ca1f
      Jonathan Perkin authored
      previous.
      
      Convert some shell bits to standard 2-space indent, 80 columns, etc.
      99b5ca1f
    • He Zhenxing's avatar
      Auto merge from trunk · bee85d74
      He Zhenxing authored
      bee85d74
    • He Zhenxing's avatar
      BUG#52748 Semi-Sync ACK packet isn't check for length · 84889d03
      He Zhenxing authored
      Check the length and use strncpy to make the code safer.
      84889d03
    • He Zhenxing's avatar
      BUG#52748 Semi-Sync ACK packet isn't check for length · 9547a63d
      He Zhenxing authored
      Check the length and use strncpy to make the code safer.
      
      plugin/semisync/semisync_master.cc:
        replace strcpy with strncpy to make the code safer
      9547a63d
    • Alexander Nozdrin's avatar
      9c960ecf
  3. 31 May, 2010 8 commits
    • Vasil Dimov's avatar
      Fix Bug #53947 InnoDB: Assertion failure in thread 4224 in file .\sync\sync0sync.c line 324 · 567a1246
      Vasil Dimov authored
      Destroy the rw-lock object before freeing the memory it is occupying.
      If we do not do this, then the mutex that is contained in the rw-lock
      object btr_search_latch_temp->mutex gets "freed" and subsequently
      mutex_free() from sync_close() hits a mutex whose memory has been
      freed and crashes.
      
      Approved by:	Heikki (via IRC)
      Discussed with:	Calvin
      567a1246
    • Alexander Nozdrin's avatar
      Backport of · fe5bcb47
      Alexander Nozdrin authored
        - revid:sp1r-svoj@mysql.com/june.mysql.com-20080324111246-00461
        - revid:sp1r-svoj@mysql.com/june.mysql.com-20080414125521-40866
      
        BUG#35274 - merge table doesn't need any base tables, gives
                    error 124 when key accessed
      
        SELECT queries that use index against a merge table with empty
        underlying tables list may return with error "Got error 124 from
        storage engine".
      
        The problem was that wrong error being returned.
      
      mysql-test/r/merge.result:
        Backport of
          - revid:sp1r-svoj@mysql.com/june.mysql.com-20080324111246-00461
          - revid:sp1r-svoj@mysql.com/june.mysql.com-20080414125521-40866
        
          A test case for BUG#35274.
        
          Modified a test case according to fix for BUG#35274. Key based
          reads are now allowed for merge tables with no underlying tables
          defined.
      mysql-test/t/merge.test:
        Backport of
          - revid:sp1r-svoj@mysql.com/june.mysql.com-20080324111246-00461
          - revid:sp1r-svoj@mysql.com/june.mysql.com-20080414125521-40866
        
          A test case for BUG#35274.
        
          Modified a test case according to fix for BUG#35274. Key based
          reads are now allowed for merge tables with no underlying tables
          defined.
      storage/myisammrg/myrg_queue.c:
        Backport of
          - revid:sp1r-svoj@mysql.com/june.mysql.com-20080324111246-00461
          - revid:sp1r-svoj@mysql.com/june.mysql.com-20080414125521-40866
        
          Return "end of file" error instead of "wrong index" error when
          we got a merge table with empty underlying tables list.
        
          In 5.1 we cannot rely on info->open_tables value when checking
          if a merge table has no underlying tables defined.
          Use info->tables instead.
      fe5bcb47
    • Alexey Botchkov's avatar
      test added for the bug #45052 · 46bc8970
      Alexey Botchkov authored
      46bc8970
    • Gleb Shchepa's avatar
      Bug #38745: MySQL 5.1 optimizer uses filesort for ORDER BY · fefbd756
      Gleb Shchepa authored
                  when it should use index
      
      Sometimes the LEFT/RIGHT JOIN with an empty table caused an
      unnecessary filesort.
      
      Sample query, where t1.i1 is indexed and t3 is empty:
      
        SELECT t1.*, t2.* FROM t1 JOIN t2 ON t1.i1 = t2.i2
                             LEFT JOIN t3 ON t2.i2 = t3.i3
          ORDER BY t1.i1 LIMIT 5;
      
      The server erroneously used an item of empty outer-joined
      table as a common constant of a Item_equal (multi-equivalence
      expression).
      By the fix for the bug 16590 the constant status of such
      an item has been propagated to st_table::const_key_parts
      map bits related to other Item_equal argument-related
      key parts (those are obviously not constant in our case).
      As far as test_if_skip_sort_order function skips constant
      prefixes of testing keys, this caused an ignorance of
      available indices, since some prefixes were marked as
      constant by mistake.
      
      
      mysql-test/r/order_by.result:
        Test case for bug #38745.
      mysql-test/t/order_by.test:
        Test case for bug #38745.
      sql/item.h:
        Bug #38745: MySQL 5.1 optimizer uses filesort for ORDER BY
                    when it should use index
        
        Item::is_outer_field() has been added and overloaded for
        Item_field and Item_ref classes.
      sql/item_cmpfunc.cc:
        Bug #38745: MySQL 5.1 optimizer uses filesort for ORDER BY
                    when it should use index
        
        Item_equal::update_const() and Item_equal::update_used_tables()
        have been updated to not take into account the constantness
        of outer-joined table items.
      fefbd756
    • Davi Arnaut's avatar
      77e744f8
    • Tor Didriksen's avatar
      Bug #49829 Many "hides virtual function" warnings with SunStudio · 8231f082
      Tor Didriksen authored
      Backport from mysql-pe (of those parts which have not been upmerged from 5.1)
      
      
      
      sql/field.cc:
        Local scope variable or method argument same as class attribute.
      sql/item.cc:
        Rename auto variable to avoid name clash.
      sql/item.h:
        Item_ref::basic_const_item had wrong signature (missing const)
        and was thus never called.
      sql/partition_info.cc:
        Rename, to avoid name clashes.
      sql/sql_load.cc:
        Rename, to avoid name clashes.
      8231f082
    • Vasil Dimov's avatar
      Fix coding style · f31af312
      Vasil Dimov authored
      f31af312
    • Sergey Glukhov's avatar
      test case fix · 07f07ffe
      Sergey Glukhov authored
      07f07ffe
  4. 28 May, 2010 10 commits
    • Davi Arnaut's avatar
      Backport: remove dead code. · a1b8e4dc
      Davi Arnaut authored
      Reorganize function to reflect that it does not actually uses curses
      and that there is no curses variant.
      a1b8e4dc
    • Davi Arnaut's avatar
      Backport: Remove unused and ancient files, functions, and facilities. · 11648411
      Davi Arnaut authored
      client/mysql.cc:
        Remove unused functions.
      client/sql_string.cc:
        Remove unused functions.
      include/my_pthread.h:
        Remove unused prototype.
      mysys/my_pthread.c:
        Remove unused function.
      sql/lock.cc:
        Remove unused function.
      sql/lock.h:
        Remove unused and duplicated prototypes.
      sql/sql_class.h:
        Removed unused variables.
      sql/sql_const.h:
        Remove unused defines.
      sql/sql_priv.h:
        Remove unused defines.
      sql/sql_string.cc:
        Remove unused prototype.
      sql/thr_malloc.cc:
        Remove unused function.
      sql/thr_malloc.h:
        Remove unused prototype.
      storage/myisam/CMakeLists.txt:
        Remove obsolete fulltext file.
      storage/myisam/Makefile.am:
        Remove obsolete files (were already commented out).
      storage/myisam/ft_eval.c:
        Remove obsolete fulltext file.
      storage/myisam/ft_eval.h:
        Remove obsolete fulltext file.
      storage/myisam/ft_stem.c:
        Remove obsolete fulltext file.
      storage/myisam/ft_test1.c:
        Remove obsolete fulltext file.
      storage/myisam/ft_test1.h:
        Remove obsolete fulltext file.
      11648411
    • Davi Arnaut's avatar
    • Davi Arnaut's avatar
      0ef35548
    • Davi Arnaut's avatar
      Backport a old cleanup patch. · ba485814
      Davi Arnaut authored
      Formatting cleanup: removing tabs and trailing spaces
      to conform to MySQL Internals Coding Guidelines.
      ba485814
    • unknown's avatar
      Bug#52168 decimal casting catastrophes: crashes and valgrind errors on simple casts · 229cc4e1
      unknown authored
      The problem is that if a NULL is stored in an Item_cache_decimal object,
      the associated my_decimal object is not initialized.  However, it is still
      accessed when val_int() is called. The fix is to check for null_value
      within val_int(), and return without accessing the my_decimal object when
      the cached value is NULL.
      
      Bug#52122 reports the same issue for val_real(), and this patch also includes
      fixes for val_real() and val_str() and corresponding test cases from that
      bug report.  
      
      Also, NULL is returned from val_decimal() when value is null. This will
      avoid that callers access an uninitialized my_decimal object.
      
      Made similar changes to all other Item_cache classes.  Now all val_*
      methods should return a well defined value when actual value is NULL.
      
      mysql-test/r/type_decimal.result:
        Updated result file with test cases for Bug#52168 and Bug#52122.
      mysql-test/t/type_decimal.test:
        Added test cases for Bug#52168 and Bug#52122.
      sql/item.cc:
        In Item_cache_*::val_* methods, return a well defined value
        when actual value is NULL.
        
        This is especially important for Item_cache_decimal since
        otherwise one risk accessing an uninitialized my_decimal object.
      sql/item.h:
        Added method Item_cache::has_value() which returns TRUE if cache 
        object contains a non-null value.
      229cc4e1
    • Vasil Dimov's avatar
    • Jonathan Perkin's avatar
    • Jonathan Perkin's avatar
      Merge · f02c9f13
      Jonathan Perkin authored
      f02c9f13
    • Calvin Sun's avatar
      mysql-trunk-innodb: undo r3119 of disabling test cases. · 825cb9b6
      Calvin Sun authored
      r3119 does not prevent the crash even the test is disabled.
      The crash occurs during shutdown.
      825cb9b6