hsqldb is a relational database engine written in Java with a JDBC driver that supports a subset of ANSI SQL3. It offers a small (about 100k), fast database engine. Embedded and server modes are available. It includes tools such as a minimal Web server, in-memory query and management tools (which can be run as applets or servlets, too), a test framework, PHP compatibility, Eclipse and NetBeans IDE compatibility, and a number of demonstration examples.
| Tags | Database Database Engines/Servers Java |
|---|---|
| Licenses | BSD Original |
| Operating Systems | OS Independent |
| Implementation | Java |
Recent releases


Changes: 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.


Changes: Code needed for embedding into OpenOffice.org 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.


Changes: 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.


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


Changes: Views, multi-server, and multi-threading capabilities were added. SQL3 compatibility and JOIN functionality were improved. Recent enhancements include support for SEQUENCE objects. The documentation has also been brought up to date and includes installation and usage docs for PHP and other languages.
A C++ library with support for sockets and serial I/O and a gtkmm widget set.
- All comments
Recent commentsChanges 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 OpenOffice.org),
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
Release of Version 1.7.3.3
HSQLDB 1.7.3 CHANGE LOG
Version 1.7.2 was regularly updated after the initial release with bug fixes, leading to revision 1.7.2.10. 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 1.7.3.3:
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.
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.
hsqldb.cache_file_scale=8
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
1.8.0 to RC4
RC1 Notes:
This release features the code needed for embedding into OpenOffice.org,
added by Ocke Janssen of OOo.
There are lots of code enhancements which were originally developed for
HyperXtremeSQL (http://www.hxsql.com). 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
included.
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
1.7.3.
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.
Schema's
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.