Projects / hsqldb Database Engine

hsqldb Database Engine

HSQLDB (HyperSQL DataBase) is an SQL relational database engine written in Java. It supports nearly full ANSI-92 SQL and SQL:2008 enhancements. It is a small, fast multithreaded, and transactional database engine which offers in-memory and disk-based tables and supports embedded and server modes.

Operating Systems

Recent releases

  •  09 Jun 2010 19:03

    Release Notes: This version follows the SQL:2008 Standard and supports more SQL features than other major open source RDBMS. Advanced data types, such as datetime INTERVAL and ARRAY types, together with query features such as FULL and LATERAL joins are supported. Full support was added for procedural SQL, including SQL/PSM functions, procedures and triggers, together with more extensive suport for Java routines. A dedicated high-performance LOB store makes this version ideal for high volume content managment systems.

    •  08 Feb 2005 08:09

      Release Notes: A bug with logging deletes and updates from tables without primary keys was fixed. Conversions from BIGINT to SAMMLINT and TYNYINT are now allowed. An issue with null values in calls to ResultSet methods with a Calendar argument was fixed. INSERT INTO [T] SELECT (....) is now allowed where no column list is specified. The scripting of CHECK constraints with NOT NULL and IS NULL was corrected. An NPE error when functions are in subqueries was fixed. Support for various set functions was added, and issues with logging DELETE statements for tables with multi-key primary keys were fixed.

      •  13 Jan 2005 14:26

        Release Notes: Code needed for embedding into was added. A rewritten implementation of Cache is included. Reuse of file space when rows are deleted was improved. This is aimed primarily at JBoss usage, which involves a million or more insert/delete/update operations per day and results in much smaller .data files over time. Performance has been improved in certain areas, such as recovery after an abnormal termination. Enhancements were made to DatabaseManagerSwing.

        •  10 Dec 2004 10:10

          Release Notes: This version features improved conformance to SQL standards by supporting the UNDEFINED state for the BOOLEAN type. This change has an effect in query conditions and check constraints when values include a NULL.

          •  10 Dec 2004 10:10

            Release Notes: This release features newly written code for system tables, multiple database support, better query processing, and more advanced SQL keywords, etc.

            Recent comments

            24 Feb 2005 01:14 dedmike

            Changes to hsqldb v.1.8.0 since RC5
            2005.02.11 1.8.0.RC8

            Fixed minor bugs

            Added public shutdown() method to Server.

            A new application log has been introduced as an optional feature. The property/value pair

            "hsqldb.applog=1" can be used in the first connection string to log some important messages.

            The default is "hsqldb.applog=0", meaning no logging. A file with the ending ".app.log" is

            generated alongside the rest of the database files for this purpose.

            In the current version only the classes used for file persistence (different in,

            plus any error encountered while processing the .log file after an abnormal end is logged.

            Bob Preston has updated the text table support to accept new line characters inside quoted

            strings. It is still not possible to create / modify a row containing a new line inside the engine.

            This will be a simple upgrade and will be included in the next RC.

            Note that the JDBC driver and the engine for 1.8.0 cannot be mixed with those of earlier

            versions in client/server setup. Check your classpaths and use the same version of the engine

            for both client and server.

            2005.01.28 1.8.0.RC7

            Fixed minor bugs

            08 Feb 2005 00:01 dedmike

            Release of Version
            HSQLDB 1.7.3 CHANGE LOG

            Version 1.7.2 was regularly updated after the initial release with bug fixes, leading to revision In the meantime new work was carried out by Thomas Mueller on SQL Standard handling of NULL values and the BOOLEAN type. Towards the end of 2004, this work was included in a new version 1.7.3.

            Bug fixes and enhancements in 1.7.3 up to revision

            Fixed bug with logging of deletes / updates from tables without primary keys. If the a row from such tables contained a null value and was deleted / updated, the operation was not logged correctly. Subsequently, if there was an abnormal termination after such changes and the database was restarted, the logged delete statement would not have any effect and result in duplicate rows. This bug did not affect tables with primary keys or the normal operation

            (without abnormal termination) of any tables.

            Allow conversion from BIGINT to SAMMLINT and TYNYINT (all other legal conversions worked fine)

            Fixed issue with null values in calls to ResultSet methods with a Calendar argument.

            Enhancement to allow INSERT INTO <T> SELECT (....) where no column list list for the table T is specified.

            Corrected scripting of CHECK constraints with NOT NULL and IS NULL

            Fixed NPE error when functions in subqueries.

            Added support for STDDEV_POP, STDDEV_SAMP, VAR_POP, VAR_SAMP, EVERY and SOME set functions.

            Fixed potential issues with logging DELETE statements for tables with multi-key primary keys.

            25 Jan 2005 02:23 dedmike

            1.8.0 RC5 Changes
            2005.01.24 1.8.0.RC5

            Issues with SET CHECKPOINT DEFRAG fixed

            New property for larger data file limits is introduced. Once set, the limit will go

            up to 8GB. The property can be set with the following SQL command only when the database

            has no tables (new database).

            SET PROPERTY "hsqldb.cache_file_scale" 8

            To apply the change to an existing database, SHUTDOWN SCRIPT should be performed first,

            then the property=value line below should be added to the .properties file before reopenning

            the database.


            It is now possible to add or drop a primary key.

            An existing primary key that is to be removed should not be referenced in a FOREIGN KEY

            constraint. If a table has an IDENTITY column, removing a primary key will remove the

            identity attribute of the column but leave the actual data.

            When adding a primary key, a NOT NULL constraint is automatically added to the column definitions.

            The table data for the columns of a newly declared primary key should not contain null values.

            ALTER TABLE <name> ADD CONSTRAINT <cname> PRIMARY KEY(collist);

            ALTER TABLE <name> DROP CONSTRAINT <cname>;

            ALTER TABLE <name> DROP PRIMARY KEY; // alternative syntax

            Fred Toussi

            hsqldb Project Maintainer

            22 Jan 2005 15:30 dedmike

            1.8.0 to RC4
            RC1 Notes:

            This release features the code needed for embedding into,
            added by Ocke Janssen of OOo.

            There are lots of code enhancements which were originally developed for
            HyperXtremeSQL ( These include a rewritten
            implementation of Cache and related functionality and some refactorings
            aimed at better separation of concerns.

            1.8.0.RC1 also improves reuse of file space when rows are deleted. This is
            aimed primarily at JBoss usage which involves a million or more
            insert/delete/update ops per day and results in much smaller .data files
            over time.

            Performance has been improved in certain areas, such as recovery after an
            abnormal termination.

            Enhancements to DatabaseManagerSwing, contributed by Ed Taylor, are also

            RC2 Notes:

            Bugs related mainly to failure to keep the data backup file and similar have
            been fixed in this version. It is certainly getting more like a full
            release. Tests indicate that overall performance is up to 10% better than

            RC3 Notes:

            A couple of bugs have been fixed in this RC.

            There is also a new mechanism to automate the defragmentation of the .data
            file. This and previous improvments should allow a JBoss installation of
            HSQLDB to work seamlessly for an indefinite period without running out of
            .data file space.

            RC4 Notes:

            This version restores support for text tables and fixes a few bugs.

            Please note that as a result of introduction of support for extended
            ResultSetMetaData in client/server mode, you need to use RC4 both as client
            and server.

            27 May 2004 10:53 jimcp

            Schema's aren't supported in HSQL. You have to use a workaround... Create a table name between double quotes like "schema.tablename". The table is created in the sa schema but it looks as though it is created in it's own schema. That's why I rated this db with 9 stars as an in-memory lightweight database. Don't compare it with what it is not, it wouldn't be fair.


            Project Spotlight


            A Fluent OpenStack client API for Java.


            Project Spotlight

            TurnKey TWiki Appliance

            A TWiki appliance that is easy to use and lightweight.