The Ignite community uses the page to keep track of evolution of new Calcite-powered SQL engine. We use the roadmap for better understanding where are we and how close the goal. Please note that the roadmap does not imply any obligations regarding availability and timeline. "Readiness Estimated Time" are subjects to change and represent contributors' best estimate.


At the moment, it seems that it is advisable to split all the work on the new SQL engine into 3 parts.
Please consider Task not a single JIRA task but just a kind of work which could be mapped to many JIRA tickets. 

All related tasks should be linked to 

Phase 1: Simple SQL are work

TaskContributorsReadiness Estimated TimeCurrent state
Support of Indexes

initial support of DML (SELECT, INSERT)

Aggregate functions (sum, min, max, avg, ...), enables GROUP BY/DISTINCT commands

UNION/UNION ALL commands

support of IN/EXCEPT 

Type system (just review, seems it may be used as-is + write many tests) + support of date/time data types.


Phase 2: Base performance optimization and extend SQL possibilities

TaskContributorsReadiness Estimated TimeCurrent state
Schema management

Sort based aggregates, index spools


Index Nested Loop Join/Merge Join

Statistics/cost model (simple statistics)

Hash index spools/ Hash join

Initial support of DDL (create/drop for table and index)

Type system including support of date/time data types.


MERGE

Planner hints (ENFORCE JOIN ORDER, Alg of join)

Planner hints (the potentially concrete plan of executing)

Documentation














Phase 3: Usability and performance

TaskContributorsReadiness Estimated TimeCurrent state
Statistics/cost model (advanced statistics)

support of DDL (user, grants, ....)


Expressions interpreter

Views

Tracing, statistics, cancellation, views

Memory management and offloading

Expressions interpreter (kind of optimization, may be omitted at the first step here a type system is used)

Correlated queries support (may be omitted at the first step)Unknown User (zstan)

VolcanoPlanner overhaul

Distributed joins/aggregation/subqueries algorithms

Partition pruning

Explain/ExplainAnalyze

Query compilation

JDBC/ODBC/Thin, other clients (including partition awareness)

Documentation