The IN 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 IN 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 uses either
an object of the in_datetime class or an object of the cmp_item_datetime
class to perform its work. If the IN() function arguments are rows then
row columns are checked whether the DATE/DATETIME comparator should be used
to compare them.
The in_datetime class is used to find occurence of the item to be checked
in the vector of the constant DATE/DATETIME values. The cmp_item_datetime
class is used to compare items one by one in the DATE/DATETIME context.
Both classes obtain values from items with help of the get_datetime_value()
function and cache the left item if it is a constant one.
mysql-test/t/type_datetime.test:
Added a test case for the bug#28133: Wrong DATE/DATETIME comparison in IN() function.
mysql-test/r/type_datetime.result:
Added a test case for the bug#28133: Wrong DATE/DATETIME comparison in IN() function.
mysql-test/r/func_in.result:
A test case result is corrected after the fix for the bug#28133.
sql/item_cmpfunc.h:
Bug#28133: Wrong DATE/DATETIME comparison in IN() function.
Two DATE/DATETIME comparison classes are added.
The in_datetime class is used to find occurence of the item to be checked
in the vector of the constant DATE/DATETIME values. The cmp_item_datetime
class is used to compare items one by one in the DATE/DATETIME context.
Both classes obtain values from items with help of the get_datetime_value()
function and cache the left item if it is a constant one.
sql/item_cmpfunc.cc:
Bug#28133: Wrong DATE/DATETIME comparison in IN() function.
Now IN 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 uses either
an object of the in_datetime class or an object of the cmp_item_datetime
class to perform its work. If the IN() function arguments are rows then
row columns are checked whether the DATE/DATETIME comparator should be used
to compare them.
into mysql.com:/d2/hf/mrg/mysql-5.1-opt
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_subselect.cc:
Auto merged
sql/sql_select.cc:
Auto merged
mysql-test/r/sp-vars.result:
merging
mysql-test/r/type_datetime.result:
SCCS merged
mysql-test/t/type_datetime.test:
SCCS merged
sql/item_func.h:
merging
sql/mysql_priv.h:
merging
into adventure.(none):/home/thek/Development/cpp/bug26977/my51-bug26977
mysql-test/r/sp-code.result:
Auto merged
mysql-test/t/sp-code.test:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sp_head.h:
Auto merged
- In some cases, flow control optimization implemented in sp::optimize
removes hreturn instructions, causing SQL exception handlers to:
* never return
* execute wrong logic
- This patch overrides default short cut optimization on hreturn instructions
to avoid this problem.
mysql-test/r/sp-code.result:
Added test case
mysql-test/t/sp-code.test:
Added test case
sql/sp_head.cc:
Override opt_mark to get correct execution paths without jump short cut
optimization.
sql/sp_head.h:
Added override sp_instr_hreturn::opt_shortcut_jump so that jump short cuts aren't
performed on hreturn instructions operating on handlers which are set to CONTINUE
after interruption.
the Item_neg changes INT_RESULT with DECIMAL_RESULT when
it gets this border value, what is not necessary.
mysql-test/r/partition.result:
result added
mysql-test/t/partition.test:
testcase
sql/item_func.cc:
we can handle '==' case in ordinary way - no need to use DECIMAL_RESULT
into xiphis.org:/home/antony/work2/mysql-5.1-engines.merge
include/my_global.h:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
scripts/mysql_install_db.sh:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_sum.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.cc:
Auto merged
sql/table.h:
Auto merged
storage/innobase/handler/ha_innodb.cc:
manual change to new api
The message is gramatically wrong, and factually wrong.
Change it to refer to the myisam_sort_buffer_size variable and change
"to" to "too".
myisam/sort.c:
Change error messages to be gramatically correct and to refer to the
correct variable.
mysql-test/r/repair.result:
Refer to the correct variable. Message changed.
- added join cache indication in EXPLAIN (Extra column).
- prefer filesort over full scan over
index for ORDER BY (because it's faster).
- when switching from REF to RANGE because
RANGE uses longer key turn off sort on
the head table only as the resulting
RANGE access is a candidate for join cache
and we don't want to disable it by sorting
on the first table only.
mysql-test/r/archive_gis.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/compress.result:
bug #27531:
- join cache in EXPLAIN.
- prefer filesort over full scan over index for ORDER BY.
mysql-test/r/ctype_utf8.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/derived.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/distinct.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/func_group.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/func_group_innodb.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/gis.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/greedy_optimizer.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/group_by.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/group_min_max.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/index_merge_myisam.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/information_schema.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/innodb_gis.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/innodb_mysql.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/join.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/join_nested.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/key_diff.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/myisam.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/ndb_condition_pushdown.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/ndb_gis.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/range.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/row.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/select.result:
bug #27531:
- join cache in EXPLAIN.
- prefer filesort over full scan over index for ORDER BY.
mysql-test/r/ssl.result:
bug #27531:
- join cache in EXPLAIN.
- prefer filesort over full scan over index for ORDER BY.
mysql-test/r/ssl_compress.result:
bug #27531:
- join cache in EXPLAIN.
- prefer filesort over full scan over index for ORDER BY.
mysql-test/r/subselect.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/subselect3.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/union.result:
bug #27531: join cache in EXPLAIN
mysql-test/r/view.result:
bug #27531: join cache in EXPLAIN
sql/sql_select.cc:
bug #27531:
- join cache in EXPLAIN.
- prefer filesort over full scan over
index for ORDER BY.
- disable sorting on the first table only
when switching from REF to RANGE.
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.1-opt-after-merge
mysql-test/r/join.result:
Auto merged
mysql-test/t/join.test:
Auto merged
sql/sql_select.cc:
Auto merged
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
into magare.gmz:/home/kgeorge/mysql/work/B27531-5.1-opt
mysql-test/r/cast.result:
Auto merged
mysql-test/r/join_outer.result:
Auto merged
mysql-test/t/cast.test:
Auto merged
mysql-test/t/join_outer.test:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_subselect.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_select.h:
Auto merged
mysql-test/r/subselect.result:
merge of 5.0-opt -> 5.1-opt
mysql-test/t/subselect.test:
merge of 5.0-opt -> 5.1-opt
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.
into weblab.(none):/home/marcsql/TREE/mysql-5.1-rt-merge
mysql-test/r/sp.result:
Auto merged
mysql-test/t/sp.test:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/ha_ndbcluster_binlog.cc:
Auto merged
sql/item.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sp.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_view.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
into weblab.(none):/home/marcsql/TREE/mysql-5.0-rt-merge
mysql-test/t/sp.test:
Auto merged
sql/item.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
into mysql.com:/windows/Linux_space/MySQL/mysql-5.1-new-ndb
mysql-test/r/ndb_insert.result:
Auto merged
mysql-test/t/ndb_insert.test:
Auto merged
sql/ha_ndbcluster.cc:
Using local (will hand merge).
Problem: when replacing the root element, UpdateXML
erroneously tried to mix old XML content with the
replacement string, which led to crash.
Fix: don't use the old XML content in these cases,
just return the replacement string.
mysql-test/r/xml.result:
Adding test case
mysql-test/t/xml.test:
Adding test case
sql/item_xmlfunc.cc:
Adding special code to handle replacements of the root element -
the replacing content is just copied to the result,
the previous content of the XML value is removed.
'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.
into quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/51
mysql-test/r/alter_table.result:
Auto merged
mysql-test/t/alter_table.test:
Auto merged
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
into mysql.com:/d2/hf/mrg/mysql-5.1-opt
mysql-test/r/olap.result:
Auto merged
mysql-test/r/type_datetime.result:
Auto merged
mysql-test/t/type_datetime.test:
Auto merged
sql/item_func.h:
Auto merged
sql/sql_select.cc:
Auto merged