1. 27 Feb, 2009 4 commits
    • Georgi Kodinov's avatar
      Bug #41610: key_infix_len can be overwritten causing some group by queries to · 4d2f047e
      Georgi Kodinov authored
      return no rows
      
      The algorithm of determining the best key for loose index scan is doing a loop
      over the available indexes and selects the one that has the best cost.
      It retrieves the parameters of the current index into a set of variables.
      If the cost of using the current index is lower than the best cost so far it 
      copies these variables into another set of variables that contain the 
      information for the best index so far.
      After having checked all the indexes it uses these variables (outside of the 
      index loop) to create the table read plan object instance.
      The was a single omission : the key_infix/key_infix_len variables were used 
      outside of the loop without being preserved in the loop for the best index 
      so far.
      This causes these variables to get overwritten by the next index(es) checked.
      Fixed by adding variables to hold the data for the current index, passing 
      the new variables to the function that assigns values to them and copying 
      the new variables into the existing ones when selecting a new current best 
      index.
      To avoid further such problems moved the declarations of the variables used 
      to keep information about the current index inside the loop's compound 
      statement.
      4d2f047e
    • Patrick Crews's avatar
    • Patrick Crews's avatar
      merge. · 88b906ac
      Patrick Crews authored
      88b906ac
    • Georgi Kodinov's avatar
  2. 26 Feb, 2009 5 commits
  3. 25 Feb, 2009 8 commits
  4. 24 Feb, 2009 10 commits
  5. 23 Feb, 2009 4 commits
  6. 20 Feb, 2009 4 commits
  7. 19 Feb, 2009 5 commits
    • Patrick Crews's avatar
      Bug#38831: 11 test cases fail on Windows due to missing commands · ac46e344
      Patrick Crews authored
      Re-enabling mysqlbinlog.test on Windows - removed the use of grep/sed
      ac46e344
    • Patrick Crews's avatar
      Bug#38831: 11 test cases fail on Windows due to missing commands · cc628c61
      Patrick Crews authored
      Replaced Unix calls with mysql-test-run's built-in functions / SQL manipulation where possible.
      Replaced error codes with error names as well.
      Disabled two tests on Windows due to more complex Unix command usage
      See Bug#41307, Bug#41308
      cc628c61
    • Tatiana A. Nurnberg's avatar
      Bug#33550: mysqldump 4.0 compatibility broken · f218f9f2
      Tatiana A. Nurnberg authored
      mysqldump included character_set_client magic
      that is unknown before 4.1 even when asked for
      an appropriate compatibility mode.
      
      In compatibility (3.23, 4.0) mode, we do not
      output charset statements (not even in a
      "comment conditional"), nor do we do magic on
      the server, even if the server is sufficient
      new (4.1+). Table-names will be output converted
      to the charset requested by mysqldump; if such
      a conversion is not possible (Ivrit -> Latin),
      mysqldump will fail.
      f218f9f2
    • Georgi Kodinov's avatar
      merged bug 42419 to 5.0-bugteam · 759edca6
      Georgi Kodinov authored
      759edca6
    • Georgi Kodinov's avatar
      Bug #42419: Server crash with "Pure virtual method called" on two concurrent · b2c161c1
      Georgi Kodinov authored
      connections
      The problem is that tables can enter open table cache for a thread without 
      being properly cleaned up. This can happen if make_join_statistics() fails 
      to read a const table because of e.g. a deadlock. It does set a member of 
      TABLE structure to a value it allocates, but doesn't clean-up this setting 
      on error nor does it set the rest of the members in JOIN to allow for 
      automatic cleanup.
      As a result when such an error occurs and the next statement depends re-uses 
      the table from the open tables cache it will get it with this 
      TABLE::reginfo.join_tab pointing to a memory area that's freed.
      Fixed by making sure make_join_statistics() cleans up TABLE::reginfo.join_tab 
      on error.
      b2c161c1