Folks,

H2 has nice and powerful SQL parser, and we pass all incoming SQL commands
through it. However it doesn't support custom SQL syntax, which we are
likely to need in DDL at some point in future.

As DDL statements are relatively easy to parse comparing to SELECTs and
they do not involve optimizer, we can easily create object model of DDL
command without invoking H2 at all.

I propose to introduce small change into our parsing logic as follows:

if (req.startsWith("CREATE" or "ALTER" or "DELETE")
    parseDdlManually(req);
else
    parseWithH2(req);

It should be enough to support any custom syntax for our DDL with any
limitations and without any dependencies on H2 folks.

For instance, see H2 "CREATE TABLE" [1] and "CREATE INDEX" [2] structure.
It is already very simple. But provided that Ignite doesn't support most of
H2 DDL features, Ignite DDL structure will be even simpler.

it should take no more than 1-2 days to implement fully-fledged parsing for
these two commands.

Thoughts?

Vladimir.

[1] http://www.h2database.com/html/grammar.html#create_table
[2] http://www.h2database.com/html/grammar.html#create_index

Reply via email to