Commit a2190066 authored by Sergei Petrunia's avatar Sergei Petrunia

MDEV-22014: Rowid Filtering is not displayed well in the optimizer trace

- Print the rowid filters that are available for use with each table.
- Make print_best_access_for_table() print which filter it has picked.
- Make best_access_path() print the filter for considered ref accesses.
parent bdcecfa2
...@@ -140,8 +140,7 @@ select * from v1 { ...@@ -140,8 +140,7 @@ select * from v1 {
"type": "scan", "type": "scan",
"records": 1, "records": 1,
"cost": 2.2044, "cost": 2.2044,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 1, "rows_for_plan": 1,
...@@ -286,8 +285,7 @@ select * from (select * from t1 where t1.a=1)q { ...@@ -286,8 +285,7 @@ select * from (select * from t1 where t1.a=1)q {
"type": "scan", "type": "scan",
"records": 1, "records": 1,
"cost": 2.2044, "cost": 2.2044,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 1, "rows_for_plan": 1,
...@@ -438,8 +436,7 @@ select * from v2 { ...@@ -438,8 +436,7 @@ select * from v2 {
"type": "scan", "type": "scan",
"records": 1, "records": 1,
"cost": 2.2044, "cost": 2.2044,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 1, "rows_for_plan": 1,
...@@ -505,8 +502,7 @@ select * from v2 { ...@@ -505,8 +502,7 @@ select * from v2 {
"type": "scan", "type": "scan",
"records": 2, "records": 2,
"cost": 2, "cost": 2,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 2, "rows_for_plan": 2,
...@@ -645,8 +641,7 @@ explain select * from v2 { ...@@ -645,8 +641,7 @@ explain select * from v2 {
"type": "scan", "type": "scan",
"records": 10, "records": 10,
"cost": 2.022, "cost": 2.022,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 10, "rows_for_plan": 10,
...@@ -765,8 +760,7 @@ explain select * from v1 { ...@@ -765,8 +760,7 @@ explain select * from v1 {
"type": "scan", "type": "scan",
"records": 10, "records": 10,
"cost": 2.022, "cost": 2.022,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 10, "rows_for_plan": 10,
...@@ -832,8 +826,7 @@ explain select * from v1 { ...@@ -832,8 +826,7 @@ explain select * from v1 {
"type": "scan", "type": "scan",
"records": 10, "records": 10,
"cost": 10, "cost": 10,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 10, "rows_for_plan": 10,
...@@ -1004,8 +997,7 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b { ...@@ -1004,8 +997,7 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b {
"type": "scan", "type": "scan",
"records": 100, "records": 100,
"cost": 2.3174, "cost": 2.3174,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 100, "rows_for_plan": 100,
...@@ -1036,8 +1028,7 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b { ...@@ -1036,8 +1028,7 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b {
"type": "ref", "type": "ref",
"records": 1, "records": 1,
"cost": 200, "cost": 200,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 100, "rows_for_plan": 100,
...@@ -1062,8 +1053,7 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b { ...@@ -1062,8 +1053,7 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b {
"type": "scan", "type": "scan",
"records": 100, "records": 100,
"cost": 2.3174, "cost": 2.3174,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 100, "rows_for_plan": 100,
...@@ -1094,8 +1084,7 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b { ...@@ -1094,8 +1084,7 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b {
"type": "ref", "type": "ref",
"records": 1, "records": 1,
"cost": 200, "cost": 200,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 100, "rows_for_plan": 100,
...@@ -1265,8 +1254,7 @@ EXPLAIN SELECT DISTINCT a FROM t1 { ...@@ -1265,8 +1254,7 @@ EXPLAIN SELECT DISTINCT a FROM t1 {
"type": "index_merge", "type": "index_merge",
"records": 5, "records": 5,
"cost": 6.75, "cost": 6.75,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 5, "rows_for_plan": 5,
...@@ -1456,8 +1444,7 @@ EXPLAIN SELECT MIN(d) FROM t1 where b=2 and c=3 group by a { ...@@ -1456,8 +1444,7 @@ EXPLAIN SELECT MIN(d) FROM t1 where b=2 and c=3 group by a {
"type": "scan", "type": "scan",
"records": 0.5849, "records": 0.5849,
"cost": 3.3121, "cost": 3.3121,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 0.5849, "rows_for_plan": 0.5849,
...@@ -1658,8 +1645,7 @@ EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=20010104e0 GROUP BY id { ...@@ -1658,8 +1645,7 @@ EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=20010104e0 GROUP BY id {
"type": "scan", "type": "scan",
"records": 16, "records": 16,
"cost": 2.0312, "cost": 2.0312,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 16, "rows_for_plan": 16,
...@@ -1849,8 +1835,7 @@ EXPLAIN SELECT * FROM t1 WHERE a = 20010104e0 GROUP BY id { ...@@ -1849,8 +1835,7 @@ EXPLAIN SELECT * FROM t1 WHERE a = 20010104e0 GROUP BY id {
"type": "scan", "type": "scan",
"records": 16, "records": 16,
"cost": 2.0312, "cost": 2.0312,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 16, "rows_for_plan": 16,
...@@ -2076,6 +2061,21 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 { ...@@ -2076,6 +2061,21 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
} }
} }
}, },
{
"table": "t1",
"rowid_filters": [
{
"key": "a_b",
"build_cost": 2.989,
"rows": 21
},
{
"key": "a_c",
"build_cost": 23.969,
"rows": 180
}
]
},
{ {
"selectivity_for_indexes": [ "selectivity_for_indexes": [
{ {
...@@ -2130,8 +2130,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 { ...@@ -2130,8 +2130,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
"type": "ref", "type": "ref",
"records": 21, "records": 21,
"cost": 22, "cost": 22,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 21, "rows_for_plan": 21,
...@@ -2371,8 +2370,7 @@ select t1.a from t1 left join t2 on t1.a=t2.a { ...@@ -2371,8 +2370,7 @@ select t1.a from t1 left join t2 on t1.a=t2.a {
"type": "scan", "type": "scan",
"records": 4, "records": 4,
"cost": 2.0068, "cost": 2.0068,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 4, "rows_for_plan": 4,
...@@ -2498,8 +2496,7 @@ explain select * from t1 left join t2 on t2.a=t1.a { ...@@ -2498,8 +2496,7 @@ explain select * from t1 left join t2 on t2.a=t1.a {
"type": "scan", "type": "scan",
"records": 4, "records": 4,
"cost": 2.0068, "cost": 2.0068,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 4, "rows_for_plan": 4,
...@@ -2528,8 +2525,7 @@ explain select * from t1 left join t2 on t2.a=t1.a { ...@@ -2528,8 +2525,7 @@ explain select * from t1 left join t2 on t2.a=t1.a {
"type": "eq_ref", "type": "eq_ref",
"records": 1, "records": 1,
"cost": 4, "cost": 4,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 4, "rows_for_plan": 4,
...@@ -2689,8 +2685,7 @@ explain select t1.a from t1 left join (t2 join t3 on t2.b=t3.b) on t2.a=t1.a and ...@@ -2689,8 +2685,7 @@ explain select t1.a from t1 left join (t2 join t3 on t2.b=t3.b) on t2.a=t1.a and
"type": "scan", "type": "scan",
"records": 4, "records": 4,
"cost": 2.0068, "cost": 2.0068,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 4, "rows_for_plan": 4,
...@@ -2892,8 +2887,7 @@ explain extended select * from t1 where a in (select pk from t10) { ...@@ -2892,8 +2887,7 @@ explain extended select * from t1 where a in (select pk from t10) {
"type": "scan", "type": "scan",
"records": 10, "records": 10,
"cost": 2.022, "cost": 2.022,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 10, "rows_for_plan": 10,
...@@ -2923,8 +2917,7 @@ explain extended select * from t1 where a in (select pk from t10) { ...@@ -2923,8 +2917,7 @@ explain extended select * from t1 where a in (select pk from t10) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0066, "cost": 2.0066,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 3, "rows_for_plan": 3,
...@@ -2947,8 +2940,7 @@ explain extended select * from t1 where a in (select pk from t10) { ...@@ -2947,8 +2940,7 @@ explain extended select * from t1 where a in (select pk from t10) {
"type": "scan", "type": "scan",
"records": 10, "records": 10,
"cost": 2.022, "cost": 2.022,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 30, "rows_for_plan": 30,
...@@ -2993,8 +2985,7 @@ explain extended select * from t1 where a in (select pk from t10) { ...@@ -2993,8 +2985,7 @@ explain extended select * from t1 where a in (select pk from t10) {
"type": "scan", "type": "scan",
"records": 10, "records": 10,
"cost": 2.022, "cost": 2.022,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 10, "rows_for_plan": 10,
...@@ -3284,6 +3275,26 @@ explain select * from t1 where pk = 2 and a=5 and b=1 { ...@@ -3284,6 +3275,26 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
} }
} }
}, },
{
"table": "t1",
"rowid_filters": [
{
"key": "pk",
"build_cost": 1.1823,
"rows": 1
},
{
"key": "pk_a",
"build_cost": 1.1833,
"rows": 1
},
{
"key": "pk_a_b",
"build_cost": 1.1843,
"rows": 1
}
]
},
{ {
"selectivity_for_indexes": [ "selectivity_for_indexes": [
{ {
...@@ -3347,8 +3358,7 @@ explain select * from t1 where pk = 2 and a=5 and b=1 { ...@@ -3347,8 +3358,7 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
"type": "ref", "type": "ref",
"records": 1, "records": 1,
"cost": 1.0043, "cost": 1.0043,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 1, "rows_for_plan": 1,
...@@ -3472,8 +3482,7 @@ select f1(a) from t1 { ...@@ -3472,8 +3482,7 @@ select f1(a) from t1 {
"type": "scan", "type": "scan",
"records": 4, "records": 4,
"cost": 2.0068, "cost": 2.0068,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 4, "rows_for_plan": 4,
...@@ -3571,8 +3580,7 @@ select f2(a) from t1 { ...@@ -3571,8 +3580,7 @@ select f2(a) from t1 {
"type": "scan", "type": "scan",
"records": 4, "records": 4,
"cost": 2.0068, "cost": 2.0068,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 4, "rows_for_plan": 4,
...@@ -3624,7 +3632,7 @@ a ...@@ -3624,7 +3632,7 @@ a
2 2
select length(trace) from INFORMATION_SCHEMA.OPTIMIZER_TRACE; select length(trace) from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
length(trace) length(trace)
2205 2163
set optimizer_trace_max_mem_size=100; set optimizer_trace_max_mem_size=100;
select * from t1; select * from t1;
a a
...@@ -3638,7 +3646,7 @@ select * from t1 { ...@@ -3638,7 +3646,7 @@ select * from t1 {
"join_preparation": { "join_preparation": {
"select_id": 1, "select_id": 1,
"steps": [ "steps": [
2105 0 2063 0
set optimizer_trace_max_mem_size=0; set optimizer_trace_max_mem_size=0;
select * from t1; select * from t1;
a a
...@@ -3646,7 +3654,7 @@ a ...@@ -3646,7 +3654,7 @@ a
2 2
select * from INFORMATION_SCHEMA.OPTIMIZER_TRACE; select * from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
QUERY TRACE MISSING_BYTES_BEYOND_MAX_MEM_SIZE INSUFFICIENT_PRIVILEGES QUERY TRACE MISSING_BYTES_BEYOND_MAX_MEM_SIZE INSUFFICIENT_PRIVILEGES
select * from t1 2205 0 select * from t1 2163 0
drop table t1; drop table t1;
set optimizer_trace='enabled=off'; set optimizer_trace='enabled=off';
set @@optimizer_trace_max_mem_size= @save_optimizer_trace_max_mem_size; set @@optimizer_trace_max_mem_size= @save_optimizer_trace_max_mem_size;
...@@ -3954,8 +3962,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 { ...@@ -3954,8 +3962,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
"type": "range", "type": "range",
"records": 3, "records": 3,
"cost": 1.407, "cost": 1.407,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 3, "rows_for_plan": 3,
...@@ -3985,8 +3992,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 { ...@@ -3985,8 +3992,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
"type": "ref", "type": "ref",
"records": 1, "records": 1,
"cost": 3.007, "cost": 3.007,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 3, "rows_for_plan": 3,
...@@ -4011,8 +4017,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 { ...@@ -4011,8 +4017,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
"type": "range", "type": "range",
"records": 3, "records": 3,
"cost": 1.407, "cost": 1.407,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 3, "rows_for_plan": 3,
...@@ -4042,8 +4047,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 { ...@@ -4042,8 +4047,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
"type": "ref", "type": "ref",
"records": 2, "records": 2,
"cost": 3.014, "cost": 3.014,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 6, "rows_for_plan": 6,
...@@ -4182,8 +4186,7 @@ explain select * from (select rand() from t1)q { ...@@ -4182,8 +4186,7 @@ explain select * from (select rand() from t1)q {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 3, "rows_for_plan": 3,
...@@ -4249,8 +4252,7 @@ explain select * from (select rand() from t1)q { ...@@ -4249,8 +4252,7 @@ explain select * from (select rand() from t1)q {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 3, "cost": 3,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 3, "rows_for_plan": 3,
...@@ -4458,8 +4460,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_ ...@@ -4458,8 +4460,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 3, "rows_for_plan": 3,
...@@ -4481,8 +4482,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_ ...@@ -4481,8 +4482,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 9, "rows_for_plan": 9,
...@@ -4507,8 +4507,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_ ...@@ -4507,8 +4507,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 3, "rows_for_plan": 3,
...@@ -4538,8 +4537,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_ ...@@ -4538,8 +4537,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 3, "rows_for_plan": 3,
...@@ -4562,8 +4560,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_ ...@@ -4562,8 +4560,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 9, "rows_for_plan": 9,
...@@ -4586,8 +4583,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_ ...@@ -4586,8 +4583,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 27, "rows_for_plan": 27,
...@@ -4632,8 +4628,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_ ...@@ -4632,8 +4628,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 9, "rows_for_plan": 9,
...@@ -4659,8 +4654,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_ ...@@ -4659,8 +4654,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 3, "rows_for_plan": 3,
...@@ -4684,8 +4678,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_ ...@@ -4684,8 +4678,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 3, "rows_for_plan": 3,
...@@ -4993,8 +4986,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -4993,8 +4986,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 3, "rows_for_plan": 3,
...@@ -5017,8 +5009,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5017,8 +5009,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 9, "rows_for_plan": 9,
...@@ -5041,8 +5032,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5041,8 +5032,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 81, "rows_for_plan": 81,
...@@ -5079,8 +5069,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5079,8 +5069,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 27, "rows_for_plan": 27,
...@@ -5108,8 +5097,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5108,8 +5097,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 81, "rows_for_plan": 81,
...@@ -5138,8 +5126,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5138,8 +5126,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 729, "rows_for_plan": 729,
...@@ -5184,8 +5171,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5184,8 +5171,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 243, "rows_for_plan": 243,
...@@ -5211,8 +5197,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5211,8 +5197,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 9, "rows_for_plan": 9,
...@@ -5240,8 +5225,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5240,8 +5225,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 81, "rows_for_plan": 81,
...@@ -5270,8 +5254,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5270,8 +5254,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 729, "rows_for_plan": 729,
...@@ -5311,8 +5294,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5311,8 +5294,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 81, "rows_for_plan": 81,
...@@ -5338,8 +5320,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5338,8 +5320,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 27, "rows_for_plan": 27,
...@@ -5365,8 +5346,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5365,8 +5346,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 81, "rows_for_plan": 81,
...@@ -5389,8 +5369,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5389,8 +5369,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 729, "rows_for_plan": 729,
...@@ -5427,8 +5406,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5427,8 +5406,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 81, "rows_for_plan": 81,
...@@ -5457,8 +5435,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5457,8 +5435,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 729, "rows_for_plan": 729,
...@@ -5498,8 +5475,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5498,8 +5475,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 243, "rows_for_plan": 243,
...@@ -5525,8 +5501,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5525,8 +5501,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 243, "rows_for_plan": 243,
...@@ -5554,8 +5529,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5554,8 +5529,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 2187, "rows_for_plan": 2187,
...@@ -5584,8 +5558,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5584,8 +5558,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 2187, "rows_for_plan": 2187,
...@@ -5611,8 +5584,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5611,8 +5584,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 729, "rows_for_plan": 729,
...@@ -5640,8 +5612,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5640,8 +5612,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 2187, "rows_for_plan": 2187,
...@@ -5679,8 +5650,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5679,8 +5650,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 6561, "rows_for_plan": 6561,
...@@ -5708,8 +5678,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5708,8 +5678,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 27, "rows_for_plan": 27,
...@@ -5732,8 +5701,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5732,8 +5701,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 243, "rows_for_plan": 243,
...@@ -5761,8 +5729,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5761,8 +5729,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 2187, "rows_for_plan": 2187,
...@@ -5791,8 +5758,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5791,8 +5758,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 2187, "rows_for_plan": 2187,
...@@ -5818,8 +5784,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5818,8 +5784,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 243, "rows_for_plan": 243,
...@@ -5843,8 +5808,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5843,8 +5808,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 243, "rows_for_plan": 243,
...@@ -5870,8 +5834,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5870,8 +5834,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 81, "rows_for_plan": 81,
...@@ -5894,8 +5857,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5894,8 +5857,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 729, "rows_for_plan": 729,
...@@ -5923,8 +5885,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5923,8 +5885,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 2187, "rows_for_plan": 2187,
...@@ -5953,8 +5914,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5953,8 +5914,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 6561, "rows_for_plan": 6561,
...@@ -5980,8 +5940,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -5980,8 +5940,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 243, "rows_for_plan": 243,
...@@ -6009,8 +5968,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6009,8 +5968,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 2187, "rows_for_plan": 2187,
...@@ -6039,8 +5997,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6039,8 +5997,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 2187, "rows_for_plan": 2187,
...@@ -6066,8 +6023,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6066,8 +6023,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 729, "rows_for_plan": 729,
...@@ -6095,8 +6051,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6095,8 +6051,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 27, "rows_for_plan": 27,
...@@ -6120,8 +6075,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6120,8 +6075,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 27, "rows_for_plan": 27,
...@@ -6145,8 +6099,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6145,8 +6099,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 9, "rows_for_plan": 9,
...@@ -6170,8 +6123,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6170,8 +6123,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 27, "rows_for_plan": 27,
...@@ -6197,8 +6149,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6197,8 +6149,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 3, "rows_for_plan": 3,
...@@ -6222,8 +6173,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6222,8 +6173,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 9, "rows_for_plan": 9,
...@@ -6247,8 +6197,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6247,8 +6197,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 9, "rows_for_plan": 9,
...@@ -6272,8 +6221,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6272,8 +6221,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 3, "rows_for_plan": 3,
...@@ -6297,8 +6245,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6297,8 +6245,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 9, "rows_for_plan": 9,
...@@ -6612,8 +6559,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6612,8 +6559,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 3, "rows_for_plan": 3,
...@@ -6635,8 +6581,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6635,8 +6581,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 27, "rows_for_plan": 27,
...@@ -6661,8 +6606,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6661,8 +6606,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 9, "rows_for_plan": 9,
...@@ -6689,8 +6633,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6689,8 +6633,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 3, "rows_for_plan": 3,
...@@ -6712,8 +6655,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6712,8 +6655,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 27, "rows_for_plan": 27,
...@@ -6738,8 +6680,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6738,8 +6680,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 9, "rows_for_plan": 9,
...@@ -6769,8 +6710,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6769,8 +6710,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 3, "rows_for_plan": 3,
...@@ -6793,8 +6733,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6793,8 +6733,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 9, "rows_for_plan": 9,
...@@ -6817,8 +6756,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6817,8 +6756,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 81, "rows_for_plan": 81,
...@@ -6860,8 +6798,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6860,8 +6798,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 27, "rows_for_plan": 27,
...@@ -6889,8 +6826,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6889,8 +6826,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 81, "rows_for_plan": 81,
...@@ -6919,8 +6855,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6919,8 +6855,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 729, "rows_for_plan": 729,
...@@ -6970,8 +6905,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6970,8 +6905,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 243, "rows_for_plan": 243,
...@@ -6997,8 +6931,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -6997,8 +6931,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 9, "rows_for_plan": 9,
...@@ -7026,8 +6959,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -7026,8 +6959,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 81, "rows_for_plan": 81,
...@@ -7056,8 +6988,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -7056,8 +6988,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 81, "rows_for_plan": 81,
...@@ -7083,8 +7014,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -7083,8 +7014,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 27, "rows_for_plan": 27,
...@@ -7110,8 +7040,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -7110,8 +7040,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 81, "rows_for_plan": 81,
...@@ -7135,8 +7064,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -7135,8 +7064,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 27, "rows_for_plan": 27,
...@@ -7160,8 +7088,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -7160,8 +7088,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 81, "rows_for_plan": 81,
...@@ -7187,8 +7114,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -7187,8 +7114,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 27, "rows_for_plan": 27,
...@@ -7212,8 +7138,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -7212,8 +7138,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 27, "rows_for_plan": 27,
...@@ -7237,8 +7162,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -7237,8 +7162,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 9, "rows_for_plan": 9,
...@@ -7262,8 +7186,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -7262,8 +7186,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": true, "uses_join_buffering": true
"filter_used": false
} }
}, },
"rows_for_plan": 27, "rows_for_plan": 27,
...@@ -7289,8 +7212,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -7289,8 +7212,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 3, "rows_for_plan": 3,
...@@ -7314,8 +7236,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -7314,8 +7236,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 9, "rows_for_plan": 9,
...@@ -7339,8 +7260,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -7339,8 +7260,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 9, "rows_for_plan": 9,
...@@ -7364,8 +7284,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -7364,8 +7284,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 3, "rows_for_plan": 3,
...@@ -7389,8 +7308,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ...@@ -7389,8 +7308,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan", "type": "scan",
"records": 9, "records": 9,
"cost": 2.0154, "cost": 2.0154,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 9, "rows_for_plan": 9,
...@@ -8083,8 +8001,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) ...@@ -8083,8 +8001,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
"type": "scan", "type": "scan",
"records": 5.9375, "records": 5.9375,
"cost": 2.8296, "cost": 2.8296,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 5.9375, "rows_for_plan": 5.9375,
...@@ -8115,8 +8032,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) ...@@ -8115,8 +8032,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
"type": "scan", "type": "scan",
"records": 804.69, "records": 804.69,
"cost": 256.85, "cost": 256.85,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 4777.8, "rows_for_plan": 4777.8,
...@@ -8148,8 +8064,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) ...@@ -8148,8 +8064,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
"type": "scan", "type": "scan",
"records": 804.69, "records": 804.69,
"cost": 43.26, "cost": 43.26,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 804.69, "rows_for_plan": 804.69,
...@@ -8192,8 +8107,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) ...@@ -8192,8 +8107,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
"type": "scan", "type": "scan",
"records": 10, "records": 10,
"cost": 2.0171, "cost": 2.0171,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 10, "rows_for_plan": 10,
...@@ -8234,8 +8148,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) ...@@ -8234,8 +8148,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
"type": "ref", "type": "ref",
"records": 1, "records": 1,
"cost": 20, "cost": 20,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 10, "rows_for_plan": 10,
...@@ -8268,8 +8181,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) ...@@ -8268,8 +8181,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
"type": "scan", "type": "scan",
"records": 804.69, "records": 804.69,
"cost": 43.26, "cost": 43.26,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 804.69, "rows_for_plan": 804.69,
......
...@@ -217,8 +217,7 @@ explain select * from t1 where a=1 or b=1 { ...@@ -217,8 +217,7 @@ explain select * from t1 where a=1 or b=1 {
"type": "index_merge", "type": "index_merge",
"records": 2, "records": 2,
"cost": 4.1484, "cost": 4.1484,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 2, "rows_for_plan": 2,
......
...@@ -171,6 +171,16 @@ explain select * from t1 where pk1 != 0 and key1 = 1 { ...@@ -171,6 +171,16 @@ explain select * from t1 where pk1 != 0 and key1 = 1 {
} }
} }
}, },
{
"table": "t1",
"rowid_filters": [
{
"key": "key1",
"build_cost": 1.1801,
"rows": 1
}
]
},
{ {
"selectivity_for_indexes": [ "selectivity_for_indexes": [
{ {
...@@ -212,8 +222,7 @@ explain select * from t1 where pk1 != 0 and key1 = 1 { ...@@ -212,8 +222,7 @@ explain select * from t1 where pk1 != 0 and key1 = 1 {
"type": "ref", "type": "ref",
"records": 1, "records": 1,
"cost": 2, "cost": 2,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 1, "rows_for_plan": 1,
......
...@@ -103,8 +103,7 @@ select * from db1.t1 { ...@@ -103,8 +103,7 @@ select * from db1.t1 {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 3, "rows_for_plan": 3,
...@@ -227,8 +226,7 @@ select * from db1.v1 { ...@@ -227,8 +226,7 @@ select * from db1.v1 {
"type": "scan", "type": "scan",
"records": 3, "records": 3,
"cost": 2.0051, "cost": 2.0051,
"uses_join_buffering": false, "uses_join_buffering": false
"filter_used": false
} }
}, },
"rows_for_plan": 3, "rows_for_plan": 3,
......
...@@ -24,6 +24,8 @@ ...@@ -24,6 +24,8 @@
#include "my_json_writer.h" #include "my_json_writer.h"
#include "sp_head.h" #include "sp_head.h"
#include "rowid_filter.h"
const char I_S_table_name[]= "OPTIMIZER_TRACE"; const char I_S_table_name[]= "OPTIMIZER_TRACE";
/** /**
...@@ -661,14 +663,17 @@ void print_best_access_for_table(THD *thd, POSITION *pos, ...@@ -661,14 +663,17 @@ void print_best_access_for_table(THD *thd, POSITION *pos,
{ {
DBUG_ASSERT(thd->trace_started()); DBUG_ASSERT(thd->trace_started());
Json_writer_object trace_best_access(thd, "chosen_access_method"); Json_writer_object obj(thd, "chosen_access_method");
trace_best_access.add("type", type == JT_ALL ? "scan" : obj.add("type", type == JT_ALL ? "scan" : join_type_str[type]);
join_type_str[type]); obj.add("records", pos->records_read);
trace_best_access.add("records", pos->records_read); obj.add("cost", pos->read_time);
trace_best_access.add("cost", pos->read_time); obj.add("uses_join_buffering", pos->use_join_buffer);
trace_best_access.add("uses_join_buffering", pos->use_join_buffer); if (pos->range_rowid_filter_info)
trace_best_access.add("filter_used", {
pos->range_rowid_filter_info != NULL); uint key_no= pos->range_rowid_filter_info->key_no;
obj.add("rowid_filter_key",
pos->table->table->key_info[key_no].name);
}
} }
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include "opt_range.h" #include "opt_range.h"
#include "rowid_filter.h" #include "rowid_filter.h"
#include "sql_select.h" #include "sql_select.h"
#include "opt_trace.h"
inline inline
...@@ -403,9 +404,37 @@ void TABLE::init_cost_info_for_usable_range_rowid_filters(THD *thd) ...@@ -403,9 +404,37 @@ void TABLE::init_cost_info_for_usable_range_rowid_filters(THD *thd)
} }
prune_range_rowid_filters(); prune_range_rowid_filters();
if (unlikely(thd->trace_started()))
trace_range_rowid_filters(thd);
} }
void TABLE::trace_range_rowid_filters(THD *thd) const
{
if (!range_rowid_filter_cost_info_elems)
return;
Range_rowid_filter_cost_info **p= range_rowid_filter_cost_info_ptr;
Range_rowid_filter_cost_info **end= p + range_rowid_filter_cost_info_elems;
Json_writer_object js_obj(thd);
js_obj.add_table_name(this);
Json_writer_array js_arr(thd, "rowid_filters");
for (; p < end; p++)
(*p)->trace_info(thd);
}
void Range_rowid_filter_cost_info::trace_info(THD *thd)
{
Json_writer_object js_obj(thd);
js_obj.add("key", table->key_info[key_no].name);
js_obj.add("build_cost", b);
js_obj.add("rows", est_elements);
}
/** /**
@brief @brief
Choose the best range filter for the given access of the table Choose the best range filter for the given access of the table
......
...@@ -452,6 +452,8 @@ class Range_rowid_filter_cost_info : public Sql_alloc ...@@ -452,6 +452,8 @@ class Range_rowid_filter_cost_info : public Sql_alloc
double get_a() { return a; } double get_a() { return a; }
void trace_info(THD *thd);
friend friend
void TABLE::prune_range_rowid_filters(); void TABLE::prune_range_rowid_filters();
......
...@@ -7758,6 +7758,8 @@ best_access_path(JOIN *join, ...@@ -7758,6 +7758,8 @@ best_access_path(JOIN *join,
filter->get_cmp_gain(rows); filter->get_cmp_gain(rows);
tmp-= filter->get_adjusted_gain(rows) - filter->get_cmp_gain(rows); tmp-= filter->get_adjusted_gain(rows) - filter->get_cmp_gain(rows);
DBUG_ASSERT(tmp >= 0); DBUG_ASSERT(tmp >= 0);
trace_access_idx.add("rowid_filter_key",
s->table->key_info[filter->key_no].name);
} }
} }
trace_access_idx.add("rows", records).add("cost", tmp); trace_access_idx.add("rows", records).add("cost", tmp);
......
...@@ -1566,6 +1566,7 @@ struct TABLE ...@@ -1566,6 +1566,7 @@ struct TABLE
void init_cost_info_for_usable_range_rowid_filters(THD *thd); void init_cost_info_for_usable_range_rowid_filters(THD *thd);
void prune_range_rowid_filters(); void prune_range_rowid_filters();
void trace_range_rowid_filters(THD *thd) const;
Range_rowid_filter_cost_info * Range_rowid_filter_cost_info *
best_range_rowid_filter_for_partial_join(uint access_key_no, best_range_rowid_filter_for_partial_join(uint access_key_no,
double records, double records,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment