...
Calcite based SQL engine requirements.
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).
- It has to provide Provide an ability to execute any non-recursive non-collocated queries in reasonable period of time.
- Ability to obtain execution plan in human readable form (explain plan).
- 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).
- It has to provide Provide SQL enhancement abilities (system functions, user defined functions, hints, etc).
- 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.
- Ability to setup query timeout and cancel running query manually.
- Leverage primary and secondary indices.
- 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.
...