Query Plan Markup Language (QPML)

QPML is a YAML-based DSL for describing query plans for the purposes of producing diagrams and textual representations of query plans for use in documentation and presentations.

Example

yaml title: 'Inner Join: cs_ship_date_sk = d3.d_date_sk' inputs: - title: 'Inner Join: inv_date_sk = d2.d_date_sk' inputs: - title: 'Inner Join: cs_sold_date_sk = d1.d_date_sk' inputs: - title: 'Inner Join: cs_bill_hdemo_sk = hd_demo_sk' inputs: - title: 'Inner Join: cs_bill_cdemo_sk = cd_demo_sk' inputs: - title: 'Inner Join: i_item_sk = cs_item_sk' inputs: - title: 'Inner Join: w_warehouse_sk = inv_warehouse_sk' inputs: - title: 'Inner Join: cs_item_sk = inv_item_sk' inputs: - title: catalog_sales inputs: [] - title: inventory inputs: [] - title: warehouse inputs: [] - title: item inputs: [] - title: customer_demographics inputs: [] - title: household_demographics inputs: [] - title: d1 inputs: [] - title: d2 inputs: [] - title: d3 inputs: []

Tools

Generate Text Plan

```shell $ qpml print example1.yaml

Inner Join: csshipdatesk = d3.ddatesk Inner Join: invdatesk = d2.ddatesk Inner Join: cssolddatesk = d1.ddatesk Inner Join: csbillhdemosk = hddemosk Inner Join: csbillcdemosk = cddemosk Inner Join: iitemsk = csitemsk Inner Join: wwarehousesk = invwarehousesk Inner Join: csitemsk = invitemsk catalogsales inventory warehouse item customerdemographics household_demographics d1 d2 d3 ```

Generate Query Plan Diagram

TODO