Skip to content

Releases: h2database/h2database

version-2.2.224

16 Sep 23:42
19b770e
Compare
Choose a tag to compare

Patch release to fix Issue #3883 Performance regression in 2.2.222

version-2.2.222

23 Aug 03:47
Compare
Choose a tag to compare

Version 2.2.222 (2023-08-22)

  • Fixed race condition in MVStore causing database corruption "File corrupted in chunk ###"
  • Issue #3868: INFORMATION_SCHEMA.SESSIONS.ISOLATION_LEVEL returns isolation level of the current session in all rows
  • RP #3865: Add possibility to enable virtual worker threads in TCP, Web, and PG servers on Java 21+
  • PR #3864: Improve performance of TCP client driver when it is used from virtual threads
  • Issue #2665: Parser shouldn't suggest compatibility syntax elements on parsing error
  • Issue #3089: GREATEST and LEAST aren't fully compliant with the SQL Standard
  • PR #3861: Improve SET EXCLUSIVE 2 and use stable time source for timeout exceptions
  • PR #3859: Fix conversion of PK columns to identity columns
  • Issue #3855: StackOverflowError when using TRACE_LEVEL_SYSTEM_OUT=4
  • PR #3854: Fix issues with newer JVMs
  • PR #3851: Remove lift configuration
  • PR #3847: Fix the NullPointerException caused by accessing 'user' after the session has been closed
  • PR #3846: Make DB_CLOSE_ON_EXIT safer
  • PR #3842: Adds support of quotedNulls in CSV handling

Version 2.2.220

04 Jul 15:40
Compare
Choose a tag to compare

