- 07 May, 2007 1 commit
-
-
unknown authored
This bug affects multi-row INSERT ... ON DUPLICATE into table with PRIMARY KEY of AUTO_INCREMENT field and some additional UNIQUE indices. If the first row in multi-row INSERT contains duplicated values of UNIQUE indices, then following rows of multi-row INSERT (with either duplicated or unique key field values) may me applied to _arbitrary_ records of table as updates. This bug was introduced in 5.0. Related code was widely rewritten in 5.1, and 5.1 is already free of this problem. 4.1 was not affected too. When updating the row during INSERT ON DUPLICATE KEY UPDATE, we called restore_auto_increment(), which set next_insert_id back to 0, but we forgot to set clear_next_insert_id back to 0. restore_auto_increment() function has been fixed. sql/sql_class.h: Fixed bug #27954. Added commentary for THD::clear_next_insert_id variable. sql/handler.cc: Fixed bug #27954. When updating the row during INSERT ON DUPLICATE KEY UPDATE, we called restore_auto_increment(), which set next_insert_id back to 0, but we forgot to set clear_next_insert_id back to 0. restore_auto_increment() function has been fixed. mysql-test/t/insert_update.test: Added test case for bug #27954. mysql-test/r/insert_update.result: Added test case for bug #27954.
-
- 30 Apr, 2007 3 commits
- 29 Apr, 2007 13 commits
-
-
unknown authored
some rollup rows (rows with NULLs for grouping attributes) if GROUP BY list contained constant expressions. This happened because the results of constant expressions were not put in the temporary table used for duplicate elimination. In fact a constant item from the GROUP BY list of a ROLLUP query can be replaced for an Item_null_result object when a rollup row is produced . Now the JOIN::rollup_init function wraps any constant item referenced in the GROYP BY list of a ROLLUP query into an Item_func object of a special class that is never detected as constant item. This ensures creation of fields for such constant items in temporary tables and guarantees right results when the result of the rollup operation first has to be written into a temporary table, e.g. in the cases when duplicate elimination is required. mysql-test/r/olap.result: Added a test case for bug #24856. mysql-test/t/olap.test: Added a test case for bug #24856. sql/item_func.h: Fixed bug #24856: the result set of a ROLLUP query with DISTINCT could lack some rollup rows (rows with NULLs for grouping attributes) if GROUP BY list contained constant expressions. Itroduced class Item_func_rollup_const derived from Item_func. The object of this class are never detected as constant items. We use them for wrapping constant items from the GROUP BY list of any ROLLUP query. This wrapping allows us to ensure writing constant items into temporary tables whenever the result of the ROLLUP operation has to be written into a temporary table, e.g. when ROLLUP is used together with DISTINCT in the SELECT list. sql/sql_select.cc: Fixed bug #24856: the result set of a ROLLUP query with DISTINCT could lack some rollup rows (rows with NULLs for grouping attributes) if GROUP BY list contained constant expressions. Now the JOIN::rollup_init function wraps any constant item referenced in the GROYP BY list of a ROLLUP query into an Item_func object of a special class that is never detected as constant item. This ensures creation of fields for such constant items in temporary tables and guarantees right results when the result of the rollup operation first has to be written into a temporary table, e.g. in the cases when duplicate elimination is required.
-
unknown authored
into moonbone.local:/mnt/gentoo64/work/16377-bug-5.0-opt-mysql
-
unknown authored
The test case for the bug#27590 is altered. mysql-test/t/type_datetime.test: The test case for the bug#27590 is altered. mysql-test/r/type_datetime.result: The test case for the bug#27590 is altered.
-
unknown authored
into mysql.com:/d2/hf/mrg/mysql-5.0-opt
-
unknown authored
into mysql.com:/d2/hf/mrg/mysql-5.0-opt CMakeLists.txt: Auto merged sql/ha_innodb.cc: Auto merged sql/item_cmpfunc.cc: Auto merged tests/mysql_client_test.c: Auto merged mysql-test/r/innodb_mysql.result: merging mysql-test/t/innodb_mysql.test: merging
-
unknown authored
into mysql.com:/d2/hf/mrg/mysql-4.1-opt
-
unknown authored
-
unknown authored
into gshchepa.loc:/home/uchum/work/bk-trees/mysql-5.0-opt-13191 sql/key.cc: Patch to eliminate compilation errors under VC after bug #13191 fix.
-
unknown authored
-
unknown authored
into gshchepa.loc:/home/uchum/work/bk-trees/mysql-5.0-opt-13191 mysql-test/r/innodb_mysql.result: SCCS merged mysql-test/t/innodb_mysql.test: SCCS merged sql/field.cc: Merge with 4.1, fix of bug #13191. sql/field.h: Merge with 4.1, fix of bug #13191. sql/key.cc: Merge with 4.1, fix of bug #13191.
-
unknown authored
into gshchepa.loc:/home/uchum/work/bk-trees/mysql-4.1-opt-13191
-
unknown authored
into gshchepa.loc:/home/uchum/work/bk-trees/mysql-5.0-opt
-
unknown authored
-
- 28 Apr, 2007 3 commits
-
-
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.
-
unknown authored
into gshchepa.loc:/home/uchum/work/bk-trees/mysql-5.0-opt
-
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.
-
- 27 Apr, 2007 4 commits
-
-
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.
-
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
-
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
-
unknown authored
into whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb sql/ha_ndbcluster.cc: Auto merged
-
- 26 Apr, 2007 13 commits
-
-
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.
-
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
-
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.
-
unknown authored
into mysql.com:/home/svoj/devel/mysql/merge/mysql-5.0-engines
-
unknown authored
into mysql.com:/home/svoj/devel/mysql/merge/mysql-5.0-engines
-
unknown authored
into mysql.com:/home/svoj/devel/mysql/merge/mysql-4.1-engines
-
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.
-
unknown authored
into trift-lap.fambruehe:/MySQL/M50/push-5.0
-
unknown authored
into trift-lap.fambruehe:/MySQL/M41/push-4.1
-
unknown authored
into trift-lap.fambruehe:/MySQL/M50/push-5.0 configure.in: Auto merged include/Makefile.am: Auto merged
-
unknown authored
into whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
-
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
-
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.
-
- 25 Apr, 2007 3 commits
-
-
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.
-
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.
-
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.
-