- 04 May, 2007 2 commits
-
-
gkodinov/kgeorge@magare.gmz authored
into magare.gmz:/home/kgeorge/mysql/autopush/B27807-5.0-opt
-
gkodinov/kgeorge@magare.gmz authored
Non-correlated scalar subqueries may get executed in EXPLAIN at the optimization phase if they are part of a right hand sargable expression. If the scalar subquery uses a temp table to materialize its results it will replace the subquery structure from the parser with a simple select from the materialization table. As a result the EXPLAIN will crash as the temporary materialization table is not to be shown in EXPLAIN at all. Fixed by preserving the original query structure right after calling optimize() for scalar subqueries with temp tables executed during EXPLAIN.
-
- 02 May, 2007 1 commit
-
-
igor@olga.mysql.com authored
'not exists' optimization is applied. In fact 'not exists' optimization did not work anymore after the patch introducing the evaluate_join_record function had been applied. Corrected the evaluate_join_record function to respect the 'not_exists' optimization.
-
- 30 Apr, 2007 3 commits
-
-
igor@olga.mysql.com authored
-
igor@olga.mysql.com authored
into olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug24856
-
igor@olga.mysql.com authored
-
- 29 Apr, 2007 13 commits
-
-
igor@olga.mysql.com 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.
-
evgen@moonbone.local authored
into moonbone.local:/mnt/gentoo64/work/16377-bug-5.0-opt-mysql
-
evgen@moonbone.local authored
The test case for the bug#27590 is altered.
-
holyfoot/hf@mysql.com/hfmain.(none) authored
into mysql.com:/d2/hf/mrg/mysql-5.0-opt
-
holyfoot/hf@mysql.com/hfmain.(none) authored
into mysql.com:/d2/hf/mrg/mysql-5.0-opt
-
holyfoot/hf@mysql.com/hfmain.(none) authored
into mysql.com:/d2/hf/mrg/mysql-4.1-opt
-
gshchepa/uchum@gshchepa.loc authored
-
gshchepa/uchum@gshchepa.loc authored
into gshchepa.loc:/home/uchum/work/bk-trees/mysql-5.0-opt-13191
-
gshchepa/uchum@gshchepa.loc authored
-
gshchepa/uchum@gshchepa.loc authored
into gshchepa.loc:/home/uchum/work/bk-trees/mysql-5.0-opt-13191
-
gshchepa/uchum@gshchepa.loc authored
into gshchepa.loc:/home/uchum/work/bk-trees/mysql-4.1-opt-13191
-
gshchepa/uchum@gshchepa.loc authored
into gshchepa.loc:/home/uchum/work/bk-trees/mysql-5.0-opt
-
gshchepa/uchum@gshchepa.loc authored
-
- 28 Apr, 2007 3 commits
-
-
gshchepa/uchum@gshchepa.loc 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.
-
gshchepa/uchum@gshchepa.loc authored
into gshchepa.loc:/home/uchum/work/bk-trees/mysql-5.0-opt
-
gshchepa/uchum@gshchepa.loc 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.
-
- 27 Apr, 2007 4 commits
-
-
evgen@sunlight.local authored
-
evgen@moonbone.local authored
into moonbone.local:/mnt/gentoo64/work/16377-bug-5.0-opt-mysql
-
evgen@moonbone.local authored
into moonbone.local:/mnt/gentoo64/work/27590-bug-5.0-opt-mysql
-
tomas@whalegate.ndb.mysql.com authored
into whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
-
- 26 Apr, 2007 13 commits
-
-
evgen@moonbone.local 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.
-
evgen@moonbone.local authored
into moonbone.local:/mnt/gentoo64/work/16377-bug-5.0-opt-mysql
-
evgen@moonbone.local 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.
-
svoj@mysql.com/april.(none) authored
into mysql.com:/home/svoj/devel/mysql/merge/mysql-5.0-engines
-
svoj@mysql.com/april.(none) authored
into mysql.com:/home/svoj/devel/mysql/merge/mysql-5.0-engines
-
svoj@mysql.com/april.(none) authored
into mysql.com:/home/svoj/devel/mysql/merge/mysql-4.1-engines
-
joerg@trift-lap.fambruehe authored
into trift-lap.fambruehe:/MySQL/M50/push-5.0
-
joerg@trift-lap.fambruehe authored
into trift-lap.fambruehe:/MySQL/M50/push-5.0
-
joerg@trift-lap.fambruehe authored
into trift-lap.fambruehe:/MySQL/M41/push-4.1
-
joerg@trift-lap.fambruehe authored
into trift-lap.fambruehe:/MySQL/M50/push-5.0
-
tomas@whalegate.ndb.mysql.com authored
into whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
-
gkodinov/kgeorge@magare.gmz authored
into magare.gmz:/home/kgeorge/mysql/autopush/B27363-5.0-opt
-
gkodinov/kgeorge@magare.gmz 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.
-
- 25 Apr, 2007 1 commit
-
-
gshchepa/uchum@gshchepa.loc 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.
-