1. 27 Apr, 2007 1 commit
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 674ecb21
      unknown authored
      into  moonbone.local:/mnt/gentoo64/work/27590-bug-5.0-opt-mysql
      
      
      mysql-test/r/subselect.result:
        Auto merged
      sql/item.cc:
        Auto merged
      sql/item.h:
        Auto merged
      sql/item_cmpfunc.cc:
        Auto merged
      sql/item_cmpfunc.h:
        Auto merged
      sql/sql_select.cc:
        Auto merged
      tests/mysql_client_test.c:
        Auto merged
      674ecb21
  2. 26 Apr, 2007 3 commits
    • unknown's avatar
      Bug#27590: Wrong DATE/DATETIME comparison. · 7bb6a725
      unknown authored
      DATE and DATETIME can be compared either as strings or as int. Both
      methods have their disadvantages. Strings can contain valid DATETIME value
      but have insignificant zeros omitted thus became non-comparable with
      other DATETIME strings. The comparison as int usually will require conversion
      from the string representation and the automatic conversion in most cases is
      carried out in a wrong way thus producing wrong comparison result. Another
      problem occurs when one tries to compare DATE field with a DATETIME constant.
      The constant is converted to DATE losing its precision i.e. losing time part.
      
      This fix addresses the problems described above by adding a special
      DATE/DATETIME comparator. The comparator correctly converts DATE/DATETIME
      string values to int when it's necessary, adds zero time part (00:00:00)
      to DATE values to compare them correctly to DATETIME values. Due to correct
      conversion malformed DATETIME string values are correctly compared to other
      DATE/DATETIME values.
      
      As of this patch a DATE value equals to DATETIME value with zero time part.
      For example '2001-01-01' equals to '2001-01-01 00:00:00'.
      
      The compare_datetime() function is added to the Arg_comparator class.
      It implements the correct comparator for DATE/DATETIME values.
      Two supplementary functions called get_date_from_str() and get_datetime_value()
      are added. The first one extracts DATE/DATETIME value from a string and the
      second one retrieves the correct DATE/DATETIME value from an item.
      The new Arg_comparator::can_compare_as_dates() function is added and used
      to check whether two given items can be compared by the compare_datetime()
      comparator.
      Two caching variables were added to the Arg_comparator class to speedup the
      DATE/DATETIME comparison.
      One more store() method was added to the Item_cache_int class to cache int
      values.
      The new is_datetime() function was added to the Item class. It indicates
      whether the item returns a DATE/DATETIME value.
      
      
      sql/item.cc:
        Bug#27590: Wrong DATE/DATETIME comparison.
        One more store() method was added to the Item_cache_int class to cache int
        values.
        The new is_datetime() function was added to the Item class. It indicates
        whether the item returns a DATE/DATETIME value.
      sql/item.h:
        Bug#27590: Wrong DATE/DATETIME comparison.
        One more store() method was added to the Item_cache_int class to cache int
        values.
        The new is_datetime() function was added to the Item class. It indicates
        whether the item returns a DATE/DATETIME value.
      sql/item_cmpfunc.cc:
        Bug#27590: Wrong DATE/DATETIME comparison.
        The compare_datetime() function is added to the Arg_comparator class.
        It implements the correct comparator for DATE/DATETIME values.
        Two supplementary functions called get_date_from_str() and get_datetime_value()
        are added. The first one extracts DATE/DATETIME value from a string and the
        second one retrieves the correct DATE/DATETIME value from an item.
        The new Arg_comparator::can_compare_as_dates() function is added and used
        to check whether two given items can be compared by the compare_datetime()
        comparator.
      sql/item_cmpfunc.h:
        Bug#27590: Wrong DATE/DATETIME comparison.
        The compare_datetime() function is added to the Arg_comparator class.
        It implements the correct comparator for DATE/DATETIME values.
        Two supplementary functions called get_date_from_str() and get_datetime_value()
        are added. The first one extracts DATE/DATETIME value from a string and the
        second one retrieves the correct DATE/DATETIME value from an item.
        The new Arg_comparator::can_compare_as_dates() function is added and used
        to check whether two given items can be compared by the compare_datetime()
        comparator.
        Two caching variables were added to the Arg_comparator class to speedup the
        DATE/DATETIME comparison.
      mysql-test/include/ps_conv.inc:
        Test case adjusted after fix for bug#27590.
      mysql-test/r/distinct.result:
        Test cases results are corrected after fix for bug#27590.
      sql/sql_select.cc:
        Bug#27590: Wrong DATE/DATETIME comparison.
        The test_if_equality_guarantees_uniqueness() function now uses
        Arg_comparator::can_compare_as_dates() to detect comparable DATE/DATETIME items.
      mysql-test/r/ps_2myisam.result:
        The result of the adjusted test case after fix for bug#27590.
      mysql-test/r/ps_3innodb.result:
        The result of the adjusted test case after fix for bug#27590.
      mysql-test/r/ps_4heap.result:
        The result of the adjusted test case after fix for bug#27590.
      mysql-test/r/ps_5merge.result:
        The result of the adjusted test case after fix for bug#27590.
      mysql-test/r/subselect.result:
        Test cases results are corrected after fix for bug#27590.
      mysql-test/r/type_datetime.result:
        Added a test case for the bug#27590: Wrong DATE/DATETIME comparison.
      mysql-test/t/type_datetime.test:
        Added a test case for the bug#27590: Wrong DATE/DATETIME comparison.
      tests/mysql_client_test.c:
        Test case adjusted after fix for bug#27590.
      7bb6a725
    • unknown's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 7062a446
      unknown authored
      into  magare.gmz:/home/kgeorge/mysql/autopush/B27363-5.0-opt
      
      
      mysql-test/r/subselect.result:
        Auto merged
      mysql-test/t/subselect.test:
        Auto merged
      sql/item.cc:
        Auto merged
      sql/item_sum.cc:
        Auto merged
      7062a446
    • unknown's avatar
      Bug #27363: · e14fd2b6
      unknown authored
      Validity checks for nested set functions
      were not taking into account that the enclosed
      set function may be on a nest level that is
      lower than the nest level of the enclosing set
      function.
      Fixed by :
       - propagating max_sum_func_level
      up the enclosing set functions chain.
       - updating the max_sum_func_level of the 
         enclosing set function when the enclosed set
         function is aggregated above or on the same
         nest level of as the level of the enclosing 
         set function.
       - updating the max_arg_level of the enclosing
         set function on a reference that refers to
         an item above or on the same nest level
         as the level of the enclosing set function.
       - Treating both Item_field and Item_ref as possibly
         referencing items from outer nest levels.
      
      
      mysql-test/r/subselect.result:
        Bug #27363: test cases
      mysql-test/t/subselect.test:
        Bug #27363: test cases
      sql/item.cc:
        Bug #27363:
        Treat the reference as an outer reference for the
        enclosing set function even if it's referencing
        an item that is above the nest level of the
        enclosing set function.
        Consider both Item_field and Item_ref.
      sql/item_sum.cc:
        Bug #27363: Use the enclosed set function aggregation
        level to mark the enclosing set function even 
        if it's aggregated on a level that is above the 
        nest level of the enclosing set function.
        Pass max_sum_func_level up the accending branch of the
        recursion because it must take into account each
        directly or indirectly nested set function.
      e14fd2b6
  3. 25 Apr, 2007 1 commit
    • unknown's avatar
      Fixed bug #27650: · 209bf25a
      unknown authored
      INSERT into InnoDB table may cause "ERROR 1062 (23000): Duplicate entry..."
      errors or lost records after multi-row INSERT of the form:
      "INSERT INTO t (id...) VALUES (NULL...) ON DUPLICATE KEY UPDATE id=VALUES(id)",
      where "id" is an AUTO_INCREMENT column.
      
      It happens because InnoDB handler forgets to save next insert id after
      updating of auto_increment column with new values. As result of that
      last insert id stored inside InnoDB dictionary tables differs from it's
      cached thd->next_insert_id value.
      
      
      sql/ha_innodb.cc:
        Fixed bug #27650.
        INSERT into InnoDB table may cause "ERROR 1062 (23000): Duplicate entry..."
        errors or lost records after multi-row INSERT of the form:
        "INSERT INTO t (id...) VALUES (NULL...) ON DUPLICATE KEY UPDATE id=VALUES(id)",
        where "id" is an AUTO_INCREMENT column.
        It happens because InnoDB handler forgets to save next insert id after
        updating of auto_increment column with new values. As result of that
        last insert id stored inside InnoDB dictionary tables differs from it's
        cached thd->next_insert_id value.
        ha_innobase::write_row() function has been corrected.
      mysql-test/t/innodb_mysql.test:
        Added a test case for bug #27650.
      mysql-test/r/innodb_mysql.result:
        Added a test case for bug #27650.
      209bf25a
  4. 24 Apr, 2007 2 commits
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 5a35beff
      unknown authored
      into  moonbone.local:/mnt/gentoo64/work/27874-bug-5.0-opt-mysql
      
      
      5a35beff
    • unknown's avatar
      Bug#27874: Non-grouped columns are allowed by * in ONLY_FULL_GROUP_BY mode. · 3ffdeef0
      unknown authored
      When fields are inserted instead of * in the select list they were not marked
      for check for the ONLY_FULL_GROUP_BY mode.
      
      The Field_iterator_table::create_item() function now marks newly created
      items for check when in the ONLY_FULL_GROUP_BY mode.
      The setup_wild() and the insert_fields() functions now maintain the
      cur_pos_in_select_list counter for the ONLY_FULL_GROUP_BY mode.
      
      
      sql/sql_base.cc:
        Bug#27874: Non-grouped columns are allowed by * in ONLY_FULL_GROUP_BY mode.
        The setup_wild() and the insert_fields() functions now maintain the
        cur_pos_in_select_list counter for the ONLY_FULL_GROUP_BY mode.
      sql/table.cc:
        Bug#27874: Non-grouped columns are allowed by * in ONLY_FULL_GROUP_BY mode.
        The Field_iterator_table::create_item() function now marks newly created
        items for check when in the ONLY_FULL_GROUP_BY mode.
      mysql-test/r/group_by.result:
        Added a test case for the bug#27874: Non-grouped columns are allowed by * in ONLY_FULL_GROUP_BY mode.
      mysql-test/t/group_by.test:
        Added a test case for the bug#27874: Non-grouped columns are allowed by * in ONLY_FULL_GROUP_BY mode.
      3ffdeef0
  5. 23 Apr, 2007 2 commits
    • unknown's avatar
      Merge magare.gmz:/home/kgeorge/mysql/work/B27811-5.0-opt · cfe88311
      unknown authored
      into  magare.gmz:/home/kgeorge/mysql/autopush/B27811-5.0-opt
      
      
      cfe88311
    • unknown's avatar
      Bug #27811: · b570cee1
      unknown authored
       FORCE_INIT_OF_VARS was not defined for the 
       debug builds on Windows. This caused LINT_INIT
       macro to be defined as NOP and this triggers
       false alarms about use of uninitialized with
       the runtime libs of some Visual Studio versions.
       Fixed by defining FORCE_INIT_OF_VARS to match the
       state of the Windows
      
      
      CMakeLists.txt:
        Bug #27811: added the missing build option
      mysql-test/r/windows.result:
        Bug #27811: test case
      mysql-test/t/windows.test:
        Bug #27811: test case
      b570cee1
  6. 21 Apr, 2007 1 commit
  7. 20 Apr, 2007 12 commits
    • unknown's avatar
      Merge bk-internal.mysql.com:/data0/bk/mysql-5.0 · 8a702a1e
      unknown authored
      into  bk-internal.mysql.com:/data0/bk/mysql-5.0-opt
      
      
      sql/item_cmpfunc.cc:
        Auto merged
      sql/sql_select.cc:
        Auto merged
      sql/sql_show.cc:
        Auto merged
      sql/sql_view.cc:
        Auto merged
      8a702a1e
    • unknown's avatar
      Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 5fb275a6
      unknown authored
      into  mysql.com:/home/psergey/mysql-5.0-bug27939
      
      
      5fb275a6
    • unknown's avatar
      Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · d5ca6582
      unknown authored
      into  mysql.com:/home/psergey/mysql-5.0-bug27939
      
      
      sql/sql_select.cc:
        Auto merged
      d5ca6582
    • unknown's avatar
      Added missing result file for rpl_critical_errors. · 4a3027aa
      unknown authored
      
      mysql-test/r/rpl_critical_errors.result:
        New BitKeeper file ``mysql-test/r/rpl_critical_errors.result''
      4a3027aa
    • unknown's avatar
      Merge gshchepa.loc:/home/uchum/work/bk-trees/mysql-5.0-opt · 323a2135
      unknown authored
      into  gshchepa.loc:/home/uchum/work/bk-trees/mysql-5.0-opt-27704
      
      
      323a2135
    • unknown's avatar
      Merge gshchepa.loc:/home/uchum/work/bk-trees/mysql-4.1-opt-27704 · a501fdd6
      unknown authored
      into  gshchepa.loc:/home/uchum/work/bk-trees/mysql-5.0-opt-27704
      
      
      mysql-test/r/subselect.result:
        Auto merged
      mysql-test/t/row.test:
        Auto merged
      mysql-test/r/row.result:
        Test case updated for Bug#27704 (incorrect comparison
        of rows with NULL components).
      sql/item_cmpfunc.cc:
        Bug#27704: incorrect comparison of rows with NULL components.
      sql/item_cmpfunc.h:
        Bug#27704: incorrect comparison of rows with NULL components.
        Cosmetic fix.
      a501fdd6
    • unknown's avatar
      Bug#27704: incorrect comparison of rows with NULL components · a8f639fc
      unknown authored
      Support for NULL components was incomplete for row comparison,
      fixed.  Added support for abort_on_null at compare_row() like
      in 5.x
      
      
      sql/item_cmpfunc.h:
        Bug#27704: incorrect comparison of rows with NULL components
        Added support for abort_on_null at Item_bool_func2
        like in 5.x
      sql/item_cmpfunc.cc:
        Bug#27704: incorrect comparison of rows with NULL components
        Support for NULL components was incomplete for row comparison,
        fixed. Added support for abort_on_null at compare_row() like
        in 5.x
      mysql-test/t/row.test:
        Test case updated for Bug#27704 (incorrect comparison 
        of rows with NULL components)
      mysql-test/r/row.result:
        Test case updated for Bug#27704 (incorrect comparison 
        of rows with NULL components)
      mysql-test/r/subselect.result:
        Test case updated for Bug#27704 (incorrect comparison 
        of rows with NULL components)
      a8f639fc
    • unknown's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · a4ffe9e4
      unknown authored
      into  magare.gmz:/home/kgeorge/mysql/autopush/B27786-5.0-opt
      
      
      a4ffe9e4
    • unknown's avatar
      Bug #24778: Innodb: No result when using ORDER BY · f3e261a9
      unknown authored
      This bug was intruduced by the fix for bug#17212 (in 4.1). It is not 
      ok to call test_if_skip_sort_order since this function will 
      alter the execution plan. By contract it is not ok to call 
      test_if_skip_sort_order in this context.
      
      This bug appears only in the case when the optimizer has chosen 
      an index for accessing a particular table but finds a covering 
      index that enables it to skip ORDER BY. This happens in 
      test_if_skip_sort_order.
      
      
      mysql-test/r/key.result:
        Bug#24778
        
        test case.
        
        The bug causes the result to be the empty set.
      mysql-test/t/key.test:
        Bug#24778
        
        The minimal test case that reveals the bug. The reason for such a 
        complicated schema is that we have to convince the optimizer to 
        pick one index, then discard it in order to be able to skip 
        ORDER BY.
      sql/sql_select.cc:
        bug#24778
        
        Removed the call to test_if_skip_sort_order that constituted the
        bug.
      f3e261a9
    • unknown's avatar
      Merge romeo.(none):/home/bkroot/mysql-5.0-rpl · 8bc4d182
      unknown authored
      into  romeo.(none):/home/bk/merge-mysql-5.0
      
      
      client/mysql.cc:
        Auto merged
      sql/mysql_priv.h:
        Auto merged
      sql/mysqld.cc:
        Auto merged
      sql/set_var.cc:
        Auto merged
      sql/slave.cc:
        Auto merged
      sql/sql_class.cc:
        Auto merged
      8bc4d182
    • unknown's avatar
      Merge mkindahl@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl · b6451440
      unknown authored
      into  romeo.(none):/home/bkroot/mysql-5.0-rpl
      
      
      b6451440
    • unknown's avatar
      Bug #27786: · e0444ba4
      unknown authored
      When merging views into the enclosing statement
      the ORDER BY clause of the view is merged to the
      parent's ORDER BY clause.
      However when the VIEW is merged into an UNION
      branch the ORDER BY should be ignored. 
      Use of ORDER BY for individual SELECT statements
      implies nothing about the order in which the rows
      appear in the final result because UNION by default
      produces unordered set of rows.
      Fixed by ignoring the ORDER BY clause from the merge
      view when expanded in an UNION branch.
      
      
      mysql-test/r/view.result:
        Bug #27786: test case
      mysql-test/t/view.test:
        Bug #27786: test case
      sql/sql_lex.h:
        Bug #27786: add a is_union() inlined function
        Returns true if the unit represents an UNION.
      sql/sql_view.cc:
        Bug #27786: ignore ORDER BY in mergeable views when in UNION context
      e0444ba4
  8. 19 Apr, 2007 2 commits
  9. 18 Apr, 2007 2 commits
    • unknown's avatar
      BUG#27939: Early NULLs filtering doesn't work for eq_ref access · 1b8ecd27
      unknown authored
       - Turn it on for JT_EQ_REF access method
      
      
      mysql-test/r/join.result:
        BUG#27939: Testcase
      mysql-test/t/join.test:
        BUG#27939: Testcase
      1b8ecd27
    • unknown's avatar
      Fixed bug #27870. The bug that causes crashes manifests itself at some · 579c2bff
      unknown authored
      conditions when executing an equijoin query with WHERE condition
      containing a subquery predicate of the form join_attr NOT IN (SELECT ...).
      
      To resolve a problem of the correct evaluation of the expression
        attr NOT IN (SELECT ...)
      an array of guards is created to make it possible to filter out some 
      predicates of the EXISTS subquery into which the original subquery 
      predicate is transformed, in the cases when a takes the NULL value. 
      If attr is defined as a field that cannot be NULL than such an array 
      is not needed and is not created. 
      However if the field a occurred also an an equijoin predicate t2.a=t1.b
      and table t1 is accessed before table t2 then it may happen that the 
      the EXISTS subquery is pushed down to the condition evaluated just after
      table t1 has been accessed. In this case any occurrence of t2.a is 
      substituted for t1.b. When t1.b takes the value of NULL an attempt is 
      made to turn on the corresponding guard. This action caused a crash as 
      no guard array had been created.
      
      Now the code of Item_in_subselect::set_cond_guard_var checks that the guard
      array has been created before setting a guard variable on. Otherwise the
      method does nothing. It cannot results in returning a row that could be
      rejected as the condition t2.a=t1.b will be checked later anyway.        
      
      
      mysql-test/r/subselect3.result:
        Added a test case for bug #27870.
      mysql-test/t/subselect3.test:
        Added a test case for bug #27870.
      sql/item_subselect.h:
        Fixed bug #27870. The bug that causes crashes manifests itself at some
        conditions when executing an equijoin query with WHERE condition
        containing a subquery predicate of the form join_attr NOT IN (SELECT ...).
        
        Forced Item_in_subselect::set_cond_guard_var to check that the guard
        array has been created before setting a guard variable on. Otherwise the
        method does nothing.
      579c2bff
  10. 17 Apr, 2007 2 commits
  11. 15 Apr, 2007 4 commits
    • unknown's avatar
      item.cc: · 3e8252ff
      unknown authored
        Fix warning after fix for bug#27321.
      
      
      sql/item.cc:
        Fix warning after fix for bug#27321.
      3e8252ff
    • unknown's avatar
      subselect.test, subselect.result: · 6ad00742
      unknown authored
        After merge fix.
      
      
      mysql-test/r/subselect.result:
        After merge fix.
      mysql-test/t/subselect.test:
        After merge fix.
      6ad00742
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 9255aab5
      unknown authored
      into  moonbone.local:/mnt/gentoo64/work/27321-bug-5.0-opt-mysql
      
      
      mysql-test/r/subselect3.result:
        Auto merged
      sql/item.cc:
        Auto merged
      sql/item.h:
        Auto merged
      sql/sql_select.cc:
        Auto merged
      mysql-test/r/subselect.result:
        Manually merged
      mysql-test/t/subselect.test:
        Manually merged
      mysql-test/t/subselect3.test:
        Manually merged
      9255aab5
    • unknown's avatar
      Bug#27321: Wrong subquery result in a grouping select. · 1cf3b965
      unknown authored
      The Item_outer_ref class based on the Item_direct_ref class was always used
      to represent an outer field. But if the outer select is a grouping one and the 
      outer field isn't under an aggregate function which is aggregated in that
      outer select an Item_ref object should be used to represent such a field.
      If the outer select in which the outer field is resolved isn't grouping then
      the Item_field class should be used to represent such a field.
      This logic also should be used for an outer field resolved through its alias
      name.
      
      Now the Item_field::fix_outer_field() uses Item_outer_field objects to
      represent aliased and non-aliased outer fields for grouping outer selects
      only.
      Now the fix_inner_refs() function chooses which class to use to access outer
      field - the Item_ref or the Item_direct_ref. An object of the chosen class
      substitutes the original field in the Item_outer_ref object.
      The direct_ref and the found_in_select_list fields were added to the
      Item_outer_ref class.
      
      
      mysql-test/t/subselect3.test:
        Some test cases were corrected after the fix for the bug#27321.
      mysql-test/r/subselect3.result:
        Some test cases were corrected after the fix for the bug#27321.
      mysql-test/t/subselect.test:
        Added a test case for the bug#27321: Wrong subquery result in a grouping select.
      mysql-test/r/subselect.result:
        Added a test case for the bug#27321: Wrong subquery result in a grouping select.
        Some test cases were corrected after this fix.
      sql/sql_union.cc:
        Bug#27321: Wrong subquery result in a grouping select.
        Cleanup of the inner_refs_list.
      sql/sql_select.cc:
        Bug#27321: Wrong subquery result in a grouping select.
        Now the fix_inner_refs() function chooses which class to use to access outer
        field - the Item_ref or the Item_direct_ref. An object of the chosen class
        substitutes the original field in the Item_outer_ref object.
        A comment is corrected.
      sql/item.cc:
        Bug#27321: Wrong subquery result in a grouping select.
        Now the Item_field::fix_outer_field() uses Item_outer_field objects to
        represent aliased and non-aliased outer fields for grouping outer selects
        only.
      sql/item.h:
        Bug#27321: Wrong subquery result in a grouping select.
        The direct_ref and the found_in_select_list fields were added to the
        Item_outer_ref class.
      1cf3b965
  12. 14 Apr, 2007 3 commits
  13. 13 Apr, 2007 5 commits