1. 16 Oct, 2008 3 commits
    • Gleb Shchepa's avatar
      56aa88b3
    • Gleb Shchepa's avatar
      Bug #39844: Query Crash Mysql Server 5.0.67 · c411a11e
      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).
      c411a11e
    • Davi Arnaut's avatar
      7b327a58
  2. 15 Oct, 2008 6 commits
    • Davi Arnaut's avatar
      Bug#38477: my_pthread_setprio can change dispatch class on Solaris, not just priority · 459b8b3d
      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.
      459b8b3d
    • Davi Arnaut's avatar
      Bug#38941: fast mutexes in MySQL 5.1 have mutex contention when calling random() · 28f29b73
      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.
      28f29b73
    • Davi Arnaut's avatar
      Bug#37075: offset of limit clause might be truncated on 32-bits server w/o big tables · 4ab10baa
      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.
      4ab10baa
    • Horst Hunger's avatar
      Merge to update the tree before a push. · d320ca5c
      Horst Hunger authored
      d320ca5c
    • Horst Hunger's avatar
      2f99a53e
    • Kristofer Pettersson's avatar
      automerge · 00b75c20
      Kristofer Pettersson authored
      00b75c20
  3. 14 Oct, 2008 3 commits
  4. 13 Oct, 2008 2 commits
  5. 10 Oct, 2008 8 commits
    • Georgi Kodinov's avatar
      merged 5.0-main -> 5.0-bugteam · 702ae189
      Georgi Kodinov authored
      702ae189
    • Georgi Kodinov's avatar
      merged 5.1-bugteam -> bug 34773 tree · e142ffde
      Georgi Kodinov authored
      e142ffde
    • kent.boortz@sun.com's avatar
      b532dbea
    • Gleb Shchepa's avatar
      manual merge 5.0-bugteam --> 5.1-bugteam · a99bc695
      Gleb Shchepa authored
      a99bc695
    • Gleb Shchepa's avatar
      automerge 5.0-bugteam --> 5.1-bugteam · fe3aee30
      Gleb Shchepa authored
      fe3aee30
    • Gleb Shchepa's avatar
      Bug #37894: Assertion in init_read_record_seq in handler.h line 1444 · 27f4c34b
      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).
      27f4c34b
    • Gleb Shchepa's avatar
      Bug #39283: Date returned as VARBINARY to client for queries · e7520c4b
      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.
      e7520c4b
    • Georgi Kodinov's avatar
      Bug #32124 addendum #2 · ac0027ae
      Georgi Kodinov authored
       - fixed an unitialized memory read
       - fixed a compilation warning
       - added a suppression for FC9 x86_64
      ac0027ae
  6. 09 Oct, 2008 10 commits
  7. 08 Oct, 2008 8 commits
    • Georgi Kodinov's avatar
      fixed a compile warning in 5.1-5.1.29-rc · 5cbb580d
      Georgi Kodinov authored
      5cbb580d
    • Georgi Kodinov's avatar
      3c03ca75
    • Ramil Kalimullin's avatar
      Fix for bug#39585: innodb and myisam corruption after binary · 03b5e7df
      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.
      03b5e7df
    • Georgi Kodinov's avatar
      merge 5.1-bugteam -> bug 32124 5.1 tree · 8c6ffe36
      Georgi Kodinov authored
      8c6ffe36
    • Mats Kindahl's avatar
      Merging with 5.1-5.1.29-rc · d40b2cb7
      Mats Kindahl authored
      d40b2cb7
    • Georgi Kodinov's avatar
      Bug #32124: crash if prepared statements refer to variables in the where clause · 489ad44a
      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).
      489ad44a
    • Georgi Kodinov's avatar
      merged 5.1-5.1.29-rc -> 5.1-bugteam · ff51733a
      Georgi Kodinov authored
      ff51733a
    • Mats Kindahl's avatar
      Bug #34707: Row based replication: slave creates table within wrong database · 70b18065
      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.
      70b18065