diff options
author | Sergei Petrunia <sergey@mariadb.com> | 2022-11-21 17:28:43 +0300 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2022-12-25 17:59:04 +0100 |
commit | 3281970d14d012897bd254609a5109659f4ce222 (patch) | |
tree | d3c99b33fc35bf23c52b0d49fe6ddfbccd71f251 | |
parent | 709c220731ddbfb5ddbd111d5f59567a6e23cee5 (diff) | |
download | mariadb-git-3281970d14d012897bd254609a5109659f4ce222.tar.gz |
MDEV-30059: Optimizer Trace: plan_prefix should be a comma-separated-list
-rw-r--r-- | mysql-test/main/opt_trace.result | 844 | ||||
-rw-r--r-- | mysql-test/main/opt_trace_index_merge.result | 4 | ||||
-rw-r--r-- | mysql-test/main/opt_trace_index_merge_innodb.result | 4 | ||||
-rw-r--r-- | mysql-test/main/opt_trace_security.result | 8 | ||||
-rw-r--r-- | mysql-test/main/opt_trace_selectivity.result | 16 | ||||
-rw-r--r-- | sql/opt_trace.cc | 43 | ||||
-rw-r--r-- | sql/opt_trace.h | 3 | ||||
-rw-r--r-- | sql/sql_select.cc | 6 |
8 files changed, 296 insertions, 632 deletions
diff --git a/mysql-test/main/opt_trace.result b/mysql-test/main/opt_trace.result index 22259870527..71f99a1283f 100644 --- a/mysql-test/main/opt_trace.result +++ b/mysql-test/main/opt_trace.result @@ -127,7 +127,7 @@ select * from v1 { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -158,7 +158,7 @@ select * from v1 { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 1, "cost_for_plan": 0.01034841 @@ -295,7 +295,7 @@ select * from (select * from t1 where t1.a=1)q { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -326,7 +326,7 @@ select * from (select * from t1 where t1.a=1)q { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 1, "cost_for_plan": 0.01034841 @@ -468,7 +468,7 @@ select * from v2 { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -500,7 +500,7 @@ select * from v2 { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 1, "cost_for_plan": 0.01034841, @@ -558,7 +558,7 @@ select * from v2 { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -589,7 +589,7 @@ select * from v2 { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "<derived2>", "rows_for_plan": 2, "cost_for_plan": 0.012418701 @@ -712,7 +712,7 @@ explain select * from v2 { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -743,7 +743,7 @@ explain select * from v2 { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t2", "rows_for_plan": 10, "cost_for_plan": 0.01159965 @@ -845,7 +845,7 @@ explain select * from v1 { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -877,7 +877,7 @@ explain select * from v1 { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 10, "cost_for_plan": 0.01159965, @@ -929,7 +929,7 @@ explain select * from v1 { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -960,7 +960,7 @@ explain select * from v1 { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "<derived2>", "rows_for_plan": 10, "cost_for_plan": 0.012757506 @@ -1119,7 +1119,7 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -1176,13 +1176,13 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 100, "cost_for_plan": 0.0256761, "rest_of_plan": [ { - "plan_prefix": ["t1"], + "plan_prefix": "t1", "get_costs_for_tables": [ { "best_access_path": { @@ -1222,7 +1222,7 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b { ] }, { - "plan_prefix": ["t1"], + "plan_prefix": "t1", "table": "t2", "rows_for_plan": 100, "cost_for_plan": 0.1987835 @@ -1230,13 +1230,13 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t2", "rows_for_plan": 100, "cost_for_plan": 0.0256761, "rest_of_plan": [ { - "plan_prefix": ["t2"], + "plan_prefix": "t2", "get_costs_for_tables": [ { "best_access_path": { @@ -1276,7 +1276,7 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b { ] }, { - "plan_prefix": ["t2"], + "plan_prefix": "t2", "table": "t1", "rows_for_plan": 100, "cost_for_plan": 0.1987835, @@ -1440,7 +1440,7 @@ EXPLAIN SELECT DISTINCT a FROM t1 { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -1470,7 +1470,7 @@ EXPLAIN SELECT DISTINCT a FROM t1 { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 5, "cost_for_plan": 0.004191135 @@ -1649,7 +1649,7 @@ set statement optimizer_scan_setup_cost=0 for EXPLAIN SELECT MIN(d) FROM t1 wher { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -1681,7 +1681,7 @@ set statement optimizer_scan_setup_cost=0 for EXPLAIN SELECT MIN(d) FROM t1 wher ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 0.571428573, "cost_for_plan": 0.001758432, @@ -1889,7 +1889,7 @@ EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=20010104e0 GROUP BY id { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -1920,7 +1920,7 @@ EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=20010104e0 GROUP BY id { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 9, "cost_for_plan": 0.005620843, @@ -2092,7 +2092,7 @@ EXPLAIN SELECT * FROM t1 WHERE a = 20010104e0 GROUP BY id { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -2123,7 +2123,7 @@ EXPLAIN SELECT * FROM t1 WHERE a = 20010104e0 GROUP BY id { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 9, "cost_for_plan": 0.005620843, @@ -2380,7 +2380,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -2423,7 +2423,7 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 41, "cost_for_plan": 0.051288586 @@ -2662,7 +2662,7 @@ select t1.a from t1 left join t2 on t1.a=t2.a { { "considered_execution_plans": [ { - "plan_prefix": ["t2"], + "plan_prefix": "t2", "get_costs_for_tables": [ { "best_access_path": { @@ -2693,7 +2693,7 @@ select t1.a from t1 left join t2 on t1.a=t2.a { ] }, { - "plan_prefix": ["t2"], + "plan_prefix": "t2", "table": "t1", "rows_for_plan": 4, "cost_for_plan": 0.01066122 @@ -2820,7 +2820,7 @@ explain select * from t1 left join t2 on t2.a=t1.a { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -2851,13 +2851,13 @@ explain select * from t1 left join t2 on t2.a=t1.a { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 4, "cost_for_plan": 0.01066122, "rest_of_plan": [ { - "plan_prefix": ["t1"], + "plan_prefix": "t1", "get_costs_for_tables": [ { "best_access_path": { @@ -2891,7 +2891,7 @@ explain select * from t1 left join t2 on t2.a=t1.a { ] }, { - "plan_prefix": ["t1"], + "plan_prefix": "t1", "table": "t2", "rows_for_plan": 4, "cost_for_plan": 0.017782124 @@ -3061,7 +3061,7 @@ explain select t1.a from t1 left join (t2 join t3 on t2.b=t3.b) on t2.a=t1.a and { "considered_execution_plans": [ { - "plan_prefix": ["t3", "t2"], + "plan_prefix": "t3,t2", "get_costs_for_tables": [ { "best_access_path": { @@ -3092,7 +3092,7 @@ explain select t1.a from t1 left join (t2 join t3 on t2.b=t3.b) on t2.a=t1.a and ] }, { - "plan_prefix": ["t3", "t2"], + "plan_prefix": "t3,t2", "table": "t1", "rows_for_plan": 4, "cost_for_plan": 0.01066122 @@ -3281,7 +3281,7 @@ explain extended select * from t1 where a in (select p from t2) { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -3312,7 +3312,7 @@ explain extended select * from t1 where a in (select p from t2) { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t2", "rows_for_plan": 101, "cost_for_plan": 0.025832505 @@ -3325,7 +3325,7 @@ explain extended select * from t1 where a in (select p from t2) { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -3382,14 +3382,14 @@ explain extended select * from t1 where a in (select p from t2) { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 4, "cost_for_plan": 0.01066122, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": ["t1"], + "plan_prefix": "t1", "get_costs_for_tables": [ { "best_access_path": { @@ -3420,7 +3420,7 @@ explain extended select * from t1 where a in (select p from t2) { ] }, { - "plan_prefix": ["t1"], + "plan_prefix": "t1", "table": "t2", "rows_for_plan": 404, "cost_for_plan": 0.074255053, @@ -3457,7 +3457,7 @@ explain extended select * from t1 where a in (select p from t2) { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t2", "rows_for_plan": 101, "cost_for_plan": 0.025832505, @@ -3819,7 +3819,7 @@ explain select * from t1 where pk = 2 and a=5 and b=1 { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -3871,7 +3871,7 @@ explain select * from t1 where pk = 2 and a=5 and b=1 { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 1, "cost_for_plan": 0.000838227 @@ -3986,7 +3986,7 @@ select f1(a) from t1 { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -4017,7 +4017,7 @@ select f1(a) from t1 { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 4, "cost_for_plan": 0.01066122 @@ -4100,7 +4100,7 @@ select f2(a) from t1 { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -4131,7 +4131,7 @@ select f2(a) from t1 { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 4, "cost_for_plan": 0.01066122 @@ -4499,7 +4499,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -4556,13 +4556,13 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t0", "rows_for_plan": 3, "cost_for_plan": 0.001664909, "rest_of_plan": [ { - "plan_prefix": ["t0"], + "plan_prefix": "t0", "get_costs_for_tables": [ { "best_access_path": { @@ -4598,7 +4598,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 { ] }, { - "plan_prefix": ["t0"], + "plan_prefix": "t0", "table": "t1", "rows_for_plan": 3, "cost_for_plan": 0.00376999 @@ -4606,13 +4606,13 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 3, "cost_for_plan": 0.001664909, "rest_of_plan": [ { - "plan_prefix": ["t1"], + "plan_prefix": "t1", "get_costs_for_tables": [ { "best_access_path": { @@ -4649,7 +4649,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 { ] }, { - "plan_prefix": ["t1"], + "plan_prefix": "t1", "table": "t0", "rows_for_plan": 6, "cost_for_plan": 0.0041848, @@ -4782,7 +4782,7 @@ explain select * from (select rand() from t1)q { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -4813,7 +4813,7 @@ explain select * from (select rand() from t1)q { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 3, "cost_for_plan": 0.010504815 @@ -4864,7 +4864,7 @@ explain select * from (select rand() from t1)q { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -4895,7 +4895,7 @@ explain select * from (select rand() from t1)q { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "<derived2>", "rows_for_plan": 3, "cost_for_plan": 0.012461052 @@ -5090,7 +5090,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_ { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -5147,13 +5147,13 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_ ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t_inner_1", "rows_for_plan": 3, "cost_for_plan": 0.010504815, "rest_of_plan": [ { - "plan_prefix": ["t_inner_1"], + "plan_prefix": "t_inner_1", "get_costs_for_tables": [ { "best_access_path": { @@ -5184,7 +5184,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_ ] }, { - "plan_prefix": ["t_inner_1"], + "plan_prefix": "t_inner_1", "table": "t_inner_2", "rows_for_plan": 9, "cost_for_plan": 0.022028022 @@ -5192,7 +5192,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_ ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t_inner_2", "rows_for_plan": 3, "cost_for_plan": 0.010504815, @@ -5206,7 +5206,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_ { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -5289,14 +5289,14 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_ ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 3, "cost_for_plan": 0.010504815, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": ["t1"], + "plan_prefix": "t1", "get_costs_for_tables": [ { "best_access_path": { @@ -5353,14 +5353,14 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_ ] }, { - "plan_prefix": ["t1"], + "plan_prefix": "t1", "table": "t_inner_1", "rows_for_plan": 9, "cost_for_plan": 0.022028022, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": ["t1", "t_inner_1"], + "plan_prefix": "t1,t_inner_1", "get_costs_for_tables": [ { "best_access_path": { @@ -5391,7 +5391,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_ ] }, { - "plan_prefix": ["t1", "t_inner_1"], + "plan_prefix": "t1,t_inner_1", "table": "t_inner_2", "rows_for_plan": 27, "cost_for_plan": 0.037231395, @@ -5428,7 +5428,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_ ] }, { - "plan_prefix": ["t1"], + "plan_prefix": "t1", "table": "t_inner_2", "rows_for_plan": 9, "cost_for_plan": 0.022028022, @@ -5438,7 +5438,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_ ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t_inner_1", "rows_for_plan": 3, "cost_for_plan": 0.010504815, @@ -5446,7 +5446,7 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_ "pruned_by_heuristic": true }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t_inner_2", "rows_for_plan": 3, "cost_for_plan": 0.010504815, @@ -5752,7 +5752,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -5913,14 +5913,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t_outer_1", "rows_for_plan": 3, "cost_for_plan": 0.010504815, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": ["t_outer_1"], + "plan_prefix": "t_outer_1", "get_costs_for_tables": [ { "best_access_path": { @@ -6055,14 +6055,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1"], + "plan_prefix": "t_outer_1", "table": "t_outer_2", "rows_for_plan": 27, "cost_for_plan": 0.02463804, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": ["t_outer_1", "t_outer_2"], + "plan_prefix": "t_outer_1,t_outer_2", "get_costs_for_tables": [ { "best_access_path": { @@ -6171,14 +6171,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_outer_2"], + "plan_prefix": "t_outer_1,t_outer_2", "table": "t_inner_1", "rows_for_plan": 81, "cost_for_plan": 0.049238529, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": ["t_outer_1", "t_outer_2", "t_inner_1"], + "plan_prefix": "t_outer_1,t_outer_2,t_inner_1", "get_costs_for_tables": [ { "best_access_path": { @@ -6261,7 +6261,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_outer_2", "t_inner_1"], + "plan_prefix": "t_outer_1,t_outer_2,t_inner_1", "table": "t_inner_2", "rows_for_plan": 729, "cost_for_plan": 0.222053862, @@ -6291,12 +6291,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "sj_filtered": 3.703703704, "rest_of_plan": [ { - "plan_prefix": [ - "t_outer_1", - "t_outer_2", - "t_inner_1", - "t_inner_2" - ], + "plan_prefix": "t_outer_1,t_outer_2,t_inner_1,t_inner_2", "get_costs_for_tables": [ { "best_access_path": { @@ -6353,25 +6348,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_outer_2", - "t_inner_1", - "t_inner_2" - ], + "plan_prefix": "t_outer_1,t_outer_2,t_inner_1,t_inner_2", "table": "t_inner_4", "rows_for_plan": 81, "cost_for_plan": 0.403207963, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": [ - "t_outer_1", - "t_outer_2", - "t_inner_1", - "t_inner_2", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_outer_2,t_inner_1,t_inner_2,t_inner_4", "get_costs_for_tables": [ { "best_access_path": { @@ -6402,13 +6386,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_outer_2", - "t_inner_1", - "t_inner_2", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_outer_2,t_inner_1,t_inner_2,t_inner_4", "table": "t_inner_3", "rows_for_plan": 729, "cost_for_plan": 0.664765924, @@ -6440,12 +6418,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_outer_2", - "t_inner_1", - "t_inner_2" - ], + "plan_prefix": "t_outer_1,t_outer_2,t_inner_1,t_inner_2", "table": "t_inner_3", "rows_for_plan": 243, "cost_for_plan": 0.448771561, @@ -6455,19 +6428,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_outer_2", "t_inner_1"], + "plan_prefix": "t_outer_1,t_outer_2,t_inner_1", "table": "t_inner_4", "rows_for_plan": 243, "cost_for_plan": 0.116820804, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": [ - "t_outer_1", - "t_outer_2", - "t_inner_1", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_outer_2,t_inner_1,t_inner_4", "get_costs_for_tables": [ { "best_access_path": { @@ -6524,25 +6492,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_outer_2", - "t_inner_1", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_outer_2,t_inner_1,t_inner_4", "table": "t_inner_2", "rows_for_plan": 2187, "cost_for_plan": 0.745494255, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": [ - "t_outer_1", - "t_outer_2", - "t_inner_1", - "t_inner_4", - "t_inner_2" - ], + "plan_prefix": "t_outer_1,t_outer_2,t_inner_1,t_inner_4,t_inner_2", "get_costs_for_tables": [ { "best_access_path": { @@ -6573,13 +6530,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_outer_2", - "t_inner_1", - "t_inner_4", - "t_inner_2" - ], + "plan_prefix": "t_outer_1,t_outer_2,t_inner_1,t_inner_4,t_inner_2", "table": "t_inner_3", "rows_for_plan": 19683, "cost_for_plan": 7.510034832, @@ -6614,12 +6565,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_outer_2", - "t_inner_1", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_outer_2,t_inner_1,t_inner_4", "table": "t_inner_3", "rows_for_plan": 2187, "cost_for_plan": 0.745494255, @@ -6629,7 +6575,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_outer_2", "t_inner_1"], + "plan_prefix": "t_outer_1,t_outer_2,t_inner_1", "table": "t_inner_3", "rows_for_plan": 729, "cost_for_plan": 0.222053862, @@ -6639,7 +6585,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_outer_2"], + "plan_prefix": "t_outer_1,t_outer_2", "table": "t_inner_2", "rows_for_plan": 243, "cost_for_plan": 0.075081543, @@ -6647,7 +6593,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "pruned_by_heuristic": true }, { - "plan_prefix": ["t_outer_1", "t_outer_2"], + "plan_prefix": "t_outer_1,t_outer_2", "table": "t_inner_4", "rows_for_plan": 81, "cost_for_plan": 0.049238529, @@ -6655,7 +6601,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "pruned_by_heuristic": true }, { - "plan_prefix": ["t_outer_1", "t_outer_2"], + "plan_prefix": "t_outer_1,t_outer_2", "table": "t_inner_3", "rows_for_plan": 243, "cost_for_plan": 0.075081543, @@ -6665,14 +6611,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1"], + "plan_prefix": "t_outer_1", "table": "t_inner_1", "rows_for_plan": 9, "cost_for_plan": 0.022028022, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": ["t_outer_1", "t_inner_1"], + "plan_prefix": "t_outer_1,t_inner_1", "get_costs_for_tables": [ { "best_access_path": { @@ -6781,14 +6727,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_inner_1"], + "plan_prefix": "t_outer_1,t_inner_1", "table": "t_outer_2", "rows_for_plan": 81, "cost_for_plan": 0.046471353, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_outer_2"], + "plan_prefix": "t_outer_1,t_inner_1,t_outer_2", "get_costs_for_tables": [ { "best_access_path": { @@ -6871,7 +6817,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_outer_2"], + "plan_prefix": "t_outer_1,t_inner_1,t_outer_2", "table": "t_inner_2", "rows_for_plan": 729, "cost_for_plan": 0.219286686, @@ -6896,12 +6842,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "sj_filtered": 3.703703704, "rest_of_plan": [ { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_outer_2", - "t_inner_2" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_outer_2,t_inner_2", "get_costs_for_tables": [ { "best_access_path": { @@ -6958,25 +6899,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_outer_2", - "t_inner_2" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_outer_2,t_inner_2", "table": "t_inner_4", "rows_for_plan": 81, "cost_for_plan": 0.400440787, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_outer_2", - "t_inner_2", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_outer_2,t_inner_2,t_inner_4", "get_costs_for_tables": [ { "best_access_path": { @@ -7007,13 +6937,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_outer_2", - "t_inner_2", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_outer_2,t_inner_2,t_inner_4", "table": "t_inner_3", "rows_for_plan": 729, "cost_for_plan": 0.661998748, @@ -7045,12 +6969,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_outer_2", - "t_inner_2" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_outer_2,t_inner_2", "table": "t_inner_3", "rows_for_plan": 243, "cost_for_plan": 0.446004385, @@ -7060,19 +6979,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_outer_2"], + "plan_prefix": "t_outer_1,t_inner_1,t_outer_2", "table": "t_inner_4", "rows_for_plan": 243, "cost_for_plan": 0.114053628, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_outer_2", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_outer_2,t_inner_4", "get_costs_for_tables": [ { "best_access_path": { @@ -7129,25 +7043,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_outer_2", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_outer_2,t_inner_4", "table": "t_inner_2", "rows_for_plan": 2187, "cost_for_plan": 0.742727079, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_outer_2", - "t_inner_4", - "t_inner_2" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_outer_2,t_inner_4,t_inner_2", "get_costs_for_tables": [ { "best_access_path": { @@ -7178,13 +7081,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_outer_2", - "t_inner_4", - "t_inner_2" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_outer_2,t_inner_4,t_inner_2", "table": "t_inner_3", "rows_for_plan": 19683, "cost_for_plan": 7.507267656, @@ -7214,12 +7111,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_outer_2", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_outer_2,t_inner_4", "table": "t_inner_3", "rows_for_plan": 2187, "cost_for_plan": 0.742727079, @@ -7229,7 +7121,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_outer_2"], + "plan_prefix": "t_outer_1,t_inner_1,t_outer_2", "table": "t_inner_3", "rows_for_plan": 729, "cost_for_plan": 0.219286686, @@ -7239,7 +7131,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_inner_1"], + "plan_prefix": "t_outer_1,t_inner_1", "table": "t_inner_2", "rows_for_plan": 81, "cost_for_plan": 0.046471353, @@ -7269,7 +7161,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "sj_filtered": 3.703703704, "rest_of_plan": [ { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_2"], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2", "get_costs_for_tables": [ { "best_access_path": { @@ -7352,19 +7244,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_2"], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2", "table": "t_outer_2", "rows_for_plan": 27, "cost_for_plan": 0.102412822, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_2", - "t_outer_2" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2,t_outer_2", "get_costs_for_tables": [ { "best_access_path": { @@ -7421,25 +7308,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_2", - "t_outer_2" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2,t_outer_2", "table": "t_inner_4", "rows_for_plan": 81, "cost_for_plan": 0.136873603, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_2", - "t_outer_2", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2,t_outer_2,t_inner_4", "get_costs_for_tables": [ { "best_access_path": { @@ -7470,13 +7346,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_2", - "t_outer_2", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2,t_outer_2,t_inner_4", "table": "t_inner_3", "rows_for_plan": 729, "cost_for_plan": 0.398431564, @@ -7508,12 +7378,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_2", - "t_outer_2" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2,t_outer_2", "table": "t_inner_3", "rows_for_plan": 243, "cost_for_plan": 0.182437201, @@ -7523,19 +7388,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_2"], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2", "table": "t_inner_4", "rows_for_plan": 9, "cost_for_plan": 0.097611628, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_2", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2,t_inner_4", "get_costs_for_tables": [ { "best_access_path": { @@ -7592,25 +7452,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_2", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2,t_inner_4", "table": "t_outer_2", "rows_for_plan": 81, "cost_for_plan": 0.131915251, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_2", - "t_inner_4", - "t_outer_2" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2,t_inner_4,t_outer_2", "get_costs_for_tables": [ { "best_access_path": { @@ -7641,13 +7490,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_2", - "t_inner_4", - "t_outer_2" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2,t_inner_4,t_outer_2", "table": "t_inner_3", "rows_for_plan": 729, "cost_for_plan": 0.393473212, @@ -7674,12 +7517,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_2", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2,t_inner_4", "table": "t_inner_3", "rows_for_plan": 81, "cost_for_plan": 0.131915251, @@ -7689,7 +7527,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_2"], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2", "table": "t_inner_3", "rows_for_plan": 27, "cost_for_plan": 0.102412822, @@ -7699,14 +7537,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_inner_1"], + "plan_prefix": "t_outer_1,t_inner_1", "table": "t_inner_4", "rows_for_plan": 27, "cost_for_plan": 0.037231395, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_4"], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_4", "get_costs_for_tables": [ { "best_access_path": { @@ -7789,19 +7627,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_4"], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_4", "table": "t_outer_2", "rows_for_plan": 243, "cost_for_plan": 0.102465336, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_4", - "t_outer_2" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_4,t_outer_2", "get_costs_for_tables": [ { "best_access_path": { @@ -7858,12 +7691,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_4", - "t_outer_2" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_4,t_outer_2", "table": "t_inner_2", "rows_for_plan": 2187, "cost_for_plan": 0.731138787, @@ -7873,12 +7701,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "best_cost": 0.540166532 }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_4", - "t_outer_2" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_4,t_outer_2", "table": "t_inner_3", "rows_for_plan": 2187, "cost_for_plan": 0.731138787, @@ -7890,7 +7713,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_4"], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_4", "table": "t_inner_2", "rows_for_plan": 243, "cost_for_plan": 0.102465336, @@ -7898,7 +7721,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "pruned_by_heuristic": true }, { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_4"], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_4", "table": "t_inner_3", "rows_for_plan": 243, "cost_for_plan": 0.102465336, @@ -7908,7 +7731,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_inner_1"], + "plan_prefix": "t_outer_1,t_inner_1", "table": "t_inner_3", "rows_for_plan": 81, "cost_for_plan": 0.046471353, @@ -7918,7 +7741,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1"], + "plan_prefix": "t_outer_1", "table": "t_inner_2", "rows_for_plan": 27, "cost_for_plan": 0.02463804, @@ -7926,7 +7749,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "pruned_by_heuristic": true }, { - "plan_prefix": ["t_outer_1"], + "plan_prefix": "t_outer_1", "table": "t_inner_4", "rows_for_plan": 9, "cost_for_plan": 0.022028022, @@ -7934,7 +7757,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "pruned_by_heuristic": true }, { - "plan_prefix": ["t_outer_1"], + "plan_prefix": "t_outer_1", "table": "t_inner_3", "rows_for_plan": 27, "cost_for_plan": 0.02463804, @@ -7944,7 +7767,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t_outer_2", "rows_for_plan": 9, "cost_for_plan": 0.011443245, @@ -7952,7 +7775,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "pruned_by_heuristic": true }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t_inner_1", "rows_for_plan": 3, "cost_for_plan": 0.010504815, @@ -7960,7 +7783,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "pruned_by_heuristic": true }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t_inner_2", "rows_for_plan": 9, "cost_for_plan": 0.011443245, @@ -7968,7 +7791,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "pruned_by_heuristic": true }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t_inner_4", "rows_for_plan": 3, "cost_for_plan": 0.010504815, @@ -7976,7 +7799,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "pruned_by_heuristic": true }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t_inner_3", "rows_for_plan": 9, "cost_for_plan": 0.011443245, @@ -8287,7 +8110,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -8344,13 +8167,13 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t_inner_1", "rows_for_plan": 3, "cost_for_plan": 0.010504815, "rest_of_plan": [ { - "plan_prefix": ["t_inner_1"], + "plan_prefix": "t_inner_1", "get_costs_for_tables": [ { "best_access_path": { @@ -8381,7 +8204,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_inner_1"], + "plan_prefix": "t_inner_1", "table": "t_inner_2", "rows_for_plan": 27, "cost_for_plan": 0.02463804 @@ -8389,7 +8212,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t_inner_2", "rows_for_plan": 9, "cost_for_plan": 0.011443245, @@ -8400,7 +8223,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -8457,13 +8280,13 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t_inner_4", "rows_for_plan": 3, "cost_for_plan": 0.010504815, "rest_of_plan": [ { - "plan_prefix": ["t_inner_4"], + "plan_prefix": "t_inner_4", "get_costs_for_tables": [ { "best_access_path": { @@ -8494,7 +8317,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_inner_4"], + "plan_prefix": "t_inner_4", "table": "t_inner_3", "rows_for_plan": 27, "cost_for_plan": 0.02463804 @@ -8502,7 +8325,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t_inner_3", "rows_for_plan": 9, "cost_for_plan": 0.011443245, @@ -8516,7 +8339,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -8677,14 +8500,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t_outer_1", "rows_for_plan": 3, "cost_for_plan": 0.010504815, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": ["t_outer_1"], + "plan_prefix": "t_outer_1", "get_costs_for_tables": [ { "best_access_path": { @@ -8819,14 +8642,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1"], + "plan_prefix": "t_outer_1", "table": "t_outer_2", "rows_for_plan": 27, "cost_for_plan": 0.02463804, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": ["t_outer_1", "t_outer_2"], + "plan_prefix": "t_outer_1,t_outer_2", "get_costs_for_tables": [ { "best_access_path": { @@ -8935,14 +8758,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_outer_2"], + "plan_prefix": "t_outer_1,t_outer_2", "table": "t_inner_1", "rows_for_plan": 81, "cost_for_plan": 0.049238529, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": ["t_outer_1", "t_outer_2", "t_inner_1"], + "plan_prefix": "t_outer_1,t_outer_2,t_inner_1", "get_costs_for_tables": [ { "best_access_path": { @@ -9025,7 +8848,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_outer_2", "t_inner_1"], + "plan_prefix": "t_outer_1,t_outer_2,t_inner_1", "table": "t_inner_2", "rows_for_plan": 729, "cost_for_plan": 0.222053862, @@ -9060,12 +8883,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "sj_filtered": 3.703703704, "rest_of_plan": [ { - "plan_prefix": [ - "t_outer_1", - "t_outer_2", - "t_inner_1", - "t_inner_2" - ], + "plan_prefix": "t_outer_1,t_outer_2,t_inner_1,t_inner_2", "get_costs_for_tables": [ { "best_access_path": { @@ -9122,25 +8940,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_outer_2", - "t_inner_1", - "t_inner_2" - ], + "plan_prefix": "t_outer_1,t_outer_2,t_inner_1,t_inner_2", "table": "t_inner_4", "rows_for_plan": 81, "cost_for_plan": 0.118419277, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": [ - "t_outer_1", - "t_outer_2", - "t_inner_1", - "t_inner_2", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_outer_2,t_inner_1,t_inner_2,t_inner_4", "get_costs_for_tables": [ { "best_access_path": { @@ -9171,13 +8978,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_outer_2", - "t_inner_1", - "t_inner_2", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_outer_2,t_inner_1,t_inner_2,t_inner_4", "table": "t_inner_3", "rows_for_plan": 729, "cost_for_plan": 0.379977238, @@ -9214,12 +9015,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_outer_2", - "t_inner_1", - "t_inner_2" - ], + "plan_prefix": "t_outer_1,t_outer_2,t_inner_1,t_inner_2", "table": "t_inner_3", "rows_for_plan": 243, "cost_for_plan": 0.163982875, @@ -9231,7 +9027,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_outer_2", "t_inner_1"], + "plan_prefix": "t_outer_1,t_outer_2,t_inner_1", "table": "t_inner_4", "rows_for_plan": 243, "cost_for_plan": 0.116820804, @@ -9239,7 +9035,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "pruned_by_heuristic": true }, { - "plan_prefix": ["t_outer_1", "t_outer_2", "t_inner_1"], + "plan_prefix": "t_outer_1,t_outer_2,t_inner_1", "table": "t_inner_3", "rows_for_plan": 729, "cost_for_plan": 0.222053862, @@ -9251,7 +9047,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_outer_2"], + "plan_prefix": "t_outer_1,t_outer_2", "table": "t_inner_2", "rows_for_plan": 243, "cost_for_plan": 0.075081543, @@ -9259,7 +9055,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "pruned_by_heuristic": true }, { - "plan_prefix": ["t_outer_1", "t_outer_2"], + "plan_prefix": "t_outer_1,t_outer_2", "table": "t_inner_4", "rows_for_plan": 81, "cost_for_plan": 0.049238529, @@ -9267,7 +9063,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "pruned_by_heuristic": true }, { - "plan_prefix": ["t_outer_1", "t_outer_2"], + "plan_prefix": "t_outer_1,t_outer_2", "table": "t_inner_3", "rows_for_plan": 243, "cost_for_plan": 0.075081543, @@ -9277,14 +9073,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1"], + "plan_prefix": "t_outer_1", "table": "t_inner_1", "rows_for_plan": 9, "cost_for_plan": 0.022028022, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": ["t_outer_1", "t_inner_1"], + "plan_prefix": "t_outer_1,t_inner_1", "get_costs_for_tables": [ { "best_access_path": { @@ -9393,14 +9189,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_inner_1"], + "plan_prefix": "t_outer_1,t_inner_1", "table": "t_outer_2", "rows_for_plan": 81, "cost_for_plan": 0.046471353, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_outer_2"], + "plan_prefix": "t_outer_1,t_inner_1,t_outer_2", "get_costs_for_tables": [ { "best_access_path": { @@ -9483,7 +9279,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_outer_2"], + "plan_prefix": "t_outer_1,t_inner_1,t_outer_2", "table": "t_inner_2", "rows_for_plan": 729, "cost_for_plan": 0.219286686, @@ -9511,19 +9307,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "best_cost": 0.143278952 }, { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_outer_2"], + "plan_prefix": "t_outer_1,t_inner_1,t_outer_2", "table": "t_inner_4", "rows_for_plan": 243, "cost_for_plan": 0.114053628, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_outer_2", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_outer_2,t_inner_4", "get_costs_for_tables": [ { "best_access_path": { @@ -9580,12 +9371,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_outer_2", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_outer_2,t_inner_4", "table": "t_inner_2", "rows_for_plan": 2187, "cost_for_plan": 0.742727079, @@ -9595,12 +9381,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "best_cost": 0.143278952 }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_outer_2", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_outer_2,t_inner_4", "table": "t_inner_3", "rows_for_plan": 2187, "cost_for_plan": 0.742727079, @@ -9619,13 +9400,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "sj_filtered": 3.703703704, "rest_of_plan": [ { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_outer_2", - "t_inner_4", - "t_inner_3" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_outer_2,t_inner_4,t_inner_3", "get_costs_for_tables": [ { "best_access_path": { @@ -9656,13 +9431,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_outer_2", - "t_inner_4", - "t_inner_3" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_outer_2,t_inner_4,t_inner_3", "table": "t_inner_2", "rows_for_plan": 729, "cost_for_plan": 0.377896186, @@ -9694,7 +9463,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_outer_2"], + "plan_prefix": "t_outer_1,t_inner_1,t_outer_2", "table": "t_inner_3", "rows_for_plan": 729, "cost_for_plan": 0.219286686, @@ -9706,7 +9475,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_inner_1"], + "plan_prefix": "t_outer_1,t_inner_1", "table": "t_inner_2", "rows_for_plan": 81, "cost_for_plan": 0.046471353, @@ -9741,7 +9510,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "sj_filtered": 3.703703704, "rest_of_plan": [ { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_2"], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2", "get_costs_for_tables": [ { "best_access_path": { @@ -9824,19 +9593,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_2"], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2", "table": "t_outer_2", "rows_for_plan": 27, "cost_for_plan": 0.082557964, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_2", - "t_outer_2" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2,t_outer_2", "get_costs_for_tables": [ { "best_access_path": { @@ -9893,25 +9657,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_2", - "t_outer_2" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2,t_outer_2", "table": "t_inner_4", "rows_for_plan": 81, "cost_for_plan": 0.117018745, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_2", - "t_outer_2", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2,t_outer_2,t_inner_4", "get_costs_for_tables": [ { "best_access_path": { @@ -9942,13 +9695,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_2", - "t_outer_2", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2,t_outer_2,t_inner_4", "table": "t_inner_3", "rows_for_plan": 729, "cost_for_plan": 0.378576706, @@ -9985,12 +9732,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_2", - "t_outer_2" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2,t_outer_2", "table": "t_inner_3", "rows_for_plan": 243, "cost_for_plan": 0.162582343, @@ -10002,19 +9744,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_2"], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2", "table": "t_inner_4", "rows_for_plan": 9, "cost_for_plan": 0.07775677, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_2", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2,t_inner_4", "get_costs_for_tables": [ { "best_access_path": { @@ -10071,25 +9808,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_2", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2,t_inner_4", "table": "t_outer_2", "rows_for_plan": 81, "cost_for_plan": 0.112060393, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_2", - "t_inner_4", - "t_outer_2" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2,t_inner_4,t_outer_2", "get_costs_for_tables": [ { "best_access_path": { @@ -10120,13 +9846,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_2", - "t_inner_4", - "t_outer_2" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2,t_inner_4,t_outer_2", "table": "t_inner_3", "rows_for_plan": 729, "cost_for_plan": 0.373618354, @@ -10156,12 +9876,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_2", - "t_inner_4" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2,t_inner_4", "table": "t_inner_3", "rows_for_plan": 81, "cost_for_plan": 0.112060393, @@ -10171,7 +9886,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_2"], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_2", "table": "t_inner_3", "rows_for_plan": 27, "cost_for_plan": 0.082557964, @@ -10181,14 +9896,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_inner_1"], + "plan_prefix": "t_outer_1,t_inner_1", "table": "t_inner_4", "rows_for_plan": 27, "cost_for_plan": 0.037231395, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_4"], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_4", "get_costs_for_tables": [ { "best_access_path": { @@ -10271,19 +9986,14 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_4"], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_4", "table": "t_outer_2", "rows_for_plan": 243, "cost_for_plan": 0.102465336, "semijoin_strategy_choice": [], "rest_of_plan": [ { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_4", - "t_outer_2" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_4,t_outer_2", "get_costs_for_tables": [ { "best_access_path": { @@ -10340,12 +10050,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_4", - "t_outer_2" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_4,t_outer_2", "table": "t_inner_2", "rows_for_plan": 2187, "cost_for_plan": 0.731138787, @@ -10355,12 +10060,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "best_cost": 0.14187842 }, { - "plan_prefix": [ - "t_outer_1", - "t_inner_1", - "t_inner_4", - "t_outer_2" - ], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_4,t_outer_2", "table": "t_inner_3", "rows_for_plan": 2187, "cost_for_plan": 0.731138787, @@ -10372,7 +10072,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_4"], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_4", "table": "t_inner_2", "rows_for_plan": 243, "cost_for_plan": 0.102465336, @@ -10380,7 +10080,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "pruned_by_heuristic": true }, { - "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_4"], + "plan_prefix": "t_outer_1,t_inner_1,t_inner_4", "table": "t_inner_3", "rows_for_plan": 243, "cost_for_plan": 0.102465336, @@ -10390,7 +10090,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1", "t_inner_1"], + "plan_prefix": "t_outer_1,t_inner_1", "table": "t_inner_3", "rows_for_plan": 81, "cost_for_plan": 0.046471353, @@ -10400,7 +10100,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": ["t_outer_1"], + "plan_prefix": "t_outer_1", "table": "t_inner_2", "rows_for_plan": 27, "cost_for_plan": 0.02463804, @@ -10408,7 +10108,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "pruned_by_heuristic": true }, { - "plan_prefix": ["t_outer_1"], + "plan_prefix": "t_outer_1", "table": "t_inner_4", "rows_for_plan": 9, "cost_for_plan": 0.022028022, @@ -10416,7 +10116,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "pruned_by_heuristic": true }, { - "plan_prefix": ["t_outer_1"], + "plan_prefix": "t_outer_1", "table": "t_inner_3", "rows_for_plan": 27, "cost_for_plan": 0.02463804, @@ -10426,7 +10126,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t_outer_2", "rows_for_plan": 9, "cost_for_plan": 0.011443245, @@ -10434,7 +10134,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "pruned_by_heuristic": true }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t_inner_1", "rows_for_plan": 3, "cost_for_plan": 0.010504815, @@ -10442,7 +10142,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "pruned_by_heuristic": true }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t_inner_2", "rows_for_plan": 9, "cost_for_plan": 0.011443245, @@ -10450,7 +10150,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "pruned_by_heuristic": true }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t_inner_4", "rows_for_plan": 3, "cost_for_plan": 0.010504815, @@ -10458,7 +10158,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) { "pruned_by_heuristic": true }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t_inner_3", "rows_for_plan": 9, "cost_for_plan": 0.011443245, @@ -11141,9 +10841,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) [ { - "plan_prefix": - [ - ], + "plan_prefix": "", "get_costs_for_tables": [ @@ -11214,9 +10912,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) }, { - "plan_prefix": - [ - ], + "plan_prefix": "", "table": "A", "rows_for_plan": 5, "cost_for_plan": 0.01159965, @@ -11224,10 +10920,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) [ { - "plan_prefix": - [ - "A" - ], + "plan_prefix": "A", "get_costs_for_tables": [ @@ -11266,10 +10959,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) }, { - "plan_prefix": - [ - "A" - ], + "plan_prefix": "A", "table": "B", "rows_for_plan": 4000, "cost_for_plan": 0.84620665 @@ -11278,9 +10968,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) }, { - "plan_prefix": - [ - ], + "plan_prefix": "", "table": "B", "rows_for_plan": 800, "cost_for_plan": 0.1669214, @@ -11301,9 +10989,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) [ { - "plan_prefix": - [ - ], + "plan_prefix": "", "get_costs_for_tables": [ @@ -11374,9 +11060,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) }, { - "plan_prefix": - [ - ], + "plan_prefix": "", "table": "A", "rows_for_plan": 10, "cost_for_plan": 0.01159965, @@ -11384,10 +11068,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) [ { - "plan_prefix": - [ - "A" - ], + "plan_prefix": "A", "get_costs_for_tables": [ @@ -11432,10 +11113,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) }, { - "plan_prefix": - [ - "A" - ], + "plan_prefix": "A", "table": "B", "rows_for_plan": 10, "cost_for_plan": 0.02970911, @@ -11449,9 +11127,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) }, { - "plan_prefix": - [ - ], + "plan_prefix": "", "table": "B", "rows_for_plan": 800, "cost_for_plan": 0.1669214, @@ -11581,9 +11257,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) [ { - "plan_prefix": - [ - ], + "plan_prefix": "", "get_costs_for_tables": [ @@ -11655,9 +11329,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) }, { - "plan_prefix": - [ - ], + "plan_prefix": "", "table": "t1", "rows_for_plan": 10, "cost_for_plan": 0.01159965, @@ -11665,10 +11337,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) [ { - "plan_prefix": - [ - "t1" - ], + "plan_prefix": "t1", "get_costs_for_tables": [ @@ -11713,10 +11382,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) }, { - "plan_prefix": - [ - "t1" - ], + "plan_prefix": "t1", "table": "t2", "rows_for_plan": 10, "cost_for_plan": 0.02909471, @@ -11726,9 +11392,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) }, { - "plan_prefix": - [ - ], + "plan_prefix": "", "table": "t2", "rows_for_plan": 100, "cost_for_plan": 0.0256761, @@ -11736,10 +11400,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) [ { - "plan_prefix": - [ - "t2" - ], + "plan_prefix": "t2", "get_costs_for_tables": [ @@ -11788,10 +11449,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) }, { - "plan_prefix": - [ - "t2" - ], + "plan_prefix": "t2", "table": "t1", "rows_for_plan": 100, "cost_for_plan": 0.13622835, @@ -12025,7 +11683,7 @@ select count(*) from seq_1_to_10000000 { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -12056,7 +11714,7 @@ select count(*) from seq_1_to_10000000 { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "seq_1_to_10000000", "rows_for_plan": 10000000, "cost_for_plan": 444.7880673 @@ -12428,9 +12086,7 @@ json_detailed(json_extract(trace, '$**.choose_best_splitting')) [ { - "plan_prefix": - [ - ], + "plan_prefix": "", "get_costs_for_tables": [ @@ -12475,9 +12131,7 @@ json_detailed(json_extract(trace, '$**.choose_best_splitting')) }, { - "plan_prefix": - [ - ], + "plan_prefix": "", "table": "t2", "rows_for_plan": 1.8367, "cost_for_plan": 0.0019606, @@ -12734,7 +12388,7 @@ explain select * from t1 where a<10 and b between 10 and 50 and c < 10 { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -12782,7 +12436,7 @@ explain select * from t1 where a<10 and b between 10 and 50 and c < 10 { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 0.017766, "cost_for_plan": 0.00267627, @@ -13102,7 +12756,7 @@ explain format=json select * from three, t1 where t1.a=three.a and t1.b<5000 and { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -13159,13 +12813,13 @@ explain format=json select * from three, t1 where t1.a=three.a and t1.b<5000 and ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "three", "rows_for_plan": 3, "cost_for_plan": 0.010504815, "rest_of_plan": [ { - "plan_prefix": ["three"], + "plan_prefix": "three", "get_costs_for_tables": [ { "best_access_path": { @@ -13221,7 +12875,7 @@ explain format=json select * from three, t1 where t1.a=three.a and t1.b<5000 and ] }, { - "plan_prefix": ["three"], + "plan_prefix": "three", "table": "t1", "rows_for_plan": 1292.3064, "cost_for_plan": 1.712236739 @@ -13229,7 +12883,7 @@ explain format=json select * from three, t1 where t1.a=three.a and t1.b<5000 and ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 430.7688, "cost_for_plan": 1.581538, diff --git a/mysql-test/main/opt_trace_index_merge.result b/mysql-test/main/opt_trace_index_merge.result index 883a63a42a2..5cfb44b10a2 100644 --- a/mysql-test/main/opt_trace_index_merge.result +++ b/mysql-test/main/opt_trace_index_merge.result @@ -208,7 +208,7 @@ explain select * from t1 where a=1 or b=1 { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -238,7 +238,7 @@ explain select * from t1 where a=1 or b=1 { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 2, "cost_for_plan": 0.005004612 diff --git a/mysql-test/main/opt_trace_index_merge_innodb.result b/mysql-test/main/opt_trace_index_merge_innodb.result index 0b0f6f0d2fc..7add3824a8f 100644 --- a/mysql-test/main/opt_trace_index_merge_innodb.result +++ b/mysql-test/main/opt_trace_index_merge_innodb.result @@ -202,7 +202,7 @@ explain select * from t1 where pk1 != 0 and key1 = 1 { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -237,7 +237,7 @@ explain select * from t1 where pk1 != 0 and key1 = 1 { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 1, "cost_for_plan": 0.00335956 diff --git a/mysql-test/main/opt_trace_security.result b/mysql-test/main/opt_trace_security.result index d1b6900bddb..ab7dc1fa606 100644 --- a/mysql-test/main/opt_trace_security.result +++ b/mysql-test/main/opt_trace_security.result @@ -89,7 +89,7 @@ select * from db1.t1 { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -120,7 +120,7 @@ select * from db1.t1 { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 3, "cost_for_plan": 0.010504815 @@ -228,7 +228,7 @@ select * from db1.v1 { { "considered_execution_plans": [ { - "plan_prefix": [], + "plan_prefix": "", "get_costs_for_tables": [ { "best_access_path": { @@ -259,7 +259,7 @@ select * from db1.v1 { ] }, { - "plan_prefix": [], + "plan_prefix": "", "table": "t1", "rows_for_plan": 3, "cost_for_plan": 0.010504815 diff --git a/mysql-test/main/opt_trace_selectivity.result b/mysql-test/main/opt_trace_selectivity.result index f33eee42392..827310f83d3 100644 --- a/mysql-test/main/opt_trace_selectivity.result +++ b/mysql-test/main/opt_trace_selectivity.result @@ -36,9 +36,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) [ { - "plan_prefix": - [ - ], + "plan_prefix": "", "get_costs_for_tables": [ @@ -105,9 +103,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) }, { - "plan_prefix": - [ - ], + "plan_prefix": "", "table": "t1", "rows_for_plan": 7, "cost_for_plan": 0.045367017 @@ -145,9 +141,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) [ { - "plan_prefix": - [ - ], + "plan_prefix": "", "get_costs_for_tables": [ @@ -211,9 +205,7 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) }, { - "plan_prefix": - [ - ], + "plan_prefix": "", "table": "t1", "rows_for_plan": 0.6, "cost_for_plan": 0.005306142, diff --git a/sql/opt_trace.cc b/sql/opt_trace.cc index 406e867c2e9..b34a29f9687 100644 --- a/sql/opt_trace.cc +++ b/sql/opt_trace.cc @@ -562,13 +562,10 @@ void Opt_trace_stmt::set_allowed_mem_size(size_t mem_size) current_json->set_size_limit(mem_size); } -/* - Prefer this when you are iterating over JOIN_TABs -*/ -void Json_writer::add_table_name(const JOIN_TAB *tab) +void get_table_name_for_trace(const JOIN_TAB *tab, String *out) { - char table_name_buffer[SAFE_NAME_LEN]; + char table_name_buffer[64]; DBUG_ASSERT(tab != NULL); DBUG_ASSERT(tab->join->thd->trace_started()); @@ -578,7 +575,7 @@ void Json_writer::add_table_name(const JOIN_TAB *tab) size_t len= my_snprintf(table_name_buffer, sizeof(table_name_buffer)-1, "<derived%u>", tab->table->derived_select_number); - add_str(table_name_buffer, len); + out->copy(table_name_buffer, len, &my_charset_bin); } else if (tab->bush_children) { @@ -587,15 +584,27 @@ void Json_writer::add_table_name(const JOIN_TAB *tab) sizeof(table_name_buffer)-1, "<subquery%d>", ctab->emb_sj_nest->sj_subq_pred->get_identifier()); - add_str(table_name_buffer, len); + out->copy(table_name_buffer, len, &my_charset_bin); } else { TABLE_LIST *real_table= tab->table->pos_in_table_list; - add_str(real_table->alias.str, real_table->alias.length); + out->set(real_table->alias.str, real_table->alias.length, &my_charset_bin); } } +/* + Prefer this when you are iterating over JOIN_TABs +*/ + +void Json_writer::add_table_name(const JOIN_TAB *tab) +{ + String sbuf; + get_table_name_for_trace(tab, &sbuf); + add_str(sbuf.ptr(), sbuf.length()); +} + + void Json_writer::add_table_name(const TABLE *table) { add_str(table->pos_in_table_list->alias.str); @@ -642,18 +651,26 @@ void add_table_scan_values_to_trace(THD *thd, JOIN_TAB *tab) analysis of the various join orders. */ -void trace_plan_prefix(JOIN *join, uint idx, table_map join_tables) +void trace_plan_prefix(Json_writer_object *jsobj, JOIN *join, uint idx, + table_map join_tables) { - THD *const thd= join->thd; - DBUG_ASSERT(thd->trace_started()); + DBUG_ASSERT(join->thd->trace_started()); - Json_writer_array plan_prefix(thd, "plan_prefix"); + String prefix_str; + prefix_str.length(0); for (uint i= 0; i < idx; i++) { TABLE_LIST *const tr= join->positions[i].table->tab_list; if (!(tr->map & join_tables)) - plan_prefix.add_table_name(join->positions[i].table); + { + String str; + get_table_name_for_trace(join->positions[i].table, &str); + if (prefix_str.length() != 0) + prefix_str.append(','); + prefix_str.append(str); + } } + jsobj->add("plan_prefix", prefix_str.ptr(), prefix_str.length()); } diff --git a/sql/opt_trace.h b/sql/opt_trace.h index a43c1dde54b..c6b5c4ea338 100644 --- a/sql/opt_trace.h +++ b/sql/opt_trace.h @@ -107,7 +107,8 @@ void opt_trace_print_expanded_query(THD *thd, SELECT_LEX *select_lex, Json_writer_object *trace_object); void add_table_scan_values_to_trace(THD *thd, JOIN_TAB *tab); -void trace_plan_prefix(JOIN *join, uint idx, table_map join_tables); +void trace_plan_prefix(Json_writer_object *jsobj, JOIN *join, uint idx, + table_map join_tables); void print_final_join_order(JOIN *join); void print_best_access_for_table(THD *thd, POSITION *pos); diff --git a/sql/sql_select.cc b/sql/sql_select.cc index c0991e66cf3..6395bbb9cd6 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -9701,7 +9701,7 @@ optimize_straight_join(JOIN *join, table_map remaining_tables) double original_record_count, current_record_count; if (unlikely(thd->trace_started())) - trace_plan_prefix(join, idx, remaining_tables); + trace_plan_prefix(&trace_one_table, join, idx, remaining_tables); /* Find the best access method from 's' to the current partial plan */ best_access_path(join, s, remaining_tables, join->positions, idx, disable_jbuf, record_count, @@ -10908,7 +10908,7 @@ best_extension_by_limited_search(JOIN *join, Json_writer_object trace_one_table(thd); JOIN_TAB **best_ref= join->best_ref + idx; if (unlikely(thd->trace_started())) - trace_plan_prefix(join, idx, remaining_tables); + trace_plan_prefix(&trace_one_table, join, idx, remaining_tables); Json_writer_array arr(thd, "get_costs_for_tables"); @@ -10975,7 +10975,7 @@ best_extension_by_limited_search(JOIN *join, if (unlikely(thd->trace_started())) { - trace_plan_prefix(join, idx, remaining_tables); + trace_plan_prefix(&trace_one_table, join, idx, remaining_tables); trace_one_table.add_table_name(s); } |