mariadb/mysql-test/suite/compat
Yuchen Pei b3e70bde38
MDEV-36055 Allow left join reordering
This is done by no longer merging inner table dep with outer
nested_join ones.

This expands the search space of outer joins and introduces suboptimal
join order choices already existing in inner joins (e.g. MDEV-36331,
MDEV-37346) to outer joins, caused by heuristic pruning.

To mitigate this issue, we add a switch that turns on heuristic
pruning always (existing behaviour), and make is so that when the
switch is off (default) joins with limited number of tables or limited
search space* do not perform heuristic pruning. This improves join
order optimization for these joins, where otherwise heuristic pruning
may remove good joins - see added test cases in the test
main.greedy_optimizer.

*: about the same as 10 tables with default search depth (7) when
optimizer_search_depth=0.

If we completely disable heuristic pruning, or use the upper bound
10!, the test main.greedy_optimizer will grind to almost hanging for
optimizer_search_depth=0 when more than 20 tables are involved.

If we only compare the number of tables with 10, then it will prune
when search space is low due to a low search depth when we can afford
not to prune.
2025-08-14 18:00:53 +10:00
..
maxdb MDEV-19123 Change default charset from latin1 to utf8mb4 2024-07-11 10:21:07 +04:00
mssql MDEV-19123 Change default charset from latin1 to utf8mb4 2024-07-11 10:21:07 +04:00
oracle MDEV-36055 Allow left join reordering 2025-08-14 18:00:53 +10:00
README.txt MDEV-20017 Implement TO_CHAR() Oracle compatible function 2021-05-19 22:54:12 +02:00

To run a test suite under this directory, you should use the format:

mysql-test-run --suite=compat/oracle

or to run one test:

mysql-test-run compat/oracle.test_name