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 h2-database+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/h2-database/a35157a7-fca4-4522-bfb0-c48d72a37785o%40googlegroups.com.

Reply via email to