Currently, there is no DDL in Calcite's "core" module (or its SQL parser) and the SQL parser in the "server" module adds DDL extensions for Calcite's object types.
There is a PR [1][2] to add support for "CREATE TABLE" to Babel, and it makes "babel" extend the "server" module. In particular, it uses classes SqlDdlNodes and SqlCreateTable from "server". I am uncomfortable with that approach, because "server" does other things besides parse DDL (it creates a stateful server and handles RPC). Also, the needs of other DBMSs' DDL might make Calcite's DDL classes more complicated. So, it all seems to be unnecessary coupling. The alternative is to copy-paste the DDL classes (currently SqlDdlNodes, SqlCreateTable and SqlColumnDeclaration) from "babel" into "server". Another alternative would be to move all DDL classes into "core". None of the alternatives are great, but I prefer the copy-paste approach. What do y'all think? Julian [1] https://github.com/apache/calcite/pull/1938 [2] https://issues.apache.org/jira/browse/CALCITE-3946
