SQL database engine written in Java
JDBC and ODBC APIs are supported. Embedded and server modes are available. A Web console application is included. Clustering is supported. Here are some key features of "H2 Database Engine":
· Fast database engine
· Free, source code is included
· Supports standard SQL
· Written in Java
· Disk based or in-memory databases
· Browser base Console application
· JDBC API
· Limited ODBC support
· Embedded and client/server (network) mode
· High availablility support (clustering / failover)
· Wide range of data types including large objects (BLOB/CLOB)
· Strong security features (SSL, users, roles, encrypted files)
· Multiple connections, table level locking
· Cost based optimizer, using a genetic algorithm for complex queries
· Transaction support (serializable transaction isolation)
· Zero-administration, automatic recovery
· Large resultset, external sorting
· Scrollable and updatable resultset support
· Read only views and inline views
· Inner and outer joins, subqueries
· Many functions already built-in
· Triggers and Java functions / stored procedures
· Referential integrity / foreign key constraints with cascade, check constraints
· Multiple schema support
· Compatibility modes for HSQLDB, MySQL and PostgreSQL
· Sequence and autoincrement columns
· Well tested (high code coverage, randomized stress tests)
· Small footprint (smaller than 1 MB)
· Uses a small number of database files
· Can be compiled to native code using GCJ
· Primary keys, multiple index types (b-tree, linear hash, tree, hash)
· ORDER BY, GROUP BY, HAVING, UNION, LIMIT
· Information Schema
· Multiple connections
· Collation support
· EXPLAIN PLAN support
· The database can generate SQL script files
· Support for linked tables, and a built-in virtual 'range' table
· Automatic re-compilation of prepared statements
· Sophisticated trace options
· Low memory requirements
· Easy to understand exception messages
· Standard handling of NULL values
· Multilanguage console application (at this time, English and German)
What's New in This Release: [ read full changelog ]
· The syntax for CREATE TABLE ... AS SELECT ... has been changed: options such as NOT PERSISTENT are now before the query (AS SELECT), because otherwise they might be interpreted as a part of the query.
· With version 1.3.156, the DB2 mode could not be used with CLOB and BLOB data.
· When upgrading from an older 1.3.x version to version 1.3.156, CLOB and BLOB data was lost in many cases.
· The optimization for COUNT(..) on columns that are not nullable was also used for COUNT(DISTINCT ..), which is incorrect.
· PgServer: non-admin users could not open a database.
· Non-admin users could not open a database using a mode (MODE=xxx) if the database was already open, even if the mode matched.
· The SQL state of the following exceptions has been changed: From 90009, 90010, 90011 to 22007: "Cannot parse DATE/TIME/TIMESTAMP constant ...".
· There is a problem when opening a database file in a timezone that has different daylight saving rules: the time part of dates where the daylight saving doesn't ...