1. 14 Jun, 2006 1 commit
    • igor@rurik.mysql.com's avatar
      Fixed bug #14896. · 355753ba
      igor@rurik.mysql.com authored
      This bug in Field_string::cmp resulted in a wrong comparison 
      with keys in partial indexes over multi-byte character fields.
      Given field a is declared as 
        a varchar(16) collate utf8_unicode_ci
      INDEX(a(4)) gives us an example of such an index.
      
      Wrong key comparisons could lead to wrong result sets if 
      the selected query execution plan used a range scan by 
      a partial index over a utf8 character field.
      This also caused wrong results in many other cases.
      355753ba
  2. 03 Jun, 2006 1 commit
  3. 02 Jun, 2006 3 commits
    • igor@rurik.mysql.com's avatar
      Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-4.1-opt · d02f254e
      igor@rurik.mysql.com authored
      into  rurik.mysql.com:/home/igor/mysql-4.1-opt
      d02f254e
    • igor@rurik.mysql.com's avatar
      Fixed bug #18206. · 37e049db
      igor@rurik.mysql.com authored
      The bug report revealed two problems related to min/max optimization:
      1. If the length of a constant key used in a SARGable condition for
      for the MIN/MAX fields is greater than the length of the field an 
      unwanted warning on key truncation is issued;
      2. If MIN/MAX optimization is applied to a partial index, like INDEX(b(4))
      than can lead to returning a wrong result set.
      37e049db
    • gkodinov@mysql.com's avatar
      Bug #4981: 4.x and 5.x produce non-optimal execution path, · b519877c
      gkodinov@mysql.com authored
              3.23 regression test failure
      
      The member SEL_ARG::min_flag was not initialized, 
      due to which the condition for no GEOM_FLAG in function 
      key_or did not choose "Range checked for each record" as 
      the correct access method.
      b519877c
  4. 30 May, 2006 1 commit
  5. 29 May, 2006 1 commit
    • evgen@moonbone.local's avatar
      Fixed bug#18360: Incorrect type coercion in IN() results in false comparison · 641f852d
      evgen@moonbone.local authored
      The IN() function uses agg_cmp_type() to aggregate all types of its arguments
      to find out some common type for comparisons. In this particular case the 
      char() and the int was aggregated to double because char() can contain values
      like '1.5'. But all strings which do not start from a digit are converted to
      0. thus 'a' and 'z' become equal. 
      This behaviour is reasonable when all function arguments are constants. But 
      when there is a field or an expression this can lead to false comparisons. In
      this case it makes more sense to coerce constants to the type of the field
      argument.
      
      The agg_cmp_type() function now aggregates types of constant and non-constant
      items separately. If some non-constant items will be found then their
      aggregated type will be returned. Thus after the aggregation constants will be
      coerced to the aggregated type. 
      641f852d
  6. 28 May, 2006 1 commit
    • evgen@moonbone.local's avatar
      Fixed bug#19225: unchecked error results in server crash · 1f30bf5a
      evgen@moonbone.local authored
      In multi-table delete a table for delete can't be used for selecting in
      subselects. Appropriate error was raised but wasn't checked which leads to a
      crash at the execution phase.
      
      The mysql_execute_command() now checks for errors before executing select
      for multi-delete.
      1f30bf5a
  7. 23 May, 2006 3 commits
  8. 22 May, 2006 1 commit
  9. 21 May, 2006 1 commit
  10. 20 May, 2006 2 commits
  11. 19 May, 2006 4 commits
  12. 17 May, 2006 2 commits
  13. 16 May, 2006 9 commits
  14. 15 May, 2006 5 commits
  15. 14 May, 2006 3 commits
  16. 13 May, 2006 1 commit
  17. 12 May, 2006 1 commit