Details
-
Bug
-
Status: Stalled (View Workflow)
-
Critical
-
Resolution: Unresolved
-
N/A
-
None
Description
I could only reproduce it on bb-11.0, but it is of course not a guarantee that it's feature-specific.
The dataset in the test case is dbt3 0.0001, i.e. ~1/10 of the dbt3 dataset which comes with MTR (lineitem ~600 rows).
The test case is attached, as it doesn't fit into JIRA description.
bb-11.0 527cc3e2c51e5bfb6899dd6bc65c25f92f0fe0bc |
MariaDB [test]> SELECT SUM( l_partkey ) |
FROM region JOIN nation ON ( r_regionkey = n_regionkey ) |
LEFT JOIN supplier ON ( s_nationkey = n_nationkey ) JOIN partsupp ON ( s_suppkey = ps_suppkey ) |
RIGHT JOIN lineitem ON ( ps_partkey = l_partkey AND ps_suppkey = l_suppkey ) |
JOIN orders ON ( l_orderkey = o_orderkey ) |
WHERE o_comment IS NOT NULL OR n_comment IS NOT NULL AND ps_availqty = l_quantity; |
+------------------+ |
| SUM( l_partkey ) | |
+------------------+ |
| 15457500 |
|
+------------------+ |
1 row in set (0.657 sec) |
|
MariaDB [test]> set USE_STAT_TABLES=DEFAULT, JOIN_BUFFER_SPACE_LIMIT=DEFAULT, JOIN_CACHE_LEVEL=DEFAULT; |
Query OK, 0 rows affected (0.000 sec) |
|
MariaDB [test]> SELECT SUM( l_partkey ) |
FROM region JOIN nation ON ( r_regionkey = n_regionkey ) |
LEFT JOIN supplier ON ( s_nationkey = n_nationkey ) JOIN partsupp ON ( s_suppkey = ps_suppkey ) |
RIGHT JOIN lineitem ON ( ps_partkey = l_partkey AND ps_suppkey = l_suppkey ) |
JOIN orders ON ( l_orderkey = o_orderkey ) |
WHERE o_comment IS NOT NULL OR n_comment IS NOT NULL AND ps_availqty = l_quantity; |
+------------------+ |
| SUM( l_partkey ) | |
+------------------+ |
| 6183 |
|
+------------------+ |
1 row in set (0.002 sec) |
6183 is apparently the expected result.
Plan with the bigger result:
MariaDB [test]> explain extended SELECT SUM( l_partkey ) FROM region JOIN nation ON ( r_regionkey = n_regionkey ) LEFT JOIN supplier ON ( s_nationkey = n_nationkey ) JOIN partsupp ON ( s_suppkey = ps_suppkey ) RIGHT JOIN lineitem ON ( ps_partkey = l_partkey AND ps_suppkey = l_suppkey ) JOIN orders ON ( l_orderkey = o_orderkey ) WHERE o_comment IS NOT NULL OR n_comment IS NOT NULL AND ps_availqty = l_quantity; |
+------+-------------+----------+------------+--------------------------------------------+-----------------------------+---------+-------------------------------------------------+------+----------+----------------------------------------------------------------------+ |
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra | |
+------+-------------+----------+------------+--------------------------------------------+-----------------------------+---------+-------------------------------------------------+------+----------+----------------------------------------------------------------------+ |
| 1 | SIMPLE | orders | ALL | PRIMARY | NULL | NULL | NULL | 150 | 100.00 | | |
| 1 | SIMPLE | lineitem | hash_ALL | PRIMARY,i_l_orderkey,i_l_orderkey_quantity | #hash#PRIMARY | 4 | test.orders.o_orderkey | 586 | 0.51 | Using join buffer (flat, BNLH join) | |
| 1 | SIMPLE | supplier | hash_index | PRIMARY,i_s_nationkey | #hash#PRIMARY:i_s_nationkey | 4:5 | test.lineitem.l_suppkey | 1 | 100.00 | Using where; Using index; Using join buffer (incremental, BNLH join) | |
| 1 | SIMPLE | nation | hash_ALL | PRIMARY,i_n_regionkey | #hash#PRIMARY | 4 | test.supplier.s_nationkey | 25 | 4.00 | Using where; Using join buffer (incremental, BNLH join) | |
| 1 | SIMPLE | partsupp | hash_ALL | PRIMARY,i_ps_partkey,i_ps_suppkey | #hash#PRIMARY | 8 | test.lineitem.l_partkey,test.lineitem.l_suppkey | 20 | 5.00 | Using where; Using join buffer (incremental, BNLH join) | |
| 1 | SIMPLE | region | hash_ALL | PRIMARY | #hash#PRIMARY | 4 | test.nation.n_regionkey | 5 | 20.00 | Using join buffer (incremental, BNLH join) | |
+------+-------------+----------+------------+--------------------------------------------+-----------------------------+---------+-------------------------------------------------+------+----------+----------------------------------------------------------------------+ |
6 rows in set, 1 warning (0.000 sec) |
|
MariaDB [test]> show warnings;
|
+-------+------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| Level | Code | Message | |
+-------+------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
| Note | 1003 | select sum(`test`.`lineitem`.`l_partkey`) AS `SUM( l_partkey )` from `test`.`lineitem` left join (`test`.`region` join `test`.`nation` join `test`.`supplier` join `test`.`partsupp`) on(`test`.`partsupp`.`ps_partkey` = `test`.`lineitem`.`l_partkey` and `test`.`supplier`.`s_suppkey` = `test`.`lineitem`.`l_suppkey` and `test`.`partsupp`.`ps_suppkey` = `test`.`lineitem`.`l_suppkey` and `test`.`nation`.`n_nationkey` = `test`.`supplier`.`s_nationkey` and `test`.`region`.`r_regionkey` = `test`.`nation`.`n_regionkey` and `test`.`lineitem`.`l_suppkey` is not null and `test`.`supplier`.`s_nationkey` is not null and `test`.`lineitem`.`l_partkey` is not null and `test`.`lineitem`.`l_suppkey` is not null and `test`.`nation`.`n_regionkey` is not null) join `test`.`orders` where `test`.`lineitem`.`l_orderkey` = `test`.`orders`.`o_orderkey` and (`test`.`orders`.`o_comment` is not null or `test`.`nation`.`n_comment` is not null and `test`.`partsupp`.`ps_availqty` = `test`.`lineitem`.`l_quantity`) | |
+-------+------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
1 row in set (0.000 sec) |
Attachments
Issue Links
- is blocked by
-
MDEV-30938 Wrong result with small join_buffer_space_limit and hash join
- Stalled
- is caused by
-
MDEV-26974 Improve selectivity and related costs in optimizer
- Closed