1. 29 Apr, 2007 8 commits
  2. 28 Apr, 2007 3 commits
    • unknown's avatar
      Fixed bug #13191. · 98c0da4e
      unknown authored
      INSERT...ON DUPLICATE KEY UPDATE may cause error 1032: 
      "Can't find record in ..." if we are inserting into
      InnoDB table unique index of partial key with
      underlying UTF-8 string field.
      
      This error occurs because INSERT...ON DUPLICATE uses a wrong
      procedure to copy string fields of multi-byte character sets
      for index search.
      
      
      mysql-test/t/innodb_mysql.test:
        Added test case for bug #13191.
      mysql-test/r/innodb_mysql.result:
        Added test case for bug #13191.
      sql/field.h:
        Fixed bug #13191.
        Field_string::get_key_image() virtual function was overloaded
        to implement copying of variable length character (UTF-8) fields.
        Field::get_key_image() function prototype has been changed to
        return byte size of copied data.
      sql/field.cc:
        Fixed bug #13191.
        Field_string::get_key_image() virtual function was overloaded
        to implement copying of variable length character (UTF-8) fields.
        Field::get_key_image() function prototype has been changed to
        return byte size of copied data.
      sql/key.cc:
        Fixed bug #13191.
        INSERT...ON DUPLICATE KEY UPDATE may cause error 1032: 
        "Can't find record in ...".
        This error occurs because INSERT...ON DUPLICATE uses
        a wrong procedure to copy field parts for index search.
        key_copy() function has been fixed.
      98c0da4e
    • unknown's avatar
      Merge gshchepa.loc:/home/uchum/work/bk-trees/mysql-4.1-opt · fd14779b
      unknown authored
      into  gshchepa.loc:/home/uchum/work/bk-trees/mysql-5.0-opt
      
      
      fd14779b
    • unknown's avatar
      Fixed bug #20710. · f90870e9
      unknown authored
      This bug occurs when error message length exceeds allowed limit: my_error()
      function outputs "%s" sequences instead of long string arguments.
      
      Formats like %-.64s are very common in errmsg.txt files, however my_error()
      function simply ignores precision of those formats.
      
      
      mysys/my_error.c:
        Fixed bug #20710.
        This bug occurs when error message length exceeds allowed limit: my_error()
        function output "%s" sequences instead of long string arguments.
        my_error() function has been fixed to accept formats like %-.64s.
      mysql-test/t/alter_table.test:
        Added test case for bug #20710.
      mysql-test/r/alter_table.result:
        Added test case for bug #20710.
      f90870e9
  3. 27 Apr, 2007 4 commits
    • unknown's avatar
      Additional fix for the bug#27590. · 51d19e32
      unknown authored
      
      tests/mysql_client_test.c:
        Fixed failing build on the windows platform.
      mysql-test/r/ps_7ndb.result:
        The result of the adjusted test case after fix for bug#27590.
      mysql-test/r/ps_6bdb.result:
        The result of the adjusted test case after fix for bug#27590.
      sql/item_cmpfunc.cc:
        A warning is fixed.
      51d19e32
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 17fbe3b2
      unknown authored
      into  moonbone.local:/mnt/gentoo64/work/16377-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
      17fbe3b2
    • 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
    • unknown's avatar
      Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.0 · 56c18450
      unknown authored
      into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
      
      
      sql/ha_ndbcluster.cc:
        Auto merged
      56c18450
  4. 26 Apr, 2007 13 commits
    • unknown's avatar
      Bug#16377: Wrong DATE/DATETIME comparison in BETWEEN function. · 7216281e
      unknown authored
      The BETWEEN function was comparing DATE/DATETIME values either as ints or as
      strings. Both methods have their disadvantages and may lead to a wrong
      result.
      
      Now BETWEEN function checks whether all of its arguments has the STRING result
      types and at least one of them is a DATE/DATETIME item. If so it sets up
      two Arg_comparator obects to compare with the compare_datetime() comparator
      and uses them to compare such items.
      
      Added two Arg_comparator object members and one flag to the
      Item_func_between class for the correct DATE/DATETIME comparison.
      The Item_func_between::fix_length_and_dec() function now detects whether
      it's used for DATE/DATETIME comparison and sets up newly added Arg_comparator
      objects to do this.
      The Item_func_between::val_int() now uses Arg_comparator objects to perform
      correct DATE/DATETIME comparison.
      The owner variable of the Arg_comparator class now can be set to NULL if the
      caller wants to handle NULL values by itself.
      Now the Item_date_add_interval::get_date() function ajusts cached_field type according to the detected type.
      
      
      mysql-test/t/type_datetime.test:
        Added a test case for the bug#16377: Wrong DATE/DATETIME comparison in BETWEEN function.
      mysql-test/r/type_datetime.result:
        Added a test case for the bug#16377: Wrong DATE/DATETIME comparison in BETWEEN function.
      mysql-test/r/query_cache.result:
        A test case result corrected after the fix for bug#16377.
      sql/item_timefunc.cc:
        Bug#16377: Wrong DATE/DATETIME comparison in BETWEEN function.
        Now the Item_date_add_interval::get_date() function ajusts cached_field type according to the detected type.
      sql/item_cmpfunc.cc:
        Bug#16377: Wrong DATE/DATETIME comparison in BETWEEN function.
        The Item_func_between::fix_length_and_dec() function now detects whether
        it's used for DATE/DATETIME comparison and sets up newly added Arg_comparator
        objects to do this.
        The Item_func_between::val_int() now uses Arg_comparators to perform correct
        DATE/DATETIME comparison.
        The owner variable of the Arg_comparator class now can be set to NULL if the
        caller wants to handle NULL values by itself.
      sql/item_cmpfunc.h:
        Bug#16377: Wrong DATE/DATETIME comparison in BETWEEN function.
        Added two Arg_comparator object members and one flag
        to the Item_func_between class for the correct DATE/DATETIME comparison.
      7216281e
    • unknown's avatar
      Merge moonbone.local:/mnt/gentoo64/work/27590-bug-5.0-opt-mysql · ed7a9e8b
      unknown authored
      into  moonbone.local:/mnt/gentoo64/work/16377-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
      ed7a9e8b
    • 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 mysql.com:/home/svoj/devel/mysql/merge/mysql-4.1-engines · f63100e1
      unknown authored
      into  mysql.com:/home/svoj/devel/mysql/merge/mysql-5.0-engines
      
      
      f63100e1
    • unknown's avatar
      Merge svojtovich@bk-internal.mysql.com:/home/bk/mysql-5.0-build · 38cbcf7c
      unknown authored
      into  mysql.com:/home/svoj/devel/mysql/merge/mysql-5.0-engines
      
      
      38cbcf7c
    • unknown's avatar
      Merge svojtovich@bk-internal.mysql.com:/home/bk/mysql-4.1-build · a4bfd854
      unknown authored
      into  mysql.com:/home/svoj/devel/mysql/merge/mysql-4.1-engines
      
      
      a4bfd854
    • unknown's avatar
      Merge trift-lap.fambruehe:/MySQL/M50/clone-5.0 · 11a36eb5
      unknown authored
      into  trift-lap.fambruehe:/MySQL/M50/push-5.0
      
      
      Makefile.am:
        Auto merged
      scripts/mysql_install_db.sh:
        Auto merged
      scripts/mysql_system_tables.sql:
        Auto merged
      scripts/mysql_system_tables_data.sql:
        Auto merged
      sql/item_subselect.h:
        Auto merged
      ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
        Manual merge: Use the symbolic constant.
      ndb/test/ndbapi/testScanFilter.cpp:
        Manual merge: Use the standard text.
      11a36eb5
    • unknown's avatar
      Merge trift-lap.fambruehe:/MySQL/M41/push-4.1 · 7115585f
      unknown authored
      into  trift-lap.fambruehe:/MySQL/M50/push-5.0
      
      
      7115585f
    • unknown's avatar
      Merge trift-lap.fambruehe:/MySQL/M41/mysql-4.1 · b6eb3e40
      unknown authored
      into  trift-lap.fambruehe:/MySQL/M41/push-4.1
      
      
      b6eb3e40
    • unknown's avatar
      Merge trift-lap.fambruehe:/MySQL/M50/mysql-5.0 · 8a6629e1
      unknown authored
      into  trift-lap.fambruehe:/MySQL/M50/push-5.0
      
      
      configure.in:
        Auto merged
      include/Makefile.am:
        Auto merged
      8a6629e1
    • unknown's avatar
      Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.0 · 11a463bb
      unknown authored
      into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
      
      
      11a463bb
    • 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
  5. 25 Apr, 2007 8 commits
    • 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
    • unknown's avatar
      Merge ymer.(none):/usr/local/mysql/mysql-5.0-ndb-bug27370 · 4a517d4c
      unknown authored
      into  ymer.(none):/usr/local/mysql/mysql-5.0-ndb
      
      
      ndb/include/ndbapi/NdbScanOperation.hpp:
        Auto merged
      ndb/src/ndbapi/NdbBlob.cpp:
        Auto merged
      ndb/src/ndbapi/NdbScanOperation.cpp:
        Auto merged
      ndb/test/run-test/daily-basic-tests.txt:
        Auto merged
      ndb/test/ndbapi/testBlobs.cpp:
        Manual merge.
      4a517d4c
    • unknown's avatar
      Fix test case that was broken for builds without InnoDB. · 24623226
      unknown authored
      
      mysql-test/t/sp.test:
        Disable warnings during table creation in one place where engine=innodb is used, in order to make this test case work with a mysqld that was compiled without InnoDB.
      24623226
    • unknown's avatar
      Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/41 · 4573d034
      unknown authored
      into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/50
      
      
      4573d034
    • unknown's avatar
      Merge ymer.(none):/usr/local/mysql/mysql-5.0-telco-gca · 806e3528
      unknown authored
      into  ymer.(none):/usr/local/mysql/mysql-5.0-ndb
      
      
      ndb/include/ndbapi/NdbTransaction.hpp:
        Auto merged
      ndb/src/ndbapi/NdbTransaction.cpp:
        Auto merged
      ndb/test/run-test/daily-basic-tests.txt:
        Auto merged
      806e3528
    • unknown's avatar
      Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-telco-gca · 9a9ff150
      unknown authored
      into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
      
      
      sql/ha_ndbcluster.cc:
        SCCS merged
      9a9ff150
    • unknown's avatar
    • unknown's avatar
      BUG#27495: Missing implementation of NdbTransaction::executeAsynch(). · 2399e1c9
      unknown authored
      NdbTransaction::executeAsynch() was not implemented. Add implementation.
      
      
      ndb/include/ndbapi/NdbTransaction.hpp:
        executeAsynch() should probably allow setting forceSend.
      ndb/src/ndbapi/NdbTransaction.cpp:
        Add missing implementation of executeAsynch().
      ndb/test/ndbapi/testNdbApi.cpp:
        Add test case.
      ndb/test/run-test/daily-basic-tests.txt:
        Add new test.
      2399e1c9
  6. 24 Apr, 2007 4 commits
    • unknown's avatar
      Merge pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.0-build-work · 9e509675
      unknown authored
      into  pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.0-build
      
      
      9e509675
    • unknown's avatar
      restrict recently added file to GPLv2 · 879e0a12
      unknown authored
      
      ndb/test/ndbapi/testScanFilter.cpp:
        restrict to GPLv2
      879e0a12
    • 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