{\
  "steps": [\
    {\
      "join_preparation": {\
        "select_id": 1,\
        "steps": [\
          {\
            "join_preparation": {\
              "select_id": 2,\
              "steps": [\
                {\
                  "expanded_query": "/* select#2 */ select t1.f3 from t1 IGNORE INDEX (f1) where t1.f1 = alias1.f1"\
                }\
              ]\
            }\
          },\
          {\
            "expanded_query": "/* select#1 */ update (t3 alias1 left join t3 alias2 on(alias1.f1 <> alias1.f2)) set alias1.f3 = 59 where <in_optimizer>(1,exists(/* select#2 */ select t1.f3 from t1 IGNORE INDEX (f1) where t1.f1 = alias1.f1 limit 1)) or alias2.f1 = 'h'"\
          }\
        ]\
      }\
    },\
    {\
      "join_optimization": {\
        "select_id": 1,\
        "steps": [\
          {\
            "transformation": {\
              "select_id": 2,\
              "from": "EXISTS (SELECT)",\
              "to": "IN (SELECT)",\
              "upper_not": false\
            }\
          },\
          {\
            "transformation": {\
              "select_id": 2,\
              "from": "IN (SELECT)",\
              "to": "materialization",\
              "sjm_scan_allowed": true,\
              "possible": true\
            }\
          },\
          {\
            "condition_processing": {\
              "condition": "WHERE",\
              "original_condition": "<in_optimizer>(alias1.f1,<exists>(/* select#2 */ select t1.f1 from t1 IGNORE INDEX (f1) where 1)) or alias2.f1 = 'h'",\
              "steps": [\
                {\
                  "build_equal_items": {\
                    "condition": "ON expr",\
                    "attached_to": "alias2",\
                    "resulting_condition": "alias1.f1 <> alias1.f2"\
                  }\
                },\
                {\
                  "transformation": "equality_propagation",\
                  "resulting_condition": "<in_optimizer>(alias1.f1,<exists>(/* select#2 */ select t1.f1 from t1 IGNORE INDEX (f1) where 1)) or multiple equal('h', alias2.f1)"\
                },\
                {\
                  "transformation": "constant_propagation",\
                  "resulting_condition": "<in_optimizer>(alias1.f1,<exists>(/* select#2 */ select t1.f1 from t1 IGNORE INDEX (f1) where 1)) or multiple equal('h', alias2.f1)"\
                },\
                {\
                  "transformation": "trivial_condition_removal",\
                  "resulting_condition": "<in_optimizer>(alias1.f1,<exists>(/* select#2 */ select t1.f1 from t1 IGNORE INDEX (f1) where 1)) or multiple equal('h', alias2.f1)"\
                }\
              ]\
            }\
          },\
          {\
            "table_dependencies": [\
              {\
                "table": "alias1",\
                "row_may_be_null": false,\
                "map_bit": 0,\
                "depends_on_map_bits": []\
              },\
              {\
                "table": "alias2",\
                "row_may_be_null": true,\
                "map_bit": 1,\
                "depends_on_map_bits": ["0"]\
              }\
            ]\
          },\
          {\
            "ref_optimizer_key_uses": []\
          },\
          {\
            "eliminated_tables": []\
          },\
          {\
            "rows_estimation": [\
              {\
                "table": "alias1",\
                "table_scan": {\
                  "rows": 4,\
                  "read_cost": 0.0113788,\
                  "read_and_compare_cost": 0.0115068\
                }\
              },\
              {\
                "table": "alias2",\
                "table_scan": {\
                  "rows": 4,\
                  "read_cost": 0.0113788,\
                  "read_and_compare_cost": 0.0115068\
                }\
              }\
            ]\
          },\
          {\
            "considered_execution_plans": [\
              {\
                "plan_prefix": "",\
                "get_costs_for_tables": [\
                  {\
                    "best_access_path": {\
                      "table": "alias1",\
                      "plan_details": {\
                        "record_count": 1\
                      },\
                      "considered_access_paths": [\
                        {\
                          "access_type": "scan",\
                          "rows": 4,\
                          "rows_after_filter": 4,\
                          "rows_out": 4,\
                          "cost": 0.0115068,\
                          "index_only": false,\
                          "chosen": true\
                        }\
                      ],\
                      "chosen_access_method": {\
                        "type": "scan",\
                        "rows_read": 4,\
                        "rows_out": 4,\
                        "cost": 0.0115068,\
                        "uses_join_buffering": false\
                      }\
                    }\
                  }\
                ]\
              },\
              {\
                "plan_prefix": "",\
                "table": "alias1",\
                "rows_for_plan": 4,\
                "cost_for_plan": 0.0115068,\
                "rest_of_plan": [\
                  {\
                    "plan_prefix": "alias1",\
                    "get_costs_for_tables": [\
                      {\
                        "best_access_path": {\
                          "table": "alias2",\
                          "plan_details": {\
                            "record_count": 4\
                          },\
                          "considered_access_paths": [\
                            {\
                              "access_type": "scan",\
                              "rows": 4,\
                              "rows_after_filter": 4,\
                              "rows_out": 4,\
                              "cost": 0.0435696,\
                              "index_only": false,\
                              "chosen": true\
                            }\
                          ],\
                          "chosen_access_method": {\
                            "type": "scan",\
                            "rows_read": 4,\
                            "rows_out": 4,\
                            "cost": 0.0435696,\
                            "uses_join_buffering": true\
                          }\
                        }\
                      }\
                    ]\
                  },\
                  {\
                    "plan_prefix": "alias1",\
                    "table": "alias2",\
                    "rows_for_plan": 16,\
                    "cost_for_plan": 0.0550764\
                  }\
                ]\
              }\
            ]\
          },\
          {\
            "best_join_order": ["alias1", "alias2"],\
            "rows": 16,\
            "cost": 0.0550764\
          },\
          {\
            "substitute_best_equal": {\
              "condition": "WHERE",\
              "resulting_condition": "<in_optimizer>(alias1.f1,<exists>(/* select#2 */ select t1.f1 from t1 IGNORE INDEX (f1) where 1)) or alias2.f1 = 'h'"\
            }\
          },\
          {\
            "substitute_best_equal": {\
              "condition": "ON expr",\
              "attached_to": "alias2",\
              "resulting_condition": "alias1.f1 <> alias1.f2"\
            }\
          },\
          {\
            "attaching_conditions_to_tables": {\
              "attached_conditions_computation": [],\
              "attached_conditions_summary": [\
                {\
                  "table": "alias1",\
                  "attached_condition": null\
                },\
                {\
                  "table": "alias2",\
                  "attached_condition": "trigcond(<in_optimizer>(alias1.f1,<exists>(/* select#2 */ select t1.f1 from t1 IGNORE INDEX (f1) where 1)) or alias2.f1 = 'h') and trigcond(trigcond(alias1.f1 <> alias1.f2))"\
                }\
              ]\
            }\
          },\
          {\
            "make_join_readinfo": []\
          },\
          {\
            "join_optimization": {\
              "select_id": 2,\
              "steps": [\
                {\
                  "condition_processing": {\
                    "condition": "WHERE",\
                    "original_condition": "1",\
                    "steps": [\
                      {\
                        "transformation": "equality_propagation",\
                        "resulting_condition": "1"\
                      },\
                      {\
                        "transformation": "constant_propagation",\
                        "resulting_condition": "1"\
                      },\
                      {\
                        "transformation": "trivial_condition_removal",\
                        "resulting_condition": null\
                      }\
                    ]\
                  }\
                },\
                {\
                  "table_dependencies": [\
                    {\
                      "table": "t1",\
                      "row_may_be_null": false,\
                      "map_bit": 0,\
                      "depends_on_map_bits": []\
                    }\
                  ]\
                },\
                {\
                  "rows_estimation": [\
                    {\
                      "table": "t1",\
                      "table_scan": {\
                        "rows": 5,\
                        "read_cost": 0.0115098,\
                        "read_and_compare_cost": 0.0116698\
                      }\
                    }\
                  ]\
                },\
                {\
                  "considered_execution_plans": [\
                    {\
                      "plan_prefix": "",\
                      "get_costs_for_tables": [\
                        {\
                          "best_access_path": {\
                            "table": "t1",\
                            "plan_details": {\
                              "record_count": 1\
                            },\
                            "considered_access_paths": [\
                              {\
                                "access_type": "scan",\
                                "rows": 5,\
                                "rows_after_filter": 5,\
                                "rows_out": 5,\
                                "cost": 0.0116698,\
                                "index_only": false,\
                                "chosen": true\
                              }\
                            ],\
                            "chosen_access_method": {\
                              "type": "scan",\
                              "rows_read": 5,\
                              "rows_out": 5,\
                              "cost": 0.0116698,\
                              "uses_join_buffering": false\
                            }\
                          }\
                        }\
                      ]\
                    },\
                    {\
                      "plan_prefix": "",\
                      "table": "t1",\
                      "rows_for_plan": 5,\
                      "cost_for_plan": 0.0116698\
                    }\
                  ]\
                },\
                {\
                  "subquery_plan": {\
                    "rows": 5,\
                    "materialization_cost": 0.038299536,\
                    "in_exist_cost": 0.0466792,\
                    "choosen": "materialization"\
                  }\
                },\
                {\
                  "best_join_order": ["t1"],\
                  "rows": 5,\
                  "cost": 0.0116698\
                },\
                {\
                  "attaching_conditions_to_tables": {\
                    "attached_conditions_computation": [],\
                    "attached_conditions_summary": [\
                      {\
                        "table": "t1",\
                        "attached_condition": null\
                      }\
                    ]\
                  }\
                },\
                {\
                  "make_join_readinfo": []\
                }\
              ]\
            }\
          }\
        ]\
      }\
    },\
    {\
      "join_execution": {\
        "select_id": 1,\
        "steps": [\
          {\
            "join_execution": {\
              "select_id": 2,\
              "steps": []\
            }\
          }\
        ]\
      }\
    }\
  ]\
}
