Ignoring error codes from type conversion allows default (wrong) values to
go unnoticed in the formation of index search conditions.
Fixed by correctly checking for conversion errors.
mysql-test/r/select.result:
Bug #22344: InnoDB keys act strange on datetime vs timestamp comparison
- test case
mysql-test/t/select.test:
Bug #22344: InnoDB keys act strange on datetime vs timestamp comparison
- test case
sql/field.h:
Bug #22344: InnoDB keys act strange on datetime vs timestamp comparison
- don't ignore coversion errors
sql/field_conv.cc:
Bug #22344: InnoDB keys act strange on datetime vs timestamp comparison
- don't ignore coversion errors
sql/item.cc:
Bug #22344: InnoDB keys act strange on datetime vs timestamp comparison
- don't ignore coversion errors
into mysql.com:/home/svoj/devel/mysql/merge/mysql-5.1-engines
BUILD/SETUP.sh:
Auto merged
Makefile.am:
Auto merged
client/mysql.cc:
Auto merged
configure.in:
Auto merged
include/my_global.h:
Auto merged
include/my_pthread.h:
Auto merged
mysql-test/t/myisam.test:
Auto merged
mysys/default.c:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/mysqld.cc:
Auto merged
storage/myisammrg/ha_myisammrg.cc:
Auto merged
storage/myisam/ha_myisam.cc:
Manually merged.
into poseidon.mysql.com:/home/tomas/mysql-5.1-new-ndb
mysql-test/r/ndb_read_multi_range.result:
Auto merged
mysql-test/t/ndb_read_multi_range.test:
Auto merged
sql/ha_ndbcluster_binlog.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/slave.cc:
Auto merged
storage/ndb/src/common/debugger/EventLogger.cpp:
Auto merged
storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
Auto merged
storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp:
Auto merged
storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp:
Auto merged
storage/ndb/src/kernel/blocks/suma/Suma.cpp:
Auto merged
storage/ndb/src/mgmclient/CommandInterpreter.cpp:
Auto merged
storage/ndb/src/mgmsrv/ConfigInfo.cpp:
Auto merged
storage/ndb/src/mgmsrv/main.cpp:
Auto merged
storage/ndb/src/ndbapi/Ndb.cpp:
Auto merged
storage/ndb/src/ndbapi/NdbBlob.cpp:
Auto merged
storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp:
Auto merged
storage/ndb/src/ndbapi/NdbIndexStat.cpp:
Auto merged
storage/ndb/src/ndbapi/NdbOperationDefine.cpp:
Auto merged
storage/ndb/src/ndbapi/NdbOperationExec.cpp:
Auto merged
storage/ndb/src/ndbapi/NdbScanOperation.cpp:
Auto merged
sql/ha_ndbcluster.cc:
manual merge
storage/ndb/src/ndbapi/NdbIndexOperation.cpp:
manual merge
into chilla.local:/home/mydev/mysql-5.1-axmrg
BUILD/SETUP.sh:
Auto merged
configure.in:
Auto merged
BitKeeper/deleted/.del-my_create_tables.c~c121a0c4c427ebb:
Auto merged
BitKeeper/deleted/.del-my_manage.c~4de50e721d227d19:
Auto merged
BitKeeper/deleted/.del-my_manage.h~9d2cbc1e8bc894f:
Auto merged
BitKeeper/deleted/.del-mysql.dsw~7ea9e16395f139f4:
Auto merged
BitKeeper/deleted/.del-mysql.sln~76a9ff1e793b3547:
Auto merged
BitKeeper/deleted/.del-mysql_test_run_new.c~a23ab2c4b28b25ad:
Auto merged
BitKeeper/deleted/.del-mysql_test_run_new.dsp~9d8078f3f02fcc8e:
Auto merged
BitKeeper/deleted/.del-mysql_test_run_new.vcproj~1ddaed30361efefe:
Auto merged
BitKeeper/deleted/.del-mysql_test_run_new_ia64.dsp~e7ee71ec8d2995e3:
Auto merged
client/mysql.cc:
Auto merged
mysql-test/Makefile.am:
Auto merged
sql/gen_lex_hash.cc:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/mysqld.cc:
Manual merged
support-files/mysql.spec.sh:
Manual merged
This performance degradation for UPDATEs could be observed in the update
statements for which the search key cannot be converted to any valid
value of the type of the search column, like for a the condition
int_fld=99999999999999999999999999, though it can be guaranteed here
that there is no row with such a key value.
mysql-test/r/update.result:
Added a test case for bug #24035.
mysql-test/t/update.test:
Added a test case for bug #24035.
sql/opt_range.cc:
Fix bug #24035.
This performance degradation for could be observed in the update
statements for which the search key cannot be converted to any valid
value of the type of the search column, like for a the condition
int_fld=99999999999999999999999999, though it can be guaranteed here
that there is no row with such a key value.
Now the function get_mm_leaf creates trees of the type SEL_ARG::IMPOSSIBLE
for such conditions that tells the range scan not to perform any search
at all.
into a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-5.1
BUILD/SETUP.sh:
Auto merged
client/mysql.cc:
Auto merged
configure.in:
Auto merged
libmysqld/lib_sql.cc:
Auto merged
sql/filesort.cc:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/handler.cc:
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/item_func.cc:
Auto merged
sql/item_subselect.cc:
Auto merged
sql/item_timefunc.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/opt_range.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_plugin.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.cc:
Auto merged
storage/archive/ha_archive.cc:
Auto merged
plugin/daemon_example/daemon_example.cc:
Merged with main 5.1
sql/mysqld.cc:
Merged with main 5.1
into mysql.com:/home/gluh/MySQL/Merge/5.1-opt
mysql-test/r/distinct.result:
Auto merged
mysql-test/r/join_nested.result:
Auto merged
mysql-test/r/null_key.result:
Auto merged
mysql-test/r/select.result:
Auto merged
mysql-test/r/subselect.result:
Auto merged
mysql-test/r/subselect3.result:
Auto merged
mysql-test/r/trigger.result:
Auto merged
mysql-test/t/select.test:
Auto merged
mysql-test/t/subselect.test:
Auto merged
mysql-test/t/trigger.test:
Auto merged
sql/filesort.cc:
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/item_func.cc:
Auto merged
sql/item_subselect.cc:
Auto merged
sql/item_timefunc.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/opt_sum.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.cc:
Auto merged
mysql-test/r/func_time.result:
manual merge
mysql-test/r/information_schema.result:
manual merge
mysql-test/t/func_time.test:
manual merge
mysql-test/t/information_schema.test:
manual merge
sql/opt_range.cc:
manual merge
sql/sql_delete.cc:
manual merge
sql/sql_lex.h:
manual merge
additional call of file->extra() method with HA_EXTRA_NO_CACHE parameter
mysql-test/r/information_schema.result:
test result
mysql-test/t/information_schema.test:
test case
sql/sql_show.cc:
additional call of file->extra() method with HA_EXTRA_NO_CACHE parameter
into chilla.local:/home/mydev/mysql-4.1-axmrg
mysql-test/r/symlink.result:
Auto merged
mysql-test/t/symlink.test:
Auto merged
sql/mysqld.cc:
Auto merged
Notes:
This patch doesn't fix all issues in the tree and we need jani's fix for that
This patch shoud not be merged into 5.0
mysql-test/r/ps.result:
result fix
mysql-test/r/symlink.result:
result fix
mysql-test/t/ps.test:
test is moved to 'symlink' test
mysql-test/t/symlink.test:
test from 'ps' test
sql/field_conv.cc:
valgrind error fix: backport from 5.0
sql/mysqld.cc:
release of ssl_context
vio/viosslfactories.c:
release of ssl_context
mysql-test/valgrind.supp:
New BitKeeper file ``mysql-test/valgrind.supp''
This file is backported from 5.0, added suppressing of OpenSSL errors
into rakia.gmz:/home/kgeorge/mysql/autopush/B23556-5.1-opt
mysql-test/r/grant.result:
Auto merged
mysql-test/t/grant.test:
Auto merged
sql/sql_parse.cc:
Auto merged
The bug could cause choosing a sub-optimal execution plan for
a single-table query if a unique index with many null keys were
defined for the table.
It happened because the code of the check_quick_keys function
made an assumption that any key may occur in an unique index
only once. Yet this is not true for keys with nulls that may
have multiple occurrences in the index.
mysql-test/r/null_key.result:
Fixed bug #25407
Adjusted result after the fix.
mysql-test/r/select.result:
Added a test case for bug #25407.
mysql-test/t/select.test:
Added a test case for bug #25407.
into mysql.com:/windows/Linux_space/MySQL/mysql-5.1
mysql-test/r/ndb_read_multi_range.result:
Auto merged
mysql-test/t/ndb_read_multi_range.test:
Auto merged
sql/ha_ndbcluster.cc:
Merge
into zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-4.1-maint
configure.in:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
scripts/mysqld_multi.sh:
Auto merged
sql/mysqld.cc:
Auto merged
into zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.1-maint
BitKeeper/etc/ignore:
auto-union
Makefile.am:
Auto merged
configure.in:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/r/innodb.result:
Auto merged
mysql-test/r/range.result:
Auto merged
mysql-test/r/select.result:
Auto merged
mysql-test/t/innodb.test:
Auto merged
mysql-test/t/select.test:
Auto merged
mysys/string.c:
Auto merged
scripts/mysql_create_system_tables.sh:
Auto merged
scripts/mysqld_multi.sh:
Auto merged
sql/item.cc:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
into zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-4.1-maint
configure.in:
Auto merged
mysql-test/r/range.result:
Auto merged
mysql-test/t/range.test:
Auto merged
into zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-maint
configure.in:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/r/range.result:
Auto merged
mysql-test/r/select.result:
Auto merged
mysql-test/t/select.test:
Auto merged
scripts/mysqld_multi.sh:
Auto merged
sql/item.cc:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_select.cc:
Auto merged
into mysql.com:/home/svoj/devel/mysql/WL3567/mysql-5.1-engines
mysql-test/r/merge.result:
Auto merged
mysql-test/t/merge.test:
Auto merged
storage/myisam/ha_myisam.cc:
Manually merged.
storage/myisammrg/ha_myisammrg.cc:
Manually merged.
into rakia.gmz:/home/kgeorge/mysql/autopush/B25575-5.0-opt
sql/mysql_priv.h:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.cc:
Auto merged
Two problems here:
Problem 1:
While constructing the join columns list the optimizer does as follows:
1. Sets the join_using_fields/natural_join members of the right JOIN
operand.
2. Makes a "table reference" (TABLE_LIST) to parent the two tables.
3. Assigns the join_using_fields/is_natural_join of the wrapper table
using join_using_fields/natural_join of the rightmost table
4. Sets join_using_fields to NULL for the right JOIN operand.
5. Passes the parent table up to the same procedure on the upper
level.
Step 1 overrides the the join_using_fields that are set for a nested
join wrapping table in step 4.
Fixed by making a designated variable SELECT_LEX::prev_join_using to
pass the data from step 1 to step 4 without destroying the wrapping
table data.
Problem 2:
The optimizer checks for ambiguous columns while transforming
NATURAL JOIN/JOIN USING to JOIN ON. While doing that there was no
distinction between columns that are used in the generated join
condition (where ambiguity can be checked) and the other columns
(where ambiguity can be checked only when resolving references
coming from outside the JOIN construct itself).
Fixed by allowing the non-USING columns to be present in multiple
copies in both sides of the join and moving the ambiguity check
to the place where unqualified references to the join columns are
resolved (find_field_in_natural_join()).
mysql-test/r/join_nested.result:
BUG#25575: ERROR 1052 (Column in from clause is ambiguous) with sub-join
- test case
mysql-test/t/join_nested.test:
BUG#25575: ERROR 1052 (Column in from clause is ambiguous) with sub-join
- test case
sql/mysql_priv.h:
BUG#25575: ERROR 1052 (Column in from clause is ambiguous) with sub-join
- use SELECT_LEX to store the ref to JOIN USING list needed by the
parser
sql/sql_base.cc:
BUG#25575: ERROR 1052 (Column in from clause is ambiguous) with sub-join
- proper check for duplicate cols
- more detailed debug output
sql/sql_lex.h:
BUG#25575: ERROR 1052 (Column in from clause is ambiguous) with sub-join
- use SELECT_LEX to store the ref to JOIN USING list needed by the
parser
sql/sql_parse.cc:
BUG#25575: ERROR 1052 (Column in from clause is ambiguous) with sub-join
- proper check for duplicate cols in JOIN USING
sql/sql_yacc.yy:
BUG#25575: ERROR 1052 (Column in from clause is ambiguous) with sub-join
- use SELECT_LEX to store the ref to JOIN USING list needed by the
parser
sql/table.cc:
BUG#25575: ERROR 1052 (Column in from clause is ambiguous) with sub-join
- return null if no table ref (as in nested join columns).
When a merge table is opened compare column and key definition of
underlying tables against column and key definition of merge table.
If any of underlying tables have different column/key definition
refuse to open merge table.
mysql-test/r/merge.result:
A test case for WL#3456.
mysql-test/t/merge.test:
A test case for WL#3456.
sql/ha_myisam.cc:
Moved a part of code that converts TABLE object to MyISAM key and column
definition to a separate function.
Added check_definition() function that compares MyISAM table definitions.
sql/ha_myisammrg.cc:
Check if underlying table definition conforms to merge table definition,
and in case underlying table definition differs, refuse to open merge
table.
into mysql.com:/home/ram/work/b19690/b19690.5.1
mysql-test/r/type_float.result:
Auto merged
mysql-test/t/type_float.test:
Auto merged
sql/field.cc:
Auto merged
sql/init.cc:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/field.h:
merging
sql/item_sum.cc:
merging
sql/sql_select.cc:
merging
The optimizer takes away columns from GROUP BY/DISTINCT if they constitute
all the parts of an unique index.
However if some of the columns can contain NULLs this cannot be done
(because an UNIQUE index can have multiple rows with NULL values).
Fixed by not using UNIQUE indexes with nullable columns to remove
grouping columns from GROUP BY/DISTINCT.
mysql-test/r/distinct.result:
Bug #25551: inconsistent behaviour in grouping NULL, depending on index type
- test case
mysql-test/t/distinct.test:
Bug #25551: inconsistent behaviour in grouping NULL, depending on index type
- test case
sql/sql_select.cc:
Bug #25551: inconsistent behaviour in grouping NULL, depending on index type
- UNIQUE NULL indices don't guarantee GROUP BY/DISTINCT.
into mysql.com:/home/ram/work/b19690/b19690.5.0
mysql-test/r/type_float.result:
Auto merged
mysql-test/t/type_float.test:
Auto merged
sql/field.cc:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/field.h:
merging
sql/init.cc:
merging
sql/item_cmpfunc.cc:
merging
sql/mysql_priv.h:
merging
sql/sql_select.cc:
merging
Depending on the queries we use different data processing methods
and can lose some data in case of double (and decimal in 4.1) fields.
The fix consists of two parts:
1. double comparison changed, now double a is equal to double b
if (a-b) is less than 5*0.1^(1 + max(a->decimals, b->decimals)).
For example, if a->decimals==1, b->decimals==2, a==b if (a-b)<0.005
2. if we use a temporary table, store double values there as is
to avoid any data conversion (rounding).
mysql-test/r/type_float.result:
fix for bug #19690: ORDER BY eliminates rows from the result
- test result
mysql-test/t/type_float.test:
fix for bug #19690: ORDER BY eliminates rows from the result
- test case
sql/field.cc:
fix for bug #19690: ORDER BY eliminates rows from the result
- use not_fixed flag instead of dec to check bounds.
sql/field.h:
fix for bug #19690: ORDER BY eliminates rows from the result
- Field_Double::not_fixed flag introduced, which is set if dec == NOT_FIXED_DEC
and is used in the ::store() to check bounds.
- new constructor introduced (with not_fixed_arg parameter).
sql/init.cc:
fix for bug #19690: ORDER BY eliminates rows from the result
- fill log_01[] array with 0.1 powers.
sql/item_cmpfunc.cc:
fix for bug #19690: ORDER BY eliminates rows from the result
- compare_real_fixed() and compare_e_real_fixed() introduced,
they consider double a == double b if a-b is less than 'precision',
'precision' is set to 5*0.1^(1 + max(a->decimals, b->decimals)),
for example, if a->decimals==1, b->decimals==2, 'precision' is 0.005
- use the above functions if both arguments are fixed.
sql/item_cmpfunc.h:
fix for bug #19690: ORDER BY eliminates rows from the result
- Arg_comparator::presision introduced.
- Arg_comparator::compare_real_fixed(), Arg_comparator::compare_e_real_fixed() introduced.
sql/mysql_priv.h:
fix for bug #19690: ORDER BY eliminates rows from the result
- log_01 array of 0.1 powers added.
sql/mysqld.cc:
fix for bug #19690: ORDER BY eliminates rows from the result
- log_01 array of 0.1 powers added.
sql/sql_select.cc:
fix for bug #19690: ORDER BY eliminates rows from the result
- if we create double field in a temporary table, set not_fixed flag
(use proper constructor) to avoid data conversion
in the Field_double::store(). Otherwise we can lose some data.
Checking for NULL before calling the val_xxx()
methods only checks for such arguments that are
known to be NULLs at compile time.
The arguments that may or may not contain
NULLs (e.g. function calls and possibly others)
are not checked at all.
Fixed by first calling the val_xxx() method and
then checking for null in SEC_TO_TIME().
In addition QUARTER() was not returning 0 (as all the
val_int() functions do when processing a NULL value).
mysql-test/r/func_time.result:
Bug #25643: SEC_TO_TIME function problem
- test case
mysql-test/t/func_time.test:
Bug #25643: SEC_TO_TIME function problem
- test case
sql/item_timefunc.cc:
Bug #25643: SEC_TO_TIME function problem
- null handling fixed for QUARTER() and SEC_TO_TIME()