1. 29 Oct, 2008 1 commit
    • Mattias Jonsson's avatar
      Bug#39084: Getting intermittent errors with statement-based binary logging · b72d1507
      Mattias Jonsson authored
      Problem was that partitioning cached the table flags.
      These flags could change due to TRANSACTION LEVEL changes.
      Solution was to remove the cache and always return the table flags
      from the first partition (if the handler was initialized).
      
      mysql-test/r/partition_innodb_stmt.result:
        Bug#39084: Getting intermittent errors with statement-based binary logging
        
        New test result file.
      mysql-test/t/partition_innodb_stmt.test:
        Bug#39084: Getting intermittent errors with statement-based binary logging
        
        New test file.
      sql/ha_partition.cc:
        Bug#39084: Getting intermittent errors with statement-based binary logging
        
        Removed m_table_flags, and added m_handler_status.
        Added checks that all partitions have the same
        table flags.
        Moved some variable initializations.
        Updated some comments.
        Fixed typo initialise -> initialize
        Changed HA_EXTTA_NO_READCHECK to do nothing, since it
        is only used in ha_open, which is called for every
        partition in ::open anyway.
      sql/ha_partition.h:
        Bug#39084: Getting intermittent errors with statement-based binary logging
        
        Removed m_table_flags, and added m_handler_status.
        Always return the first partitions table flags, instead of using
        cached table flags.
        Added define of enabled/disabled partitioning table flags
        Fixed type initialise -> initialize
        Updated some comments.
      sql/handler.cc:
        Bug#39084: Getting intermittent errors with statement-based binary logging
        
        Fixed type initialise -> initialize.
      sql/handler.h:
        Bug#39084: Getting intermittent errors with statement-based binary logging
        
        Added comment to understand where the cached value is set.
      b72d1507
  2. 23 Oct, 2008 2 commits
  3. 21 Oct, 2008 4 commits
  4. 20 Oct, 2008 5 commits
  5. 17 Oct, 2008 2 commits
  6. 16 Oct, 2008 5 commits
    • Serge Kozlov's avatar
    • Gleb Shchepa's avatar
      39d165dd
    • Gleb Shchepa's avatar
      Bug #39844: Query Crash Mysql Server 5.0.67 · b5917934
      Gleb Shchepa authored
      Server crashed during a sort order optimization
      of a dependent subquery:
      
      SELECT
          (SELECT t1.a FROM t1, t2
            WHERE t1.a = t2.b AND t2.a = t3.c
            ORDER BY t1.a)
        FROM t3;
      
      
      Bitmap of tables, that the reference to outer table
      column uses, in addition to the regular table bit
      has the OUTER_REF_TABLE_BIT bit set.
      The only_eq_ref_tables function traverses this map
      bit by bit simultaneously with join->map2table list.
      Obviously join->map2table never contains an entry
      for the OUTER_REF_TABLE_BIT pseudo-table, so the
      server crashed there.
      
      
      The only_eq_ref_tables function has been modified
      to traverse regular table bits only like the
      update_depend_map function (resetting of the
      OUTER_REF_TABLE_BIT there is enough, but
      resetting of the whole set of PSEUDO_TABLE_BITS
      is used there for sure).
      
      
      mysql-test/r/order_by.result:
        Added test case for bug #39844.
      mysql-test/t/order_by.test:
        Added test case for bug #39844.
      sql/sql_select.cc:
        Bug #39844: Query Crash Mysql Server 5.0.67
        
        The only_eq_ref_tables function has been modified
        to traverse regular table bits only like the
        update_depend_map function (resetting of the
        OUTER_REF_TABLE_BIT there is enough, but
        resetting of the whole set of PSEUDO_TABLE_BITS
        is used there for sure).
      b5917934
    • Georgi Kodinov's avatar
      Bug #39958: Test "windows" lacks a cleanup · ca6e0576
      Georgi Kodinov authored
      Added the missing DROP TABLE
      
      mysql-test/r/windows.result:
        Bug #39958: added the missing DROP TABLE
      mysql-test/t/windows.test:
        Bug #39958: added the missing DROP TABLE
      ca6e0576
    • Davi Arnaut's avatar
      65253483
  7. 15 Oct, 2008 8 commits
    • Davi Arnaut's avatar
      Bug#38477: my_pthread_setprio can change dispatch class on Solaris, not just priority · e6fa9496
      Davi Arnaut authored
      The problem is that the function used by the server to increase
      the thread's priority (pthread_setschedparam) has the unintended
      side-effect of changing the calling thread scheduling policy,
      possibly overwriting a scheduling policy set by a sysadmin.
      
      The solution is to rely on the pthread_setschedprio function, if
      available, as it only changes the scheduling priority and does not
      change the scheduling policy. This function is usually available on
      Solaris and Linux, but it use won't work by default on Linux as the
      the default scheduling policy only accepts a static priority 0 -- this
      is acceptable for now as priority changing on Linux is broken anyway.
      
      configure.in:
        Check for the existence of the pthread_setschedprio function.
      include/my_pthread.h:
        Use the pthread_setschedprio function to set the thread priority
        if the function is available.
      e6fa9496
    • Davi Arnaut's avatar
      Bug#38941: fast mutexes in MySQL 5.1 have mutex contention when calling random() · e405ab16
      Davi Arnaut authored
      The problem is that MySQL's 'fast' mutex implementation uses the
      random() routine to determine the spin delay. Unfortunately, the
      routine interface is not thead-safe and some implementations (eg:
      glibc) might use a internal lock to protect the RNG state, causing
      excessive locking contention if lots of threads are spinning on
      a MySQL's 'fast' mutex. The code was also misusing the value
      of the RAND_MAX macro, this macro represents the largest value
      that can be returned from the rand() function, not random().
      
      The solution is to use the quite simple Park-Miller random number
      generator. The initial seed is set to 1 because the previously used
      generator wasn't being seeded -- the initial seed is 1 if srandom()
      is not called.
      
      Futhermore, the 'fast' mutex implementation has several shortcomings
      and provides no measurable performance benefit. Therefore, its use is
      not recommended unless it provides directly measurable results.
      
      
      include/my_pthread.h:
        Add field to keep the RNG state.
      mysys/thr_mutex.c:
        Use a palliative per-mutex rng state to determine the spin delay.
        The RNG is not thread-safe but jumping a few sequences in the RNG
        is harmless.
      e405ab16
    • Davi Arnaut's avatar
      Bug#37075: offset of limit clause might be truncated on 32-bits server w/o big tables · 3ad228d7
      Davi Arnaut authored
      The problem is that the offset argument of the limit clause
      might be truncated on a 32-bits server built without big
      tables support. The truncation was happening because the
      original 64-bits long argument was being cast to a 32-bits
      (ha_rows) offset counter.
      
      The solution is to check if the conversing resulted in value
      truncation and if so, the offset is set to the maximum possible
      value that can fit on the type.
      
      mysql-test/r/limit.result:
        Add test case result for Bug#37075
      mysql-test/t/limit.test:
        Add test case for Bug#37075
      sql/sql_lex.cc:
        Check for truncation of the offset value. If value was
        truncated, set to the maximum possible value.
      3ad228d7
    • Horst Hunger's avatar
      Merge to update the tree before a push. · 5ec1c158
      Horst Hunger authored
      5ec1c158
    • Horst Hunger's avatar
      8c0ffd24
    • Georgi Kodinov's avatar
      Bug #38693: leaked memory with blobs! · 74735183
      Georgi Kodinov authored
      If delayed insert fails to upgrade the lock it was not
      freeing the temporary memory storage used to keep
      newly constructed blob values in memory.
      Fixed by iterating over the remaining rows in the delayed
      insert rowset and freeing the blob storage for each row.
      
      No test suite because it involves concurrent delayed inserts 
      on a table and cannot easily be made deterministic. 
      
      Added a correct valgrind suppression for Fedora 9.
      
      mysql-test/valgrind.supp:
        Added a vagrind suppression for Fedora 9
      sql/sql_insert.cc:
        Bug #38693: free the blobs temp storage on error.
      74735183
    • Kristofer Pettersson's avatar
      automerge · 7fa3897e
      Kristofer Pettersson authored
      7fa3897e
    • Kristofer Pettersson's avatar
      automerge · d0b8dd45
      Kristofer Pettersson authored
      d0b8dd45
  8. 14 Oct, 2008 3 commits
  9. 13 Oct, 2008 2 commits
  10. 10 Oct, 2008 8 commits
    • Georgi Kodinov's avatar
      merged 5.0-main -> 5.0-bugteam · 9b6347f0
      Georgi Kodinov authored
      9b6347f0
    • Georgi Kodinov's avatar
      merged 5.1-bugteam -> bug 34773 tree · b6704027
      Georgi Kodinov authored
      b6704027
    • unknown's avatar
      Raise version number after cloning 5.1.29-rc · 64191b6e
      unknown authored
      64191b6e
    • Gleb Shchepa's avatar
      manual merge 5.0-bugteam --> 5.1-bugteam · 639ef9fa
      Gleb Shchepa authored
      639ef9fa
    • Gleb Shchepa's avatar
      automerge 5.0-bugteam --> 5.1-bugteam · 3e96ed0c
      Gleb Shchepa authored
      3e96ed0c
    • Kristofer Pettersson's avatar
      Bug#39451 Debug builds broken with Sun Studio compiler · 1ad9b711
      Kristofer Pettersson authored
            
      Debug builds of MySQL 5.1, 6.0 with Sun Studio 12 broke because of
      use of gcc specific feature.
            
      The fix is to replace __FUNCTION__ with the corresponding character
      string
      1ad9b711
    • Gleb Shchepa's avatar
      Bug #37894: Assertion in init_read_record_seq in handler.h line 1444 · 097b60bd
      Gleb Shchepa authored
      Select with a "NULL NOT IN" condition containing complex
      subselect from the same table as in the outer select failed
      with an assertion.
      
      
      The failure was caused by a concatenation of circumstances:
      1) an inner select was optimized by make_join_statistics to use
         the QUICK_RANGE_SELECT access method (that implies an index
         scan of the table);
      2) a subselect was independent (constant) from the outer select;
      3) a condition was pushed down into inner select.
      
      During the evaluation of a constant IN expression an optimizer
      temporary changed the access method from index scan to table
      scan, but an engine handler was already initialized for index
      access by make_join_statistics. That caused an assertion.
      
      
      Unnecessary index initialization has been removed from
      the QUICK_RANGE_SELECT::init method (QUICK_RANGE_SELECT::reset
      reinvokes this initialization).
      
      
      mysql-test/r/subselect3.result:
        Added test case for bug #37894.
      mysql-test/t/subselect3.test:
        Added test case for bug #37894.
      sql/opt_range.cc:
        Bug #37894: Assertion in init_read_record_seq in handler.h line 1444
        
        Unnecessary index initialization has been removed from
        the QUICK_RANGE_SELECT::init method (QUICK_RANGE_SELECT::reset
        reinvokes this initialization).
      097b60bd
    • Gleb Shchepa's avatar
      Bug #39283: Date returned as VARBINARY to client for queries · 8bfbcbd9
      Gleb Shchepa authored
                  with COALESCE and JOIN
      
      The server returned to a client the VARBINARY column type
      instead of the DATE type for a result of the COALESCE,
      IFNULL, IF, CASE, GREATEST or LEAST functions if that result
      was filesorted in an anonymous temporary table during
      the query execution.
      
      For example:
        SELECT COALESCE(t1.date1, t2.date2) AS result
          FROM t1 JOIN t2 ON t1.id = t2.id ORDER BY result;
      
      
      To create a column of various date/time types in a
      temporary table the create_tmp_field_from_item() function
      uses the Item::tmp_table_field_from_field_type() method
      call. However, fields of the MYSQL_TYPE_NEWDATE type were
      missed there, and the VARBINARY columns were created
      by default.
      Necessary condition has been added.
      
      
      mysql-test/r/metadata.result:
        Added test case for bug #39283.
      mysql-test/t/metadata.test:
        Added test case for bug #39283.
      sql/sql_select.cc:
        Bug #39283: Date returned as VARBINARY to client for queries
                    with COALESCE and JOIN
        
        To create a column of various date/time types in a
        temporary table the create_tmp_field_from_item() function
        uses the Item::tmp_table_field_from_field_type() method
        call. However, fields of the MYSQL_TYPE_NEWDATE type were
        missed there, and the VARBINARY columns were created
        by default.
        Necessary condition has been added.
      8bfbcbd9