into olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug24856
sql/item_func.h:
Auto merged
sql/sql_select.cc:
Auto merged
mysql-test/r/olap.result:
Manual merge.
mysql-test/t/olap.test:
Manual merge.
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.
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.
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
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.
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.
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.
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.
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
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
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.
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
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.
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.
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
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.
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.
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.
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.
into mysql.com:/home/ram/work/b27515/b27515.5.0
mysql-test/r/grant.result:
Auto merged
mysql-test/t/grant.test:
Auto merged
sql/sql_parse.cc:
Auto merged
into mysql.com:/home/ram/work/b27515/b27515.5.0
mysql-test/r/grant.result:
will be merged in a post-merge CS
mysql-test/t/grant.test:
manual merge
sql/sql_parse.cc:
manual merge
into pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
client/mysql.cc:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
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
into pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
Makefile.am:
Auto merged
client/mysql_upgrade.c:
Auto merged
sql/mysql_priv.h:
Auto merged
tests/mysql_client_test.c:
Auto merged
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