Changes since 2.1.214 release:

  • PR #3834: Increase database format version
  • PR #3833: Disallow plain webAdminPassword values to force usage of hashes
  • PR #3831: Add Oracle-style NOWAIT, WAIT n, and SKIP LOCKED to FOR UPDATE clause
  • PR #3830: Fix time zone of time/timestamp with time zone AT LOCAL
  • PR #3822 / Issue #2671: Add quantified comparison predicates with array
  • PR #3820: Add partial implementation of JSON simplified accessor
  • PR #3818: Add support of underscores in numeric literals
  • PR #3817: Add ANY_VALUE() aggregate function
  • PR #3814: Fix regression in comparisons with infinities and NaNs
  • Issue #3040: System objectIds are recycled twice when CTE queries are executed.
  • PR #3812: UNIQUE null treatment
  • PR #3811: BTRIM function, octal and binary literals and other changes
  • Issue #352: In comparison text values are converted to INT even when they should be converted to BIGINT
  • PR #3797: MSSQL mode: Discard table hints on plain UPDATE statements
  • PR #3791: Formatted cast of datetimes to/from character strings
  • Issue #3785: CSVRead: Fails to translate empty Numbers, when cells are quoted
  • Issue #3762: Comparison predicates with row values don't create index conditions
  • PR #3761: LAST_DAY function and other changes
  • Issue #3705: Oracle DATE type: milliseconds (second fractions) rounded in H2 but truncated in Oracle (fixed in SYSDATE only)
  • Issue #3642: AssertionError in mvstore.FileStore.serializeAndStore
  • Issue #3675: H2 2.x cannot read PostgreSQL-style sequence generator start with option without WITH keyword
  • Issue #3757: FORMATDATETIME function doesn't handle time with time zone properly
  • PR #3756: Limit the row list allocation based on the row count
  • PR #3753: Add missing NEWSEQUENTIALID function in MSSQLServer mode
  • Issue #3730: FILE_READ from JAR filesystem on classpath results in file of length 0
  • PR #3749: Fix min/max description for sequences
  • PR #3739: Fix count(*) for linked table to Oracle
  • Issue #3731: Division result exceeds numeric precision constraint
  • PR #3718: Add test coverage for JDK 17
  • Issue #3580: TestCrashAPI: NPE in ParserUtil.getTokenType() (called by Parser.readIfDataType1())
  • PR #3709: Update copyright years and fix building of documentation
  • Issue #3701: CLOBs can cause ClassCastExceptions
  • Issue #3698: MySQL mode show columns from table, if modificationMetaId changed between prepared and execute. Then error occurred.
  • PR #3699: Upgrade to the latest OSGi JDBC specification
  • Issue #3659: User-defined variable "sticky" if used in view with join
  • Issue #3693: Wrong result when intersecting unnested arrays
  • PR #3691: GitHub Workflows security hardening
  • PR #3688: Construct FormatTokenEnum.TOKENS during class initialization
  • Issue #3682: MVStoreException at accountForRemovedPage
  • Issue #3664: [2.1.214] NullPointerException in org.h2.command.query.Select.queryDistinct
  • PR #3650: fix version number in the archives html table
  • PR #3649: Basic implementation of materialized view
  • Issue #3646: org.h2.mvstore.MVStoreException: Chunk metadata too long
  • Issue #3645: The BITCOUNT function incorrectly counts BINARY/VARBINARY values of >=16 bytes.
  • Issue #3637: DB content massacred when opening a 2.1.214 DB with current master
  • Issue #3636: "This store is closed" after two-phase commit
  • PR #3639: Add random_uuid() alias to be compatible with postgres
  • Issue #3640: SOUNDEX function should not be case-sensitive
  • Issue #3633: Memory leak in case of in-memory database
  • PR #3629 Better separation between MVStore and FileStore
  • PR #3626: Improve memory estimation of CacheLongKeyLIRS and correct some passed memory sizes
  • Issue #3619: PostgreSQL mode: STRING_AGG with prepared statement parameter not working
  • Issue #3615: H2 Console connecting to Oracle DB will not show the list of tables
  • PR #3613: Fix infinite loop in Tokenizer when special whitespace character is used
  • Issue #3606: Support for GraalVMs native-image
  • Issue #3607: [MySQL] UNIX_TIMESTAMP should return NULL
  • Issue #3604: Improper FROM_1X implementation corrupts some BLOBs during migration
  • Issue #3597: Support array element assignments in UPDATE statements
  • Issue #3599: [2.1.214][MariaDB] DELETE query failure
  • Issue #3600: NPE in MVTable.lock(), version 2.1.214
  • Issue #3601: InvalidPathException when saving lock file
  • Issue #3583: lob cleaner issue
  • Issue #3585: Misuse ValueReal.DECIMAL_PRECISION when optimize typeinfo from DOUBLE to DECFLOAT
  • Issue #3575: Possible syntax mismatch for json_object in MySQL compatibility mode
  • PR #3577: Add support of TINYINT and DECFLOAT to TO_CHAR
  • Issue #3567: No AUTO_INCREMENT in DatabaseMetaData.getTypeInfo()
  • PR #3555: Add missing check for -webExternalNames flag
  • Issue #3543: PostgreS...
Read more

version-2.1.214

14 Jun 01:52
1ba3590
Compare
Choose a tag to compare

Important bugs and regression fixes discovered after 2.1.212 release:

  • Issue #3538: In Postgres compatibility mode the NUMERIC type w/o scale should not default to 0
  • Issue #3534: Subquery has incorrect empty parameters since 2.1.210 that breaks sameResultAsLast()
  • Issue #3390: "ROW" cannot be set as a non keyword in 2.x
  • Issue #3448: With linked table to postgreSQL, case-sensitive column names not respected in where part
  • Issue #3434: JavaTableFunction is not closing underlying ResultSet when reading column list
  • Issue #3468: Invalid DB format exception (for 1.x DB in 2.x h2) should have a specific SQLException vendorCode
  • Issue #3528: Weird syntax error with HAVING clause in Oracle Mode
  • Issue #3307: Fix SHUTDOWN DEFRAG for encrypted databases
  • Issue #3515: Support for NEXTVAL property in DB2 mode
  • Issue #3444: Conversion 'text' to 'integer' doesn't work anymore
  • Issue #3493: org.h2.tools.DeleteDbFiles won't delete files under certain circumstances
  • Issue #3486: FilePathDisk.newDirectoryStream() may fail on remote drive on Windows due to AccessDeniedException in Path.toRealPath()
  • Issue #3484: LOB issue

