Unpredictable behaviour of setting optimizer_switch='mrr_sort_keys=off'
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
MariaDB |
Invalid
|
Critical
|
Sergey Petrunia |
Bug Description
I observe the following strange behavior of the mariadb server built from the current LP 5.3 tree when
running against an instance of DBT3 (factor 10) database for innodb.
MariaDB [test]> use dbt3x10_innodb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [dbt3x10_innodb]>
MariaDB [dbt3x10_innodb]> set join_buffer_
Query OK, 0 rows affected (0.00 sec)
MariaDB [dbt3x10_innodb]> set join_buffer_
Query OK, 0 rows affected (0.00 sec)
MariaDB [dbt3x10_innodb]> set join_cache_level=6;
Query OK, 0 rows affected (0.00 sec)
MariaDB [dbt3x10_innodb]> set optimizer_
Query OK, 0 rows affected (0.00 sec)
MariaDB [dbt3x10_innodb]>
MariaDB [dbt3x10_innodb]> explain
-> select avg(l_extendedp
+----+-
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-
| 1 | SIMPLE | orders | range | PRIMARY,
| 1 | SIMPLE | lineitem | ref | PRIMARY,
+----+-
2 rows in set (0.02 sec)
MariaDB [dbt3x10_innodb]> explain select avg(l_extendedp
+----+-
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-
| 1 | SIMPLE | orders | range | PRIMARY,
| 1 | SIMPLE | lineitem | ref | PRIMARY,
+----+-
2 rows in set (0.00 sec)
MariaDB [dbt3x10_innodb]> analyze table lineitem;
+------
| Table | Op | Msg_type | Msg_text |
+------
| dbt3x10_
+------
1 row in set (1.12 sec)
MariaDB [dbt3x10_innodb]> explain select avg(l_extendedp
+----+-
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-
| 1 | SIMPLE | orders | range | PRIMARY,
| 1 | SIMPLE | lineitem | ref | PRIMARY,
+----+-
2 rows in set (0.01 sec)
I observe this behavior for both debug and non-debug version of the server on SuSE 10.3 32-bit.
Sometimes the last command returns the following result:
MariaDB [dbt3x10_innodb]> explain select avg(l_extendedp
+----+-
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-
| 1 | SIMPLE | orders | range | PRIMARY,
| 1 | SIMPLE | lineitem | ref | PRIMARY,
+----+-
I did not try to execute this sequence of commands with dbt3 of a smaller factor. Maybe the problem can be
reproduced with them as well.
Changed in maria: | |
importance: | Undecided → Critical |
milestone: | none → 5.3 |
Changed in maria: | |
assignee: | nobody → Sergey Petrunia (sergefp) |
For better readability of the above: all EXPLAINS are for the same query:
explain select avg(l_extendedp rice) from orders, lineitem where l_orderkey= o_orderkey and o_orderdate between date '1992-07-01' and date '1992-07-31';
Attempt#1: 2nd table is lineitem, type=ref, key=i_l_orderkey, Extra="Using join buffer (flat, BKA join)"
Attempt#2: 2nd table is lineitem, type=ref, key=i_l_orderkey, Extra="Using join buffer (flat, BKA join)" (same as #1)
<ANALYZE is run>
Attempt#3: 2nd table is lineitem, type=ref, key=PRIMARY, Extra="", rows=2
Attempt#4: 2nd table is lineitem, type=ref, key=PRIMARY, Extra="", rows=1