H2 Database Engine is based on the open source, JDBC API, it features a browser based console application an leaves a very small footprint, at 1MB.
H2 also comes with an embedded mode which is faster than the client-server mode.
· Java 2 Standard Edition Runtime Environment
What's New in This Release: [ read full changelog ]
· Security: the TCP server did not correctly restrict access rights of clients in some cases. This was specially a problem when using the flag "tcpAllowOthers".
· H2 Console: the session timeout can now be configured using the system property "h2.consoleTimeout".
· Issue 431: Improved compatibility with MySQL: support for "ENGINE=InnoDB charset=UTF8" when creating a table.
· Issue 249: Improved compatibility with MySQL in the MySQL mode: now the methods DatabaseMetaData methods stores*Case*Identifiers return the same as MySQL when using the MySQL mode.
· Issue 434: H2 Console didn't work in the Chrome browser due to a wrong viewport argument.
· There was a possibility that the .lock.db file was not deleted when the database was closed, which could slow down opening the database.
· The SQL script generated by the "script" command contained inconsistent newlines on Windows.
· When using trace level 4 (SLF4J) in the server mode, a directory "trace.db" and an empty file was created on the client side. This is no longer made.
· Optimize IN(...) queries: there was a bug in version 1.3.170 if the type of the left hand side didn't match the type of the right hand side. Fixed.
· Optimize IN(...) queries: there was a bug in version 1.3.170 for comparison of the type "X IN(NULL, NULL)". Fixed.
· Timestamps with timezone that were passed as a string were not always converted correctly. For example "2012-11-06T23:00:00.000Z" was converted to "2012-11-06" instead of to "2012-11-07" in the timezone CET. Thanks a lot to Steve Hruda for reporting the problem!
· New table engine "org.h2.mvstore.db.MVTableEngine" that internally uses the MVStore to persist data. To try it out, append ";DEFAULT_TABLE_ENGINE=org.h2.mvstore.db.MVTableEngine" to the database URL. This is still very experimental, and many features are not supported yet. The data is stored in a file with the suffix ".mv.db".
· New connection setting "DEFAULT_TABLE_ENGINE" to use a specific table engine if none is set explicitly. This is to simplify testing the MVStore table engine.
· MVStore: encrypted stores are now supported. Only standardized algorithms are used: PBKDF2, SHA-256, XTS-AES, AES-128.
· MVStore: improved API thanks to Simo Tripodi.
· MVStore: maps can now be renamed.
· MVStore: store the file header also at the end of each chunk, which results in a further reduced number of write operations.
· MVStore: a map implementation that supports concurrent operations.
· MVStore: unified exception handling; the version is included in the messages.
· MVStore: old data is now retained for 45 seconds by default.
· MVStore: compress is now disabled by default, and can be enabled on request.
· Support ALTER TABLE ADD ... AFTER. Patch from Andrew Gaul (argaul at gmail.com). Fixes issue 401.
· Improved OSGi support. H2 now registers itself as a DataSourceFactory service. Fixes issue 365.
· Add a DISK_SPACE_USED system function. Fixes issue 270.
· Fix a compile-time ambiguity when compiling with JDK7, thanks to a patch from Lukas Eder.
· Supporting dropping an index for Lucene full-text indexes.
· Optimized performance for SELECT ... ORDER BY X LIMIT Y OFFSET Z queries for in-memory databases using partial sort (by Sergi Vladykin).
· Experimental off-heap memory storage engine "nioMemFS:" and "nioMemLZF:", suggestion from Mark Addleman.
· Issue 438: JdbcDatabaseMetaData.getSchemas() is no longer supported as of 1.3.169.
· MySQL compatibility: support for ALTER TABLE tableName MODIFY [COLUMN] columnName columnDef. Patch from Ville Koskela.
· Issue 404: SHOW COLUMNS FROM tableName does not work with ALLOW_LITERALS=NUMBERS.
· Throw an explicit error to make it clear we don't support the TRIGGER combination of SELECT and FOR EACH ROW.
· Issue 439: Utils.sortTopN does not handle single-element arrays.