October 2024 - version 2.7.4 -- version 2.7.4 jar requires JRE 11 or later - can be used as a java module - tested up to Java 21 -- version 2.7.4 alternative jar requires JRE 8 or later -- added support for SQL:2023 LISTAGG aggregate function -- added support for update and delete visiblility in JDBC scrollable and updatable result sets -- fixed a number of reported regressions and bugs (see tracker) June 2024 - version 2.7.3 -- version 2.7.3 jar requires JRE 11 or later - tested up to Java 21 -- version 2.7.3 alternative jar requires JRE 8 or later -- SQL:2023 updates -- source code refactoring to use Java Generics - no longer compiles with pre 1.8 JDK -- added support for CAST with datetime template argument -- enhancements to TO_CHAR, TO_DATE, TO_TIMESTAMP functions; now using java.time.format.DateTimeFormatter -- added TO_CHAR for numeric values -- added JDBC 4.3 support -- added alternative Java Trigger method to the interface, maintaining backward compatibility -- fixed a number of reported regressions and bugs (see tracker) March 2023 - version 2.7.2 -- version 2.7.2 is a release with minor enhancements and corrections 20 Oct 2022 - version 2.7.1 -- version 2.7.1 jar requires JRE 11 or later - tested up to Java 17 -- version 2.7.1 alternative jar requires JRE 8 or later -- CVE-2022-41853 disallow calling java methods - setting the hsqldb.method_class_names is required for accessing java methods -- enhancements to RECURSIVE CTE's 30 May 2022 - version 2.7.0 -- version 2.7.0 jar requires JRE 11 or later - tested up to Java 17 -- version 2.7.0 alternative jar requires JRE 8 or later -- added support for JSON constructor functions -- added support for microsecond precision CURRENT_TIMESTAMP and similar functions -- added support for GRANT and REVOKE on all objects in a schema -- added support for CSV file data import and export -- added support for regional time zones such as 'America/New_York' in conversions -- added SET DATABASE SQL MAX RECURSIVE (sql.max_recursive) setting -- changed the default for SET DATABASE SQL SYS INDEX NAMES (sql.sys_index_names) to true -- changed the properties reported by JDBC DatabaseMetaDat::getClientInfoProperties() method -- improved JDBC DatabaseMetaDat::getTablePrivileges() method to cover fine-grained privileges -- improved error messages for SQL settings statements -- improved documentation -- added some minor enhancements -- fixed a number of reported regressions and bugs (see tracker) 21 October 2021 - version 2.6.1 -- version 2.6.1 is a bug fix release -- added sql.lowercase_ident property for extra compatibility with PostgreSQL and MySQL unquoted identifier names -- fixed an issue with performance of large updates in mvcc transaction mode -- fixed an issue with query timeout settings -- fixed a number of minor issues and regressions 21 March 2021 - version 2.6.0 -- Version 2.6.0 marks the 20th anniversary of HyperSQL. -- The project maintainer would like to thank core developers Blaine Simpson, Campbell Burnet and Robert Preston for their contribution over many years, -- and all developers and users who contributed code, made useful suggestions, or reported issues. -- version 2.6.0 main jar contains the module org.hsqldb and can be used as a Java module -- version 2.6.0 jar requires JRE 11 or later - tested up to Java 16 RC -- version 2.6.0 alternative jar requires JRE 8 or later -- version 2.3.9 jar can be compiled with Java 6 (or 7) for JRE 6 and 7 and fully compatible with 2.6.0 except for the new JDBC features -- The DatabaseManager class is no longer included in the Jars. Use DatabaseManagerSwing instead. -- added support for additional REGEXP_ functions. -- added support for adding extra columns to FOREIGN KEY indexes; see ALTER CONSTRAINT in the Guide -- added support for RECURSIVE_TABLE in WITH RECURSIVE queries -- added system role SCRIPT_OPS for export / import of database structure and data -- added extensive features to the collection classes in org.hsqldb.lib (maps, lists, queues etc.) which can also be used in user apps -- improved MySQL syntax support for ENUM -- fixed a number of regression in 2.5.1, e.g. use of MODULE for LOCAL TEMPORARY tables, truncated microsecond precision of java.sql.Timestamp values -- fixed several minor issues -- removed all use of Java (up to JDK 16) deprecated methods -- revamped Ant and Gradle builds, now updated to latest Gradle 24 June 2020 - version 2.5.1 -- version 2.5.1 jar requires JRE 8 or later - tested up to Java 14 -- version 2.5.1 can be compiled with Java 9 or later as org.hsqldb Java module jar -- version 2.3.8 jar can be compiled with Java 6 (or 7) for JRE 6 and 7 and fully compatible with 2.5.1 except for the new JDBC features -- added support for GROUPING SETS, ROLLUP and CUBE grouping operations -- added support for PERFORM CHECK ALL TABLE INDEX to check all CACHED table data and indexes -- added support for use of PostgreSQL ODBC driver to access a HyperSQL Server -- added support for calling stored procedures with INTERVAL parameters via JDBC CallableStatement -- added support for TRANSACTION_UTC, ASCIISTR UNISTR functions -- added support for reuse of memory space for lobs in mem: databases -- changed behaviour of WITH RECURSIVE with UNION ALL for compatibility with other systems -- improved role-based, row-level data access control with more complex filter expressions that can be applied to separate actions -- improved MySQL syntax support in the ON DUPLICATE KEY UPDATE clause -- improved loading of text files with null or empty fields into TEXT tables with columns defined as NOT NULL with DEFAULT -- many minor enhancements -- fixed issue with ALTER COLUMN data type modification between SMALLINT and INTEGER in CACHED tables -- fixed an issue (regression) in some server shutdown cases -- fixed an issue (regression) in some cases when JDBC connection timeout is used -- fixed several minor issues -- changed and improved how file spaces are set up for existing cached tables -- removed legacy support for opening version 1.8 databases -- removed legacy support for non-incremental internal backup of the .data file - 1 June 2019 - version 2.5.0 -- version 2.5.0 jar requires JRE 8 or later - tested up to Java 12 -- version 2.5.0 can be compiled with Java 9 or later as org.hsqldb Java module jar -- version 2.3.7 is released as a separate jar for JRE 6 and 7 and fully compatible except for the new JDBC features -- added Temporal System-Versioned tables feature -- added offline distributed database feature based on System-Versioned tables -- added role-based, row-level data access control -- added new properties, memory_lobs and hsqldb_tx_interrupt_rollback -- changed effect of Thread interrupts by user application in in-process database, transaction is rolled back if hsqldb_tx_interrupt_rollback is true -- changed return type of the UUID() function to UUID; the SYS_GUID() function will continue to return a BINARY(16) value. -- improved reporting of line number in compile error messages for routines -- improved syntax compatibility modes -- fixed issue with formatting of some TIMESTAMP nanoseconds returned by the TO_TIMESTAMP function -- fixed issue with TIMESTAMPDIFF with TIMESTAMP WITH TIME ZONE -- fixed issue with IN (UNNEST(NUMERIC ARRAY)) -- fixed issue with transaction size reported in INFORMATION_SCHEMA.SYSTEM_SESSIONS -- fixed issue with storing plus or minus infinity DOUBLE values -- fixed issue with CREATE DOMAIN ... COLLATE not persisting -- fixed issue with CREATE TYPE with custom COLLATION -- fixed an issue with multiple FOR loops in SQL routines -- fixed several minor issues -- changed calls to Java methods deprecated in JDK 9 - 12 -- removed Java 5 code switch and build options 20 May 2018 - version 2.4.1 -- version 2.4.1 jar requires JRE 8 or later -- version 2.3.6 is released as a separate jar for JRE 1.6 and fully compatible except for the new JDBC features -- added support for EXPLAIN REFERENCES FROM | TO object statement -- added support for HEX, UNHEX, TO_BASE64 and FROM_BASE64 functions -- added support for deployment in docker containers that do not support file rename -- added support for generated keys in update and merge -- improved CHECKPOINT DEFRAG to allow very large data files -- fixed issue with some temp table queries -- fixed issue with some SELECT ... INTO in routines -- fixed issue with parsing some TEXT TABLE source files -- fixed issue with auto-generated identity values in MERGE statements -- fixed issue for WITH named non-recursive subqueries in routines -- fixed issue with some WITH recursive queries -- fixed issue with duplicate values in UNNEST used with IN predicates -- fixed issue with WHEN clause in Java TRIGGER declarations -- fixed several issues with implementation of JAVA 8 JDBC method -- fixed some issues with transaction management -- fixed several minor bugs 9 April 2017 - version 2.4.0 -- version 2.4.0 jar requires JRE 8 -- version 2.3.5 is released as a separate jar for JRE 1.6 and fully compatible except for the new JDBC features -- added support for new JAVA 8 JDBC methods to ResultSet and Statement classes -- added support for several functions SINH COSH TANH NEXT_DAY DATEPART DATENAME EOMONTH NEWID SYS_GUID -- added support for execution of DDL statements concurrently with other transactions -- added support for table spaces for CACHED tables, which helps file space reuse after dropping tables or mass deletes -- improved support for WITH named subqueries in routines, allowing parameters to be referenced -- improved support for WITH RECURSIVE named subqueries to be used in other subqueries -- improved support for UUID in ResultSet to return a Java UUID with getObject() -- improved support for UUID in PreparedStatement setObject() with VARCHAR parameters -- improved use of allow_empty_batch connection property -- improved field param setting of DATEADD DATEDIFF TIMESTAMPADD TIMESTAMPDIFF functions -- improved ORA, MSS and MYS syntax compatibility modes for type names and functions -- fixed issue with cancel() method of java.sql.Statement with in-process connections -- fixed issue with the timeout setting of java.sql.Statement -- fixed issue with duplicate row with INSERT followed by UPDATE and ROLLBACK in MEMORY tables -- fixed issue with dropping indexes and constraints in MEMORY tables -- fixed issue with queries on DECIMAL or NUMERIC columns containing very large values -- fixed issue with ResultSet when calling next() multiple times was not followed by a get(...) call -- fixed issue with temp table indexes -- core code refactor of iterator for rows of tables and results -- fixed several minor bugs 16 May 2016 - version 2.3.4 -- added support for storing live Java Objects in mem: databases with sql.live_object connection property -- added support for UUID data type -- added support for CREATE SYSNONYM FOR, for tables, views and sequences -- added support for ON UPDATE CURRENT_TIMESTAMP for auto updated TIMESTAMP columns -- added REGEXP_REPLACE function -- added support for PERIOD and CONTAINS, EQUALS, PRECEDES and SUCCEEDS predicates in SQL -- added support for UTF-16 text source files for TEXT tables -- added support for the cancel() method of JDBC Statement and PreparedStatement -- added support for END STATEMENT to end long-running statements -- added support for CallableStatement parameter reference by name -- added date range checks to setDate and setTimestamp methods in PreparedStatement -- added support for lowercase patterns for TO_DATE etc. -- added support for VARCHAR string literals with sql.char_literal property -- improved MYS syntax mode for INSERT, REPLACE and ON DUPLICATE KEY UPDATE -- improved DB2 syntax mode for queries -- extensive review and improvement of transaction management in muti-threaded access -- fixed issue with user application Thread.interrupt disabling in-process database session -- fixed regression with interaction of FK constraints with ON DELETE CASCADE and NO ACTION -- fixed regression with opening database with CACHED table with files_readonly -- fixed issue with SEQUENCE increment in multi-row inserts -- fixed issue with incorrect results in multiple LEFT JOIN with NATURAL or USING -- fixed issue with ClobInputStream -- fixed issue with missing references to views used in routines -- fixed issue with .lobs file space reuse at CHECKPOINT -- fixed issue with readonly session blocking in MVLOCKS mode -- fixed several minor bugs 28 June 2015 - version 2.3.3 -- extensive review and improvement of concurrent updates -- fixed an issue with CHECKPOINT DEFRAG that could cause minor inconsistencies -- fixed a rarely occuring error immediately after CHECKPOINT -- fixed regression with comparison of TIMESTAMP values when one value is WITH TIME ZONE and the other WITHOUT -- fixed reporting of DISTINCT and DOMAIN types in JDBC DatabaseMetaData getColumns results -- fixed issue with new FK constraints, existing rows are now checked -- fixed restrictions with FK constraints with NO ACTION, all valid outcomes are now allowed -- fixed regression in 2.3.2, multiple rows with partial null values could not be inserted in UNIQUE indexes -- fixed issue with removal of IDENTITY when using ALTER COLUMN -- fixed issue with getExportedKeys reporting wrong DEFERABILITY -- fixed issue with CURRENT VALUE FOR usage -- fixed issue with LIKE with parametric escape character -- fixed an issue with CACHED table persistence -- fixed issue with TEMP table with ON COMMIT PRESERVE ROWS and RESULT MEMORY ROWS setting -- fixed several minor bugs -- improved usage of DECLARE CURSOR and DECLARE TABLE in SQL routines -- improved ORA, PGS, MSS and MYS syntax compatibility modes for CREATE TABLE and other statements -- added support for MYS syntax INSERT IGNORE, REPLACE and ON DUPLICATE KEY UPDATE -- added support for ALTER CONSTRAINT RENAME TO -- added support for LIMIT in DELETE and UPDATE statements -- added support for DELETE in MERGE statement 12 February 2014 - version 2.3.2 -- fixed several minor issues -- fixed bug with incomplete rollback of MVCC transaction that inserts and updates the same row -- fixed issue with parsing of long BIT strings in SQL -- fixed issue with SQL triggers when columns were added or dropped from a table with SQL triggers -- fixed issue with an index added to a TEMP table with ON COMMIT PRESERVE ROWS and containing data -- added URL property hsqldb.digest which can be used with alternative secure hash algorithms for passwords -- changed the class used for offline backup and restore to org.hsqldb.lib.tar.DbBackupMain -- extended the scope of SET DATABASE SQL REFERENCES TRUE to catch ambiguity with identical table aliases -- extended support for the DEFAULT keyword used in INSERT and UPDATE to apply to columns with no default -- improved support for recursive queries -- improved ORA and MYS syntax compatibility modes 08 October 2013 - version 2.3.1 -- fixed several minor issues -- fixed bug with some queries using ORDER BY DESC on indexed columns used in conditions -- fixed issue with NPE is some complex subqueries -- improved JDBCPool to be created with DataSourceFactory -- added support for LIKE with parametric escape character -- added support for routine SIGNAL messages using variables 08 July 2013 - version 2.3.0 -- improved data exception error messages 05 July svn 5259 snapshot 52 -- added connection property, close_result 30 June - svn 5256 snapshot 51 -- added INSTR function 15 May - svn 5241 snapshot -- added support for backup of database as set of files BACKUP DATABASE TO AS FILES 12 April - svn 5228 snapshot -- added TIMESTAMP_WITH_ZONE function -- fixed issue with AT