1. 17 Dec, 2009 3 commits
    • Martin Hansson's avatar
      Bug#47650: using group by with rollup without indexes · 16ed8699
      Martin Hansson authored
      returns incorrect results with where
      
      An outer join of a const table (outer) and a normal table
      (inner) with GROUP BY on a field from the outer table would
      optimize away GROUP BY, and thus trigger the optimization to
      do away with a temporary table if grouping was performed on
      columns from the const table, hence executing the query with
      filesort without temporary table. But this should not be
      done if there is a non-indexed access to the inner table,
      since filesort does not handle joins. It expects either ref
      access, range ditto or table scan. The join condition will
      thus not be applied.
      
      Fixed by always forcing execution with temporary table in
      the case of ROLLUP with a query involving an outer join. This
      is a slightly broader class of queries than need fixing, but
      it is hard to ascertain the position of a ROLLUP field wrt
      outer join with current query representation.
      
      mysql-test/r/join_outer.result:
        Bug#47650: Test result
      mysql-test/t/join_outer.test:
        Bug#47650: Test case
      sql/sql_select.cc:
        Bug#47650: Fix
      16ed8699
    • Ramil Kalimullin's avatar
      Auto-merge. · 37c4301a
      Ramil Kalimullin authored
      37c4301a
    • Ramil Kalimullin's avatar
      Fix for bug#49465: valgrind warnings and incorrect live checksum... · 6123407d
      Ramil Kalimullin authored
      Problem: inserting a record we don't set unused null bits in the
      record buffer if no default field values used.
      That may lead to wrong live checksum calculation.
      
      Fix: set unused null bits in the record buffer in such cases.
      
      
      mysql-test/r/myisam.result:
        Fix for bug#49465: valgrind warnings and incorrect live checksum...
          - test result.
      mysql-test/t/myisam.test:
        Fix for bug#49465: valgrind warnings and incorrect live checksum...
          - test case.
      sql/sql_insert.cc:
        Fix for bug#49465: valgrind warnings and incorrect live checksum...
          - set unused null bits to 1 in the record buffer in case we
        don't call restore_record() before a fill_record() call
        (when no default values used).
      6123407d
  2. 16 Dec, 2009 4 commits
    • Magne Mahre's avatar
      Bug#47017 rpl_timezone fails on PB-2 with mismatch error · 7a25816a
      Magne Mahre authored
      The bug is caused by a race condition between the 
      INSERT DELAYED thread and the client thread's FLUSH TABLE.  The 
      FLUSH TABLE does not guarantee (as is (wrongly) suggested in the 
      test case) that the INSERT DELAYED is ever executed.  The 
      execution of the test case will thus not be deterministic.
      
      The fix has been to do a deterministic verification that both
      threads are complete by checking the content of the table.
      7a25816a
    • Georgi Kodinov's avatar
      merge · 1a06f6e3
      Georgi Kodinov authored
      1a06f6e3
    • unknown's avatar
      Bug #46827 rpl_circular_for_4_hosts failed on PB2 · cbdb4c2a
      unknown authored
      This test case tests a circular replication of four hosts. 
      A--->B--->C--->D--->A
      The replicate is slow and needs more time to replicate all data in the circle.
      The time it spends to replicate, sometimes, is longer than the time that 
      wait_condition.inc spends to wait that all data has been replicated. This
      cause sporadical failure of this test case.
        
      This patch uses sync_slave_with_master to ensure that all data can be replicated
      successfully in the circle.
      cbdb4c2a
    • unknown's avatar
      Postfix · 769a0509
      unknown authored
      Only relative log events are showed.
      769a0509
  3. 15 Dec, 2009 8 commits
    • Georgi Kodinov's avatar
      Bug #48709: Assertion failed in sql_select.cc:11782: · 4a41e5b1
      Georgi Kodinov authored
       int join_read_key(JOIN_TAB*)
      
      The eq_ref access method TABLE_REF (accessed through 
      JOIN_TAB) to save state and to track if this is the 
      first row it finds or not.
      This state was not reset on subquery re-execution
      causing an assert.
      
      Fixed by resetting the state before the subquery 
      re-execution.
      4a41e5b1
    • Georgi Kodinov's avatar
      merge · 575bec00
      Georgi Kodinov authored
      575bec00
    • Mattias Jonsson's avatar
      merge · 1e521053
      Mattias Jonsson authored
      1e521053
    • Georgi Kodinov's avatar
      Bug #48709: Assertion failed in sql_select.cc:11782: · c94fdc7e
      Georgi Kodinov authored
       int join_read_key(JOIN_TAB*)
      
      The eq_ref access method TABLE_REF (accessed through 
      JOIN_TAB) to save state and to track if this is the 
      first row it finds or not.
      This state was not reset on subquery re-execution
      causing an assert.
      
      Fixed by resetting the state before the subquery 
      re-execution.
      c94fdc7e
    • Alexander Barkov's avatar
      Bug#49134 5.1 server segfaults with 2byte collation file · 5ccf2280
      Alexander Barkov authored
      Problem: add_collation did not check that cs->number is smaller
      than the number of elements in the array all_charsets[],
      so server could crash when loading an Index.xml file with
      a collation ID greater the number of elements 
      (for example when downgrading from 5.5).
      
      Fix: adding a condition to check that cs->number is not out of valid range.
      5ccf2280
    • Jon Olav Hauglid's avatar
      Bug #48995 abort missing DBUG_RETURN or .. in function "check_key_in_view" · ea0b3944
      Jon Olav Hauglid authored
      check_key_in_view() had one code branch which returned with "return TRUE"
      rather than "DBUG_RETURN(TRUE)". Only affected debug builds.
      
      No test case added.
      ea0b3944
    • He Zhenxing's avatar
      bug#49536 - deadlock on rotate_and_purge when using expire_logs_days · cbcd6f41
      He Zhenxing authored
      Problem is that purge_logs implementation in ndb (ndbcluster_binlog_index_purge_file)
      calls mysql_parse (with (thd->options & OPTION_BIN_LOG) === 0)) 
      but MYSQL_BIN_LOG first takes LOCK_log and then checks thd->options
      
      Solution in this patch, changes so that rotate_and_purge does not hold
      LOCK_log when calling purge_logs_before_date. I think this is safe
      as other "purge"-function(s) is called wo/ holding LOCK_log, e.g purge_master_logs
      cbcd6f41
    • unknown's avatar
      Bug #34628 LOAD DATA CONCURRENT INFILE drops CONCURRENT in binary log · 8971ed70
      unknown authored
      'LOAD DATA CONCURRENT [LOCAL] INFILE ...' statment only is binlogged as
      'LOAD DATA [LOCAL] INFILE ...' in SBR and MBR.  As a result, if replication is on, 
      queries on slaves will be blocked by the replication SQL thread.
      
      This patch write code to write 'CONCURRENT' into the log event if 'CONCURRENT' option
      is in the original statement in SBR and MBR. 
      8971ed70
  4. 14 Dec, 2009 9 commits
  5. 13 Dec, 2009 3 commits
    • unknown's avatar
      This is a patch for Bug#48500 · 34ae4a35
      unknown authored
      5.0 buffer overflow for ER_UPDATE_INFO, or truncated info message in 5.1
            
      5.0.86 has a buffer overflow/crash, and 5.1.40 has a truncated message.
            
      errmsg.txt contains this:
            
      ER_UPDATE_INFO
      rum "Linii identificate (matched): %ld  Schimbate: %ld  Atentionari 
      (warnings): %ld"
      When that is sprintf'd into a buffer of STRING_BUFFER_USUAL_SIZE size,
      a buffer overflow can happen.
            
      The solution to this is to use MYSQL_ERRMSG_SIZE for the buffer size, 
      instead of STRING_BUFFER_USUAL_SIZE. This will allow longer strings. 
      To avoid potential crashes, we will also use my_snprintf instead of
      sprintf.
      
      sql/sql_update.cc:
        sing MYSQL_ERRMSG_SIZE instead of STRING_BUFFER_USUAL_SIZE.
        Using my_snprintf instead of sprintf.
      34ae4a35
    • Alexey Kopytov's avatar
      Automerge · 0a9d3a87
      Alexey Kopytov authored
      0a9d3a87
    • Alexey Kopytov's avatar
      Bug #42849: innodb crash with varying time_zone on partitioned · 85ae5897
      Alexey Kopytov authored
                  timestamp primary key 
       
      Since TIMESTAMP values are adjusted by the current time zone  
      settings in both numeric and string contexts, using any 
      expressions involving TIMESTAMP values as a  
      (sub)partitioning function leads to undeterministic behavior of  
      partitioned tables. The effect may vary depending on a storage  
      engine, it can be either incorrect data being retrieved or  
      stored, or an assertion failure. The root cause of this is the  
      fact that the calculated partition ID may differ from a  
      previously calculated ID for the same data due to timezone  
      adjustments of the partitioning expression value. 
       
      Fixed by disabling any expressions involving TIMESTAMP values  
      to be used in partitioning functions with the follwing two 
      exceptions: 
       
      1. Creating or altering into a partitioned table that violates 
      the above rule is not allowed, but opening existing such tables 
      results in a warning rather than an error so that such tables 
      could be fixed. 
       
      2. UNIX_TIMESTAMP() is the only way to get a 
      timezone-independent value from a TIMESTAMP column, because it 
      returns the internal representation (a time_t value) of a 
      TIMESTAMP argument verbatim. So UNIX_TIMESTAMP(timestamp_column)
      is allowed and should be used to fix existing tables if one 
      wants to use TIMESTAMP columns with partitioning.
      
      mysql-test/r/partition_bug18198.result:
        Corrected the error.
      mysql-test/r/partition_error.result:
        Corrected error texts.
        Added test cases for bug #42849.
      mysql-test/t/partition_bug18198.test:
        Corrected error code.
      mysql-test/t/partition_error.test:
        Corrected error codes.
        Added test cases for bug #42849.
      sql/item.h:
        Added is_timezone_dependent_processor() to Item.
      sql/item_func.h:
        Added has_timestamp_args() and the implementation of
        is_timezone_dependent_processor() for Item_func.
      sql/item_timefunc.h:
        Added is_timezone_dependent_processor() to 
        Item_func_unix_timestamp.
      sql/share/errmsg.txt:
        Renamed ER_CONST_EXPR_IN_PARTITION_FUNC_ERROR to
        ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR to better reflect the
        meaning. Adjusted the error message.
      sql/sql_partition.cc:
        Modified fix_fields_part_func() to walk through partitioning
        expression tree with is_timezone_dependent_processor() and issue
        a warning/error if it depends on the timezone settings.
        
        Changed fix_fields_part_func() to a static function since it is
        not used anywhere except sql_partition.cc
      sql/sql_partition.h:
        Removed the unneeded declaration of fix_fields_part_func()
        since it is now a static function.
      sql/sql_yacc.yy:
        ER_CONST_EXPR_IN_PARTITION_FUNC_ERROR ->
        ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR.
      85ae5897
  6. 12 Dec, 2009 1 commit
    • Staale Smedseng's avatar
      Bug #45058 init_available_charsets uses double checked locking · 0841caaf
      Staale Smedseng authored
            
      As documented in the bug report, the double checked locking
      pattern has inherent issues, and cannot guarantee correct
      initialization.
      
      This patch replaces the logic in init_available_charsets()
      with the use of pthread_once(3). A wrapper function,
      my_pthread_once(), is introduced and is used in lieu of direct
      calls to init_available_charsets(). Related defines
      MY_PTHREAD_ONCE_* are also introduced.
      
      For the Windows platform, the implementation in lp:sysbench is
      ported. For single-thread use, a simple define calls the
      function and sets the pthread_once control variable.
      
      Charset initialization is modified to use my_pthread_once().
      
      include/my_no_pthread.h:
        Dummy my_pthread_once() for single thread use.
      include/my_pthread.h:
        Declaration for new function my_pthread_once().
      mysys/charset.c:
        Logic in init_available_charsets() is simplified. 
        Using my_pthread_once() for all calls to this func.
      mysys/my_winthread.c:
        Windows implementation of my_pthread_once().
      0841caaf
  7. 11 Dec, 2009 12 commits
    • Kent Boortz's avatar
      Null merge of change in 5.0 to use -D_WIN32_WINNT=0x0500, Windows 2000 · ac100014
      Kent Boortz authored
      compatibility, not to change the -D_WIN32_WINNT=0x0501 in 5.1, XP
      compatibility.
      ac100014
    • Kent Boortz's avatar
      Define _WIN32_WINNT to the minimum supported Windows version, 0x0500 i.e · 35ad1c3d
      Kent Boortz authored
      Windows 2000.
            
            Visual Studio 2003 and 2005 require
              _WIN32_WINNT >= 0x0500 (Win2000)  for TryEnterCriticalSection.
      35ad1c3d
    • Georgi Kodinov's avatar
      merge · ba3dd83d
      Georgi Kodinov authored
      ba3dd83d
    • Georgi Kodinov's avatar
      merge · a8d9e1ef
      Georgi Kodinov authored
      a8d9e1ef
    • Georgi Kodinov's avatar
      merge · e56c8f57
      Georgi Kodinov authored
      e56c8f57
    • Georgi Kodinov's avatar
      merge · 6ba2a984
      Georgi Kodinov authored
      6ba2a984
    • Georgi Kodinov's avatar
      merge of bug #49250 to 5.1-bugteam · fab884d9
      Georgi Kodinov authored
      fab884d9
    • Evgeny Potemkin's avatar
      Auto-merged fix for bug#49489. · a92a6c66
      Evgeny Potemkin authored
      a92a6c66
    • V Narayanan's avatar
      merging with mysql-5.1-bugteam · 8dc2a33f
      V Narayanan authored
      8dc2a33f
    • V Narayanan's avatar
      Bug#49521 SHOW CREATE TABLE on IBMDB2I tables has incorrect fk constraint format · b2831b1d
      V Narayanan authored
      The fix inserts newline and comma characters as appropriate
      into the constraint reporting code to match the formatting
      required by SHOW CREATE TABLE. Additionally, a erroneously
      duplicated copy of check_if_incompatible_data() was removed
      from db2i_constraints.cc since the correct version is already
      in ha_ibmdb2i.cc.
      
      storage/ibmdb2i/db2i_constraints.cc:
        Bug#49521 SHOW CREATE TABLE on IBMDB2I tables has incorrect fk constraint format
        
        - Insert newline and comma characters into the constraint reporting
          code to match the formatting required by SHOW CREATE TABLE.
        
        - Remove an erroneous copy of check_if_incompatible_data() from
          db2i_constraints.cc.
      b2831b1d
    • V Narayanan's avatar
      Bug#49329 example (and other) engines use wrong collation for open tables hash · c73c717c
      V Narayanan authored
      This fix changes the character set used within the
      IBMDB2I handler to hash table names to information
      about open tables. Previously, tables with names
      that differed only in letter case would hash to the
      same data structure. This caused incorrect behavior
      or errors when two such tables were in use simultaneously.
      
      mysql-test/suite/ibmdb2i/r/ibmdb2i_bug_49329.result:
        Bug#49329 example (and other) engines use wrong collation for open tables hash
        
        Result file for the test case.
      mysql-test/suite/ibmdb2i/t/ibmdb2i_bug_49329.test:
        Bug#49329 example (and other) engines use wrong collation for open tables hash
        
        Test case for the bug fix.
      storage/ibmdb2i/ha_ibmdb2i.cc:
        Bug#49329 example (and other) engines use wrong collation for open tables hash
        
        change the character set used within the IBMDB2I
        handler to hash table names to information about
        open tables.
      c73c717c
    • unknown's avatar
      Bug #48742 Replication: incorrect help text for --init-slave · 5b19442a
      unknown authored
            
      The help text for --init-slave=name:
      "Command(s) that are executed when a slave connects to this master".
      This text indicate that the --init-slave option is set on a  master 
      server, and the master server passes the option's argument to slave 
      which connects to it. This is wrong. Actually the --init-slave option 
      just can be set on a slave server, and then the slave server executes 
      the argument each time the SQL thread starts.
      
      Correct the help text for --init-slave option as following:
      "Command(s) that are executed by a slave server each time the SQL thread starts."
      
      
      sql/mysqld.cc:
        Correct the help text for --init-slave option.
      5b19442a