Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Unified Query Plan Representation

We adopt Extend Backus Naur Form (EBNF), a metasyntax notation, to formally define our unified representation of query plans.

plan:

plan

plan     ::= tree? properties

tree:

tree

tree     ::= node ( '--children-->' '{' tree ( ',' tree )* '}' )?

referenced by:

  • plan
  • tree

node:

node

node     ::= operation properties

referenced by:

  • tree

operation:

operation

operation
         ::= 'Operation' ':' operation_category '->' operation_identifier

referenced by:

  • node

properties:

properties

properties
         ::= ( property ( ',' property )* )?

referenced by:

  • node
  • plan

property:

property

property ::= property_category '->' property_identifier ':' value

referenced by:

  • properties

operation_category:

operation_category

operation_category
         ::= 'Producer'
           | 'Combinator'
           | 'Join'
           | 'Folder'
           | 'Executor'
           | 'Projector'
           | 'Consumer'

referenced by:

  • operation

property_category:

property_category

property_category
         ::= 'Cardinality'
           | 'Cost'
           | 'Configuration'
           | 'Status'

referenced by:

  • property

operation_identifier:

operation_identifier

operation_identifier
         ::= keyword

referenced by:

  • operation

property_identifier:

property_identifier

property_identifier
         ::= keyword

referenced by:

  • property

keyword:

keyword

keyword  ::= letter ( letter | digit | '_' )*

referenced by:

  • operation_identifier
  • property_identifier

value:

value

value    ::= string
           | number
           | boolean
           | 'null'

referenced by:

  • property

string:

string

string   ::= '"' ( letter | digit )* '"'

referenced by:

  • value

number:

number

number   ::= '-'? digit+

referenced by:

  • value

boolean:

boolean

boolean  ::= 'true'
           | 'false'

referenced by:

  • value

letter:

letter

letter   ::= [a-zA-Z]

referenced by:

  • keyword
  • string

## digit generated by RR - Railroad Diagram Generator