Applied the fix for bug #47217 from the mysql-6.0 codebase.
The patch adds not null predicates generated for the left parts
of the equality predicates used for ref accesses. This is done
for such predicates both in where conditions and on conditions.
For the where conditions the not null predicates were generated
but in 5.0/5.1 they actually never were used due to some lame
merge from 4.1 to 5.0. The fix for bug #47217 made these
predicates to be used in the condition pushed to the tables.
Yet only this patch generates not null predicates for equality
predicated from on conditions of outer joins.
This patch introduces a performance regression that can be
observed on a test case from null_key.test. The regression
will disappear after the fix for bug #57024 from mariadb-5.1
is pulled into mariadb-5.3.
The patch contains many changes in the outputs of the EXPLAIN
commands since generated not null predicates are considered as
parts of the conditions pushed to join tables and may add
'Usingwhere' in some rows of EXPLAINs where there used
to be no such comments.
Speed up some PBXT tests by adding begin...commit around creating of testing tables.
include/my_base.h:
Fixed wrong constant
mysql-test/mysql-test-run.pl:
Print MariaDB instead of MySQL
mysql-test/r/range.result:
Move test that required partitions to parts.optimizer
mysql-test/suite/innodb_plugin/t/disabled.def:
Disable test that causes valgrind warning about not released memory in xtradb
mysql-test/suite/parts/r/optimizer.result:
Moved from range.result
mysql-test/suite/parts/t/optimizer.test:
Moved from range.test
mysql-test/suite/pbxt/r/join_nested.result:
Updated results after optimizer changes
mysql-test/suite/pbxt/r/renamedb.result:
Updated test for new error message
mysql-test/suite/pbxt/t/check.test:
Speed up test
mysql-test/suite/pbxt/t/count_distinct2.test:
Speed up test
mysql-test/suite/pbxt/t/derived.test:
Speed up test
mysql-test/suite/pbxt/t/renamedb.test:
Updated test for new error message
mysql-test/suite/rpl/r/rpl_log_pos.result:
Updated results
mysql-test/suite/rpl/t/rpl_log_pos.test:
Update test to read from a position that has 'known wrong' data.
The orignal test read a timestamp, so the error message could differ between runs.
mysql-test/suite/rpl/t/rpl_temporary_errors.test:
Sync to slave to make test predictable
mysql-test/t/events_time_zone.test:
Extend wait to make test predictable
mysql-test/t/range.test:
Move test that required partitions to parts.optimizer
sql/sql_list.h:
Fixed compiler warning
sql/sql_load.cc:
buffer was not freed in some error conditions
tests/mysql_client_test.c:
Fixed compiler warning
- The reason the test failed was competition between 3+ QEPs with identical
costs. Before, two plans were competing, and that was addressed by using
--sorted_result on the EXPLAIN output because they were different only in
join order.
Now we've got a 3rd plan which differs with "Using where" and that doesn't
work anymore.
- This patch fixes it by removing 'Using where' from EXPLAIN output. Test coverage
is somewhat reduced but probably still ok as PBXT and nested outer join processing
have no interaction and we don't expect any bugs here.
WL#2474 "Multi Range Read: Change the default MRR implementation to implement new MRR interface"
WL#2475 "Batched range read functions for MyISAM/InnoDb"
"Index condition pushdown for MyISAM/InnoDB"
- Adjust test results (checked)
- Code cleanup.
mysql-test/suite/pbxt/r/func_group.result:
Result file update.
mysql-test/suite/pbxt/r/grant.result:
Use --sorted_result
mysql-test/suite/pbxt/r/group_min_max.result:
Result file update.
mysql-test/suite/pbxt/r/join_nested.result:
Result file update.
mysql-test/suite/pbxt/r/negation_elimination.result:
Result file update.
mysql-test/suite/pbxt/r/ps_grant.result:
Use --sorted_result
mysql-test/suite/pbxt/r/skip_grants.result:
Result file update.
mysql-test/suite/pbxt/r/subselect.result:
Adjust test case following error message change due to fix of Bug#48293
mysql-test/suite/pbxt/r/view_grant.result:
Result file update.
mysql-test/suite/pbxt/t/grant.test:
Use --sorted_result
mysql-test/suite/pbxt/t/ps_grant.test:
Use --sorted_result
mysql-test/suite/pbxt/t/subselect.test:
Adjust test case following error message change due to fix of Bug#48293