Support EXPLAIN FORMAT=JSON like MySQL 5.6 does.
Difference from MySQL's EXPLAIN FORMAT=JSON
We don't want to copy MySQL 5.6:
From the user point of view:
- 5.6 output format is not documented and unstable (even MySQL Workbench fails to parse it in some cases)
- I don't expect that any 3rd party is able to parse it, other than relying that it's a well-formed JSON document.
- 5.6 output format doesn't allow to display some info we want to display
- 5.6's output format has legacy of tabular output format in many places
- MariaDB has more optimizer features, so we will have to produce output that 5.6 never produces
Currently supported
- Basic SELECTs
- Table access methods
- full table/index scans
- range access
- index_merge access
- I_S read optimizations
- "Using where" (attached_condition)
- rows and 'filtered' columns
- Index Condition Pushdown ('index_condition')
- UNIONs (incomplete)
- Item-based subqueries (incomplete)
- Basic join buffering
- Single-table UPDATE/DELETE
- Derived tables
- Non-merged semi-joins (JTBMs)
- [Merged] Semi-joins: SJ-Materialization
- [Merged] Semi-joins: FirstMatch, DuplicateElimination, LooseScan
Not yet supported (important)
- ORDER BY/GROUP BY/ DISTINCT handling – as agreed won't be ready before 10.1.2
Not yet supported (less important)
- Subquery cache feature
- Advanced join buffering (display MRR as a special kind of scan)