EXPLAIN JSON

Description

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)

Assignee

Sergei Petrunia

Reporter

Sergei Golubchik

Labels

Time tracking

160h

Components

Fix versions

Priority

Critical
Configure