Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Calcite based SQL engine requirements.

  1. It has to generate Generate the same execution plan as H2 for commonly used queries (co-located queries) - only two phases, this means there is no intermediate local task having a Sender on top of execution sub-graph and a Receiver at the bottom for such query (except cases when such behavior is forced by hints - it's helpful to delegate results aggregation to server nodes in case a requesting client have a little free memory).

  2. It has to provide Provide an ability to execute any non-recursive non-collocated queries in reasonable period of time.
  3. Ability to obtain execution plan in human readable form (explain plan).
  4. Provide It has to provide memory management abilities to defend the application from OOM (lazy result retrieval, memory quotes, using disk for intermediate results, etc).
  5. It has to provide Provide SQL enhancement abilities (system functions, user defined functions, hints, etc).
  6. It has to generate Generate optimal execution plan for non-recursive non-collocated queries taking into consideration two factors: a) transferring data amount, b) each local subtask execution complexity.
  7. Ability to setup query timeout and cancel running query manually.
  8. Leverage primary and secondary indices.
  9. Provide It has to provide enhancement points for future improvements (new transformation rules, different source data structure types support - indexes and tables initially and prefix trees or spatial indexes in future, possible column based storage support in future, etc).

The list may be increased.

...