Version 2.1.212

09 Apr 06:02
8f86186
Compare
Choose a tag to compare

Numerous bugs and regression fixes discovered after 2.1.210 release:

  • PR #3481: Add support for standard interval literals with precision
  • Issue #3471: Possibility of corruption after SHUTDOWN DEFRAG
  • Issue #3473: DROP TABLE/INDEX causes memory leak
  • PR #3464 / Issue #3457: increase max length of VAR* types
  • PR #3460: fix bug in readStoreHeader()
  • PR #3458: Add performance tests for SQLite
  • Issue #1808: Occasional NPE in concurrent update of LOB
  • Issue #3439: Cannot use enum values in JSON without explicit casts
  • Issue #3426: Regression: BIT(1) is not accepted in MySQL compatibility mode
  • PR #3422: Allow combination of any geometry types with the same SRID
  • Issue #3414: H2 2.1.210: Query with Parameters throws NPE
  • Issue #3413: Parser can't parse REFERENCES … NOT NULL
  • Issue #3410: OOME with nested derived tables
  • Issue #3405: Enhance SCRIPT to support operations on STDOUT
  • Issue #3406 / PR #3407: FunctionMultiReturn.polar2CartesianArray result set iteration throws ClassCastException
  • Issue #3400: Regression: ORDER BY ROWNUM fails with General error: "Unexpected code path"
  • Issue #3387: SYSDATE behavior changed in 2.x
  • Issue #3394: SYSDATE Considered Identifier when used in inner select
  • Issue #3391: Hang on merge statement with data change delta table
  • PR #3384: Remove abandoned Java to C converter and fix some warnings from Sonatype Lift
  • PR #3382: Use secure parser in H2AuthConfigXml to avoid future reports

Version 2.1.210

17 Jan 15:32
ca926f8
Compare
Choose a tag to compare

Two security vulnerabilities in H2 Console (CVE-2022-23221 and possible DNS rebinding attack) are fixed.

Persistent databases created by H2 2.0.x don't need to be upgraded.
Persistent databases created by H2 1.4.200 and older versions require export into SQL script with that old version and creation of a new database with the new version and execution of this script in it.

  • PR #3381: Add IDENTITY() and SCOPE_IDENTITY() to LEGACY mode
  • Issue #3376: Data cannot be read after insert of clob data > MAX_LENGTH_INPLACE_LOB with data change delta table
  • PR #3377: Add -webExternalNames setting and fix WebServer.getConnection()
  • PR #3367: Use faster checks of dimension systems of geometries
  • PR #3369: Added v2 changes in migration docs
  • Issue #3361: MemoryEstimator.estimateMemory() can return negative size
  • PR #3362: Use BufferedReader instead of BufferedInputStream to avoid Illegal seek exception
  • Issue #3353: Wrong rownum() scope for DML with change delta table
  • PR #3352: make Javadoc happier
  • Issue #3344: Changelog could link to github issue
  • Issue #3340: JDBC index type seems wrong
  • Issue #3336: FT_INIT error when mode=MySQL
  • Issue #3334: Regression with CREATE ALIAS - Parameter "#2" is not set
  • Issue #3321: Insert Primary Key after import CSV Data does not work
  • PR #3323: Tokenize SQL before parsing and preserve tokens for recompilation
  • PR #3320: Add Servlet 5-compatible servlet for H2 Console
  • Issue #918: Parser fails recognising set operations in correlated subqueries
  • Issue #2050: PostgreSQL with recursive fail with union in the final query
  • PR #3316: Update copyright years
  • PR #3315: Never put read locks into lockSharedSessions and other minor changes
  • Issue #492: H2 does not correctly parse <parenthesized joined table>
  • Issue #3311: Parser creates wrong join graph in some cases and uses wrong tables for column mapping
  • FORCE_JOIN_ORDER setting is removed
  • Issue #1983: Official build script is not compatible with Java 13
  • PR #3305: Add UNIQUE(VALUE) and remove some non-standard keywords
  • PR #3299: Remove useless StringBuilder.toString() call
  • PR #3298: Delete unused sqlTypes array

