Andrey, What about corresponding async APIs, do we add them now or later?
On Thu, Mar 11, 2021 at 8:11 PM Andrey Mashenkov <andrey.mashen...@gmail.com> wrote: > Hi Igniters. > > I've created a PR for Table access API [1]. > This is an initial version. So, any suggestions\objections are welcomed. > Please, do not hesitate to write your comments and\or examples to the PR. > > Ignite-api module contains API classes, e.g. TableView classes as > projections for a table for different purposes. > Ignite-table contains dummy implementation and Example class explained how > it is supposed to be used. > > > Also, I'm still waiting for any feedback for Schema configuration public > API PR [2]. > > [1] https://github.com/apache/ignite-3/pull/33 > [2] https://github.com/apache/ignite-3/pull/2 > > On Wed, Jan 20, 2021 at 6:05 PM Andrey Mashenkov < > andrey.mashen...@gmail.com> > wrote: > > > > > I've updated a PR regarding your feedback [1]. > > > > [1] https://github.com/apache/ignite-3/pull/2 > > > > On Mon, Jan 11, 2021 at 10:58 AM Alexey Goncharuk < > > alexey.goncha...@gmail.com> wrote: > > > >> Folks, > >> > >> I updated the IEP to contain the missing pieces; actually, most of the > >> questions here were covered by the text. Please let me know if there is > >> something still missing or unclear. > >> > >> чт, 31 дек. 2020 г. в 12:48, Alexey Goncharuk < > alexey.goncha...@gmail.com > >> >: > >> > >> > Mikhail and Igniters, > >> > > >> > Thanks for your comments. The questions are reasonable, though I think > >> all > >> > concerns are addressed by the IEP as Val mentioned. I will update the > >> > document according to your questions in the following week or so, so > we > >> can > >> > have a constructive discussion further. > >> > > >> > ср, 30 дек. 2020 г. в 11:45, Michael Cherkasov < > >> > michael.cherka...@gmail.com>: > >> > > >> >> Hi Val, Andrey, > >> >> > >> >> thank you for clarifying. > >> >> > >> >> I still have a few comments. > >> >> > >> >> 1. one table == one schema. KV vs SQL: > >> >> Looks like all agreed that KV is just a special case of a regular > table > >> >> with (blob,blob) schema. > >> >> I worry about the case when the user starts from KV case and later > will > >> >> try > >> >> to expand it and try to leverage SQL for the existing KV table it > >> won't be > >> >> able to do so and will require to reload data. which isn't convenient > >> and > >> >> sometimes not even possible. Is it possible to extract a new field > from > >> >> (blob, blob) schema and apply index on it? > >> >> > >> >> 2. Could you please also list all ways of schema definition in the > >> IEP? It > >> >> significant change and I bet the main point of this IEP, everyone > hates > >> >> QueryEntities, they are difficult to manage and in general, it's very > >> >> confusing to have a data model(schemas) and node/cluster > configuration > >> in > >> >> one place. > >> >> > >> >> So there will be SchemaBuilder and SQL to define schemas, but Andrey > >> also > >> >> mentioned annotations. > >> >> > >> >> I personally against configuration via annotations, while it's > >> convenient > >> >> for development, it difficult to manage because different classes can > >> be > >> >> deployed on different clients/servers nodes and it can lead to > >> >> unpredictable results. > >> >> > >> >> 3. IEP doesn't mention field type changes, only drop/add fields. > Field > >> >> type > >> >> changes are extremely painful right now(if even possible), so it > would > >> be > >> >> nice if some scenarios would be supported(like int8->int16, or > >> >> int8->String). > >> >> > >> >> 4. got it, I thought IEP will have more details about the > >> implementation. > >> >> I've seen Andrey even sent benchmark results for a new serialization, > >> will > >> >> ping him about this. > >> >> > >> >> 5. Thanks for the clarification. I had a wrong understanding of > strick > >> >> mode. > >> >> > >> >> > >> >> вт, 29 дек. 2020 г. в 19:32, Valentin Kulichenko < > >> >> valentin.kuliche...@gmail.com>: > >> >> > >> >> > Hi Mike, > >> >> > > >> >> > Thanks for providing your feedback. Please see my comments below. > >> >> > > >> >> > I would also encourage you to go through the IEP-54 [1] - it has a > >> lot > >> >> of > >> >> > detail on the topic. > >> >> > > >> >> > [1] > >> >> > > >> >> > > >> >> > >> > https://cwiki.apache.org/confluence/display/IGNITE/IEP-54%3A+Schema-first+Approach > >> >> > > >> >> > -Val > >> >> > > >> >> > On Mon, Dec 28, 2020 at 11:22 PM Michael Cherkasov < > >> >> > michael.cherka...@gmail.com> wrote: > >> >> > > >> >> > > Hi all, > >> >> > > > >> >> > > I reviewed the mail thread and proposal page and I still don't > >> fully > >> >> > > understand what is going to be changed, I would really appreciate > >> it > >> >> if > >> >> > you > >> >> > > will answer a few questions: > >> >> > > > >> >> > > 1. Are you going to leave only one schema per cache? if so, will > be > >> >> there > >> >> > > an option to have a table with arbitrary objects(pure KV case)? > >> >> > > > >> >> > > >> >> > My opinion is that KV case should be natively supported. I think > this > >> >> still > >> >> > needs to be thought over, my current view on this is that we should > >> have > >> >> > separate APIs for KV and more generic storages. KV storage can be > >> >> > implemented as a "table" with two BLOB fields where we will store > >> >> > serialized key-value pairs. That would imply deserialization on > read, > >> >> but I > >> >> > believe this is OK for KV use cases. I'm happy to hear other ideas > >> >> though > >> >> > :) > >> >> > > >> >> > > >> >> > > 2. What options will Apache Ignite 3.0 have to define schema? > >> >> > SchemaBuilder > >> >> > > and SQL only? Is there an option to put the schema definition to > >> the > >> >> > > configuration?(I really don't like this, I would prefer to have > >> >> > > separate scripts to create schemas) > >> >> > > > >> >> > > >> >> > There will be no such thing as a static configuration in the first > >> >> place. > >> >> > Tables and schemas are created in runtime. Even if there is a file > >> >> provided > >> >> > on node startup, this file is only applied in the scope of the > >> 'start' > >> >> > operation. All configurations will be stored in a meta storage > >> >> available to > >> >> > all nodes, as opposed to individual files. > >> >> > > >> >> > > >> >> > > 3. Is there a way to change field type? if yes, can it be done in > >> >> > runtime? > >> >> > > > >> >> > > >> >> > Absolutely! IEP-54 has a whole section about schema evolution. > >> >> > > >> >> > > >> >> > > 4. Looks like BinaryMarshaller is going to be re-worked too, is > >> there > >> >> any > >> >> > > IEP for this? > >> >> > > > >> >> > > >> >> > BinaryMarshaller as a tool for arbitrary object serialization will > be > >> >> gone, > >> >> > but we will reuse a lot of its concept to implement an internal > tuple > >> >> > serialization mechanism. IEP-54 has the description of the proposed > >> data > >> >> > format. > >> >> > > >> >> > > >> >> > > 5. I don't like automatic schema evaluation when a new field is > >> added > >> >> > > automatically on record put, so is there a way to prohibit this > >> >> behavior? > >> >> > > I think all schema changes should be done only explicitly except > >> >> initial > >> >> > > schema creation. > >> >> > > > >> >> > > >> >> > The way I see it is that we should have two modes: schema-first and > >> >> > schema-last. Schema-first means exactly what you've described - > >> schemas > >> >> are > >> >> > defined and updated explicitly by the user. In the schema-last > mode, > >> >> > the user does not deal with schemas, as they are inferred from the > >> data > >> >> > inserted into tables. We should definitely not mix these modes - it > >> has > >> >> to > >> >> > be one or another. And it probably makes sense to discuss which > mode > >> >> should > >> >> > be the default one. > >> >> > > >> >> > > >> >> > > > >> >> > > Thanks, > >> >> > > Mike. > >> >> > > > >> >> > > пн, 21 дек. 2020 г. в 06:40, Andrey Mashenkov < > >> >> > andrey.mashen...@gmail.com > >> >> > > >: > >> >> > > > >> >> > > > Hi, Igniters. > >> >> > > > > >> >> > > > We all know that the current QueryEntity API is not convenient > >> and > >> >> > needs > >> >> > > to > >> >> > > > be reworked. > >> >> > > > So, I'm glad to share PR [1] with schema configuration public > API > >> >> for > >> >> > > > Ignite 3.0. > >> >> > > > > >> >> > > > New schema configuration uses Builder pattern, which looks more > >> >> > > comfortable > >> >> > > > to use. > >> >> > > > > >> >> > > > In the PR you will find a 'schema' package with the API itself, > >> and > >> >> a > >> >> > > draft > >> >> > > > implementation in 'internal' sub-package, > >> >> > > > and a test that demonstrates how the API could be used. > >> >> > > > > >> >> > > > Please note: > >> >> > > > > >> >> > > > * Entrypoint is 'SchemaBuilders' class with static factory > >> methods. > >> >> > > > * The implementation is decoupled and can be easily extracted > to > >> >> > separate > >> >> > > > module if we decide to do so. > >> >> > > > * Some columns types (e.g. Date/Time) are missed, they will be > >> added > >> >> > > lately > >> >> > > > in separate tickes. > >> >> > > > * Index configuration extends marker interface that makes > >> possible > >> >> to > >> >> > > > implement indexes of new types in plugins. > >> >> > > > Hopfully, we could add a persistent geo-indices support in > >> future. > >> >> > > > * Supposedly, current table schema can be changed via > >> builder-like > >> >> > > > structure as it is done if JOOQ project. See > >> >> 'TableModificationBuilder' > >> >> > > for > >> >> > > > details. > >> >> > > > I'm not sure 'SchemaTable' should have 'toBuilder()' converter > >> for > >> >> that > >> >> > > > purpose as it is a Schema Manager responsibility to create > >> mutator > >> >> > > objects > >> >> > > > from the current schema, > >> >> > > > but implementing the Schema manager is out of scope and will be > >> >> > designed > >> >> > > > within the next task. > >> >> > > > * Interfaces implementations are out of scope. I did not intend > >> to > >> >> > merge > >> >> > > > them right now, but for test/demostration purposes. > >> >> > > > > >> >> > > > It is NOT the final version and some may be changed before the > >> first > >> >> > > > release of course. > >> >> > > > For now, we have to agree if we can proceed with this approach > or > >> >> some > >> >> > > > issues should be resolved at first. > >> >> > > > > >> >> > > > Any thoughts or objections? > >> >> > > > Are interfaces good enough to be merged within the current > >> ticket? > >> >> > > > > >> >> > > > > >> >> > > > https://issues.apache.org/jira/browse/IGNITE-13748 > >> >> > > > > >> >> > > > On Thu, Nov 26, 2020 at 2:33 PM Юрий < > >> jury.gerzhedow...@gmail.com> > >> >> > > wrote: > >> >> > > > > >> >> > > > > A little bit my thoughts about unsigned types: > >> >> > > > > > >> >> > > > > 1. Seems we may support unsign types > >> >> > > > > 2. It requires adding new types to the internal > representation, > >> >> > > protocol, > >> >> > > > > e.t.c. > >> >> > > > > 3. internal representation should be the same as we keep sign > >> >> types. > >> >> > So > >> >> > > > it > >> >> > > > > will not requires more memory > >> >> > > > > 4. User should be aware of specifics such types for platforms > >> >> which > >> >> > not > >> >> > > > > support unsigned types. For example, a user could derive -6 > >> value > >> >> in > >> >> > > Java > >> >> > > > > for 250 unsigned byte value (from bits perspective will be > >> >> right). I > >> >> > > > think > >> >> > > > > We shouldn't use more wide type for such cases, especially it > >> >> will be > >> >> > > bad > >> >> > > > > for unsigned long when we require returns BigInteger type. > >> >> > > > > 5. Possible it requires some suffix/preffix for new types > like > >> a > >> >> > > '250u' - > >> >> > > > > it means that 250 is an unsigned value type. > >> >> > > > > 6. It requires a little bit more expensive comparison logic > for > >> >> > indexes > >> >> > > > > 7. It requires new comparison logic for expressions. I think > it > >> >> not > >> >> > > > > possible for the current H2 engine and probably possible for > >> the > >> >> new > >> >> > > > > Calcite engine. Need clarification from anybody who involved > in > >> >> this > >> >> > > part > >> >> > > > > > >> >> > > > > WDYT? > >> >> > > > > > >> >> > > > > вт, 24 нояб. 2020 г. в 18:36, Alexey Goncharuk < > >> >> > > > alexey.goncha...@gmail.com > >> >> > > > > >: > >> >> > > > > > >> >> > > > > > Actually, we can support comparisons in 3.0: once we the > >> actual > >> >> > type > >> >> > > > > > information, we can make proper runtime adjustments and > >> >> conversions > >> >> > > to > >> >> > > > > > treat those values as unsigned - it will be just a bit more > >> >> > > expensive. > >> >> > > > > > > >> >> > > > > > вт, 24 нояб. 2020 г. в 18:32, Pavel Tupitsyn < > >> >> ptupit...@apache.org > >> >> > >: > >> >> > > > > > > >> >> > > > > > > > SQL range queries it will break > >> >> > > > > > > > WHERE x > y may return wrong results > >> >> > > > > > > > >> >> > > > > > > Yes, range queries, inequality comparisons and so on are > >> >> broken > >> >> > > > > > > for unsigned data types, I think I mentioned this > somewhere > >> >> > above. > >> >> > > > > > > > >> >> > > > > > > Again, in my opinion, we can document that SQL is not > >> >> supported > >> >> > on > >> >> > > > > those > >> >> > > > > > > types, > >> >> > > > > > > end of story. > >> >> > > > > > > > >> >> > > > > > > On Tue, Nov 24, 2020 at 6:25 PM Alexey Goncharuk < > >> >> > > > > > > alexey.goncha...@gmail.com> > >> >> > > > > > > wrote: > >> >> > > > > > > > >> >> > > > > > > > Folks, I think this is a reasonable request. I thought > >> about > >> >> > this > >> >> > > > > when > >> >> > > > > > I > >> >> > > > > > > > was drafting the IEP, but hesitated to add these types > >> right > >> >> > > away. > >> >> > > > > > > > > >> >> > > > > > > > > That is how it works in Ignite since the beginning > with > >> >> .NET > >> >> > > and > >> >> > > > > C++ > >> >> > > > > > :) > >> >> > > > > > > > I have some doubts that it actually works as expected, > it > >> >> needs > >> >> > > > some > >> >> > > > > > > > checking (will be glad if my concerns are false): > >> >> > > > > > > > > >> >> > > > > > > > - It's true that equality check works properly, but > >> for > >> >> SQL > >> >> > > > range > >> >> > > > > > > > queries it will break unless some special care is > >> taken > >> >> on > >> >> > > Java > >> >> > > > > > side: > >> >> > > > > > > > for > >> >> > > > > > > > u8 255 > 10, but in Java (byte)255 will be converted > >> to > >> >> -1, > >> >> > > > which > >> >> > > > > > will > >> >> > > > > > > > break the comparison. Since we don't have unsigned > >> types > >> >> > now, > >> >> > > I > >> >> > > > > > doubt > >> >> > > > > > > it > >> >> > > > > > > > works. > >> >> > > > > > > > - There is an obvious cross-platform data loss when > >> >> > > "intuitive" > >> >> > > > > type > >> >> > > > > > > > mapping is used by a user (u8 corresponds to byte > >> type in > >> >> > > .NET, > >> >> > > > > but > >> >> > > > > > to > >> >> > > > > > > > avoid values loss, a user will have to use short > type > >> in > >> >> > Java, > >> >> > > > and > >> >> > > > > > > > Ignite > >> >> > > > > > > > will also need to take care of the range check > during > >> >> > > > > > serialization). > >> >> > > > > > > I > >> >> > > > > > > > think we can even allow to try to deserialize a > value > >> >> into > >> >> > > > > arbitrary > >> >> > > > > > > > type, > >> >> > > > > > > > but throw an exception if the range is out of > bounds. > >> >> > > > > > > > > >> >> > > > > > > > Overall, I agree with Andrey's comments. > >> >> > > > > > > > Andrey, do you mind updating the IEP once all the > details > >> >> are > >> >> > > > settled > >> >> > > > > > > here? > >> >> > > > > > > > > >> >> > > > > > > > вт, 24 нояб. 2020 г. в 18:19, Andrey Mashenkov < > >> >> > > > > > > andrey.mashen...@gmail.com > >> >> > > > > > > > >: > >> >> > > > > > > > > >> >> > > > > > > > > Pavel, > >> >> > > > > > > > > > >> >> > > > > > > > > I believe uLong values beyond 2^63 can't be treated > >> >> correctly > >> >> > > for > >> >> > > > > now > >> >> > > > > > > > > (WHERE x > y may return wrong results) > >> >> > > > > > > > > > >> >> > > > > > > > > I think we could make "true" support for unsigned > >> types, > >> >> but > >> >> > > they > >> >> > > > > > will > >> >> > > > > > > > have > >> >> > > > > > > > > limitations on the Java side. > >> >> > > > > > > > > Thus, the one will not be able to map uint64 to Java > >> long > >> >> > > > > primitive, > >> >> > > > > > > but > >> >> > > > > > > > to > >> >> > > > > > > > > BigInteger only. > >> >> > > > > > > > > As for indices, we could read uint64 to Java long, > but > >> >> treat > >> >> > > > > negative > >> >> > > > > > > > > values in a different way to preserve correct > ordering. > >> >> > > > > > > > > > >> >> > > > > > > > > These limitations will affect only mixed environments > >> when > >> >> > .Net > >> >> > > > and > >> >> > > > > > > Java > >> >> > > > > > > > > used to access the data. > >> >> > > > > > > > > Will this solution address your issues? > >> >> > > > > > > > > > >> >> > > > > > > > > > >> >> > > > > > > > > On Tue, Nov 24, 2020 at 5:45 PM Pavel Tupitsyn < > >> >> > > > > ptupit...@apache.org > >> >> > > > > > > > >> >> > > > > > > > > wrote: > >> >> > > > > > > > > > >> >> > > > > > > > > > > That way is impossible. > >> >> > > > > > > > > > > >> >> > > > > > > > > > That is how it works in Ignite since the beginning > >> with > >> >> > .NET > >> >> > > > and > >> >> > > > > > C++ > >> >> > > > > > > :) > >> >> > > > > > > > > > You can use unsigned primitives as cache keys and > >> >> values, > >> >> > as > >> >> > > > > fields > >> >> > > > > > > and > >> >> > > > > > > > > > properties, > >> >> > > > > > > > > > and in SQL queries (even in WHERE x=y clauses) - it > >> >> works > >> >> > > > > > > transparently > >> >> > > > > > > > > for > >> >> > > > > > > > > > the users. > >> >> > > > > > > > > > Java side knows nothing and treats those values as > >> >> > > > corresponding > >> >> > > > > > > signed > >> >> > > > > > > > > > types. > >> >> > > > > > > > > > > >> >> > > > > > > > > > However, this abstraction leaks in some cases only > >> >> because > >> >> > > > there > >> >> > > > > > are > >> >> > > > > > > no > >> >> > > > > > > > > > corresponding type ids. > >> >> > > > > > > > > > That is why I'm proposing a very simple change to > the > >> >> > > protocol > >> >> > > > - > >> >> > > > > > add > >> >> > > > > > > > type > >> >> > > > > > > > > > ids, but handle them the same way as signed > >> >> counterparts. > >> >> > > > > > > > > > > >> >> > > > > > > > > > > >> >> > > > > > > > > > On Tue, Nov 24, 2020 at 5:00 PM Andrey Mashenkov < > >> >> > > > > > > > > > andrey.mashen...@gmail.com> > >> >> > > > > > > > > > wrote: > >> >> > > > > > > > > > > >> >> > > > > > > > > > > Pavel, > >> >> > > > > > > > > > > > >> >> > > > > > > > > > > - Treat uLong as long in Java (bitwise > >> representation > >> >> is > >> >> > > the > >> >> > > > > > same) > >> >> > > > > > > > > > > > >> >> > > > > > > > > > > That way is impossible. > >> >> > > > > > > > > > > > >> >> > > > > > > > > > > Assume, you have a .NET class with a uByte field > >> and > >> >> map > >> >> > it > >> >> > > > to > >> >> > > > > > > > 'uint8' > >> >> > > > > > > > > > > column. > >> >> > > > > > > > > > > Then you set the field value to "250" and put the > >> >> object > >> >> > > > into a > >> >> > > > > > > > table, > >> >> > > > > > > > > > > field value perfectly fits to a single byte > 'int8' > >> >> > column. > >> >> > > > > > > > > > > But in Java you can't deserialize it to directly > >> the > >> >> Java > >> >> > > > > object > >> >> > > > > > > > field > >> >> > > > > > > > > of > >> >> > > > > > > > > > > 'byte' type, so we should map uint8 type to Java > >> >> 'short' > >> >> > > type > >> >> > > > > > > > > > > because the one expected to see "250" as a value > >> which > >> >> > > > doesn't > >> >> > > > > > fit > >> >> > > > > > > to > >> >> > > > > > > > > the > >> >> > > > > > > > > > > signed type. > >> >> > > > > > > > > > > For uLong the one will need a BigInteger field in > >> >> Java. > >> >> > > > > > > > > > > > >> >> > > > > > > > > > > SQL index either can't treat column value as Java > >> >> 'byte' > >> >> > as > >> >> > > > is, > >> >> > > > > > > > because > >> >> > > > > > > > > > > after reading you will get a negative value, so > it > >> >> should > >> >> > > be > >> >> > > > > cast > >> >> > > > > > > to > >> >> > > > > > > > > > short > >> >> > > > > > > > > > > at first. (converted to BigInteger for uint64) > >> >> > > > > > > > > > > So, index on signed type will require a different > >> >> > > comparator. > >> >> > > > > > > > > > > > >> >> > > > > > > > > > > That way doesn't look simpler. > >> >> > > > > > > > > > > > >> >> > > > > > > > > > > On Tue, Nov 24, 2020 at 4:23 PM Pavel Tupitsyn < > >> >> > > > > > > ptupit...@apache.org > >> >> > > > > > > > > > >> >> > > > > > > > > > > wrote: > >> >> > > > > > > > > > > > >> >> > > > > > > > > > > > Andrey, > >> >> > > > > > > > > > > > > >> >> > > > > > > > > > > > I don't think range narrowing is a good idea. > >> >> > > > > > > > > > > > Do you see any problems with the simple > approach > >> I > >> >> > > > described? > >> >> > > > > > > > > > > > > >> >> > > > > > > > > > > > > >> >> > > > > > > > > > > > On Tue, Nov 24, 2020 at 4:01 PM Andrey > Mashenkov > >> < > >> >> > > > > > > > > > > > andrey.mashen...@gmail.com> > >> >> > > > > > > > > > > > wrote: > >> >> > > > > > > > > > > > > >> >> > > > > > > > > > > > > Pavel, > >> >> > > > > > > > > > > > > > >> >> > > > > > > > > > > > > If you are ok with narrowing range for > unsigned > >> >> types > >> >> > > > then > >> >> > > > > we > >> >> > > > > > > > could > >> >> > > > > > > > > > > add a > >> >> > > > > > > > > > > > > constraint for unsigned types on schema level > >> >> (like > >> >> > > > > > nullability > >> >> > > > > > > > > flag) > >> >> > > > > > > > > > > > > and treat them as signed types in storage. > >> >> > > > > > > > > > > > > > >> >> > > > > > > > > > > > > We are going with a separate storage > >> type-system > >> >> and > >> >> > > > binary > >> >> > > > > > > > > protocol > >> >> > > > > > > > > > > > > type-system, however most of type will match > 1 > >> to > >> >> 1 > >> >> > > with > >> >> > > > > > > storage > >> >> > > > > > > > > > > (native) > >> >> > > > > > > > > > > > > type. > >> >> > > > > > > > > > > > > On .Net side you will either have a separate > >> type > >> >> id > >> >> > or > >> >> > > > > treat > >> >> > > > > > > > > > > serialized > >> >> > > > > > > > > > > > > value regarding a schema (signed or unsigned > >> >> flag). > >> >> > > > > > > > > > > > > > >> >> > > > > > > > > > > > > Igor, > >> >> > > > > > > > > > > > > > >> >> > > > > > > > > > > > > I'm not sure users can ever foresee the > >> >> consequences > >> >> > of > >> >> > > > > using > >> >> > > > > > > > > > unsigned > >> >> > > > > > > > > > > > > types. > >> >> > > > > > > > > > > > > > >> >> > > > > > > > > > > > > Assume, a user used to unsigned types > perfectly > >> >> works > >> >> > > > with > >> >> > > > > > some > >> >> > > > > > > > > > > database, > >> >> > > > > > > > > > > > > then he turns into Ignite successor > confession > >> >> with > >> >> > our > >> >> > > > > > > "native" > >> >> > > > > > > > > > > > > unsigned-types support. > >> >> > > > > > > > > > > > > But later, he finds that he can use the power > >> of > >> >> > Ignite > >> >> > > > > > Compute > >> >> > > > > > > > on > >> >> > > > > > > > > > Java > >> >> > > > > > > > > > > > for > >> >> > > > > > > > > > > > > some tasks or a new app. > >> >> > > > > > > > > > > > > Finally, the user will either fail to use his > >> >> > unsigned > >> >> > > > data > >> >> > > > > > on > >> >> > > > > > > > Java > >> >> > > > > > > > > > due > >> >> > > > > > > > > > > > or > >> >> > > > > > > > > > > > > face performance issues due to natural Java > >> type > >> >> > system > >> >> > > > > > > > limitations > >> >> > > > > > > > > > > e.g. > >> >> > > > > > > > > > > > > conversion uLong to BigInteger. > >> >> > > > > > > > > > > > > > >> >> > > > > > > > > > > > > I believe that natively supported types with > >> >> possible > >> >> > > > value > >> >> > > > > > > > ranges > >> >> > > > > > > > > > and > >> >> > > > > > > > > > > > > limitations should be known. > >> >> > > > > > > > > > > > > So, the only question is what trade-off we > >> found > >> >> > > > > acceptable: > >> >> > > > > > > > > > narrowing > >> >> > > > > > > > > > > > > unsigned type range or use types of wider > >> range on > >> >> > > > systems > >> >> > > > > > like > >> >> > > > > > > > > Java. > >> >> > > > > > > > > > > > > > >> >> > > > > > > > > > > > > On Tue, Nov 24, 2020 at 3:25 PM Igor Sapego < > >> >> > > > > > > isap...@apache.org> > >> >> > > > > > > > > > > wrote: > >> >> > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > Actually, I think it is not so hard to > >> implement > >> >> > > > > comparison > >> >> > > > > > > of > >> >> > > > > > > > > > > unsigned > >> >> > > > > > > > > > > > > > numbers in > >> >> > > > > > > > > > > > > > SQL even in Java, so it does not seem to > be a > >> >> big > >> >> > > issue > >> >> > > > > > from > >> >> > > > > > > my > >> >> > > > > > > > > > > > > > perspective. > >> >> > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > Now to the usage of unsigned types from > Java > >> - I > >> >> > > think, > >> >> > > > > if > >> >> > > > > > a > >> >> > > > > > > > user > >> >> > > > > > > > > > > uses > >> >> > > > > > > > > > > > > > unsigned type > >> >> > > > > > > > > > > > > > in a schema and is going to interact with > it > >> >> from > >> >> > > Java > >> >> > > > he > >> >> > > > > > > knows > >> >> > > > > > > > > > what > >> >> > > > > > > > > > > he > >> >> > > > > > > > > > > > > is > >> >> > > > > > > > > > > > > > doing. > >> >> > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > Mostly they are for use from platforms > where > >> >> they > >> >> > > have > >> >> > > > > > native > >> >> > > > > > > > > > support > >> >> > > > > > > > > > > > and > >> >> > > > > > > > > > > > > > widely > >> >> > > > > > > > > > > > > > used, like in C++ or .NET, where users > >> currently > >> >> > have > >> >> > > > to > >> >> > > > > > > make a > >> >> > > > > > > > > > > manual > >> >> > > > > > > > > > > > > type > >> >> > > > > > > > > > > > > > casting > >> >> > > > > > > > > > > > > > or even just stop using unsigned types when > >> they > >> >> > use > >> >> > > > > > Ignite. > >> >> > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > Best Regards, > >> >> > > > > > > > > > > > > > Igor > >> >> > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > On Tue, Nov 24, 2020 at 3:06 PM Pavel > >> Tupitsyn < > >> >> > > > > > > > > > ptupit...@apache.org > >> >> > > > > > > > > > > > > >> >> > > > > > > > > > > > > > wrote: > >> >> > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > Andrey, > >> >> > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > I think it is much simpler: > >> >> > > > > > > > > > > > > > > - Add protocol support for those types > >> >> > (basically, > >> >> > > > just > >> >> > > > > > add > >> >> > > > > > > > > more > >> >> > > > > > > > > > > type > >> >> > > > > > > > > > > > > > ids) > >> >> > > > > > > > > > > > > > > - Treat uLong as long in Java (bitwise > >> >> > > representation > >> >> > > > > is > >> >> > > > > > > the > >> >> > > > > > > > > > same) > >> >> > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > ANSI SQL does not have unsigned integers, > >> so > >> >> we > >> >> > can > >> >> > > > > > simply > >> >> > > > > > > > say > >> >> > > > > > > > > > that > >> >> > > > > > > > > > > > > > > unsigned value relative comparison is not > >> >> > supported > >> >> > > > in > >> >> > > > > > SQL > >> >> > > > > > > > > > > (equality > >> >> > > > > > > > > > > > > will > >> >> > > > > > > > > > > > > > > work). > >> >> > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > On Tue, Nov 24, 2020 at 2:40 PM Andrey > >> >> Mashenkov > >> >> > < > >> >> > > > > > > > > > > > > > > andrey.mashen...@gmail.com> > >> >> > > > > > > > > > > > > > > wrote: > >> >> > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > Thanks, Pavel and Igor. > >> >> > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > I like your ideas to have i8 or int8 > >> >> instead of > >> >> > > > > > Integer. > >> >> > > > > > > > > > > > > > > > But the naming doesn't address the > issue. > >> >> > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > I agree internal types should be > portable > >> >> > across > >> >> > > > > > > different > >> >> > > > > > > > > > > systems > >> >> > > > > > > > > > > > > with > >> >> > > > > > > > > > > > > > > and > >> >> > > > > > > > > > > > > > > > without unsigned type support. > >> >> > > > > > > > > > > > > > > > The only issue here is that unsigned > >> types > >> >> > cover > >> >> > > > > > > different > >> >> > > > > > > > > > > ranges. > >> >> > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > Let's assume we want to introduce a > >> uLong. > >> >> > > > > > > > > > > > > > > > It doesn't look like a big deal to add > >> uLong > >> >> > type > >> >> > > > > > support > >> >> > > > > > > > at > >> >> > > > > > > > > > > > storage > >> >> > > > > > > > > > > > > > > level > >> >> > > > > > > > > > > > > > > > and fit it to a 8 bytes and then use it > >> in > >> >> e.g. > >> >> > > > .Net > >> >> > > > > > > only. > >> >> > > > > > > > > > > > > > > > But how we could support it in e.g. > Java? > >> >> > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > Let's keep in mind Long range is about > >> >> (2^-63 > >> >> > .. > >> >> > > > > 2^63) > >> >> > > > > > > and > >> >> > > > > > > > > > uLong > >> >> > > > > > > > > > > > > range > >> >> > > > > > > > > > > > > > is > >> >> > > > > > > > > > > > > > > > (0 .. 2^64) > >> >> > > > > > > > > > > > > > > > 1. The first option is to restrict > range > >> to > >> >> (0 > >> >> > .. > >> >> > > > > > 2^63). > >> >> > > > > > > > This > >> >> > > > > > > > > > > > allows > >> >> > > > > > > > > > > > > to > >> >> > > > > > > > > > > > > > > use > >> >> > > > > > > > > > > > > > > > signed in e.g. > >> >> > > > > > > > > > > > > > > > Java with no conversion, but doesn't > look > >> >> like > >> >> > a > >> >> > > > > 'real' > >> >> > > > > > > > > > unsigned > >> >> > > > > > > > > > > > > uLong > >> >> > > > > > > > > > > > > > > > support. Things go worse when the user > >> will > >> >> use > >> >> > > > > uByte, > >> >> > > > > > as > >> >> > > > > > > > > > > > limitation > >> >> > > > > > > > > > > > > > can > >> >> > > > > > > > > > > > > > > > make uByte totally unusable. > >> >> > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > 2. The second one is to map unsigned > >> types > >> >> to a > >> >> > > > type > >> >> > > > > of > >> >> > > > > > > > wider > >> >> > > > > > > > > > > type > >> >> > > > > > > > > > > > > and > >> >> > > > > > > > > > > > > > > add > >> >> > > > > > > > > > > > > > > > a constraint for negative values. E.g. > >> >> uLong to > >> >> > > > > > > BigInteger. > >> >> > > > > > > > > > > > > > > > So, we can't use primitive Java type > for > >> >> Long > >> >> > > here. > >> >> > > > > > > > However, > >> >> > > > > > > > > it > >> >> > > > > > > > > > > is > >> >> > > > > > > > > > > > > > still > >> >> > > > > > > > > > > > > > > > possible to store uLong in 8 bytes, but > >> >> have a > >> >> > > > > special > >> >> > > > > > > > > > comparator > >> >> > > > > > > > > > > > for > >> >> > > > > > > > > > > > > > > > unsigned types to avoid unwanted > >> >> > deserialization. > >> >> > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > WDYT? > >> >> > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > On Tue, Nov 24, 2020 at 2:04 PM Pavel > >> >> Tupitsyn > >> >> > < > >> >> > > > > > > > > > > > ptupit...@apache.org > >> >> > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > wrote: > >> >> > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > Agree, let's get rid of "long, short, > >> >> byte" > >> >> > in > >> >> > > > the > >> >> > > > > > > > protocol > >> >> > > > > > > > > > > > > > definition. > >> >> > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > We can use Rust style, which is > concise > >> >> and > >> >> > > > > > > unambiguous: > >> >> > > > > > > > > > > > > > > > > i8, u8, i16, u16, etc > >> >> > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > On Tue, Nov 24, 2020 at 1:58 PM Igor > >> >> Sapego < > >> >> > > > > > > > > > > isap...@apache.org> > >> >> > > > > > > > > > > > > > > wrote: > >> >> > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > Pavel, > >> >> > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > I totally support that. Also, if we > >> are > >> >> > > aiming > >> >> > > > > for > >> >> > > > > > > > > > > > > > > > > > stronger platform-independance, > >> >> > > > > > > > > > > > > > > > > > in our schemas we may want to > support > >> >> > > > > bit-notation > >> >> > > > > > > > > (int32, > >> >> > > > > > > > > > > > > uint64)? > >> >> > > > > > > > > > > > > > > For > >> >> > > > > > > > > > > > > > > > > > example > >> >> > > > > > > > > > > > > > > > > > "long" can mean a different type on > >> >> > different > >> >> > > > > > > platforms > >> >> > > > > > > > > and > >> >> > > > > > > > > > > > it's > >> >> > > > > > > > > > > > > > easy > >> >> > > > > > > > > > > > > > > > to > >> >> > > > > > > > > > > > > > > > > > confuse > >> >> > > > > > > > > > > > > > > > > > them (happens often when using ODBC > >> for > >> >> > > > example). > >> >> > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > Best Regards, > >> >> > > > > > > > > > > > > > > > > > Igor > >> >> > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > On Tue, Nov 24, 2020 at 1:34 PM > Pavel > >> >> > > Tupitsyn > >> >> > > > < > >> >> > > > > > > > > > > > > > ptupit...@apache.org > >> >> > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > wrote: > >> >> > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > Igniters, > >> >> > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > I think we should support > unsigned > >> >> data > >> >> > > > types: > >> >> > > > > > > > > > > > > > > > > > > uByte, uShort, uInt, uLong > >> >> > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > Java does not have them, but many > >> >> other > >> >> > > > > languages > >> >> > > > > > > do, > >> >> > > > > > > > > > > > > > > > > > > and with the growing number of > thin > >> >> > clients > >> >> > > > > this > >> >> > > > > > is > >> >> > > > > > > > > > > > important. > >> >> > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > For example, in current > Ignite.NET > >> >> > > > > implementation > >> >> > > > > > > we > >> >> > > > > > > > > > store > >> >> > > > > > > > > > > > > > unsigned > >> >> > > > > > > > > > > > > > > > > > values > >> >> > > > > > > > > > > > > > > > > > > as signed internally, > >> >> > > > > > > > > > > > > > > > > > > but this is a huge pain when it > >> comes > >> >> to > >> >> > > > > > metadata, > >> >> > > > > > > > > binary > >> >> > > > > > > > > > > > > > objects, > >> >> > > > > > > > > > > > > > > > etc. > >> >> > > > > > > > > > > > > > > > > > > (it is easy to deserialize int as > >> uint > >> >> > when > >> >> > > > you > >> >> > > > > > > have > >> >> > > > > > > > a > >> >> > > > > > > > > > > class, > >> >> > > > > > > > > > > > > but > >> >> > > > > > > > > > > > > > > not > >> >> > > > > > > > > > > > > > > > > > with > >> >> > > > > > > > > > > > > > > > > > > BinaryObject.GetField) > >> >> > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > Any objections? > >> >> > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > On Tue, Nov 24, 2020 at 12:28 PM > >> >> Andrey > >> >> > > > > > Mashenkov < > >> >> > > > > > > > > > > > > > > > > > > andrey.mashen...@gmail.com> > wrote: > >> >> > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > Denis, > >> >> > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > Good point. Both serializers > use > >> >> > > reflection > >> >> > > > > > API. > >> >> > > > > > > > > > > > > > > > > > > > However, we will allow users to > >> >> > configure > >> >> > > > > > static > >> >> > > > > > > > > schema > >> >> > > > > > > > > > > > along > >> >> > > > > > > > > > > > > > > with > >> >> > > > > > > > > > > > > > > > > > > 'strict' > >> >> > > > > > > > > > > > > > > > > > > > schema mode, we still need to > >> >> validate > >> >> > > user > >> >> > > > > > > classes > >> >> > > > > > > > > on > >> >> > > > > > > > > > > > client > >> >> > > > > > > > > > > > > > > nodes > >> >> > > > > > > > > > > > > > > > > > > against > >> >> > > > > > > > > > > > > > > > > > > > the latest schema in the grid > >> and > >> >> > > > reflection > >> >> > > > > > API > >> >> > > > > > > > is > >> >> > > > > > > > > > the > >> >> > > > > > > > > > > > only > >> >> > > > > > > > > > > > > > way > >> >> > > > > > > > > > > > > > > > to > >> >> > > > > > > > > > > > > > > > > do > >> >> > > > > > > > > > > > > > > > > > > it. > >> >> > > > > > > > > > > > > > > > > > > > One can find a few articles on > >> the > >> >> > > internet > >> >> > > > > on > >> >> > > > > > > how > >> >> > > > > > > > to > >> >> > > > > > > > > > > > enable > >> >> > > > > > > > > > > > > > > > > reflection > >> >> > > > > > > > > > > > > > > > > > > in > >> >> > > > > > > > > > > > > > > > > > > > GraalVM. > >> >> > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > I'll create a task for > supporting > >> >> > > GraalVM, > >> >> > > > > and > >> >> > > > > > > > maybe > >> >> > > > > > > > > > > > someone > >> >> > > > > > > > > > > > > > who > >> >> > > > > > > > > > > > > > > is > >> >> > > > > > > > > > > > > > > > > > > > familiar with GraalVM will > >> suggest a > >> >> > > > solution > >> >> > > > > > or > >> >> > > > > > > a > >> >> > > > > > > > > > proper > >> >> > > > > > > > > > > > > > > > workaround. > >> >> > > > > > > > > > > > > > > > > > Or > >> >> > > > > > > > > > > > > > > > > > > > I'll do it a bit later. > >> >> > > > > > > > > > > > > > > > > > > > If no workaround is found, we > >> could > >> >> > allow > >> >> > > > > users > >> >> > > > > > > to > >> >> > > > > > > > > > write > >> >> > > > > > > > > > > > it's > >> >> > > > > > > > > > > > > > own > >> >> > > > > > > > > > > > > > > > > > > > serializer, but I don't think > it > >> is > >> >> a > >> >> > > good > >> >> > > > > idea > >> >> > > > > > > to > >> >> > > > > > > > > > expose > >> >> > > > > > > > > > > > any > >> >> > > > > > > > > > > > > > > > > internal > >> >> > > > > > > > > > > > > > > > > > > > classes to the public. > >> >> > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > On Tue, Nov 24, 2020 at 2:55 AM > >> >> Denis > >> >> > > > Magda < > >> >> > > > > > > > > > > > > dma...@apache.org > >> >> > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > wrote: > >> >> > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > Andrey, thanks for the > update, > >> >> > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > Does any of the serializers > >> take > >> >> into > >> >> > > > > > > > consideration > >> >> > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > > > > native-image-generation > >> feature of > >> >> > > > GraalVM? > >> >> > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > >> https://www.graalvm.org/reference-manual/native-image/ > >> >> > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > With the current binary > >> >> marshaller, > >> >> > we > >> >> > > > > can't > >> >> > > > > > > even > >> >> > > > > > > > > > > > generate > >> >> > > > > > > > > > > > > a > >> >> > > > > > > > > > > > > > > > native > >> >> > > > > > > > > > > > > > > > > > > image > >> >> > > > > > > > > > > > > > > > > > > > > for the code using our thin > >> client > >> >> > > APIs. > >> >> > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > - > >> >> > > > > > > > > > > > > > > > > > > > > Denis > >> >> > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > On Mon, Nov 23, 2020 at 4:39 > AM > >> >> > Andrey > >> >> > > > > > > Mashenkov > >> >> > > > > > > > < > >> >> > > > > > > > > > > > > > > > > > > > > andrey.mashen...@gmail.com> > >> >> > > > > > > > > > > > > > > > > > > > > wrote: > >> >> > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > Hi Igniters, > >> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > I'd like to continue > >> discussion > >> >> of > >> >> > > > IEP-54 > >> >> > > > > > > > > > > (Schema-first > >> >> > > > > > > > > > > > > > > > > approach). > >> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > Hope everyone who is > >> interested > >> >> > had a > >> >> > > > > > chance > >> >> > > > > > > to > >> >> > > > > > > > > get > >> >> > > > > > > > > > > > > > familiar > >> >> > > > > > > > > > > > > > > > with > >> >> > > > > > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > > > > > proposal [1]. > >> >> > > > > > > > > > > > > > > > > > > > > > Please, do not hesitate to > >> ask > >> >> > > > questions > >> >> > > > > > and > >> >> > > > > > > > > share > >> >> > > > > > > > > > > your > >> >> > > > > > > > > > > > > > > ideas. > >> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > I've prepared a prototype > of > >> >> > > serializer > >> >> > > > > [2] > >> >> > > > > > > for > >> >> > > > > > > > > the > >> >> > > > > > > > > > > > data > >> >> > > > > > > > > > > > > > > layout > >> >> > > > > > > > > > > > > > > > > > > > described > >> >> > > > > > > > > > > > > > > > > > > > > > in the proposal. > >> >> > > > > > > > > > > > > > > > > > > > > > In prototy, I compared 2 > >> >> approaches > >> >> > > to > >> >> > > > > > > > > > (de)serialize > >> >> > > > > > > > > > > > > > objects, > >> >> > > > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > > first > >> >> > > > > > > > > > > > > > > > > > > > > one > >> >> > > > > > > > > > > > > > > > > > > > > > uses java reflection/unsafe > >> API > >> >> and > >> >> > > > > similar > >> >> > > > > > > to > >> >> > > > > > > > > one > >> >> > > > > > > > > > we > >> >> > > > > > > > > > > > > > already > >> >> > > > > > > > > > > > > > > > use > >> >> > > > > > > > > > > > > > > > > > in > >> >> > > > > > > > > > > > > > > > > > > > > Ignite > >> >> > > > > > > > > > > > > > > > > > > > > > and the second one > generates > >> >> > > serializer > >> >> > > > > for > >> >> > > > > > > > > > > particular > >> >> > > > > > > > > > > > > user > >> >> > > > > > > > > > > > > > > > class > >> >> > > > > > > > > > > > > > > > > > and > >> >> > > > > > > > > > > > > > > > > > > > > uses > >> >> > > > > > > > > > > > > > > > > > > > > > Janino library for > >> compilation. > >> >> > > > > > > > > > > > > > > > > > > > > > Second one shows better > >> results > >> >> in > >> >> > > > > > > benchmarks. > >> >> > > > > > > > > > > > > > > > > > > > > > I think we can go with it > as > >> >> > default > >> >> > > > > > > serializer > >> >> > > > > > > > > and > >> >> > > > > > > > > > > > have > >> >> > > > > > > > > > > > > > > > > > > > reflection-based > >> >> > > > > > > > > > > > > > > > > > > > > > implementation as a > fallback > >> if > >> >> > > someone > >> >> > > > > > will > >> >> > > > > > > > have > >> >> > > > > > > > > > > > issues > >> >> > > > > > > > > > > > > > with > >> >> > > > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > > first > >> >> > > > > > > > > > > > > > > > > > > > > > one. > >> >> > > > > > > > > > > > > > > > > > > > > > WDYT? > >> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > There are a number of tasks > >> >> under > >> >> > the > >> >> > > > > > > umbrella > >> >> > > > > > > > > > ticket > >> >> > > > > > > > > > > > [3] > >> >> > > > > > > > > > > > > > > > waiting > >> >> > > > > > > > > > > > > > > > > > for > >> >> > > > > > > > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > > > > > assignee. > >> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > BTW, I'm going to create > more > >> >> > tickets > >> >> > > > for > >> >> > > > > > > > schema > >> >> > > > > > > > > > > > manager > >> >> > > > > > > > > > > > > > > modes > >> >> > > > > > > > > > > > > > > > > > > > > > implementation, but would > >> like > >> >> to > >> >> > > > clarify > >> >> > > > > > > some > >> >> > > > > > > > > > > details. > >> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > I thought schemaManager on > >> each > >> >> > node > >> >> > > > > should > >> >> > > > > > > > held: > >> >> > > > > > > > > > > > > > > > > > > > > > 1. Local mapping of > "schema > >> >> > > version" > >> >> > > > > <--> > >> >> > > > > > > > > > validated > >> >> > > > > > > > > > > > > local > >> >> > > > > > > > > > > > > > > > > > key/value > >> >> > > > > > > > > > > > > > > > > > > > > > classes pair. > >> >> > > > > > > > > > > > > > > > > > > > > > 2. Cluster-wide schema > >> changes > >> >> > > > history. > >> >> > > > > > > > > > > > > > > > > > > > > > On the client side. Before > >> any > >> >> > > > key-value > >> >> > > > > > API > >> >> > > > > > > > > > > operation > >> >> > > > > > > > > > > > we > >> >> > > > > > > > > > > > > > > > should > >> >> > > > > > > > > > > > > > > > > > > > > validate a > >> >> > > > > > > > > > > > > > > > > > > > > > schema for a given > key-value > >> >> pair. > >> >> > > > > > > > > > > > > > > > > > > > > > If there is no > local-mapping > >> >> exists > >> >> > > > for a > >> >> > > > > > > given > >> >> > > > > > > > > > > > key-value > >> >> > > > > > > > > > > > > > > pair > >> >> > > > > > > > > > > > > > > > or > >> >> > > > > > > > > > > > > > > > > > if > >> >> > > > > > > > > > > > > > > > > > > a > >> >> > > > > > > > > > > > > > > > > > > > > > cluster wide schema has a > >> more > >> >> > recent > >> >> > > > > > version > >> >> > > > > > > > > then > >> >> > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > key-value > >> >> > > > > > > > > > > > > > > > > > pair > >> >> > > > > > > > > > > > > > > > > > > > > > should be validated against > >> the > >> >> > > latest > >> >> > > > > > > version > >> >> > > > > > > > > and > >> >> > > > > > > > > > > > local > >> >> > > > > > > > > > > > > > > > mapping > >> >> > > > > > > > > > > > > > > > > > > should > >> >> > > > > > > > > > > > > > > > > > > > > be > >> >> > > > > > > > > > > > > > > > > > > > > > updated/actualized. > >> >> > > > > > > > > > > > > > > > > > > > > > If an object doesn't fit to > >> the > >> >> > > latest > >> >> > > > > > schema > >> >> > > > > > > > > then > >> >> > > > > > > > > > it > >> >> > > > > > > > > > > > > > depends > >> >> > > > > > > > > > > > > > > > on > >> >> > > > > > > > > > > > > > > > > > > schema > >> >> > > > > > > > > > > > > > > > > > > > > > mode: either fail the > >> operation > >> >> > > > ('strict' > >> >> > > > > > > mode) > >> >> > > > > > > > > or > >> >> > > > > > > > > > a > >> >> > > > > > > > > > > > new > >> >> > > > > > > > > > > > > > > > mapping > >> >> > > > > > > > > > > > > > > > > > > should > >> >> > > > > > > > > > > > > > > > > > > > > be > >> >> > > > > > > > > > > > > > > > > > > > > > created and a new schema > >> version > >> >> > > should > >> >> > > > > be > >> >> > > > > > > > > > propagated > >> >> > > > > > > > > > > > to > >> >> > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > cluster. > >> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > On the server side we > usually > >> >> have > >> >> > no > >> >> > > > > > > key-value > >> >> > > > > > > > > > > classes > >> >> > > > > > > > > > > > > and > >> >> > > > > > > > > > > > > > > we > >> >> > > > > > > > > > > > > > > > > > > operate > >> >> > > > > > > > > > > > > > > > > > > > > with > >> >> > > > > > > > > > > > > > > > > > > > > > tuples. > >> >> > > > > > > > > > > > > > > > > > > > > > As schema change history is > >> >> > available > >> >> > > > > and a > >> >> > > > > > > > tuple > >> >> > > > > > > > > > has > >> >> > > > > > > > > > > > > > schema > >> >> > > > > > > > > > > > > > > > > > version, > >> >> > > > > > > > > > > > > > > > > > > > > then > >> >> > > > > > > > > > > > > > > > > > > > > > it is possible to upgrade > any > >> >> > > received > >> >> > > > > > tuple > >> >> > > > > > > to > >> >> > > > > > > > > the > >> >> > > > > > > > > > > > last > >> >> > > > > > > > > > > > > > > > version > >> >> > > > > > > > > > > > > > > > > > > > without > >> >> > > > > > > > > > > > > > > > > > > > > > desialization. > >> >> > > > > > > > > > > > > > > > > > > > > > Thus we could allow nodes > to > >> >> send > >> >> > > > > key-value > >> >> > > > > > > > pairs > >> >> > > > > > > > > > of > >> >> > > > > > > > > > > > > > previous > >> >> > > > > > > > > > > > > > > > > > > versions > >> >> > > > > > > > > > > > > > > > > > > > > (if > >> >> > > > > > > > > > > > > > > > > > > > > > they didn't receive a > schema > >> >> update > >> >> > > > yet) > >> >> > > > > > > > without > >> >> > > > > > > > > > > > > reverting > >> >> > > > > > > > > > > > > > > > schema > >> >> > > > > > > > > > > > > > > > > > > > changes > >> >> > > > > > > > > > > > > > > > > > > > > > made by a node with newer > >> >> classes. > >> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > Alex, Val, Ivan did you > mean > >> the > >> >> > > same? > >> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > [1] > >> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > >> >> > > > > > > > > > > > > >> >> > > > > > > > > > > > >> >> > > > > > > > > > > >> >> > > > > > > > > > >> >> > > > > > > > > >> >> > > > > > > > >> >> > > > > > > >> >> > > > > > >> >> > > > > >> >> > > > >> >> > > >> >> > >> > https://cwiki.apache.org/confluence/display/IGNITE/IEP-54%3A+Schema-first+Approach > >> >> > > > > > > > > > > > > > > > > > > > > > [2] > >> >> > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > >> >> > > > > > > > > > >> >> > > > > >> https://github.com/apache/ignite/tree/ignite-13618/modules/commons > >> >> > > > > > > > > > > > > > > > > > > > > > [3] > >> >> > > > > > > > > > > > https://issues.apache.org/jira/browse/IGNITE-13616 > >> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > On Thu, Sep 17, 2020 at > 9:21 > >> AM > >> >> > Ivan > >> >> > > > > > > Pavlukhin > >> >> > > > > > > > < > >> >> > > > > > > > > > > > > > > > > > vololo...@gmail.com> > >> >> > > > > > > > > > > > > > > > > > > > > > wrote: > >> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > Folks, > >> >> > > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > Please do not ignore > >> history. > >> >> We > >> >> > > had > >> >> > > > a > >> >> > > > > > > thread > >> >> > > > > > > > > [1] > >> >> > > > > > > > > > > > with > >> >> > > > > > > > > > > > > > many > >> >> > > > > > > > > > > > > > > > > > bright > >> >> > > > > > > > > > > > > > > > > > > > > > > ideas. We can resume it. > >> >> > > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > [1] > >> >> > > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > >> >> > > > > > > > > > > > > >> >> > > > > > > > > > > > >> >> > > > > > > > > > > >> >> > > > > > > > > > >> >> > > > > > > > > >> >> > > > > > > > >> >> > > > > > > >> >> > > > > > >> >> > > > > >> >> > > > >> >> > > >> >> > >> > http://apache-ignite-developers.2346864.n4.nabble.com/Applicability-of-term-cache-to-Apache-Ignite-td36541.html > >> >> > > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > 2020-09-10 0:08 > GMT+03:00, > >> >> Denis > >> >> > > > Magda > >> >> > > > > < > >> >> > > > > > > > > > > > > > dma...@apache.org > >> >> > > > > > > > > > > > > > > >: > >> >> > > > > > > > > > > > > > > > > > > > > > > > Val, makes sense, > thanks > >> for > >> >> > > > > > explaining. > >> >> > > > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > > Agree that we need to > >> have a > >> >> > > > separate > >> >> > > > > > > > > > discussion > >> >> > > > > > > > > > > > > thread > >> >> > > > > > > > > > > > > > > for > >> >> > > > > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > > > > "table" > >> >> > > > > > > > > > > > > > > > > > > > > > > and > >> >> > > > > > > > > > > > > > > > > > > > > > > > "cache" terms > >> substitution. > >> >> > I'll > >> >> > > > > > > appreciate > >> >> > > > > > > > > it > >> >> > > > > > > > > > if > >> >> > > > > > > > > > > > you > >> >> > > > > > > > > > > > > > > start > >> >> > > > > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > > > > thread > >> >> > > > > > > > > > > > > > > > > > > > > > > > sharing pointers to any > >> >> > relevant > >> >> > > > IEPs > >> >> > > > > > and > >> >> > > > > > > > > > > reasoning > >> >> > > > > > > > > > > > > > > behind > >> >> > > > > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > > > > > suggested > >> >> > > > > > > > > > > > > > > > > > > > > > > > change. > >> >> > > > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > > - > >> >> > > > > > > > > > > > > > > > > > > > > > > > Denis > >> >> > > > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > > On Tue, Sep 8, 2020 at > >> 6:01 > >> >> PM > >> >> > > > > Valentin > >> >> > > > > > > > > > > Kulichenko > >> >> > > > > > > > > > > > < > >> >> > > > > > > > > > > > > > > > > > > > > > > > > >> >> valentin.kuliche...@gmail.com> > >> >> > > > > wrote: > >> >> > > > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >> Hi Denis, > >> >> > > > > > > > > > > > > > > > > > > > > > > >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >> I guess the wording in > >> the > >> >> IEP > >> >> > > is > >> >> > > > a > >> >> > > > > > > little > >> >> > > > > > > > > bit > >> >> > > > > > > > > > > > > > > confusing. > >> >> > > > > > > > > > > > > > > > > All > >> >> > > > > > > > > > > > > > > > > > it > >> >> > > > > > > > > > > > > > > > > > > > > means > >> >> > > > > > > > > > > > > > > > > > > > > > > is > >> >> > > > > > > > > > > > > > > > > > > > > > > >> that you should not > >> create > >> >> > > nested > >> >> > > > > > POJOs, > >> >> > > > > > > > but > >> >> > > > > > > > > > > > rather > >> >> > > > > > > > > > > > > > > inline > >> >> > > > > > > > > > > > > > > > > > > fields > >> >> > > > > > > > > > > > > > > > > > > > > > into a > >> >> > > > > > > > > > > > > > > > > > > > > > > >> single POJO that is > >> mapped > >> >> to > >> >> > a > >> >> > > > > > > particular > >> >> > > > > > > > > > > schema. > >> >> > > > > > > > > > > > > In > >> >> > > > > > > > > > > > > > > > other > >> >> > > > > > > > > > > > > > > > > > > words, > >> >> > > > > > > > > > > > > > > > > > > > > > > nested > >> >> > > > > > > > > > > > > > > > > > > > > > > >> POJOs are not > supported. > >> >> > > > > > > > > > > > > > > > > > > > > > > >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >> Alex, is this correct? > >> >> Please > >> >> > > let > >> >> > > > me > >> >> > > > > > > know > >> >> > > > > > > > if > >> >> > > > > > > > > > I'm > >> >> > > > > > > > > > > > > > missing > >> >> > > > > > > > > > > > > > > > > > > > something. > >> >> > > > > > > > > > > > > > > > > > > > > > > >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >> As for the "cache" > >> term, I > >> >> > agree > >> >> > > > > that > >> >> > > > > > it > >> >> > > > > > > > is > >> >> > > > > > > > > > > > > outdated, > >> >> > > > > > > > > > > > > > > but > >> >> > > > > > > > > > > > > > > > > I'm > >> >> > > > > > > > > > > > > > > > > > > not > >> >> > > > > > > > > > > > > > > > > > > > > sure > >> >> > > > > > > > > > > > > > > > > > > > > > > >> what we can replace it > >> >> with. > >> >> > > > "Table" > >> >> > > > > > is > >> >> > > > > > > > > > tightly > >> >> > > > > > > > > > > > > > > associated > >> >> > > > > > > > > > > > > > > > > > with > >> >> > > > > > > > > > > > > > > > > > > > SQL, > >> >> > > > > > > > > > > > > > > > > > > > > > but > >> >> > > > > > > > > > > > > > > > > > > > > > > >> SQL is optional in our > >> >> case. > >> >> > Do > >> >> > > > you > >> >> > > > > > want > >> >> > > > > > > > to > >> >> > > > > > > > > > > > create a > >> >> > > > > > > > > > > > > > > > > separate > >> >> > > > > > > > > > > > > > > > > > > > > > discussion > >> >> > > > > > > > > > > > > > > > > > > > > > > >> about this? > >> >> > > > > > > > > > > > > > > > > > > > > > > >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >> -Val > >> >> > > > > > > > > > > > > > > > > > > > > > > >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >> On Tue, Sep 8, 2020 at > >> >> 4:37 PM > >> >> > > > Denis > >> >> > > > > > > > Magda < > >> >> > > > > > > > > > > > > > > > > dma...@apache.org > >> >> > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > wrote: > >> >> > > > > > > > > > > > > > > > > > > > > > > >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> Val, > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> I've checked the IEP > >> again > >> >> > and > >> >> > > > > have a > >> >> > > > > > > few > >> >> > > > > > > > > > > > > questions. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> Arbitrary nested > >> objects > >> >> and > >> >> > > > > > > collections > >> >> > > > > > > > > are > >> >> > > > > > > > > > > not > >> >> > > > > > > > > > > > > > > allowed > >> >> > > > > > > > > > > > > > > > as > >> >> > > > > > > > > > > > > > > > > > > > column > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> values. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > Nested POJOs should > >> >> either > >> >> > be > >> >> > > > > > inlined > >> >> > > > > > > > > into > >> >> > > > > > > > > > > > > schema, > >> >> > > > > > > > > > > > > > or > >> >> > > > > > > > > > > > > > > > > > stored > >> >> > > > > > > > > > > > > > > > > > > as > >> >> > > > > > > > > > > > > > > > > > > > > > BLOBs > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> Could you provide a > DDL > >> >> code > >> >> > > > > snippet > >> >> > > > > > > > > showing > >> >> > > > > > > > > > > how > >> >> > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > inlining > >> >> > > > > > > > > > > > > > > > > > > of > >> >> > > > > > > > > > > > > > > > > > > > > > POJOs > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> is > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> supposed to work? > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> Also, we keep using > the > >> >> terms > >> >> > > > > "cache" > >> >> > > > > > > and > >> >> > > > > > > > > > > "table" > >> >> > > > > > > > > > > > > > > > > throughout > >> >> > > > > > > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > > > > IEP. > >> >> > > > > > > > > > > > > > > > > > > > > > > Is > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> it > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> the right time to > >> discuss > >> >> an > >> >> > > > > > alternate > >> >> > > > > > > > name > >> >> > > > > > > > > > > that > >> >> > > > > > > > > > > > > > would > >> >> > > > > > > > > > > > > > > > > > replace > >> >> > > > > > > > > > > > > > > > > > > > > those > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> too? > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> Personally, the > "table" > >> >> > should > >> >> > > > stay > >> >> > > > > > and > >> >> > > > > > > > the > >> >> > > > > > > > > > > > "cache" > >> >> > > > > > > > > > > > > > > > should > >> >> > > > > > > > > > > > > > > > > go > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> considering > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> that SQL is one of > the > >> >> > primary > >> >> > > > APIs > >> >> > > > > > in > >> >> > > > > > > > > Ignite > >> >> > > > > > > > > > > and > >> >> > > > > > > > > > > > > > that > >> >> > > > > > > > > > > > > > > > DDL > >> >> > > > > > > > > > > > > > > > > is > >> >> > > > > > > > > > > > > > > > > > > > > > supported > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> out-of-the-box. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> - > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> Denis > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> On Mon, Sep 7, 2020 > at > >> >> 12:26 > >> >> > PM > >> >> > > > > > > Valentin > >> >> > > > > > > > > > > > > Kulichenko < > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > >> >> > valentin.kuliche...@gmail.com> > >> >> > > > > > wrote: > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > Ivan, > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > I see your point. I > >> >> agree > >> >> > > that > >> >> > > > > with > >> >> > > > > > > the > >> >> > > > > > > > > > > > automatic > >> >> > > > > > > > > > > > > > > > updates > >> >> > > > > > > > > > > > > > > > > > we > >> >> > > > > > > > > > > > > > > > > > > > step > >> >> > > > > > > > > > > > > > > > > > > > > > > into > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> the > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > schema-last > >> territory. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > Actually, if we > >> support > >> >> > > > automatic > >> >> > > > > > > > > > evolution, > >> >> > > > > > > > > > > we > >> >> > > > > > > > > > > > > can > >> >> > > > > > > > > > > > > > > as > >> >> > > > > > > > > > > > > > > > > well > >> >> > > > > > > > > > > > > > > > > > > > > support > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > creating a cache > >> without > >> >> > > schema > >> >> > > > > and > >> >> > > > > > > > > > inferring > >> >> > > > > > > > > > > > it > >> >> > > > > > > > > > > > > > from > >> >> > > > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > > first > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > insert. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> In > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > other words, we can > >> have > >> >> > both > >> >> > > > > > > > > > "schema-first" > >> >> > > > > > > > > > > > and > >> >> > > > > > > > > > > > > > > > > > > "schema-last" > >> >> > > > > > > > > > > > > > > > > > > > > > modes. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > Alexey, what do you > >> >> think? > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > -Val > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > On Mon, Sep 7, 2020 > >> at > >> >> 5:59 > >> >> > > AM > >> >> > > > > > Alexey > >> >> > > > > > > > > > > > Goncharuk < > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > >> >> alexey.goncha...@gmail.com > >> >> > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > wrote: > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > Ivan, > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > Thank you, I got > >> your > >> >> > > concern > >> >> > > > > > now. > >> >> > > > > > > As > >> >> > > > > > > > > it > >> >> > > > > > > > > > is > >> >> > > > > > > > > > > > > > mostly > >> >> > > > > > > > > > > > > > > > > > > regarding > >> >> > > > > > > > > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > terminology, I am > >> >> > > absolutely > >> >> > > > > fine > >> >> > > > > > > > with > >> >> > > > > > > > > > > > changing > >> >> > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > name > >> >> > > > > > > > > > > > > > > > > > to > >> >> > > > > > > > > > > > > > > > > > > > > > > whatever > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> fits > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > the approach > best. > >> >> > Dynamic > >> >> > > or > >> >> > > > > > > > evolving > >> >> > > > > > > > > > > schema > >> >> > > > > > > > > > > > > > > sounds > >> >> > > > > > > > > > > > > > > > > > > great. I > >> >> > > > > > > > > > > > > > > > > > > > > > will > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> make > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > corresponding > >> changes > >> >> to > >> >> > > the > >> >> > > > > IEP > >> >> > > > > > > once > >> >> > > > > > > > > we > >> >> > > > > > > > > > > > settle > >> >> > > > > > > > > > > > > > on > >> >> > > > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > > name. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > пн, 7 сент. 2020 > >> г. в > >> >> > > 11:33, > >> >> > > > > Ivan > >> >> > > > > > > > > > > Pavlukhin < > >> >> > > > > > > > > > > > > > > > > > > > > vololo...@gmail.com > >> >> > > > > > > > > > > > > > > > > > > > > > >: > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > Hi Val, > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > Thank you for > >> your > >> >> > > answer! > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > My > understanding > >> is > >> >> a > >> >> > > > little > >> >> > > > > > bit > >> >> > > > > > > > > > > different. > >> >> > > > > > > > > > > > > > Yes, > >> >> > > > > > > > > > > > > > > > > schema > >> >> > > > > > > > > > > > > > > > > > > > > > evolution > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > definitely > >> should be > >> >> > > > > possible. > >> >> > > > > > > But > >> >> > > > > > > > I > >> >> > > > > > > > > > see > >> >> > > > > > > > > > > a > >> >> > > > > > > > > > > > > main > >> >> > > > > > > > > > > > > > > > > > > difference > >> >> > > > > > > > > > > > > > > > > > > > in > >> >> > > > > > > > > > > > > > > > > > > > > > > "how > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > schema is > >> updated". > >> >> I > >> >> > > > treat a > >> >> > > > > > > > common > >> >> > > > > > > > > > SQL > >> >> > > > > > > > > > > > > > approach > >> >> > > > > > > > > > > > > > > > > > > > > schema-first. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> Schema > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > and data > >> >> manipulation > >> >> > > > > > operations > >> >> > > > > > > > are > >> >> > > > > > > > > > > > clearly > >> >> > > > > > > > > > > > > > > > > separated > >> >> > > > > > > > > > > > > > > > > > > and > >> >> > > > > > > > > > > > > > > > > > > > it > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> enables > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > interesting > >> >> > capabilities, > >> >> > > > > e.g. > >> >> > > > > > > > > > preventing > >> >> > > > > > > > > > > > > > > untended > >> >> > > > > > > > > > > > > > > > > > schema > >> >> > > > > > > > > > > > > > > > > > > > > > changes > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > by > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > mistaken data > >> >> > operations, > >> >> > > > > > > > restricting > >> >> > > > > > > > > > > user > >> >> > > > > > > > > > > > > > > > > permissions > >> >> > > > > > > > > > > > > > > > > > to > >> >> > > > > > > > > > > > > > > > > > > > > > change > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > schema. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > Schema-first > >> means > >> >> > that > >> >> > > > > > schema > >> >> > > > > > > > > exists > >> >> > > > > > > > > > > in > >> >> > > > > > > > > > > > > > > advance > >> >> > > > > > > > > > > > > > > > > and > >> >> > > > > > > > > > > > > > > > > > > all > >> >> > > > > > > > > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> stored > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > data > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > is compliant > with > >> >> it - > >> >> > > > that's > >> >> > > > > > > > exactly > >> >> > > > > > > > > > > what > >> >> > > > > > > > > > > > is > >> >> > > > > > > > > > > > > > > > > proposed. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > A schema-last > >> >> approach > >> >> > > > > > mentioned > >> >> > > > > > > in > >> >> > > > > > > > > [1] > >> >> > > > > > > > > > > > also > >> >> > > > > > > > > > > > > > > > assumes > >> >> > > > > > > > > > > > > > > > > > that > >> >> > > > > > > > > > > > > > > > > > > > > > schema > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > exists, but it > is > >> >> > > inferred > >> >> > > > > from > >> >> > > > > > > > data. > >> >> > > > > > > > > > Is > >> >> > > > > > > > > > > > not > >> >> > > > > > > > > > > > > it > >> >> > > > > > > > > > > > > > > > more > >> >> > > > > > > > > > > > > > > > > > > > similar > >> >> > > > > > > > > > > > > > > > > > > > > to > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > the > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > proposing > >> approach? > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > And I would > like > >> to > >> >> > say, > >> >> > > > that > >> >> > > > > > my > >> >> > > > > > > > main > >> >> > > > > > > > > > > > concern > >> >> > > > > > > > > > > > > > so > >> >> > > > > > > > > > > > > > > > far > >> >> > > > > > > > > > > > > > > > > is > >> >> > > > > > > > > > > > > > > > > > > > > mostly > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > about > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > terminology. > And > >> I > >> >> > > suppose > >> >> > > > if > >> >> > > > > > it > >> >> > > > > > > > > > confuses > >> >> > > > > > > > > > > > me > >> >> > > > > > > > > > > > > > then > >> >> > > > > > > > > > > > > > > > > > others > >> >> > > > > > > > > > > > > > > > > > > > > might > >> >> > > > > > > > > > > > > > > > > > > > > > be > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > confused as > >> well. My > >> >> > > > feeling > >> >> > > > > is > >> >> > > > > > > > > closer > >> >> > > > > > > > > > to > >> >> > > > > > > > > > > > > > > "dynamic > >> >> > > > > > > > > > > > > > > > or > >> >> > > > > > > > > > > > > > > > > > > > liquid > >> >> > > > > > > > > > > > > > > > > > > > > or > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > may > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> be > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > evolving > schema". > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > [1] > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > >> >> > > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > >> >> > > > > > > > > > > > >> >> > > > > > > > > > >> >> > > > > > > > >> >> > > > > > >> >> > > > >> >> > >> https://people.cs.umass.edu/~yanlei/courses/CS691LL-f06/papers/SH05.pdf > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > 2020-09-07 0:47 > >> >> > > GMT+03:00, > >> >> > > > > > > Valentin > >> >> > > > > > > > > > > > > Kulichenko > >> >> > > > > > > > > > > > > > < > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > >> >> > > > > valentin.kuliche...@gmail.com > >> >> > > > > > >: > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > Hi Ivan, > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > I don't see > an > >> >> issue > >> >> > > with > >> >> > > > > > that. > >> >> > > > > > > > > > > > > Schema-first > >> >> > > > > > > > > > > > > > > > means > >> >> > > > > > > > > > > > > > > > > > that > >> >> > > > > > > > > > > > > > > > > > > > > > schema > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> exists > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > in > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > advance and > all > >> >> the > >> >> > > > stored > >> >> > > > > > data > >> >> > > > > > > > is > >> >> > > > > > > > > > > > > compliant > >> >> > > > > > > > > > > > > > > with > >> >> > > > > > > > > > > > > > > > > it > >> >> > > > > > > > > > > > > > > > > > - > >> >> > > > > > > > > > > > > > > > > > > > > that's > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> exactly > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > what > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > is proposed. > >> There > >> >> > are > >> >> > > no > >> >> > > > > > > > > > restrictions > >> >> > > > > > > > > > > > > > > > prohibiting > >> >> > > > > > > > > > > > > > > > > > > > changes > >> >> > > > > > > > > > > > > > > > > > > > > to > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > the > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > schema. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > -Val > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > On Sat, Sep > 5, > >> >> 2020 > >> >> > at > >> >> > > > 9:52 > >> >> > > > > > PM > >> >> > > > > > > > Ivan > >> >> > > > > > > > > > > > > > Pavlukhin < > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> vololo...@gmail.com> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > wrote: > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> Alexey, > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> I am a > little > >> bit > >> >> > > > confused > >> >> > > > > > > with > >> >> > > > > > > > > > > > > terminology. > >> >> > > > > > > > > > > > > > > My > >> >> > > > > > > > > > > > > > > > > > > > > > understanding > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > conforms > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> to a survey > >> [1] > >> >> (see > >> >> > > > part > >> >> > > > > X > >> >> > > > > > > Semi > >> >> > > > > > > > > > > > > Structured > >> >> > > > > > > > > > > > > > > > Data). > >> >> > > > > > > > > > > > > > > > > > Can > >> >> > > > > > > > > > > > > > > > > > > > we > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> really > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > treat > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> a "dynamic > >> >> schema" > >> >> > > > > approach > >> >> > > > > > > as a > >> >> > > > > > > > > > kind > >> >> > > > > > > > > > > of > >> >> > > > > > > > > > > > > > > > > > > "schema-first"? > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> [1] > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > >> >> > > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > >> >> > > > > > > > > > > > >> >> > > > > > > > > > >> >> > > > > > > > >> >> > > > > > >> >> > > > >> >> > >> https://people.cs.umass.edu/~yanlei/courses/CS691LL-f06/papers/SH05.pdf > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> 2020-09-02 > >> 1:53 > >> >> > > > GMT+03:00, > >> >> > > > > > > Denis > >> >> > > > > > > > > > > Magda < > >> >> > > > > > > > > > > > > > > > > > > > dma...@apache.org > >> >> > > > > > > > > > > > > > > > > > > > > >: > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> However, > >> could > >> >> > you > >> >> > > > > please > >> >> > > > > > > > > > elaborate > >> >> > > > > > > > > > > > on > >> >> > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > relation > >> >> > > > > > > > > > > > > > > > > > > > > > between > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > Ignite > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > and > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> ORM? > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> Is there > a > >> use > >> >> > case > >> >> > > > for > >> >> > > > > > > > > Hibernate > >> >> > > > > > > > > > > > > running > >> >> > > > > > > > > > > > > > > on > >> >> > > > > > > > > > > > > > > > > top > >> >> > > > > > > > > > > > > > > > > > of > >> >> > > > > > > > > > > > > > > > > > > > > > Ignite > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> (I > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > haven't > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> seen > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> one so > >> far)? > >> >> If > >> >> > so, > >> >> > > > > what > >> >> > > > > > is > >> >> > > > > > > > > > missing > >> >> > > > > > > > > > > > > > exactly > >> >> > > > > > > > > > > > > > > > on > >> >> > > > > > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > > > > Ignite > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> side to > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> support > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> this? In > my > >> >> > > > > > understanding, > >> >> > > > > > > > all > >> >> > > > > > > > > > you > >> >> > > > > > > > > > > > need > >> >> > > > > > > > > > > > > > is > >> >> > > > > > > > > > > > > > > > SQL > >> >> > > > > > > > > > > > > > > > > > API > >> >> > > > > > > > > > > > > > > > > > > > > which > >> >> > > > > > > > > > > > > > > > > > > > > > we > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > already > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> have. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> Am I > >> missing > >> >> > > > something? > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > Good > point, > >> >> yes, > >> >> > if > >> >> > > > all > >> >> > > > > > the > >> >> > > > > > > > ORM > >> >> > > > > > > > > > > > > > integrations > >> >> > > > > > > > > > > > > > > > use > >> >> > > > > > > > > > > > > > > > > > > > Ignite > >> >> > > > > > > > > > > > > > > > > > > > > > SQL > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> APIs > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > > internally, > >> >> then > >> >> > > they > >> >> > > > > can > >> >> > > > > > > > easily > >> >> > > > > > > > > > > > > translate > >> >> > > > > > > > > > > > > > > an > >> >> > > > > > > > > > > > > > > > > > Entity > >> >> > > > > > > > > > > > > > > > > > > > > > object > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> into > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > an > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > > >> INSERT/UPDATE > >> >> > > > statement > >> >> > > > > > that > >> >> > > > > > > > > lists > >> >> > > > > > > > > > > all > >> >> > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > object's > >> >> > > > > > > > > > > > > > > > > > > > > > fields. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > Luckily, > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > our > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > Spring > Data > >> >> > > > integration > >> >> > > > > is > >> >> > > > > > > > > already > >> >> > > > > > > > > > > > based > >> >> > > > > > > > > > > > > > on > >> >> > > > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > > Ignite > >> >> > > > > > > > > > > > > > > > > > > > > SQL > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > APIs > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > and > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > needs > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > to be > >> improved > >> >> > once > >> >> > > > the > >> >> > > > > > > > > > schema-first > >> >> > > > > > > > > > > > > > > approach > >> >> > > > > > > > > > > > > > > > is > >> >> > > > > > > > > > > > > > > > > > > > > > supported. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> That > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > would > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > solve a > ton > >> of > >> >> > > > usability > >> >> > > > > > > > issues. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > I would > >> revise > >> >> the > >> >> > > > > > Hibernate > >> >> > > > > > > > > > > > integration > >> >> > > > > > > > > > > > > > as > >> >> > > > > > > > > > > > > > > > well > >> >> > > > > > > > > > > > > > > > > > > > during > >> >> > > > > > > > > > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> Ignite > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > 3.0 > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> dev > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > phase. > Can't > >> >> say > >> >> > if > >> >> > > > it's > >> >> > > > > > > used > >> >> > > > > > > > a > >> >> > > > > > > > > > lot > >> >> > > > > > > > > > > > but > >> >> > > > > > > > > > > > > > > Spring > >> >> > > > > > > > > > > > > > > > > > Data > >> >> > > > > > > > > > > > > > > > > > > is > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > getting > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > traction > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> for > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > sure. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > @Michael > >> >> Pollind, > >> >> > > I'll > >> >> > > > > > loop > >> >> > > > > > > > you > >> >> > > > > > > > > in > >> >> > > > > > > > > > > as > >> >> > > > > > > > > > > > > long > >> >> > > > > > > > > > > > > > > as > >> >> > > > > > > > > > > > > > > > > > you've > >> >> > > > > > > > > > > > > > > > > > > > > > started > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > working > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > on > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> the > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > Ignite > >> support > >> >> for > >> >> > > > > > Micornaut > >> >> > > > > > > > > Data > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > < > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > >> >> > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > >> >> > > > > > > >> >> https://micronaut-projects.github.io/micronaut-data/latest/guide/> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > and > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > came > across > >> >> some > >> >> > > > > > challenges. > >> >> > > > > > > > > Just > >> >> > > > > > > > > > > > watch > >> >> > > > > > > > > > > > > > this > >> >> > > > > > > > > > > > > > > > > > > > discussion. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > That's > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > what > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > is > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > coming in > >> >> Ignite > >> >> > > 3.0. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > - > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > Denis > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > On Mon, > Aug > >> 31, > >> >> > 2020 > >> >> > > > at > >> >> > > > > > 5:11 > >> >> > > > > > > > PM > >> >> > > > > > > > > > > > Valentin > >> >> > > > > > > > > > > > > > > > > > Kulichenko > >> >> > > > > > > > > > > > > > > > > > > < > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > > >> >> > > > > > > valentin.kuliche...@gmail.com > >> >> > > > > > > > > > >> >> > > > > > > > > > > wrote: > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> Hi Denis, > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> Generally > >> >> > > speaking, I > >> >> > > > > > > believe > >> >> > > > > > > > > > that > >> >> > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > schema-first > >> >> > > > > > > > > > > > > > > > > > > > > > > approach > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > natively > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> addresses > >> the > >> >> > issue > >> >> > > > if > >> >> > > > > > > > > duplicate > >> >> > > > > > > > > > > > fields > >> >> > > > > > > > > > > > > > in > >> >> > > > > > > > > > > > > > > > key > >> >> > > > > > > > > > > > > > > > > > and > >> >> > > > > > > > > > > > > > > > > > > > > value > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> objects, > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> because > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> schema > >> will be > >> >> > > > created > >> >> > > > > > for > >> >> > > > > > > a > >> >> > > > > > > > > > cache, > >> >> > > > > > > > > > > > not > >> >> > > > > > > > > > > > > > for > >> >> > > > > > > > > > > > > > > > an > >> >> > > > > > > > > > > > > > > > > > > > object, > >> >> > > > > > > > > > > > > > > > > > > > > as > >> >> > > > > > > > > > > > > > > > > > > > > > > it > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > happens > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> now. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > Basically, > >> the > >> >> > > schema > >> >> > > > > > will > >> >> > > > > > > > > define > >> >> > > > > > > > > > > > > whether > >> >> > > > > > > > > > > > > > > > there > >> >> > > > > > > > > > > > > > > > > > is > >> >> > > > > > > > > > > > > > > > > > > a > >> >> > > > > > > > > > > > > > > > > > > > > > > primary > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> key > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > or > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> not, > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> and which > >> >> fields > >> >> > > are > >> >> > > > > > > included > >> >> > > > > > > > > in > >> >> > > > > > > > > > > case > >> >> > > > > > > > > > > > > > there > >> >> > > > > > > > > > > > > > > > is > >> >> > > > > > > > > > > > > > > > > > one. > >> >> > > > > > > > > > > > > > > > > > > > Any > >> >> > > > > > > > > > > > > > > > > > > > > > API > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> that > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > we > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> would > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> have must > >> be > >> >> > > > compliant > >> >> > > > > > with > >> >> > > > > > > > > this, > >> >> > > > > > > > > > > so > >> >> > > > > > > > > > > > it > >> >> > > > > > > > > > > > > > > > becomes > >> >> > > > > > > > > > > > > > > > > > > > fairly > >> >> > > > > > > > > > > > > > > > > > > > > > easy > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> to > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > work > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> with > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> data as > >> with a > >> >> > set > >> >> > > of > >> >> > > > > > > > records, > >> >> > > > > > > > > > > rather > >> >> > > > > > > > > > > > > > than > >> >> > > > > > > > > > > > > > > > > > > key-value > >> >> > > > > > > > > > > > > > > > > > > > > > pairs. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> However, > >> could > >> >> > you > >> >> > > > > please > >> >> > > > > > > > > > elaborate > >> >> > > > > > > > > > > > on > >> >> > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > relation > >> >> > > > > > > > > > > > > > > > > > > > > > between > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > Ignite > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > and > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> ORM? > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> Is there > a > >> use > >> >> > case > >> >> > > > for > >> >> > > > > > > > > Hibernate > >> >> > > > > > > > > > > > > running > >> >> > > > > > > > > > > > > > > on > >> >> > > > > > > > > > > > > > > > > top > >> >> > > > > > > > > > > > > > > > > > of > >> >> > > > > > > > > > > > > > > > > > > > > > Ignite > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> (I > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > haven't > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> seen > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> one so > >> far)? > >> >> If > >> >> > so, > >> >> > > > > what > >> >> > > > > > is > >> >> > > > > > > > > > missing > >> >> > > > > > > > > > > > > > exactly > >> >> > > > > > > > > > > > > > > > on > >> >> > > > > > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > > > > Ignite > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> side to > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> support > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> this? In > my > >> >> > > > > > understanding, > >> >> > > > > > > > all > >> >> > > > > > > > > > you > >> >> > > > > > > > > > > > need > >> >> > > > > > > > > > > > > > is > >> >> > > > > > > > > > > > > > > > SQL > >> >> > > > > > > > > > > > > > > > > > API > >> >> > > > > > > > > > > > > > > > > > > > > which > >> >> > > > > > > > > > > > > > > > > > > > > > we > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > already > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> have. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> Am I > >> missing > >> >> > > > something? > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> -Val > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> On Mon, > Aug > >> >> 31, > >> >> > > 2020 > >> >> > > > at > >> >> > > > > > > 2:08 > >> >> > > > > > > > PM > >> >> > > > > > > > > > > Denis > >> >> > > > > > > > > > > > > > > Magda < > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> dma...@apache.org> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > wrote: > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > Val, > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > I would > >> >> propose > >> >> > > > > adding > >> >> > > > > > > > > another > >> >> > > > > > > > > > > > point > >> >> > > > > > > > > > > > > to > >> >> > > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > > > > motivations > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > list > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > which > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > is > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > related > >> to > >> >> the > >> >> > > ORM > >> >> > > > > > > > frameworks > >> >> > > > > > > > > > > such > >> >> > > > > > > > > > > > as > >> >> > > > > > > > > > > > > > > > Spring > >> >> > > > > > > > > > > > > > > > > > > Data, > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> Hibernate, > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> Micronaut > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> and > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > many > >> others. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > >> Presently, > >> >> the > >> >> > > > > storage > >> >> > > > > > > > engine > >> >> > > > > > > > > > > > > requires > >> >> > > > > > > > > > > > > > to > >> >> > > > > > > > > > > > > > > > > > > > distinguish > >> >> > > > > > > > > > > > > > > > > > > > > > key > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > objects > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > from > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> the > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > value > >> ones > >> >> that > >> >> > > > > > > complicate > >> >> > > > > > > > > the > >> >> > > > > > > > > > > > usage > >> >> > > > > > > > > > > > > of > >> >> > > > > > > > > > > > > > > > > Ignite > >> >> > > > > > > > > > > > > > > > > > > with > >> >> > > > > > > > > > > > > > > > > > > > > > those > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> ORM > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > >> frameworks > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > >> (especially > >> >> if > >> >> > a > >> >> > > > key > >> >> > > > > > > object > >> >> > > > > > > > > > > > comprises > >> >> > > > > > > > > > > > > > > > several > >> >> > > > > > > > > > > > > > > > > > > > > fields). > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > More > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> on > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > this > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> can > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> be > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > found > >> here: > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > >> >> > > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > >> >> > > > > > > > > > > > > >> >> > > > > > > > > > > > >> >> > > > > > > > > > > >> >> > > > > > > > > > >> >> > > > > > > > > >> >> > > > > > > > >> >> > > > > > > >> >> > > > > > >> >> > > > > >> >> > > > >> >> > > >> >> > >> > http://apache-ignite-developers.2346864.n4.nabble.com/DISCUSSION-Key-and-Value-fields-with-same-name-and-SQL-DML-td47557.html > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > It will > >> be > >> >> nice > >> >> > > if > >> >> > > > > the > >> >> > > > > > > new > >> >> > > > > > > > > > > > > schema-first > >> >> > > > > > > > > > > > > > > > > > approach > >> >> > > > > > > > > > > > > > > > > > > > > allows > >> >> > > > > > > > > > > > > > > > > > > > > > > us > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> to > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > work > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> with > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > a > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > single > >> >> entity > >> >> > > > object > >> >> > > > > > when > >> >> > > > > > > > it > >> >> > > > > > > > > > > comes > >> >> > > > > > > > > > > > to > >> >> > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > ORMs. > >> >> > > > > > > > > > > > > > > > > > > > With > >> >> > > > > > > > > > > > > > > > > > > > > no > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> need to > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > split > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > the > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > entity > >> into > >> >> a > >> >> > key > >> >> > > > and > >> >> > > > > > > > value. > >> >> > > > > > > > > > Just > >> >> > > > > > > > > > > > > want > >> >> > > > > > > > > > > > > > to > >> >> > > > > > > > > > > > > > > > be > >> >> > > > > > > > > > > > > > > > > > sure > >> >> > > > > > > > > > > > > > > > > > > > > that > >> >> > > > > > > > > > > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > Ignite > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > 3.0 > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > has > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > all the > >> >> > essential > >> >> > > > > > public > >> >> > > > > > > > APIs > >> >> > > > > > > > > > > that > >> >> > > > > > > > > > > > > > would > >> >> > > > > > > > > > > > > > > > > > support > >> >> > > > > > > > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > single-entity > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > based > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > approach. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > What do > >> you > >> >> > > think? > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > - > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > Denis > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > On Fri, > >> Aug > >> >> 28, > >> >> > > > 2020 > >> >> > > > > at > >> >> > > > > > > > 3:50 > >> >> > > > > > > > > PM > >> >> > > > > > > > > > > > > > Valentin > >> >> > > > > > > > > > > > > > > > > > > > Kulichenko < > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > >> >> > > > > > > > > valentin.kuliche...@gmail.com> > >> >> > > > > > > > > > > > > wrote: > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > > >> Igniters, > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > One > of > >> the > >> >> > big > >> >> > > > > > changes > >> >> > > > > > > > > > proposed > >> >> > > > > > > > > > > > for > >> >> > > > > > > > > > > > > > > > Ignite > >> >> > > > > > > > > > > > > > > > > > 3.0 > >> >> > > > > > > > > > > > > > > > > > > is > >> >> > > > > > > > > > > > > > > > > > > > > the > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > so-called > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > > >> >> "schema-first > >> >> > > > > > > approach". > >> >> > > > > > > > To > >> >> > > > > > > > > > add > >> >> > > > > > > > > > > > > more > >> >> > > > > > > > > > > > > > > > > clarity, > >> >> > > > > > > > > > > > > > > > > > > > I've > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > > started > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > writing > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > the > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > IEP > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > for > >> this > >> >> > > change: > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > >> >> > > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > >> >> > > > > > > > > > > > > >> >> > > > > > > > > > > > >> >> > > > > > > > > > > >> >> > > > > > > > > > >> >> > > > > > > > > >> >> > > > > > > > >> >> > > > > > > >> >> > > > > > >> >> > > > > >> >> > > > >> >> > > >> >> > >> > https://cwiki.apache.org/confluence/display/IGNITE/IEP-54%3A+Schema-first+Approach > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > > Please > >> >> take a > >> >> > > > look > >> >> > > > > > and > >> >> > > > > > > > let > >> >> > > > > > > > > me > >> >> > > > > > > > > > > > know > >> >> > > > > > > > > > > > > if > >> >> > > > > > > > > > > > > > > > there > >> >> > > > > > > > > > > > > > > > > > are > >> >> > > > > > > > > > > > > > > > > > > > any > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> immediate > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > > >> thoughts, > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > > >> >> suggestions, > >> >> > or > >> >> > > > > > > > objections. > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > -Val > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> -- > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> Best > regards, > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> Ivan > Pavlukhin > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > -- > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > Best regards, > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > Ivan Pavlukhin > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > > >> >> > > > > > > > > > > > > > > > > > > > > > > >>> > >> >> > > > > > > > > > > > > > > > > > > > > > > >> > >> >> > > > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > -- > >> >> > > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > Best regards, > >> >> > > > > > > > > > > > > > > > > > > > > > > Ivan Pavlukhin > >> >> > > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > -- > >> >> > > > > > > > > > > > > > > > > > > > > > Best regards, > >> >> > > > > > > > > > > > > > > > > > > > > > Andrey V. Mashenkov > >> >> > > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > -- > >> >> > > > > > > > > > > > > > > > > > > > Best regards, > >> >> > > > > > > > > > > > > > > > > > > > Andrey V. Mashenkov > >> >> > > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > -- > >> >> > > > > > > > > > > > > > > > Best regards, > >> >> > > > > > > > > > > > > > > > Andrey V. Mashenkov > >> >> > > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > >> >> > > > > > > > > > > > > > >> >> > > > > > > > > > > > > -- > >> >> > > > > > > > > > > > > Best regards, > >> >> > > > > > > > > > > > > Andrey V. Mashenkov > >> >> > > > > > > > > > > > > > >> >> > > > > > > > > > > > > >> >> > > > > > > > > > > > >> >> > > > > > > > > > > > >> >> > > > > > > > > > > -- > >> >> > > > > > > > > > > Best regards, > >> >> > > > > > > > > > > Andrey V. Mashenkov > >> >> > > > > > > > > > > > >> >> > > > > > > > > > > >> >> > > > > > > > > > >> >> > > > > > > > > > >> >> > > > > > > > > -- > >> >> > > > > > > > > Best regards, > >> >> > > > > > > > > Andrey V. Mashenkov > >> >> > > > > > > > > > >> >> > > > > > > > > >> >> > > > > > > > >> >> > > > > > > >> >> > > > > > >> >> > > > > > >> >> > > > > -- > >> >> > > > > Живи с улыбкой! :D > >> >> > > > > > >> >> > > > > >> >> > > > > >> >> > > > -- > >> >> > > > Best regards, > >> >> > > > Andrey V. Mashenkov > >> >> > > > > >> >> > > > >> >> > > >> >> > >> > > >> > > > > > > -- > > Best regards, > > Andrey V. Mashenkov > > > > > -- > Best regards, > Andrey V. Mashenkov >