Skip to content

Commit cd65ef5

Browse files
MDEV-21510: Add index name to block chosen_access_method
1 parent 820114b commit cd65ef5

6 files changed

+53
-22
lines changed

mysql-test/main/opt_trace.result

+25-12
Original file line numberDiff line numberDiff line change
@@ -1288,7 +1288,8 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b {
12881288
"rows_read": 1,
12891289
"rows_out": 1,
12901290
"cost": 0.1821659,
1291-
"uses_join_buffering": false
1291+
"uses_join_buffering": false,
1292+
"index": "a"
12921293
}
12931294
}
12941295
}
@@ -1343,7 +1344,8 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b {
13431344
"rows_read": 1,
13441345
"rows_out": 1,
13451346
"cost": 0.1821659,
1346-
"uses_join_buffering": false
1347+
"uses_join_buffering": false,
1348+
"index": "a"
13471349
}
13481350
}
13491351
}
@@ -2536,7 +2538,8 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
25362538
"rows_read": 41,
25372539
"rows_out": 41,
25382540
"cost": 0.051379171,
2539-
"uses_join_buffering": false
2541+
"uses_join_buffering": false,
2542+
"index": "a_b"
25402543
}
25412544
}
25422545
}
@@ -3015,7 +3018,8 @@ explain select * from t1 left join t2 on t2.a=t1.a {
30153018
"rows_read": 1,
30163019
"rows_out": 1,
30173020
"cost": 0.007120904,
3018-
"uses_join_buffering": false
3021+
"uses_join_buffering": false,
3022+
"index": "PRIMARY"
30193023
}
30203024
}
30213025
}
@@ -3983,7 +3987,8 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
39833987
"rows_read": 1,
39843988
"rows_out": 1,
39853989
"cost": 0.000928812,
3986-
"uses_join_buffering": false
3990+
"uses_join_buffering": false,
3991+
"index": "pk_a_b"
39873992
}
39883993
}
39893994
}
@@ -4679,7 +4684,8 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
46794684
"rows_read": 3,
46804685
"rows_out": 3,
46814686
"cost": 0.001755494,
4682-
"uses_join_buffering": false
4687+
"uses_join_buffering": false,
4688+
"index": "a"
46834689
}
46844690
}
46854691
},
@@ -4705,7 +4711,8 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
47054711
"rows_read": 3,
47064712
"rows_out": 3,
47074713
"cost": 0.001755494,
4708-
"uses_join_buffering": false
4714+
"uses_join_buffering": false,
4715+
"index": "a"
47094716
}
47104717
}
47114718
}
@@ -4747,7 +4754,8 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
47474754
"rows_read": 1,
47484755
"rows_out": 1,
47494756
"cost": 0.002376836,
4750-
"uses_join_buffering": false
4757+
"uses_join_buffering": false,
4758+
"index": "a"
47514759
}
47524760
}
47534761
}
@@ -4798,7 +4806,8 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
47984806
"rows_read": 1.166666667,
47994807
"rows_out": 1.166666667,
48004808
"cost": 0.002392836,
4801-
"uses_join_buffering": false
4809+
"uses_join_buffering": false,
4810+
"index": "a"
48024811
}
48034812
}
48044813
}
@@ -11278,7 +11287,8 @@ JS
1127811287
"rows_read": 1,
1127911288
"rows_out": 1,
1128011289
"cost": 0.01901531,
11281-
"uses_join_buffering": false
11290+
"uses_join_buffering": false,
11291+
"index": "b"
1128211292
}
1128311293
}
1128411294
}
@@ -11524,7 +11534,8 @@ JS
1152411534
"rows_read": 1,
1152511535
"rows_out": 1,
1152611536
"cost": 0.01840091,
11527-
"uses_join_buffering": false
11537+
"uses_join_buffering": false,
11538+
"index": "a"
1152811539
}
1152911540
}
1153011541
}
@@ -12909,7 +12920,8 @@ json_detailed(json_extract(trace, '$**.choose_best_splitting'))
1290912920
"rows_read": 1.8367,
1291012921
"rows_out": 1.8367,
1291112922
"cost": 0.002051185,
12912-
"uses_join_buffering": false
12923+
"uses_join_buffering": false,
12924+
"index": "idx_a"
1291312925
}
1291412926
}
1291512927
}
@@ -13205,6 +13217,7 @@ explain select * from t1 where a<10 and b between 10 and 50 and c < 10 {
1320513217
"rows_out": 0.017766,
1320613218
"cost": 0.006364199,
1320713219
"uses_join_buffering": false,
13220+
"index": "a",
1320813221
"rowid_filter_index": "b"
1320913222
}
1321013223
}

mysql-test/main/opt_trace_index_merge_innodb.result

+2-1
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,8 @@ explain select * from t1 where pk1 != 0 and key1 = 1 {
230230
"rows_read": 1,
231231
"rows_out": 1,
232232
"cost": 0.00345856,
233-
"uses_join_buffering": false
233+
"uses_join_buffering": false,
234+
"index": "key1"
234235
}
235236
}
236237
}

mysql-test/main/opt_trace_selectivity.result

+2-1
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,8 @@ JS
189189
"rows_read": 6,
190190
"rows_out": 0.6,
191191
"cost": 0.005388489,
192-
"uses_join_buffering": false
192+
"uses_join_buffering": false,
193+
"index": "a"
193194
}
194195
}
195196
}

mysql-test/main/selectivity_innodb_notembedded.result

+2-1
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,8 @@ JS
301301
"rows_read": 5,
302302
"rows_out": 2.490196078,
303303
"cost": 0.00948507,
304-
"uses_join_buffering": false
304+
"uses_join_buffering": false,
305+
"index": "PRIMARY"
305306
}
306307
}
307308
]

mysql-test/main/selectivity_notembedded.result

+2-1
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,8 @@ JS
296296
"rows_read": 5,
297297
"rows_out": 2.490196078,
298298
"cost": 0.010014472,
299-
"uses_join_buffering": false
299+
"uses_join_buffering": false,
300+
"index": "PRIMARY"
300301
}
301302
}
302303
]

sql/opt_trace.cc

+20-6
Original file line numberDiff line numberDiff line change
@@ -712,12 +712,26 @@ void print_best_access_for_table(THD *thd, POSITION *pos)
712712
DBUG_ASSERT(thd->trace_started());
713713

714714
Json_writer_object obj(thd, "chosen_access_method");
715-
obj.
716-
add("type", pos->type == JT_ALL ? "scan" : join_type_str[pos->type]).
717-
add("rows_read", pos->records_read).
718-
add("rows_out", pos->records_out).
719-
add("cost", pos->read_time).
720-
add("uses_join_buffering", pos->use_join_buffer);
715+
716+
obj.add("type", pos->type == JT_ALL ? "scan" : join_type_str[pos->type]);
717+
718+
if (pos->type == JT_EQ_REF || pos->type == JT_REF ||
719+
pos->type == JT_MAYBE_REF || pos->type == JT_FT)
720+
{
721+
obj.add("index", pos->key->table->key_info[pos->key->key].name);
722+
}
723+
724+
if (pos->type == JT_RANGE)
725+
{
726+
obj.add("index",
727+
pos->table->table->key_info[pos->table->quick->index].name);
728+
}
729+
730+
obj.add("rows_read", pos->records_read)
731+
.add("rows_out", pos->records_out)
732+
.add("cost", pos->read_time)
733+
.add("uses_join_buffering", pos->use_join_buffer);
734+
721735
if (pos->range_rowid_filter_info)
722736
{
723737
uint key_no= pos->range_rowid_filter_info->get_key_no();

0 commit comments

Comments
 (0)