Dmitry, For H2 it would be something like this - please note all those quotes, commas and equality signs that would be mandatory:
CREATE TABLE Person (id int, uid uuid, firstName varchar, lastName varchar) WITH "keyFields=id,uuid","affinityKey=id" With suggested approach, it would be something like CREATE TABLE Person (id int AFFINITY KEY, uid uuid KEY, firstName varchar, lastName varchar) While this may not look like a drastic improvement in this particular case, we someday most likely will want either an all-custom CREATE CACHE command, or a whole bunch of new options for CREATE TABLE, if we decide not to go with CREATE CACHE - I personally think that stuff like CREATE TABLE ... WITH "keyFields=id,uuid","affinityKey=id","cacheType=partitioned","atomicity=atomic","partitions=3" which will arise if we continue to try to stuff everything into WITH will just bring more ugliness with time, and that's not to mention that new CREATE CACHE syntax will be impossible or relatively hard to introduce as we will have to approve it with H2 folks, and that's how it will be with any new param or command that we want. Allowing to plug custom parser into H2 (as we do now with table engine) will let us introduce any syntax we want and focus on usability and not on compromises and workarounds (which WITH keyword currently is). - Alex 2017-04-12 5:11 GMT+03:00 Dmitriy Setrakyan <dsetrak...@apache.org>: > Alexeander, > > Can you please provide an example of what the CREATE TABLE command would > look like if we use WITH syntax from H2 vs. what you are proposing? > > D. > > On Tue, Apr 11, 2017 at 6:35 PM, Alexander Paschenko < > alexander.a.pasche...@gmail.com> wrote: > >> Hello Igniters, >> >> Yup, it's THAT time once again as we haven't ultimately settled on >> anything with the subj. as of yet, but I believe that now with DDL on >> its way this talk can't be avoided anymore (sorry guys). >> >> The last time we talked about Ignite specific stuff we need to have in >> CREATE TABLE (key fields list, affinity key, am I missing anything?), >> the simplest approach suggested by Sergi was that we simply use WITH >> part of H2's CREATE TABLE to pass stuff we need. >> >> This could work, but needless to say that such commands would look plain >> ugly. >> >> I think we should go with custom syntax after all, BUT not in a way >> suggested before by Sergi (propose Apache Ignite mode to H2). >> >> Instead, I suggest that we propose to H2 patch that would allow >> plugging in *custom SQL parser* directly based on theirs (quite >> elegant one) – I've had a look at their code, and this should not be >> hard. >> >> Work on such a patch making syntax parsing overridable would take a >> couple days which is not much time AND would give us the opportunity >> to introduce to Ignite virtually any syntax we wish - both now and in >> the future. Without worrying about compatibility with H2 ever again, >> that is. >> >> Thoughts? After we agree on this principally and after H2 patch for >> custom parsing is ready, we can roll our sleeves and focus on syntax >> itself. >> >> - Alex >>