Thanks for the complete reply and all of the hardwork in general. I do think from the outside it has been a little unclear about the direction and motivation of the project, but obviously that clears things up.
The type I wanted to implement was going to be a rational numeric (i.e. a/b). Do you think that patching H2 is the best way to go? Is it a datatype h2 would want to support internally? On Fri, Aug 7, 2020 at 4:44 AM Evgenij Ryazanov <[email protected]> wrote: > Hello. > > It's a long story. Apache Ignite used released versions of H2 internally. > Because it needed more than H2 can provide, some new functionality were > contributed to H2, usually without taking own needs of H2 into account. > Some of this functionality wasn't used by H2 itself and other projects at > all, it only created some unwanted complexity, some hypothetically was > usable for other projects, some was actually used in them, such as > TableEngine. All this stuff was basically unmaintained, when some problem > in H2 required massive changes including these third-party features nobody > wanted or be able to help with them. At some point a fork of H2 was made > for Apache Ignite due to their own reasons. After that we decided to remove > support for Apache Ignite from mainline H2 due to all its complexity and > because it actually blocks other long-standing issues. Some features were > preserved, however. > > CustomDataTypeHandler never was a part of stable API. It was placed into > org.h2.api package, but it has warnings in its documentation since the > beginning. Existence of this poorly designed class blocked bugfixes for > issues with very basic SQL features of H2. There were only two options: > drop it completely or redesign it from the scratch without any backward > compatibility, but nobody wanted to write a new implementation of it in > 2019 and nobody cared about it till then, it's not a functionality that > everyone uses and H2 doesn't have commercial customers any more and doesn't > provide any guarantees to anyone. Actually there is no place for it in the > new type system, it can be used only as a storage container. But we already > have storage containers for arbitrary data. We have standard VARBINARY, > BINARY, and BLOB data types for them. You can define an own domain to give > your custom data type some better name clearly describing its content. H2 > also has JAVA_OBJECT data type for serializable objects. There are no good > reasons to duplicate functionality of domains here. > > The SQL Standard also has user-defined data types, but H2 doesn't support > them yet and they can't be easily introduced, it's a large piece of work > and we need to implement SQL/PSM first. Maybe both these features will be > introduced as real supported and standard-compliant features in the future, > but, again, they need a lot of work. > > H2 1.4.200 was the last release in 1.4 series of releases. The upcoming H2 > 2.0 has many incompatibilities with 1.4.200 and not every application can > use the new version or snapshot builds from current sources without > additional changes. We have some plans to write a migration guide for the > upcoming release, but currently it isn't available anywhere. > > -- > You received this message because you are subscribed to the Google Groups > "H2 Database" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/h2-database/a35157a7-fca4-4522-bfb0-c48d72a37785o%40googlegroups.com > <https://groups.google.com/d/msgid/h2-database/a35157a7-fca4-4522-bfb0-c48d72a37785o%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "H2 Database" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/h2-database/CAOZwqw%3D2Z3%2BdyMMcsgs4Cp674XNB9hb-F2xdC0FU%2BZKrB3uU6Q%40mail.gmail.com.
