An error occurred fetching the project authors.
  1. 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
  2. 18 May, 2006 1 commit
    • igor@rurik.mysql.com's avatar
      Fixed bug #19816. · 9ec81018
      igor@rurik.mysql.com authored
      This bug was introduced when the patch resolving the
      performance problem 17164 was applied. As a result
      of that modification the not_null_tables attributes
      were calculated incorrectly for constant OR conditions.
      This triggered invalid conversion of outer joins into
      inner joins.
      9ec81018
  3. 17 May, 2006 1 commit
    • evgen@moonbone.local's avatar
      Fixed bug#19077: A nested materialized derived table is used before being populated. · 1d820585
      evgen@moonbone.local authored
      The convert_constant_item() function converts constant items to ints on
      prepare phase to optimize execution speed. In this case it tries to evaluate
      subselect which contains a derived table and is contained in a derived table. 
      All derived tables are filled only after all derived tables are prepared.
      So evaluation of subselect with derived table at the prepare phase will
      return a wrong result.
      
      A new flag with_subselect is added to the Item class. It indicates that
      expression which this item represents is a subselect or contains a subselect.
      It is set to 0 by default. It is set to 1 in the Item_subselect constructor
      for subselects.
      For Item_func and Item_cond derived classes it is set after fixing any argument
      in Item_func::fix_fields() and Item_cond::fix_fields accordingly.
      The convert_constant_item() function now doesn't convert a constant item
      if the with_subselect flag set in it. 
      1d820585
  4. 21 Apr, 2006 1 commit
  5. 11 Apr, 2006 1 commit
    • igor@rurik.mysql.com's avatar
      Fixed bug #18618. · dfd8f021
      igor@rurik.mysql.com authored
      If the second or the third argument of a BETWEEN predicate was
      a constant expression, like '2005.09.01' - INTERVAL 6 MONTH,
      while the other two arguments were fields then the predicate 
      was evaluated incorrectly and the query returned a wrong
      result set.
      The bug was introduced in 5.0.17 when in the fix for 12612.
      dfd8f021
  6. 08 Apr, 2006 1 commit
    • igor@rurik.mysql.com's avatar
      Fixed bug #16069. · 17141582
      igor@rurik.mysql.com authored
      The function agg_cmp_type in item_cmpfunc.cc neglected the fact that 
      the first argument in a BETWEEN/IN predicate could be a field of a view.
      As a result in the case when the retrieved table was hidden by a view 
      over it and the arguments in the BETWEEN/IN predicates are of 
      the date/time type the function did not perform conversion of 
      the constant arguments to the same format as the first field argument.
      If formats of the arguments differed it caused wrong a evaluation of
      the predicates.
      17141582
  7. 04 Apr, 2006 1 commit
  8. 01 Apr, 2006 1 commit
    • igor@rurik.mysql.com's avatar
      Fixed bug #16504. · af2d79a7
      igor@rurik.mysql.com authored
      Multiple equalities were not adjusted after reading constant tables.
      It resulted in neglecting good index based methods that could be
      used to access of other tables.
      af2d79a7
  9. 24 Mar, 2006 1 commit
    • igor@rurik.mysql.com's avatar
      Fixed bug #17164. · e9924777
      igor@rurik.mysql.com authored
      If the WHERE condition of a query contained an ORed FALSE term
      then the set of tables whose rows cannot serve for null complements
      in outer joins was determined incorrectly. It resulted in blocking 
      possible conversions of outer joins into joins for such queries.
      e9924777
  10. 06 Mar, 2006 1 commit
  11. 03 Mar, 2006 2 commits
    • evgen@moonbone.local's avatar
      Fixed bug#17726: Not checked empty list caused endless loop · 62a266f1
      evgen@moonbone.local authored
      When the Item_cond::fix_fields() function reduces cond tree, it in loop
      scans it's own list and when it founds Item_cond with same function (AND
      or OR) it does next things: 1) replaces that item with item's list. 2)
      empties item's list. Due to this operation is done twice - for update and
      for view, at the update phase cond's list of lower view is already empty.
      Empty list returns ref to itself, thus making endless loop by replacing
      list with itself, emptying, replacing again and so on. This results in
      server hung up.
      
      To the Item_cond::fix_fields() function added check that ensures that
      list being replaced with isn't empty.
      62a266f1
    • gluh@eagle.intranet.mysql.r18.ru's avatar
      Fix for bug#17826 'type_decimal' fails with ps-protocol · f3e993d9
      gluh@eagle.intranet.mysql.r18.ru authored
       removed unnecessary calculation of cache value 
       otherwise Join::preapre tries to calculate 
       undefined values(filed values)
      f3e993d9
  12. 01 Mar, 2006 1 commit
  13. 14 Feb, 2006 1 commit
    • evgen@moonbone.local's avatar
      Fixed bug#16272: IF function with decimal args can produce wrong result · 8f904e9c
      evgen@moonbone.local authored
      The Item_func_if::fix_length_and_dec() function when calculating length of 
      result doesn't take into account unsigned_flag. But it is taken when 
      calculating length of temporary field. This result in creating field that 
      shorter than needed. Due to this, in the reported query 40.0 converted to 9.99.
      
      The function Item_func_if::fix_length_and_dec() now adds 1 to the max_length if 
      the unsigned_flag isn't set.
      8f904e9c
  14. 14 Jan, 2006 1 commit
  15. 11 Jan, 2006 1 commit
    • evgen@moonbone.local's avatar
      Fixed bug #15633: Evaluation of Item_equal for non-const table caused wrong · 605f62fc
      evgen@moonbone.local authored
      select result
      
      Item equal objects are employed only at the optimize phase. Usually they are not
      supposed to be evaluated.  Yet in some cases we call the method val_int() for
      them. Here we have to take care of restricting the predicate such an object
      represents f1=f2= ...=fn to the projection of known fields fi1=...=fik.
      
      Added a check for field's table being const in Item_equal::val_int().
      If the field's table is not const val_int() just skips that field when
      evaluating Item_equal.
      605f62fc
  16. 06 Jan, 2006 1 commit
  17. 26 Nov, 2005 1 commit
  18. 20 Nov, 2005 1 commit
    • bell@sanja.is.com.ua's avatar
      Inefficient usage of String::append() fixed. · 806f9e24
      bell@sanja.is.com.ua authored
      Bad examples of usage of a string with its length fixed.
      The incorrect length in the trigger file configuration descriptor
        fixed (BUG#14090).
      A hook for unknown keys added to the parser to support old .TRG files.
      806f9e24
  19. 07 Nov, 2005 1 commit
  20. 03 Nov, 2005 1 commit
  21. 21 Oct, 2005 1 commit
  22. 15 Oct, 2005 1 commit
  23. 06 Oct, 2005 1 commit
  24. 05 Oct, 2005 2 commits
  25. 29 Sep, 2005 1 commit
    • kent@mysql.com's avatar
      Many files: · 844d964f
      kent@mysql.com authored
        Prefix regex functions/types with "my_" as our
        library is not compatible with normal regex lib.
      my_regex.h:
        Rename: regex/regex.h -> regex/my_regex.h
      844d964f
  26. 21 Sep, 2005 1 commit
    • bar@mysql.com's avatar
      Bug#13046: LIKE pattern matching using prefix · d870612a
      bar@mysql.com authored
                   index doesn't return correct result
      item_cmpfunc.cc:
        Use charset of LIKE to decide whether
        to use 8bit or Unicode "escape" value.
        But use charset of "escape" to scan escape character.
      strings/ctype-xxx.c:
        We cannot reduce "end" pointer using charpos(),
        because of possible escape characters in the string.
        Limit the loop using count of written characters instead.
      ctype_like_escape.inc:
        new file
      mysql-test/t/ctype_xxx:
      mysql-test/r/ctype_xxx:
        Adding test case.
      d870612a
  27. 12 Sep, 2005 2 commits
  28. 09 Sep, 2005 1 commit
  29. 07 Sep, 2005 1 commit
    • aivanov@mysql.com's avatar
      join_outer.result, opt_range.cc, item_cmpfunc.cc: · 4b245a28
      aivanov@mysql.com authored
        Post merge changes
      sql_yacc.yy:
        Post merge changes
      sql_select.cc:
        Fixed bugs #12101, #12102: wrong calculation of not_null_tables()
         for some expressions (post merge changes).
         The function add_key_fields() is modified. There cannot be NOT before
         BETWEEN/IN anymore. Rather Item_func_between/in objects can represent
         now [NOT]BETWEEN/IN expressions.
      4b245a28
  30. 06 Sep, 2005 2 commits
    • aivanov@mysql.com's avatar
      item_cmpfunc.h: · fa51afed
      aivanov@mysql.com authored
        Fixed bugs #12101, #12102: wrong calculation of not_null_tables()
         for some expressions.
         The classes Item_func_between, Item_func_if, Item_func_in are modified.
         Item_func_between/in objects can represent now [NOT]BETWEEN/IN expressions.
         The class Item_func_opt_neg is added to factor out the functionality
         common for the modified classes Item_func_between and Item_func_in.
      item_cmpfunc.cc:
        Fixed bugs #12101, #12102: wrong calculation of not_null_tables()
         for some expressions.
         Added Item_func_between::fix_fields(), Item_func_if::fix_fields(),
         Item_func_in::fix_fields(). They correct generic calculation of
         the not_null_tables attribute when it is needed.
         Modified Item_func_between::val_int(), Item_func_in::val_int().
      opt_range.cc:
        Fixed bugs #12101, #12102: wrong calculation of not_null_tables()
         for some expressions.
         The function get_mm_tree() is modified. There cannot be NOT before
         BETWEEN/IN anymore. Rather Item_func_between/in objects can represent
         now [NOT]BETWEEN/IN expressions.
      sql_yacc.yy:
        Fixed bugs #12101, #12102: wrong calculation of not_null_tables()
         for some expressions.
         Item_func_between/in objects can represent now [NOT]BETWEEN/IN expresions.
      join_outer.result:
        Fixed some testcases results (bugs #12101, #12102)
      join_outer.test:
        Added testcases for bugs #12101, #12102
      fa51afed
    • bar@mysql.com's avatar
      func_like.result, func_like.test: · d40278e0
      bar@mysql.com authored
        adding test case.
      item_cmpfunc.cc:
        Bug#12611
        ESCAPE + LIKE do not work when the escape char is a multibyte one
        Additional fix for 8bit character sets:
        escape character must be converted into
        operation character set.
      d40278e0
  31. 02 Sep, 2005 1 commit
    • konstantin@mysql.com's avatar
      Rename: · a3ddcdf8
      konstantin@mysql.com authored
      - current_arena to stmt_arena: the thread may have more than one
      'current' arenas: one for runtime data, and one for the parsed 
      tree of a statement. Only one of them is active at any moment.
      - set_item_arena -> set_query_arena, because Item_arena was renamed to 
      Query_arena a while ago
      - set_n_backup_item_arena -> set_n_backup_active_arena;
      the active arena is the arena thd->mem_root and thd->free_list
      are currently pointing at.
      - restore_backup_item_arena -> restore_active_arena (with the same
      rationale)
      - change_arena_if_needed -> activate_stmt_arena_if_needed; this
      method sets thd->stmt_arena active if it's not done yet.
      a3ddcdf8
  32. 31 Aug, 2005 1 commit
  33. 21 Aug, 2005 1 commit
  34. 18 Aug, 2005 2 commits
  35. 16 Aug, 2005 1 commit