The LEAST/GREATEST functions compared DATE/DATETIME values as
strings which in some cases could lead to a wrong result.
A new member function called cmp_datetimes() is added to the
Item_func_min_max class. It compares arguments in DATETIME context
and returns index of the least/greatest argument.
The Item_func_min_max::fix_length_and_dec() function now detects when
arguments should be compared in DATETIME context and sets the newly
added flag compare_as_dates. It indicates that the cmp_datetimes() function
should be called to get a correct result.
Item_func_min_max::val_xxx() methods are corrected to call the
cmp_datetimes() function when needed.
Objects of the Item_splocal class now stores and reports correct original
field type.
mysql-test/t/type_datetime.test:
Added a test case for the bug#27759: Wrong DATE/DATETIME comparison in LEAST()/GREATEST() functions.
mysql-test/r/type_datetime.result:
Added a test case for the bug#27759: Wrong DATE/DATETIME comparison in LEAST()/GREATEST() functions.
mysql-test/r/sp-vars.result:
A test case result corrected after the fix for the bug#27759.
sql/mysql_priv.h:
Bug#27759: Wrong DATE/DATETIME comparison in LEAST()/GREATEST() functions.
Added the prototype of the get_datetime_value() function.
sql/item_func.h:
Bug#27759: Wrong DATE/DATETIME comparison in LEAST()/GREATEST() functions.
A new member function called cmp_datetimes() is added to the
Item_func_min_max class.
sql/item_func.cc:
Bug#27759: Wrong DATE/DATETIME comparison in LEAST()/GREATEST() functions.
A new member function called cmp_datetimes() is added to the
Item_func_min_max class. It compares arguments in DATETIME context
and returns index of the least/greatest argument.
The Item_func_min_max::fix_length_and_dec() function now detects when
arguments should be compared in DATETIME context and sets the newly
added flag compare_as_dates. It indicates that the cmp_datetimes() function
should be called to get a correct result.
Item_func_min_max::val_xxx() methods are corrected to call the
cmp_datetimes() function when needed.
sql/item_cmpfunc.cc:
Bug#27759: Wrong DATE/DATETIME comparison in LEAST()/GREATEST() functions.
The get_datetime_value() function is no longer static.
sql/item.h:
Bug#27759: Wrong DATE/DATETIME comparison in LEAST()/GREATEST() functions.
Objects of the Item_splocal class now stores and reports correct original
field type.
sql/item.cc:
Bug#27759: Wrong DATE/DATETIME comparison in LEAST()/GREATEST() functions.
Objects of the Item_splocal class now stores and reports correct original
field type.
into magare.gmz:/home/kgeorge/mysql/work/B27531-5.0-opt
mysql-test/t/join.test:
Auto merged
sql/sql_select.cc:
Auto merged
mysql-test/r/join.result:
SCCS merged
When checking for applicability of join cache
we must disable its usage only if there is no
temp table in use.
When a temp table is used we can use join
cache (and it will not make the result-set
unordered) to fill the temp table. The filesort()
operation is then applied to the data in the temp
table and hence is not affected by join cache
usage.
Fixed by narrowing the condition for disabling
join cache to exclude the case where temp table
is used.
mysql-test/r/join.result:
Bug #27531: test case
mysql-test/t/join.test:
Bug #27531: test case
sql/sql_select.cc:
Bug #27531:
Disable join cache only if not using temp table
allow select into out file from I_S if user has FILE privilege
otherwise issue an error
mysql-test/r/outfile.result:
test result
mysql-test/t/outfile.test:
test case
sql/sql_parse.cc:
allow select into out file from I_S if user has FILE privilege
otherwise issue an error
into moonbone.local:/mnt/gentoo64/work/23656-bug-5.0-opt-mysql
mysql-test/r/cast.result:
Auto merged
mysql-test/t/cast.test:
Auto merged
sql/item_func.cc:
Manual merge
into magare.gmz:/home/kgeorge/mysql/autopush/B27807-5.0-opt
sql/sql_select.cc:
Auto merged
mysql-test/r/subselect.result:
merge to 5.0-opt
mysql-test/t/subselect.test:
merge to 5.0-opt
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.
mysql-test/r/subselect.result:
Bug #27807: test case
mysql-test/t/subselect.test:
Bug #27807: test case
sql/item_subselect.cc:
Bug #27807: preserve the join structure
sql/sql_select.cc:
Bug #27807: introduce initialization function for tmp_join
sql/sql_select.h:
Bug #27807: introduce initialization function for tmp_join
The generic string to int conversion was used by the Item_func_signed and
the Item_func_unsigned classes to convert DATE/DATETIME values to the
SIGNED/UNSIGNED type. But this conversion produces wrong results for such
values.
Now if the item which result has to be converted can return its result as
longlong then the item->val_int() method is used to allow the item to carry
out the conversion itself and return the correct result.
This condition is checked in the Item_func_signed::val_int() and the
Item_func_unsigned::val_int() functions.
mysql-test/t/cast.test:
Added a test case for the bug#23656: Wrong conversion result of a DATETIME to integer using CAST function.
mysql-test/r/cast.result:
Added a test case for the bug#23656: Wrong conversion result of a DATETIME to integer using CAST function.
sql/item_func.cc:
Bug#23656: Wrong conversion result of a DATETIME to integer using CAST function.
Now if the item which result has to be converted can return its result as
longlong then the item->val_int() method is used to allow the item to carry
out the conversion itself and return the correct result.
This condition is checked in the Item_func_signed::val_int() and the
Item_func_unsigned::val_int() functions.
(here: "scripts/mysql_fix_privilege_tables{.sql,_sql.c}"). Important for cross-builds.
scripts/Makefile.am:
Generated files like "mysql_fix_privilege_tables{.sql,_sql.c}" should survive
a "make clean", this is essential for cross-builds.
So move them from "CLEANFILES" to "DISTCLEANFILES".
source tarball, this is essential for cross builds, like for NetWare.
scripts/Makefile.am:
On a fast build machine, both the source (mysql_fix_privilege_tables.sql)
and the generated file (mysql_fix_privilege_tables_sql.c) may have identical timestamps
(granularity is one second only, may be too coarse).
If that happens, the Makefile rule will fire, and "comp_sql" will be built and called -
which fails in a cross build, like for NetWare.
Prevent that by sleeping for 5 (five) seconds, this will ensure a time difference.
client/Makefile.am:
"Makefile" command lines must start with a tab, not with blanks.
libmysqld/Makefile.am:
"Makefile" command lines must start with a tab, not with blanks.
netware/Makefile.am:
"Makefile" command lines must start with a tab, not with blanks.
scripts/Makefile.am:
"Makefile" command lines must start with a tab, not with blanks.
win/Makefile.am:
After a backslash (to mark a continuation line) there must not be a trailing blank.
'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.
mysql-test/r/join_outer.result:
Added a test case for bug #28188.
mysql-test/t/join_outer.test:
Added a test case for bug #28188.
sql/sql_select.cc:
Fixed bug #28188: performance degradation for outer join queries to which
'not exists' optimization is applied.
Corrected the evaluate_join_record function to respect the 'not_exists'
optimization.
- validated current result files
- forced order by and removed time stamps
removed a_version files (since do not make sense now when suite is in the main tree)
Note: datadict tests still fail as a result of regression bug 28181 in 5.0.42 (discovered
while performing this update) - tests should run clean once bug is fixed
BitKeeper/deleted/.del-a_version_check.test:
Delete: mysql-test/suite/funcs_1/t/a_version_check.test
BitKeeper/deleted/.del-a_version_check.result:
Delete: mysql-test/suite/funcs_1/r/a_version_check.result
BitKeeper/deleted/.del-innodb_views.warnings:
Delete: mysql-test/suite/funcs_1/r/innodb_views.warnings
BitKeeper/deleted/.del-memory_views.warnings:
Delete: mysql-test/suite/funcs_1/r/memory_views.warnings
BitKeeper/deleted/.del-myisam_views.warnings:
Delete: mysql-test/suite/funcs_1/r/myisam_views.warnings
mysql-test/suite/funcs_1/datadict/datadict_load.inc:
Modified to correct failiure to return host name on some systems
mysql-test/suite/funcs_1/datadict/datadict_master.inc:
corrections to force order by on queries and replace time stamps with strings
mysql-test/suite/funcs_1/datadict/datadict_show_schema.inc:
corrections to force order by on queries
mysql-test/suite/funcs_1/r/innodb__datadict.result:
Updated result file with order bu selects, elimination of time stamps
and selects with empty user (that we don't have anymore)
mysql-test/suite/funcs_1/r/innodb_func_view.result:
confirming existing results as correct ones - old result file had wrong cast values returned
mysql-test/suite/funcs_1/r/innodb_trig_08.result:
confirming existing results as correct ones - updated error message
mysql-test/suite/funcs_1/r/innodb_views.result:
confirming existing results as correct ones - returned results are correct,
wrong 'expected' error messages removed
mysql-test/suite/funcs_1/r/memory__datadict.result:
Updated result file with order bu selects, elimination of time stamps
and selects with empty user (that we don't have anymore)
mysql-test/suite/funcs_1/r/memory_func_view.result:
confirming existing results as correct ones - old result file had wrong cast values returned
mysql-test/suite/funcs_1/r/memory_trig_08.result:
confirming existing results as correct ones - updated error message
mysql-test/suite/funcs_1/r/memory_views.result:
confirming existing results as correct ones - returned results are correct,
wrong 'expected' error messages removed
mysql-test/suite/funcs_1/r/myisam__datadict.result:
Updated result file with order bu selects, elimination of time stamps
and selects with empty user (that we don't have anymore)
mysql-test/suite/funcs_1/r/myisam_func_view.result:
confirming existing results as correct ones - old result file had wrong cast values returned
mysql-test/suite/funcs_1/r/myisam_trig_08.result:
confirming existing results as correct ones - updated error message
mysql-test/suite/funcs_1/r/myisam_views.result:
confirming existing results as correct ones - returned results are correct,
wrong 'expected' error messages removed
mysql-test/suite/funcs_1/t/disabled.def:
Updated disabled messages with clearer ones
mysql-test/suite/funcs_1/views/views_master.inc:
removed invalid -- lines generating warning files
into quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/50
mysql-test/r/alter_table.result:
Auto merged
mysql-test/t/alter_table.test:
Auto merged
tmpdir has uppercase
Fix: don't convert mysql_tmpdir to lower case when building the path to a
temporary table
mysql-test/include/have_lowercase1.inc:
BitKeeper file /benchmarks/ext3/TOSAVE/tsmith/bk/maint/b27653/50/mysql-test/include/have_lowercase1.inc
mysql-test/r/lowercase1.require:
BitKeeper file /benchmarks/ext3/TOSAVE/tsmith/bk/maint/b27653/50/mysql-test/r/lowercase1.require
mysql-test/r/lowercase_mixed_tmpdir.result:
BitKeeper file /benchmarks/ext3/TOSAVE/tsmith/bk/maint/b27653/50/mysql-test/r/lowercase_mixed_tmpdir.result
mysql-test/t/lowercase_mixed_tmpdir-master.opt:
BitKeeper file /benchmarks/ext3/TOSAVE/tsmith/bk/maint/b27653/50/mysql-test/t/lowercase_mixed_tmpdir-master.opt
mysql-test/t/lowercase_mixed_tmpdir-master.sh:
BitKeeper file /benchmarks/ext3/TOSAVE/tsmith/bk/maint/b27653/50/mysql-test/t/lowercase_mixed_tmpdir-master.sh
mysql-test/t/lowercase_mixed_tmpdir.test:
BitKeeper file /benchmarks/ext3/TOSAVE/tsmith/bk/maint/b27653/50/mysql-test/t/lowercase_mixed_tmpdir.test
sql/sql_table.cc:
When building the path for a temporary table file, do not
convert mysql_tmpdir to lower case; lower_case_table_names
should not apply to mysql_tmpdir.
scripts/Makefile.am:
Necessary change for cross-builds (like we do for NetWare):
Generate "mysql_fix_privilege_tables_sql.c" during Bootstrap and include it in
the source tarball which is created via "make dist".
mysqldump didn't properly handle getting no data on
SHOW CREATE PROCEDURE. If S/C/P fails (due to dumping
user's insufficient privileges on mysql.proc, say),
mysqldump will print a comment to that effect to the
output and return an error-code. If the -f (force) option
is used, the dump will continue, otherwise, it will abort
right there and then.
Also fixes Bug#22761, "mysqldump reports no errors when using
--routines without mysql.proc privileges"
---
Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into mysql.com:/home/tnurnberg/27293/50-27293
client/mysqldump.c:
Bug#27293: mysqldump crashes when dumping procedure defined by different user
handle failure of SHOW CREATE PROCEDURE, give user diagnostics,
heed -f (force) option
mysql-test/r/mysqldump.result:
Bug#27293: mysqldump crashes when dumping procedure defined by different user
show that trying to mysqldump --routines with insufficient
privileges will no longer crash the client
---
manual merge
mysql-test/t/mysqldump.test:
Bug#27293: mysqldump crashes when dumping procedure defined by different user
show that trying to mysqldump --routines with insufficient
privileges will no longer crash the client
---
manual merge
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