Version 2.0.206

04 Jan 19:06
3d957a0
Compare
Choose a tag to compare

Critical security issue with H2 console is fixed.

Also important changes included:

  • Issue #3322: Create linked table fails when the table contains a Geometry with a data type specified
  • Issue #3297: Unexpected GROUP BY results with indexed IGNORECASE column

Version 2.0.204

21 Dec 18:12
76994fd
Compare
Choose a tag to compare

Multilple regression fixes discovered after 2.0.202 release,

There are no persistence changes between 2.0.202 and 2.0.204, so jar file swap is enough, if database had been upgraded to 2.0.202 already, otherwise please read the message below:

Between version 1.4.200 and version 2.0.202 there have been considerable changes, such that a simple update is
not possible.
The official way to upgrade is to do a BACKUP of your existing database USING YOUR CURRENT VERSION OF H2.
Then create a fresh database USING THE NEW VERSION OF H2, then perform a SCRIPT to load your data.

Version 2.0.202

26 Nov 14:03
bb50243
Compare
Choose a tag to compare

Besides many dozens of fixed bugs, performance improvements,
more adherence to a standard SQL syntax and type system, there are

Some new features:

  • Complete re-work of INFORMATION_SCHEMA to be more in-line with the standard
  • Support for new types: ARRAY, ROW, JAVA_OBJECT
  • Numerous bit, string, array and system functions implemented
  • Standard-based access to generated keys
  • JDBC 4.2 compliance
  • Support for JDK 7 is dropped
  • PageStore is discontinued

MVStore changes:

  • Descending MVMap and TransactionMap cursor
  • Disk space reclamation algorithm improvements

Between version 1.4.200 and version 2.0.202 there have been considerable changes, such that a simple update is
not possible.
The official way to upgrade is to do a BACKUP of your existing database USING YOUR CURRENT VERSION OF H2.
Then create a fresh database USING THE NEW VERSION OF H2, then perform a SCRIPT to load your data.

Version 1.4.200

14 Oct 07:13
Compare
Choose a tag to compare

Some new features:

  • JSON data type; JSON_OBJECT, JSON_ARRAY, JSON_OBJECTAGG, and JSON_ARRAYAGG functions; JSON predicate
  • TIME WITH TIME ZONE data type
  • BITNOT, LSHIFT, and RSHIFT functions
  • Named columns join (JOIN USING)
  • Type predicate (IS OF)
  • General logarithm function LOG(base, argument)
  • UNKNOWN literal and truth value tests
  • UNIQUE predicate
  • CURRENT_SCHEMA and CURRENT_CATALOG functions
  • Data change delta tables (OLD | NEW | FINAL TABLE)
  • CURRENT VALUE FOR sequence
  • EXECUTE IMMEDIATE command and QUOTE_IDENT function
  • Time zone specification (AT TIME ZONE | LOCAL)
  • ALTER TABLE tableName ALTER COLUMN IF EXISTS columnName
  • READ UNCOMMITTED, REPEATABLE READ, and SNAPSHOT isolation levels with MVStore engine

Incompatible changes:

  • MVCC setting (ignored since 1.4.198) now results in error
  • MULTI_THREADED setting is removed, MVStore engine is always multi-threaded, PageStore engine is always single-threaded
  • Statement.getGeneratedKeys() uses a FINAL TABLE semantics
  • Proleptic Gregorian calendar is used as required by the Standard
  • Cast from TIME to TIMESTAMP uses CURRENT_DATE for a date part as required by the Standard

Other changes:

  • Scalability and stability of MVStore engine are improved
  • Assorted bugfixes

Known issues:

  • Asterisked projection of NATURAL join and named columns join between three or more tables can still be incorrect, use qualified column names as a workaround
  • SERIALIZABLE isolaton level can be set, but it doesn't ensure equivalence of serial and concurrent execution of transactions

See change log for the complete list of changes.