1. 15 Oct, 2008 5 commits
    • Davi Arnaut's avatar
      Bug#38477: my_pthread_setprio can change dispatch class on Solaris, not just priority · 1614b231
      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.
      1614b231
    • Davi Arnaut's avatar
      Bug#38941: fast mutexes in MySQL 5.1 have mutex contention when calling random() · 48569182
      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.
      48569182
    • Horst Hunger's avatar
      Merge to update the tree before a push. · 8539cb30
      Horst Hunger authored
      8539cb30
    • Horst Hunger's avatar
      94428605
    • Kristofer Pettersson's avatar
      automerge · 98fc4689
      Kristofer Pettersson authored
      98fc4689
  2. 14 Oct, 2008 2 commits
  3. 13 Oct, 2008 2 commits
  4. 10 Oct, 2008 8 commits
    • Georgi Kodinov's avatar
      merged 5.0-main -> 5.0-bugteam · 5b40646d
      Georgi Kodinov authored
      5b40646d
    • Georgi Kodinov's avatar
      merged 5.1-bugteam -> bug 34773 tree · c37758b5
      Georgi Kodinov authored
      c37758b5
    • unknown's avatar
      Raise version number after cloning 5.1.29-rc · e8a0343a
      unknown authored
      e8a0343a
    • Gleb Shchepa's avatar
      manual merge 5.0-bugteam --> 5.1-bugteam · 2c07eda2
      Gleb Shchepa authored
      2c07eda2
    • Gleb Shchepa's avatar
      automerge 5.0-bugteam --> 5.1-bugteam · 53f0ffdc
      Gleb Shchepa authored
      53f0ffdc
    • Gleb Shchepa's avatar
      Bug #37894: Assertion in init_read_record_seq in handler.h line 1444 · efb3a353
      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).
      efb3a353
    • Gleb Shchepa's avatar
      Bug #39283: Date returned as VARBINARY to client for queries · 849214a0
      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.
      849214a0
    • Georgi Kodinov's avatar
      Bug #32124 addendum #2 · 9da0fd3b
      Georgi Kodinov authored
       - fixed an unitialized memory read
       - fixed a compilation warning
       - added a suppression for FC9 x86_64
      
      mysql-test/valgrind.supp:
        Bug #3214: added a suppression for FC9 x86_64
      sql/item_func.cc:
        Bug #32124
         - fixed an unitialized memory read
         - fixed a compilation warning
      9da0fd3b
  5. 09 Oct, 2008 10 commits
    • Gleb Shchepa's avatar
      48450308
    • Gleb Shchepa's avatar
      Bug#38499: flush tables and multitable table update with · abf603bc
      Gleb Shchepa authored
                 derived table cause crash
      
      When a multi-UPDATE command fails to lock some table, and
      subsequently succeeds, the tables need to be reopened if
      they were altered. But the reopening procedure failed for
      derived tables.
      
      Extra cleanup has been added.
      
      
      mysql-test/r/lock_multi.result:
        Added test case for bug #38499.
      mysql-test/t/lock_multi.test:
        Added test case for bug #38499.
      sql/sql_union.cc:
        Bug#38499: flush tables and multitable table update with
                   derived table cause crash
        
        Obsolete assertion has been removed.
      sql/sql_update.cc:
        Bug#38499: flush tables and multitable table update with
                   derived table cause crash
        
        Extra cleanup for derived tables has been added:
        1) unit.cleanup(),
        2) unit->reinit_exec_mechanism().
      abf603bc
    • Georgi Kodinov's avatar
      merged 5.1-bugteam -> 32124 · 4fbb38fb
      Georgi Kodinov authored
      4fbb38fb
    • Georgi Kodinov's avatar
      Bug #32124 addendum · 376cc8ad
      Georgi Kodinov authored
       Fixed the handling of system variable retrieval
      in prepared statements : added a cleanup method
      that clears up the cache and restores the 
      original scope of the variable (which is overwritten
      at fix_fields()).
      
      sql/item_func.cc:
        ug #32124: 
         - preserve the requested variable scope
         - clean up the cache and restore the variable
           scope for prepared statements.
      sql/item_func.h:
        Bug #32124: preserve the requested variable scope
      376cc8ad
    • Georgi Kodinov's avatar
      set back version to 5.1.29 · d72b63f6
      Georgi Kodinov authored
      d72b63f6
    • Sergey Glukhov's avatar
      Bug#29153 SHOW and INFORMATION_SCHEMA commands increment Created_tmp_disk_tables · f4d6896f
      Sergey Glukhov authored
      TRIGGERS.SQL_MODE, EVENTS.SQL_MODE, TRIGGERS.DEFINER:
      field type is changed to VARCHAR.
      
      
      mysql-test/r/information_schema.result:
        result fix
      mysql-test/r/show_check.result:
        result fix
      mysql-test/suite/funcs_1/r/is_columns_is.result:
        result fix
      mysql-test/suite/funcs_1/r/is_events.result:
        result fix
      mysql-test/suite/funcs_1/r/is_triggers.result:
        result fix
      sql/sql_show.cc:
        TRIGGERS.SQL_MODE, EVENTS.SQL_MODE, TRIGGERS.DEFINER:
        field type is changed to VARCHAR.
      f4d6896f
    • Sergey Glukhov's avatar
      Bug#39372 "Smart" ALTER TABLE not so smart after all. · 64824826
      Sergey Glukhov authored
      The problem was that PACK_KEYS and MAX_ROWS clause in ALTER TABLE did not trigger
      table reconstruction.
      The fix is to rebuild a table if PACK_KEYS or MAX_ROWS are specified.
      
      
      mysql-test/r/alter_table.result:
        test result
      mysql-test/t/alter_table.test:
        test case
      sql/sql_table.cc:
        The problem was that PACK_KEYS and MAX_ROWS clause in ALTER TABLE did not trigger
        table reconstruction.
        The fix is to rebuild a table if PACK_KEYS or MAX_ROWS are specified.
      64824826
    • Georgi Kodinov's avatar
      WL4403: --general_log and --slow_query_log don't turn on the logging. · 9385ff35
      Georgi Kodinov authored
      Fixed a compilation warning
      9385ff35
    • Sergey Glukhov's avatar
      Bug#35068 Assertion fails when reading from i_s.tables and there is incorrect merge table · 4941cff9
      Sergey Glukhov authored
      Hide "Table doesn't exist" errors if the table belongs to a merge table.
      
      
      mysql-test/r/merge.result:
        result fix
      mysql-test/t/merge.test:
        test case
      sql/sql_base.cc:
        Hide "Table doesn't exist" errors if the table belongs to a merge table.
      4941cff9
    • Sergey Glukhov's avatar
      Bug#38918 selecting from information_schema.columns is disproportionately slow · 731c5d3f
      Sergey Glukhov authored
      The problem: table_open_method is not calculated properly if '*' is used in 'select'
      The fix: added table_open_method calculation for such case
      
      
      mysql-test/r/information_schema.result:
        test result
      mysql-test/t/information_schema.test:
        test case
      sql/sql_show.cc:
        The problem: table_open_method is not calculated properly if '*' is used in 'select'
        The fix: added table_open_method calculation for such case
      731c5d3f
  6. 08 Oct, 2008 13 commits
    • Georgi Kodinov's avatar
      fixed a compile warning in 5.1-5.1.29-rc · 720f7039
      Georgi Kodinov authored
      720f7039
    • Georgi Kodinov's avatar
      b44aa11e
    • Ramil Kalimullin's avatar
      Fix for bug#39585: innodb and myisam corruption after binary · 0d1b38ba
      Ramil Kalimullin authored
      upgrade from <=5.0.46 to >=5.0.48
      
      Problem: 'check table .. for upgrade' doesn't detect 
      incompatible collation changes made in 5.0.48.
      
      Fix: check for incompatible collation changes.
      
      
      sql/handler.cc:
        Fix for bug#39585: innodb and myisam corruption after binary 
        upgrade from <=5.0.46 to >=5.0.48
          - check for incompatible collation changes made in 5.0.48:
        bug #29461
          latin7_general_ci
          latin7_general_cs
          latin7_estonian_cs
          latin2_hungarian_ci
          koi8u_general_ci
          cp1251_ukrainian_ci
          cp1250_general_ci
        bug #29499, bug #27562
          ascii_general_ci
      0d1b38ba
    • Georgi Kodinov's avatar
      merge 5.1-bugteam -> bug 32124 5.1 tree · d7ec5cb3
      Georgi Kodinov authored
      d7ec5cb3
    • Mats Kindahl's avatar
      Merging with 5.1-5.1.29-rc · 24d772a6
      Mats Kindahl authored
      24d772a6
    • Georgi Kodinov's avatar
      Bug #32124: crash if prepared statements refer to variables in the where clause · 1744e15b
      Georgi Kodinov authored
                        
      The code to get read the value of a system variable was extracting its value 
      on PREPARE stage and was substituting the value (as a constant) into the parse tree.
      Note that this must be a reversible transformation, i.e. it must be reversed before
      each re-execution.
      Unfortunately this cannot be reliably done using the current code, because there are
      other non-reversible source tree transformations that can interfere with this
      reversible transformation.
      Fixed by not resolving the value at PREPARE, but at EXECUTE (as the rest of the 
      functions operate). Added a cache of the value (so that it's constant throughout
      the execution of the query). Note that the cache also caches NULL values.
      Updated an obsolete related test suite (variables-big) and the code to test the 
      result type of system variables (as per bug 74).
      
      mysql-test/extra/rpl_tests/rpl_insert_id.test:
        Bug #32124: removed ambiguous testcase
      mysql-test/r/innodb_data_home_dir_basic.result:
        Bug #32124: fixed wrong test case
      mysql-test/r/innodb_flush_method_basic.result:
        Bug #32124: fixed wrong test case
      mysql-test/r/ps_11bugs.result:
        Bug #32124: test case
      mysql-test/r/ssl_capath_basic.result:
        Bug #32124: fixed wrong test case
      mysql-test/r/ssl_cipher_basic.result:
        Bug #32124: fixed wrong test case
      mysql-test/r/variables.result:
        Bug #32124: system vars are shown as such in EXPLAIN EXTENDED, not as constants.
      mysql-test/suite/rpl/r/rpl_insert_id.result:
        Bug #32124: removed ambiguous testcase
      mysql-test/t/ps_11bugs.test:
        Bug #32124: test case
      sql/item.cc:
        Bug #32124: placed the code to convert string to longlong or double 
        to a function (so that it can be reused)
      sql/item.h:
        Bug #32124: placed the code to convert string to longlong or double 
        to a function (so that it can be reused)
      sql/item_func.cc:
        Bug #32124: moved the evaluation of system variables at runtime (val_xxx).
      sql/item_func.h:
        Bug #32124: moved the evaluation of system variables at runtime (val_xxx).
      sql/set_var.cc:
        Bug #32124: removed the code that calculated the system variable's value 
        at PREPARE
      sql/set_var.h:
        Bug #32124: removed the code that calculated the system variable's value 
        at PREPARE
      tests/mysql_client_test.c:
        Bug #32124 : removed the reading of the system variable, because its max
        length is depended on the system charset and client charset and can't be
        easily calculated.
      1744e15b
    • Georgi Kodinov's avatar
      merged 5.1-5.1.29-rc -> 5.1-bugteam · 4ed09e5e
      Georgi Kodinov authored
      4ed09e5e
    • Mats Kindahl's avatar
      Bug #34707: Row based replication: slave creates table within wrong database · 2b5ea13f
      Mats Kindahl authored
      The failure was caused by executing a CREATE-SELECT statement that creates a
      table in another database than the current one. In row-based logging, the
      CREATE statement was written to the binary log without the database, hence
      creating the table in the wrong database, causing the following inserts to
      fail since the table didn't exist in the given database.
      
      Fixed the bug by adding a parameter to store_create_info() that will make
      the function print the database name before the table name and used that
      in the calls that write the CREATE statement to the binary log. The database
      name is only printed if it is different than the currently selected database.
      
      The output of SHOW CREATE TABLE has not changed and is still printed without
      the database name.
      
      mysql-test/suite/rpl/t/rpl_row_create_table.test:
        Added test to check that CREATE-SELECT into another database than the
        current one replicates.
      sql/sql_insert.cc:
        Adding parameter to calls to store_create_info().
      sql/sql_show.cc:
        Adding parameter to calls to store_create_info().
        
        Extending store_create_info() with parameter 'show_database' that will cause
        the database to be written before the table name.
      sql/sql_show.h:
        Adding parameter to call to store_create_info() to tell if the database should be shown or not.
      sql/sql_table.cc:
        Adding parameter to calls to store_create_info().
      2b5ea13f
    • Georgi Kodinov's avatar
      merged 5.0-bugteam -> 5.1-bugteam · 67c86b17
      Georgi Kodinov authored
      disabled a randomly failing test and opened a bug report
      67c86b17
    • Georgi Kodinov's avatar
      merged 5.1-5.1.29-rc -> 5.1-bugteam · 34cdf649
      Georgi Kodinov authored
      34cdf649
    • Georgi Kodinov's avatar
      merged 5.0-5.1.29-rc -> 5.0-bugteam · 3e3f7180
      Georgi Kodinov authored
      3e3f7180
    • Mattias Jonsson's avatar
      Bug#37453: Dropping/creating index on partitioned table with · 23c4a202
      Mattias Jonsson authored
      InnoDB Plugin locks table
      
      This is a pre fix update that does the change to the handler api.
      
      This is done since there are already changes in this version,
      so the real fix does not need to change the api.
      
      sql/handler.h:
        Bug#37453: Dropping/creating index on partitioned table with
        InnoDB Plugin locks table
        
        The check for which alter table flags a handler have is done through the
        handlerton, which will not work correctly for any partitioned table.
        It must be through the handler interface.
        
        To be able to fix this I have to add a virtual function to the handler class.
      23c4a202
    • Marc Alff's avatar
      Merge 5.1-bugteam -> local bugfix branch · d8526f60
      Marc Alff authored
      d8526f60