summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Petrunia <sergey@mariadb.com>2022-11-21 17:28:43 +0300
committerSergei Golubchik <serg@mariadb.org>2022-12-25 17:59:04 +0100
commit3281970d14d012897bd254609a5109659f4ce222 (patch)
treed3c99b33fc35bf23c52b0d49fe6ddfbccd71f251
parent709c220731ddbfb5ddbd111d5f59567a6e23cee5 (diff)
downloadmariadb-git-3281970d14d012897bd254609a5109659f4ce222.tar.gz
MDEV-30059: Optimizer Trace: plan_prefix should be a comma-separated-list
-rw-r--r--mysql-test/main/opt_trace.result844
-rw-r--r--mysql-test/main/opt_trace_index_merge.result4
-rw-r--r--mysql-test/main/opt_trace_index_merge_innodb.result4
-rw-r--r--mysql-test/main/opt_trace_security.result8
-rw-r--r--mysql-test/main/opt_trace_selectivity.result16
-rw-r--r--sql/opt_trace.cc43
-rw-r--r--sql/opt_trace.h3
-rw-r--r--sql/sql_select.cc6
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);
}