diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml
index 0535ccd7dc..2efbcd590e 100644
--- a/.github/workflows/CI.yml
+++ b/.github/workflows/CI.yml
@@ -2,29 +2,26 @@ name: CI
on: [push, pull_request]
+permissions:
+ contents: read # to fetch code (actions/checkout)
+
jobs:
- java-8:
+ build:
+ strategy:
+ fail-fast: false
+ matrix:
+ java-version: [8, 11, 17]
+ name: Java ${{ matrix.java-version }}
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
- - name: Set up JDK 1.8
- uses: actions/setup-java@v1
+ - uses: actions/checkout@v3
with:
- java-version: 1.8
- - name: Test
- run: |
- cd h2
- echo $JAVA_OPTS
- export JAVA_OPTS=-Xmx512m
- ./build.sh jar testCI
- java-11:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - name: Set up JDK 11
- uses: actions/setup-java@v1
+ fetch-depth: 1
+ - name: Set up JDK ${{ matrix.java-version }}
+ uses: actions/setup-java@v3
with:
- java-version: 11
+ java-version: ${{ matrix.java-version }}
+ distribution: temurin
- name: Test
run: |
cd h2
diff --git a/.lift.toml b/.lift.toml
index 3c7beccf52..95ec44ad80 100644
--- a/.lift.toml
+++ b/.lift.toml
@@ -5,4 +5,5 @@
# Tell sonatype where our pom file lives, so it can build it again
#
-build = "maven -f h2/pom.xml compile"
\ No newline at end of file
+build = "maven -f h2/pom.xml compile"
+ignoreRules = [ "missingoverride", "none", "assert_used", "OperatorPrecedence" ]
\ No newline at end of file
diff --git a/README.md b/README.md
index 3105990c31..c48d40dc04 100644
--- a/README.md
+++ b/README.md
@@ -22,7 +22,7 @@ More information: https://h2database.com
com.h2database
h2
- 2.0.204
+ 2.2.220
```
diff --git a/h2/MAVEN.md b/h2/MAVEN.md
index 427fa8a622..e28cc6b6f1 100644
--- a/h2/MAVEN.md
+++ b/h2/MAVEN.md
@@ -44,7 +44,8 @@ or
```
Please note that jar generated with Maven is larger than official one and it does not include OSGi attributes.
-Use build script with `jar` target instead if you need a compatible jar.
+Its configuration for native-image tool is also incomplete.
+Use build script with `jar` target instead if you need a jar compatible with official builds.
### Testing
diff --git a/h2/build.sh b/h2/build.sh
index 558a7945ab..769262d58b 100755
--- a/h2/build.sh
+++ b/h2/build.sh
@@ -15,4 +15,4 @@ if [ "$1" = "clean" ] ; then rm -rf temp bin ; fi
if [ ! -d "temp" ] ; then mkdir temp ; fi
if [ ! -d "bin" ] ; then mkdir bin ; fi
"$JAVA_HOME/bin/javac" -sourcepath src/tools -d bin src/tools/org/h2/build/*.java
-"$JAVA_HOME/bin/java" -Xmx512m -cp "bin:$JAVA_HOME/lib/tools.jar:temp" org.h2.build.Build $@
+"$JAVA_HOME/bin/java" -Xmx1g -cp "bin:$JAVA_HOME/lib/tools.jar:temp" org.h2.build.Build $@
diff --git a/h2/pom.xml b/h2/pom.xml
index 1a7bf3295b..5b3c398553 100644
--- a/h2/pom.xml
+++ b/h2/pom.xml
@@ -4,7 +4,7 @@
com.h2database
h2
- 2.0.203-SNAPSHOT
+ 2.2.219-SNAPSHOT
jar
H2 Database Engine
https://h2database.com
@@ -39,24 +39,44 @@
1.8
1.8
- 8.0.1
+ 9.4
1.17.0
5.6.2
8.5.2
5.0.0
- 42.2.14
- 4.0.1
+ 1.1.0
+ 42.4.0
+ 4.0.1
+ 5.0.0
1.7.30
+ 15.4
UTF-8
+
+
+
+ org.ow2.asm
+ asm-bom
+ ${asm.version}
+ pom
+ import
+
+
+
+
javax.servlet
javax.servlet-api
- ${servlet.version}
+ ${javax.servlet.version}
+
+
+ jakarta.servlet
+ jakarta.servlet-api
+ ${jakarta.servlet.version}
org.apache.lucene
@@ -84,9 +104,10 @@
${osgi.version}
- org.osgi
- org.osgi.enterprise
- ${osgi.version}
+ org.osgi
+ org.osgi.service.jdbc
+ ${osgi.jdbc.version}
+ provided
org.locationtech.jts
@@ -118,7 +139,6 @@
org.ow2.asm
asm
- ${asm.version}
test
@@ -168,6 +188,20 @@
+
+ nashorn
+
+ [15,)
+
+
+
+ org.openjdk.nashorn
+ nashorn-core
+ ${nashorn.version}
+ test
+
+
+
diff --git a/h2/src/docsrc/help/information_schema.csv b/h2/src/docsrc/help/information_schema.csv
index fc47ab89b4..e6c5d46d9f 100644
--- a/h2/src/docsrc/help/information_schema.csv
+++ b/h2/src/docsrc/help/information_schema.csv
@@ -1,4 +1,4 @@
-# Copyright 2004-2021 H2 Group. Multiple-Licensed under the MPL 2.0,
+# Copyright 2004-2023 H2 Group. Multiple-Licensed under the MPL 2.0,
# and the EPL 1.0 (https://h2database.com/html/license.html).
# Initial Developer: H2 Group
@@ -523,6 +523,13 @@ The name of the field of the row value.
The type of the index ('PRIMARY KEY', 'UNIQUE INDEX', 'SPATIAL INDEX', etc.)
"
+"INDEXES","NULLS_DISTINCT","
+'YES' for unique indexes with distinct null values,
+'NO' for unique indexes with not distinct null values,
+'ALL' for multi-column unique indexes where only rows with null values in all unique columns are distinct,
+NULL for other types of indexes.
+"
+
"INDEXES","IS_GENERATED","
Whether index is generated by a constraint and belongs to it.
"
@@ -760,11 +767,11 @@ The initial start value.
"
"SEQUENCES","MINIMUM_VALUE","
-The maximum value.
+The minimum value.
"
"SEQUENCES","MAXIMUM_VALUE","
-The minimum value.
+The maximum value.
"
"SEQUENCES","INCREMENT","
@@ -925,6 +932,13 @@ For regular tables contains the total number of rows including the uncommitted r
referencing tables and 'NO' when they are disabled.
"
+"TABLE_CONSTRAINTS","NULLS_DISTINCT","
+'YES' for unique constraints with distinct null values,
+'NO' for unique constraints with not distinct null values,
+'ALL' for multi-column unique constraints where only rows with null values in all unique columns are distinct,
+NULL for other types of constraints.
+"
+
"TABLE_PRIVILEGES","WITH_HIERARCHY","
'NO'.
"
diff --git a/h2/src/docsrc/html/advanced.html b/h2/src/docsrc/html/advanced.html
index f5189b37e1..c03bd89fef 100644
--- a/h2/src/docsrc/html/advanced.html
+++ b/h2/src/docsrc/html/advanced.html
@@ -1,6 +1,6 @@
@@ -453,14 +453,17 @@ Keywords / Reserved Words
-Keyword |
-H2 |
-SQL:2016 |
-SQL:2011 |
-SQL:2008 |
-SQL:2003 |
-SQL:1999 |
-SQL-92 |
+Keyword |
+H2 |
+SQL Standard |
+
+
+2016 |
+2011 |
+2008 |
+2003 |
+1999 |
+92 |
@@ -526,8 +529,6 @@ Keywords / Reserved Words
+ | + | + | + | + | + | + |
FETCH |
+ | + | + | + | + | + | + |
-FILTER |
-CS | + | + | + | + | | |
FOR |
+ | + | + | + | + | + | + |
FOREIGN |
@@ -554,8 +555,6 @@ Keywords / Reserved Words
+ | + | + | + | + | + | + |
INTERSECT |
+ | + | + | + | + | + | + |
-INTERSECTS |
-+ | | | | | | |
INTERVAL |
+ | + | + | + | + | + | + |
IS |
@@ -571,13 +570,13 @@ Keywords / Reserved Words
LIKE |
+ | + | + | + | + | + | + |
LIMIT |
-+ | | | | | + | |
+MS | | | | | + | |
LOCALTIME |
+ | + | + | + | + | + | |
LOCALTIMESTAMP |
+ | + | + | + | + | + | |
MINUS |
-+ | | | | | | |
+MS | | | | | | |
MINUTE |
+ | + | + | + | + | + | + |
MONTH |
@@ -635,13 +634,13 @@ Keywords / Reserved Words
TO |
+ | + | + | + | + | + | + |
TOP |
-CS | | | | | | |
+MS CS | | | | | | |
TRAILING |
CS | + | + | + | + | + | + |
TRUE |
+ | + | + | + | + | + | + |
UESCAPE |
-+ | | | + | + | + | + |
++ | + | + | + | + | | |
UNION |
+ | + | + | + | + | + | + |
UNIQUE |
@@ -671,15 +670,30 @@ Keywords / Reserved Words
-Some keywords in H2 are context-sensitive (CS), such keywords may be used as identifiers in some places,
+Mode-sensitive keywords (MS) are keywords only in some compatibility modes.
+
+- LIMIT is a keywords only in Regular, Legacy, DB2, HSQLDB, MariaDB, MySQL, and PostgreSQL compatibility modes.
+It is an identifier in Strict, Derby, MSSQLServer, and Oracle compatibility modes.
+
- MINUS is a keyword only in Regular, Legacy, DB2, HSQLDB, and Oracle compatibility modes.
+It is an identifier in Strict, Derby, MSSQLServer, MariaDB, MySQL, and PostgreSQL compatibility modes.
+
- TOP is a context-sensitive keyword (can be either keyword or identifier)
+only in Regular, Legacy, HSQLDB, and MSSQLServer compatibility modes.
+It is an identifier unconditionally in Strict, Derby, DB2, MariaDB, MySQL, Oracle, and PostgreSQL compatibility modes.
+
+
+Context-sensitive keywords (CS) can be used as identifiers in some places,
but cannot be used as identifiers in others.
+Normal keywords (+) are always treated as keywords.
+
+
Most keywords in H2 are also reserved (+) or non-reserved (NR) words in the SQL Standard.
Newer versions of H2 may have more keywords than older ones.
+Reserved words from the SQL Standard are potential candidates for keywords in future versions.
There is a compatibility setting
SET NON_KEYWORDS
-that can be used as a temporary workaround for applications that use keywords as unquoted identifiers.
.
+that can be used as a temporary workaround for applications that use keywords as unquoted identifiers.
Standards Compliance
@@ -1354,9 +1368,10 @@
Protection against Remote Access
If you enable remote access using -webAllowOthers
,
please ensure the web server can only be accessed from trusted networks.
+If this option is specified, -webExternalNames
should be also specified with
+comma-separated list of external names or addresses of this server.
The options -baseDir
don't protect
-access to the tools section, prevent remote shutdown of the web server,
-changes to the preferences, the saved connection settings,
+access to the saved connection settings,
or access to other databases accessible from the system.
@@ -1796,9 +1811,9 @@ Limits and Limitations
The actual possible number can be smaller if their definitions are too long.
The maximum length of an identifier (table name, column name, and so on) is 256 characters.
The maximum length of CHARACTER, CHARACTER VARYING and VARCHAR_IGNORECASE values and columns
-is 1048576 characters.
+is 1_000_000_000 characters.
The maximum length of BINARY, BINARY VARYING, JAVA_OBJECT, GEOMETRY, and JSON values and columns
-is 1048576 bytes.
+is 1_000_000_000 bytes.
The maximum precision of NUMERIC and DECFLOAT values and columns is 100000.
The maximum length of an ENUM value is 1048576 characters, the maximum number of ENUM values is 65536.
The maximum cardinality of an ARRAY value or column is 65536.
diff --git a/h2/src/docsrc/html/architecture.html b/h2/src/docsrc/html/architecture.html
index a7603e81c3..d01ba072d7 100644
--- a/h2/src/docsrc/html/architecture.html
+++ b/h2/src/docsrc/html/architecture.html
@@ -1,6 +1,6 @@
@@ -50,6 +50,7 @@ Introduction
Top-down Overview
Working from the top down, the layers look like this:
+
- JDBC driver.
- Connection/session management.
- SQL Parser.
@@ -59,7 +60,6 @@
Top-down Overview
- B-tree engine and page-based storage allocation.
- Filesystem abstraction.
-
JDBC Driver
@@ -69,6 +69,7 @@
JDBC Driver
Connection/session management
The primary classes of interest are:
+
Package | Description |
org.h2.engine.Database | the root/global class |
@@ -79,7 +80,6 @@ Connection/session management
org.h2.engine.SessionRemote |
remote session |
-
Parser
@@ -95,14 +95,15 @@
Command execution and planning
Unlike other databases, we do not have an intermediate step where we generate some kind of IR (intermediate representation) of the query.
The parser class directly generates a command execution object.
Then we run some optimisation steps over the command to possibly generate a more efficient command.
-
+
+
The primary packages of interest are:
+
Package | Description |
org.h2.command.ddl | Commands that modify schema data structures |
org.h2.command.dml | Commands that modify data |
-
Table/Index/Constraints
@@ -110,12 +111,12 @@
Table/Index/Constraints
The primary packages of interest are:
+
Package | Description |
org.h2.table | Implementations of different kinds of tables |
org.h2.index | Implementations of different kinds of indices |
-
Undo log, redo log, and transactions layer
diff --git a/h2/src/docsrc/html/build.html b/h2/src/docsrc/html/build.html
index b09c398506..9e7904423f 100644
--- a/h2/src/docsrc/html/build.html
+++ b/h2/src/docsrc/html/build.html
@@ -1,6 +1,6 @@
@@ -27,6 +27,8 @@
Build
Building the Software
Using Maven 2
+
+ Native Image
Using Eclipse
@@ -48,6 +50,8 @@ Portability
Environment
To run this database, a Java Runtime Environment (JRE) version 8 or higher is required.
+It it also possible to compile a standalone executable with
+experimental native image build.
To create the database executables, the following software stack was used.
@@ -148,6 +152,34 @@
Using Snapshot Version
</dependency>
+Native Image
+
+
+There is an experimental support for compilation of native executables with native-image tool.
+To build an executable with H2 install GraalVM and use its updater to get the native-image tool:
+
+
+gu install native-image
+
+This tool can be used for compilation of native executables:
+
+native-image --no-fallback -jar h2-VERSION.jar h2
+
+
+Known limitations:
+-
+If
--no-fallback
parameter was specified, system tray icon may not appear
+even if -Djava.awt.headless=false
parameter of native-image tool was used,
+because native-image doesn't add all necessary configuration for working GUI.
+ -
+If
--no-fallback
parameter was specified,
+user-defined functions and triggers need an additional configuration.
+ -
+JAVA_OBJECT data type wasn't tested and may not work at all.
+
-
+Third-party loggers, ICU4J collators, and fulltext search weren't tested.
+
+
Using Eclipse
To create an Eclipse project for H2, use the following steps:
diff --git a/h2/src/docsrc/html/changelog.html b/h2/src/docsrc/html/changelog.html
index 32fb19a0a2..916d76e740 100644
--- a/h2/src/docsrc/html/changelog.html
+++ b/h2/src/docsrc/html/changelog.html
@@ -1,6 +1,6 @@
@@ -25,1221 +25,354 @@
Next Version (unreleased)
-Version 2.0.204 (2021-12-21)
-
-- Issue #3291: Add Legacy and Strict modes
-
-- Issue #3287: SELECT statement works on 1.4.200 but fails on 2.0.202 with "Column XYZ must be in the GROUP BY list"
-
-- PR #3284: Remove unused UNDO_LOG setting
-
-- Issue #3251: Table with GEOMETRY column can't have a TriggerAdapter-based trigger any more
-
-- PR #3281: DateTimeFormatter-based FORMATDATETIME and PARSEDATETIME and other changes
-
-- Issue #3246: Spatial predicates with comparison are broken in MySQL compatibility mode
-
-- Issue #3270: org.h2.jdbc.JdbcSQLFeatureNotSupportedException: Feature not supported: "Unsafe comparison or cast"
-
-- Issue #3268 / PR #3275: Add TO_DATE and TO_TIMESTAMP to PostgreSQL compatibility mode
-
-- PR #3274: Remove some dead code and unused params
-
-- Issue #3266: Oracle compatibility NUMBER without precision and scale should have variable scale
-
-- Issue #3263: Unable to store BigDecimal with negative scale in NUMERIC(19,6) column
-
-- PR #3261: Small optimization for MIN and MAX
-
-- Issue #3258 / PR #3259: Prevent incorrect optimization of COUNT(*) and other changes
-
-- PR #3255: Throw proper exception when type of argument isn't known
-
-- Issue #3249: Multi-column assignment with subquery throws exception when subquery doesn't return any rows
-
-- PR #3248: Remove redundant uniqueness check, correct version in pom
-
-- PR #3247: Avoid AIOBE exception in TestCrashAPI and in Transaction
-
-- Issue #3241: ResultSetMetaData::getColumnTypeName should produce the correct ARRAY type
-
-- Issue #3204: H2 Tools Web Console: Unicode 32
-
-- Issue #3227: Regression when referencing outer joined column from correlated subquery
-
-- Issue #3237: Can no longer cast CHAR(n) to BOOLEAN with n > 1
-
-- Issue #3235: Regression in IN predicate with empty in list
-
-- Issue #3236: NullPointerException in DatabaseMetaData::getIndexInfo when querying the info for views
-
-- Issue #3233: General error when using NULL predicate on _ROWID_ column
-
-- Issue #3223: TRUNC(v, p) with negative precisions no longer works
-
-- Issue #3221: NullPointerException when creating domain
-
-- Issue #3186: ResultSetMetaData.getSchemaName() returns empty string for aliased columns
-
-
-
-Version 2.0.202 (2021-11-25)
+Version 2.2.220 (2023-07-04)
-- Issue #3206: CVE Vulnerability CVE-2018-14335
-
-- Issue #3174: Add keyword AUTOCOMMIT on create linked table to control the commit mode
-
-- Issue #3130: Precision of NUMERIC values isn't verified in the Oracle compatibility mode
-
-- Issue #3122: Documentation: Syntax diagram for RENAME CONSTRAINT incorrect
-
-- PR #3129: remove LOB compression
-
-- PR #3127: Cleanups post PageStore removal
-
-- PR #3126: Change nested classes to static nested classes where possible
-
-- PR #3125: Strongly typed LobStorageMap
-
-- PR #3124: Remove PageStore engine
-
-- Issue #3118: SHUTDOWN COMPACT causes 2PC to corrupt database in a simulated crash
-
-- Issue #3115: Infinite loop then OOM in org.h2.mvstore.tx.Transaction.waitFor() when deadlock occurs
-
-- Issue #3113: Data lost when 2 threads read/write TransactionStore and close it normally even if MVStore autoCommit
-disabled
-
-- PR #3110: Fix possible int overflow and minor doc change
-
-- Issue #3036: A database that contains BLOBs might grow without being able to be compacted
-
-- Issue #3097: Possible MVStore compaction issue
-
-- PR #3096: Add separate LOB data layer for values
-
-- Issue #3093: ROWNUM filter doesn't work with more than one table
-
-- PR #3087: Add "CONVERT TO CHARACTER SET" to compatibility modes
-
-- Issue #3080: Complex Query returns different results depending on the number of arguments in the IN clause
-
-- Issue #3066: Very high DB opening/closing times
-
-- PR #3077: Add CREATE UNIQUE INDEX ... INCLUDE
-
-- Issue #3061 / PR #3074: GROUP BY using column index for MySQL/MariaDB/PostgreSQL compatibility modes
-
-- PR #3067: Restrict identity data types and result limitation clauses to compatibility modes
-
-- PR #3065: Remove duplicate method IOUtils.getBufferedReader
-
-- Issue #3055: Phantom table leftover after INSERT .. WITH
-
-- PR #3062: Add ALTER DOMAIN RENAME CONSTRAINT command
-
-- Issue #3059: ALTER TABLE DROP CONSTRAINT doesn't check owner of constraint
-
-- Issue #3054: Add binary set aggregate functions
-
-- Issue #3049: Java value getters of ValueNull should throw exceptions
-
-- Issue #3046: SYSTEM_RANGE can't handle bind variable as step size and produces wrong error message
-
-- Issue #3033: NPE during BLOB read after 2PC rollback
-
-- PR #3034: Don't evaluate ValueTimestampTimeZone at begin and end of each command
-
-- PR #3029: Optimize row storage in MVStore and other changes
-
-- PR #3028: Remove back compatibility
-
-- PR #3025: Switch from Travis CI to GitHub Workflows
-
-- PR #3024: Add initial version of upgrade utility
-
-- Issue #3017: ROUND() does not set correct precision and scale of result
-
-- Issue #3003: CREATE TABLE ... AS SELECT ... FROM creates invalid column definition when aggregate functions are used
-
-- Issue #3008: TestCrashAPI: Exception in Arrays.sort() called by LocalResult.done()
-
-- Issue #3006 / PR #3007: Unlock meta during query execution in CREATE TABLE AS query
-
-- PR #3001: PostgreSQL compatibility: UPDATE with FROM
-
-- PR #2998: Fix off-by-one error with -webAdminPassword in Server
-
-- PR #2995: Add FETCH_SIZE clause to CREATE LINKED TABLE
-
-- Issue #2907 / PR #2994: Prevent "Chunk not found" on LOB operations
-
-- PR #2993: Update copyright years
-
-- Issue #2991: TestCrashAPI: NPE in ScriptCommand.dumpDomains()
-
-- Issue #2950 / PR #2987: Issue commit() right before "non-transactional" DDL command starts
-
-- PR #2980: Assorted minor changes
-
-- PR #2966: H2 2.0.201: Linked Tables freeze the Database and freeze the Server Process
-
-- Issue #2972: Memory leak due to negative Page memory in the MVStore
-
-- PR #2971: create skeleton of migration to V2 document
-
-- Issue #2967: MVStore: averageSize int overflow in the class ObjectDataType
-
-- Issue #2963: Syntax error for large hexadecimal constants with DATABASE_TO_UPPER=false
-
-- Issue #2961: Accept CREATE PRIMARY KEY only in metadata or in quirks mode
-
-- Issue #2960: Reject invalid CREATE { UNIQUE | HASH } SPATIAL INDEX
-
-- Issue #2958: TableLink is broken for Oracle database after pull request #2903
-
-- PR #2955: Prevent incorrect index sorting
-
-- PR #2951: Add documentation for INFORMATION_SCHEMA
-
-- PR #2943: some small prep for next release
-
-- PR #2948: Add support of Infinity, -Infinity, and NaN to DECFLOAT data type
-
-- Issue #2947: Encoding of Unicode and special characters in error messages
-
-- Issue #2891: Fix import of unnamed referential constraints from SQL scripts generated by older versions of H2
-
-- Issue #2812: Unexpected result for query that compares an integer with a string
-
-- Issue #2936: Add data type conversion code from datetime and UUID values to JSON
-
-- Issue #2935: ENUM ARRAY isn't read properly from persisted data
-
-- Issue #2923: Combination of fileName() with fileStore() should throw an exception
-
-- Issue #2928: JSON_ARRAYAGG and all NULL values
-
-- PR #2918: Removal of unnecessary lock
-
-- Issue #2911: org.h2.mvstore.MVStoreException: Transaction was illegally transitioned from ROLLING_BACK to
-ROLLED_BACK
-
-- Issue #1022: JdbcDatabaseMetaData.getPseudoColumns() should be implemented
-
-- Issue #2914: (T1.A = T2.B) OR (T1.A = T2.C) should be optimized to T1.A IN(T2.B, T2.C) to allow index conditions
-
-- PR #2903: Assorted changes
-
-- Issue #2901: PgServer returns less rows when fetchSize is set
-
-- Issue #2894: NPE in DROP SCHEMA when unique constraint is removed before linked referential constraint
-
-- Issue #2888: H2 should pass time zone of client to the server
-
-- PR #2890: Fixed possible eternal wait(0)
-
-- Issue #2846: GRANT SELECT, INSERT, UPDATE, DELETE incorrectly gives privileges to drop a table
-
-- Issue #2882: NPE in UPDATE with SELECT UNION
-
-- PR #2881: Store users and roles together and user-defined functions and aggregates together
-
-- Issue #2878: Disallow spatial indexes in PageStore databases
-
-- PR #2874: Use 64-bit row counts in results and other changes
-
-- Issue #2866: New INFORMATION_SCHEMA should not use keywords as column names
-
-- Issue #2867: PageStore + Lazy + INSERT ... SELECT cause infinite loop
-
-- PR #2869: Normalize binary geometry literals and improve EWKB representation of POLYGON EMPTY
-
-- Issue #2860: CHAR columns in PgCatalogTable have incorrect length
-
-- Issue #2848: Add support for standard <listagg overflow clause>
-
-- Issue #2858: Throw 22001 on attempt to use getString() or getBytes() on LOB object longer than 1,048,576
-chars/octets
-
-- Issue #2854: Define limits for identifiers, number of columns, etc.
-
-- PR #2853: Small optimization for Page compression / decompression
-
-- Issue #2832: Define length limits for non-LOB data types
-
-- Issue #2842: Querying view that uses LTRIM/RTRIM results in a syntax error
-
-- Issue #2841: Call to STRINGDECODE results in StringIndexOutOfBoundsException
-
-- Issue #2839: Querying a view that uses the POSITION() function results in an unexpected syntax error
-
-- Issue #2838: INSERT() with NULL arguments for the original string and string to be added results in NPE
-
-- Issue #2837: ROUND() function should reject invalid number of digits immediately
-
-- Issue #2835: Calling math functions with a string argument results in a NullPointerException
-
-- Issue #2833: MERGE INTO causes an unexpected syntax error
-
-- Issue #2831: Restore YEAR data type for MySQL compatibility mode
-
-- Issue #2822: Suspicious logic in Database.closeImpl()
-
-- Issue #2829: Incorrect manifest entries in sources jar
-
-- Issue #2828: Parser can't parse NOT in simple when operand
-
-- Issue #2826: Table with a generated column cycle results in a NullPointerException
-
-- Issue #2825: Query with % operator results in a ClassCastException
-
-- Issue #2818: TableFilter.getValue() can read value of delegated column faster
-
-- Issue #2816: Query on view that uses the BETWEEN operator results in an unexpected syntax error
-
-- PR #2815: Remove BINARY_COLLATION and UUID_COLLATION settings
-
-- Issue #2813: Query with CASE operator unexpectedly results in "Column must be in the GROUP BY list" error
-
-- Issue #2811: Update build numbers and data format versions
-
-- Issue #2674: OPTIMIZE_IN_SELECT shouldn't convert value to incompatible data types
-
-- Issue #2803: Disallow comparison operations between incomparable data types
-
-- Issue #2561: Separate normal functions and table value functions
-
-- Issue #2804: NPE in ConditionNot.getNotIfPossible()
-
-- Issue #2801: Instances of TableView objects leaking
-
-- PR #2799: Additional bit functions BITNAND, BITNOR, BITXNOR, BITCOUNT, ULSHIFT, URSHIFT, ROTATELEFT, ROTATERIGHT,
-BIT_NAND_AGG, BIT_NOR_AGG, and BIT_XNOR_AGG.
-
-- PR #2798: Complete separation of Function class
-
-- Issue #2795: Sporadic issues with trigger during concurrent insert in 1.4.199/1.4.200
-
-- PR #2796: Assorted refactorings
-
-- Issue #2786: Failure in CREATE TABLE AS leaves inconsistent transaction if some rows were successfully inserted
-
-- Issue #2790: Examples in documentation of CREATE ALIAS should use standard literals only
-
-- Issue #2787: CONCAT and CONCAT_WS functions
-
-- PR #2784: Oracle REGEXP_REPLACE support
-
-- Issue #2780: Remove SCOPE_GENERATED_KEYS setting
-
-- PR #2779: Fix incorrect FK restrictions and other changes
-
-- PR #2778: Assorted changes
-
-- Issue #2776: Referential constraint can create a unique constraint in the wrong schema
-
-- Issue #2771: Add documented DEFAULT ON NULL flag for all types of columns
-
-- Issue #2742 / PR #2768: Better separation of MVStore aimed at smaller h2-mvstore jar
-
-- Issue #2764: Identity columns don't accept large numbers
-
-- IDENTITY() function is removed, SCOPE_IDENTITY() is now available only in MSSQLServer compatibility mode.
-
-- Issue #2757: Intermittent TestFileSystem failures
-
-- Issue #2758: Issues with sequences
-
-- PR #2756: Prevent DROP NOT NULL for identity columns
-
-- Issue #2753: UPDATE statement changes value of GENERATED ALWAYS AS IDENTITY columns
-
-- PR #2751: Add comment explaining seemingly dummy operation
-
-- PR #2750: Use RFC 4122 compliant UUID comparison by default
-
-- PR #2748: PgServer set type text to NULL value
-
-- Issue #2746: Old TCP clients with current server
-
-- PR #2745: PgServer can send bool in binary mode
-
-- PR #2744: Remove jarSmall and jarClient targets
-
-- PR #2743: Add IS_TRIGGER_UPDATABLE and other similar fields to INFORMATION_SCHEMA
-
-- PR #2738: Fix VIEWS.VIEW_DEFINITION and support it for other databases in H2 Console
-
-- PR #2737: Assorted changes
-
-- PR #2734: Update dependencies and fix ResultSetMetaData.isSigned()
-
-- PR #2733: Replace h2.sortNullsHigh with DEFAULT_NULL_ORDERING setting
-
-- PR #2731: Fix spelling errors in German translation
-
-- PR #2728: Add and use DATA_TYPE_SQL() function and remove INFORMATION_SCHEMA.PARAMETERS.REMARKS
-
-- Issue #1015: ENUM and arithmetic operators
-
-- Issue #2711: Store normalized names of data types in metadata
-
-- PR #2722: Implement getRowCount() for some INFORMATION_SCHEMA tables
-
-- PR #2721: Improve LOCKS, SESSIONS, and USERS and optimize COUNT(*) on other isolation levels in some cases
-
-- Issue #2655: TestCrashAPI: AssertionError at MVPrimaryIndex.<init>
-
-- Issue #2716: Fix URL of Maven repository
-
-- Issue #2715: Mention `DB_CLOSE_DELAY=-1` flag in JDBC URL on the "Cheat Sheet" page
-
-- PR #2714: fixed few code smells discovered by PVS-Studio
-
-- Issue #2712: `NOT LIKE` to a sub-query doesn't work
-
-- PR #2710: PgServer: set oid and attnum in RowDescription
-
-- Issue #2254: Add standard DECFLOAT data type
-
-- PR #2708: Add declared data type attributes to the INFORMATION_SCHEMA
-
-- Issue #2706: Empty comments / remarks on objects
-
-- PR #2705: Return standard-compliant DATA_TYPE for strings
-
-- PR #2703: Fix case-insensitive comparison issues with national characters
-
-- Issue #2701: Subquery with FETCH should not accept global conditions
-
-- Issue #2699: Remove FUNCTIONS_IN_SCHEMA setting
-
-- Issue #452: Add possibility to use user-defined aggregate functions with schema
-
-- PR #2695: Refactor handling of parentheses in getSQL() methods
-
-- PR #2693: disallow VARCHAR_IGNORECASE in PostgreSQL mode
-
-- Issue #2407: Implement CHAR whitespace handling correctly
-
-- PR #2685: Check existing data in ALTER DOMAIN ADD CONSTRAINT
-
-- PR #2683: Fix data types in Transfer
-
-- PR #2681: Report user functions in standard ROUTINES and PARAMETERS views
-
-- PR #2680: Reimplement remaining DatabaseMetaData methods and fix precision of binary numeric types
-
-- PR #2679: Reimplement getTables(), getTableTypes(), and getColumns()
-
-- PR #2678: Reimplement getPrimaryKeys(), getBestRowIdentifier(), getIndexInfo() and others
-
-- PR #2675: Reimplement getImportedKeys(), getExportedKeys(), and getCrossReferences()
-
-- PR #2673: Reimplement some metadata methods
-
-- PR #2672: Forward DatabaseMetaData calls to server
-
-- Issue #2329: Content of INFORMATION_SCHEMA should be listed as VIEWS
-
-- PR #2668: Sequence generator data type option and length parameter for JSON data type
-
-- PR #2666: Add ALTER DOMAIN RENAME command
-
-- PR #2663: Add ALTER DOMAIN { SET | DROP } { DEFAULT | ON UPDATE }
-
-- PR #2661: Don't allow construction of incomplete ARRAY and ROW data types
-
-- Issue #2659: NULLIF with row values
-
-- PR #2658: Extract date-time and some other groups of functions into own classes
-
-- PR #2656: add `_int2` and `_int4` for PgServer
-
-- PR #2654: Move out JSON, cardinality, ABS, MOD, FLOOR, and CEIL functions from the Function class
-
-- PR #2653: Use full TypeInfo for conversions between PG and H2 data types
-
-- PR #2652: Add "SHOW ALL"
-
-- PR #2651: add `pg_type.typelem` and `pg_type.typdelim`
-
-- PR #2649: Extract some groups of functions from Function class
-
-- PR #2646: Add some PostgreSQL compatibility features
-
-- PR #2645: Add CURRENT_PATH, CURRENT_ROLE, SESSION_USER, and SYSTEM_USER
-
-- Issue #2643: Send PG_TYPE_TEXTARRAY values to ODBC drivers properly
-
-- PR #2642: Throw proper exceptions from array element reference and TRIM_ARRAY
-
-- PR #2640: German translations
-
-- Issue #2108: Add possible candidates in different case to table not found exception
-
-- Issue #2633: Multi-column UPDATE assignment needs to be reimplemented
+
- PR #3834: Increase database format version
-- PR #2635: Implement REGEXP_SUBSTR function
+
- PR #3833: Disallow plain webAdminPassword values to force usage of hashes
-- PR #2632: Improve ROW data type
+
- PR #3831: Add Oracle-style NOWAIT, WAIT n, and SKIP LOCKED to FOR UPDATE clause
-- PR #2630: fix: quoted VALUE in documentation
+
- PR #3830: Fix time zone of time/timestamp with time zone AT LOCAL
-- Issue #2628: Cached SQL throws JdbcSQLSyntaxErrorException if executed with different parameter values than before
+
- PR #3822 / Issue #2671: Add quantified comparison predicates with array
-- Issue #2611: Add quantified distinct predicate
+
- PR #3820: Add partial implementation of JSON simplified accessor
-- Issue #2620: LOBs in triggers
+
- PR #3818: Add support of underscores in numeric literals
-- PR #2619: ARRAY_MAX_CARDINALITY and TRIM_ARRAY functions
+
- PR #3817: Add ANY_VALUE() aggregate function
-- PR #2617: Add Feature F262: Extended CASE expression
+
- PR #3814: Fix regression in comparisons with infinities and NaNs
-- PR #2615: Add feature T461: Symmetric BETWEEN predicate
+
- Issue #3040: System objectIds are recycled twice when CTE queries are executed.
-- PR #2614: Fix support of multi-dimensional arrays in Java functions
+
- PR #3812: UNIQUE null treatment
-- Issue #2608: Improve concatenation operation for multiple operands
+
- PR #3811: BTRIM function, octal and binary literals and other changes
-- PR #2605: Assorted minor changes
+
- Issue #352: In comparison text values are converted to INT even when they should be converted to BIGINT
-- Issue #2602: H2 doesn't allow to create trigger from Java source code if there are nested classes
+
- PR #3797: MSSQL mode: Discard table hints on plain UPDATE statements
-- PR #2601: Add field SLEEP_SINCE to INFORMATION_SCHEMA.SESSIONS table
+
- PR #3791: Formatted cast of datetimes to/from character strings
-- Issue #1973: Standard MERGE statement doesn't work with views
+
- Issue #3785: CSVRead: Fails to translate empty Numbers, when cells are quoted
-- Issue #2552: MERGE statement should process each row only once
+
- Issue #3762: Comparison predicates with row values don't create index conditions
-- Issue #2548: Wrong update count when MERGE statement visits matched rows more than once
+
- PR #3761: LAST_DAY function and other changes
-- Issue #2394: H2 does not accept DCL after source merge table
+
- Issue #3705: Oracle DATE type: milliseconds (second fractions) rounded in H2 but truncated in Oracle (fixed in SYSDATE only)
-- Issue #2196: Standard MERGE statement doesn't release the source view
+
- Issue #3642: AssertionError in mvstore.FileStore.serializeAndStore
-- Issue #2567: ARRAY-returning Java functions don't return the proper data type
+
- Issue #3675: H2 2.x cannot read PostgreSQL-style sequence generator start with option without WITH keyword
-- Issue #2584: Regression in NULL handling in multiple AND or OR conditions
+
- Issue #3757: FORMATDATETIME function doesn't handle time with time zone properly
-- PR #2577: PgServer: `array_to_string()` and `set join_collapse_limit`
+
- PR #3756: Limit the row list allocation based on the row count
-- PR #2568: Add BIT_XOR_AGG aggregate function
+
- PR #3753: Add missing NEWSEQUENTIALID function in MSSQLServer mode
-- PR #2565: Assorted minor changes
+
- Issue #3730: FILE_READ from JAR filesystem on classpath results in file of length 0
-- PR #2563: defrag is not contributing much, remove from test run
+
- PR #3749: Fix min/max description for sequences
-- PR #2562: new exception MVStoreException
+
- PR #3739: Fix count(*) for linked table to Oracle
-- PR #2557: don't throw IllegalStateException in checkOpen
+
- Issue #3731: Division result exceeds numeric precision constraint
-- PR #2554: Reenable mvstore TestCrashAPI
+
- PR #3718: Add test coverage for JDK 17
-- Issue #2556: TestOutOfMemory: Table "STUFF" not found
+
- Issue #3580: TestCrashAPI: NPE in ParserUtil.getTokenType() (called by Parser.readIfDataType1())
-- PR #2555: Move current datetime value functions into own class
+
- PR #3709: Update copyright years and fix building of documentation
-- PR #2547: split up the ValueLob classes
+
- Issue #3701: CLOBs can cause ClassCastExceptions
-- PR #2542: Pipelining mvstore chunk creation / save
+
- Issue #3698: MySQL mode show columns from table, if modificationMetaId changed between prepared and execute.
+Then error occurred.
-- Issue #2550: NullPointerException with MERGE containing unknown column in AND condition of WHEN
+
- PR #3699: Upgrade to the latest OSGi JDBC specification
-- Issue #2546: Disallow empty CASE specifications and END CASE
+
- Issue #3659: User-defined variable "sticky" if used in view with join
-- Issue #2530: Long query with many AND expressions causes StackOverflowError
+
- Issue #3693: Wrong result when intersecting unnested arrays
-- PR #2543: Improve case specification support and fix some issues with it
+
- PR #3691: GitHub Workflows security hardening
-- Issue #2539: Replace non-standard functions with standard code directly in Parser
+
- PR #3688: Construct FormatTokenEnum.TOKENS during class initialization
-- Issue #2521: Disallow untyped arrays
+
- Issue #3682: MVStoreException at accountForRemovedPage
-- Issue #2532: Duplicate column names in derived table should be acceptable in the presence of a derived column list
-that removes ambiguities
+
- Issue #3664: [2.1.214] NullPointerException in org.h2.command.query.Select.queryDistinct
-- PR #2527: Feature: allow @ meta commands from Console
+
- PR #3650: fix version number in the archives html table
-- PR #2526: Reduce I/O during database presence check and restrict some compatibility settings to their modes
+
- PR #3649: Basic implementation of materialized view
-- PR #2525: Restore support of third-party drivers in the Shell tool
+
- Issue #3646: org.h2.mvstore.MVStoreException: Chunk metadata too long
-- Issue #1710: getHigherType() returns incorrect type for some arguments
+
- Issue #3645: The BITCOUNT function incorrectly counts BINARY/VARBINARY values of >=16 bytes.
-- PR #2516: SHUTDOWN IMMEDIATELY should be a normal shut down
+
- Issue #3637: DB content massacred when opening a 2.1.214 DB with current master
-- PR #2515: Fix nested comments in ScriptReader
+
- Issue #3636: "This store is closed" after two-phase commit
-- Issue #2511: Restrict Oracle compatibility functions to Oracle compatibility mode
+
- PR #3639: Add random_uuid() alias to be compatible with postgres
-- PR #2508: Minor refactoring around Tx isolation level
+
- Issue #3640: SOUNDEX function should not be case-sensitive
-- PR #2505: Assorted changes in DATEADD, DATEDIFF, DATE_TRUNC, and EXTRACT
+
- Issue #3633: Memory leak in case of in-memory database
-- Issue #2502: Combination of DML with data change delta table skips subsequent update
+
- PR #3629 Better separation between MVStore and FileStore
-- PR #2499: Performance fix for PageStore under concurrent load
+
- PR #3626: Improve memory estimation of CacheLongKeyLIRS and correct some passed memory sizes
-- PR #2498: Add some PostgreSQL compatibility features mentioned in issue #2450
+
- Issue #3619: PostgreSQL mode: STRING_AGG with prepared statement parameter not working
-- Issue #2496: Error when using empty JSON_OBJECT() or JSON_ARRAY() functions
+
- Issue #3615: H2 Console connecting to Oracle DB will not show the list of tables
-- PR #2495: Fix JSON_OBJECT grammar in documentation
+
- PR #3613: Fix infinite loop in Tokenizer when special whitespace character is used
-- Issue #2493 / PR #2494: Replace ColumnNamer with mode-specific generation of column names for views
+
- Issue #3606: Support for GraalVMs native-image
-- PR #2492: Assorted changes in parser, keywords, and ILIKE condition
+
- Issue #3607: [MySQL] UNIX_TIMESTAMP should return NULL
-- PR #2490: Replace pg_catalog.sql with PgCatalogTable and use DATABASE_TO_LOWER in PG Server
+
- Issue #3604: Improper FROM_1X implementation corrupts some BLOBs during migration
-- Issue #2488 / PR #2489: Mark version functions as not deterministic
+
- Issue #3597: Support array element assignments in UPDATE statements
-- Issue #2481: Convert TO to keyword
+
- Issue #3599: [2.1.214][MariaDB] DELETE query failure
-- PR #2476: Add some PostgreSQL compatibility features mentioned in issue #2450
+
- Issue #3600: NPE in MVTable.lock(), version 2.1.214
-- PR #2479: Recognize absolute path on Windows without drive letter
+
- Issue #3601: InvalidPathException when saving lock file
-- Issue #2475: Select order by clause is exported with non-portable SQL
+
- Issue #3583: lob cleaner issue
-- Issue #2472: Updating column to empty string in Oracle mode with prepared statement does not result in null
+
- Issue #3585: Misuse ValueReal.DECIMAL_PRECISION when optimize typeinfo from DOUBLE to DECFLOAT
-- PR #2468: MVStore scalability improvements
+
- Issue #3575: Possible syntax mismatch for json_object in MySQL compatibility mode
-- PR #2466: Add partial support for MySQL COLLATE and CHARACTER statements
+
- PR #3577: Add support of TINYINT and DECFLOAT to TO_CHAR
-- Issue #2464: `client_encoding='utf-8'` (single quoted) from `node-postgres` not recognized
+
- Issue #3567: No AUTO_INCREMENT in DatabaseMetaData.getTypeInfo()
-- Issue #2461: Support for binary_float and binary_double type aliases
+
- PR #3555: Add missing check for -webExternalNames flag
-- Issue #2460: Exception when accessing empty arrays
+
- Issue #3543: PostgreSQL mode, update with "from", why "NULL not allowed" error?
-- Issue #2318: Remove incorrect rows from DatabaseMetaData.getTypeInfo() and INFORMATION_SCHEMA.TYPE_INFO
-
-- Issue #2455: `bytea` column incorrectly read by `psycopg2`
-
-- PR #2456: Add standard array value constructor by query
-
-- PR #2451: Add some PostgreSQL compatibility features mentioned in issue #2450
-
-- Issue #2448: Change default data type name from DOUBLE to DOUBLE PRECISION
-
-- PR #2452: Do not use unsafe and unnecessary FROM DUAL internally
-
-- PR #2449: Add support for standard trigraphs
-
-- Issue #2439: StringIndexOutOfBoundsException when using TO_CHAR
-
-- Issue #2444: WHEN NOT MATCHED THEN INSERT should accept only one row
-
-- Issue #2434: Next value expression should return the same value within a processed row
-
-- PR #2437: Assorted changes in MVStore
-
-- Issue #2430: Postgres `bytea` column should be read with and without `forceBinary`
-
-- Issue #2267: BINARY and VARBINARY should be different
-
-- Issue #2266: CHAR and BINARY should have length 1 by default
-
-- PR #2426: Add MD5 and all SHA-1, SHA-2, and SHA-3 digests to the HASH() function
-
-- Issue #2424: 0 should not be accepted as a length of data type
-
-- Issue #2378: JAVA_OBJECT and TableLink
-
-- Issue #2417: Casts between binary strings and non-string data types
-
-- Issue #2416: OTHER and JAVA_OBJECT
-
-- Issue #2379: SQL export can change data type of a constant
-
-- Issue #2411: ArrayIndexOutOfBoundsException when HAVING and duplicate columns in SELECT
-
-- Issue #2194: Add own enumeration of data types to API
-
-- PR #2408: Descending MVMap and TransactionMap cursor
-
-- Issue #2399: Cast to ARRAY with a nested ARRAY does not check the maximum cardinality of the nested ARRAY
-
-- Issue #2402: Remove old ValueLob and DbUpgrade
-
-- Issue #2400: Inconsistent data type conversion between strings and LOBs
-
-- PR #2398: Add expandable flags for SQL generation methods
-
-- PR #2395: Fix for two recent page format bugs
-
-- PR #2386: Chunk occupancy mask
-
-- PR #2385: Memory estimate
-
-- PR #2381: Follow up REPEATABLE_READ-related changes
-
-- PR #2380: use JIRA tracker URLs for JDK bugs
-
-- PR #2376: Fix IN condition with row value expressions in its right side
-
-- Issue #2367 / PR #2370: fix backward compatibility with 1.4.200
-
-- Issue #2371: REPEATABLE READ isolation level does not work in MVStore
-
-- Issue #2363: Soft links in -baseDir and database path cause error 90028
-
-- Issue #2364: TestScript datatypes/timestamp-with-time-zone.sql fails if TZ=Europe/Berlin
-
-- Issue #2359: Complete implementation of generated columns
-
-- PR #2361: Fix unused result
-
-- PR #2353: Push binary search operation from Page to DataType
-
-- Issue #2348: Add USING clause to ALTER COLUMN CHANGE DATA TYPE
-
-- Issue #2350: License Problem in POM
-
-- Issue #2345: Add standard SET TIME ZONE command to set current time zone of the session
-
-- PR #2341: Cleanup file backend sync
-
-- Issue #2343: Domain-based domains: Domain not found after reconnection
-
-- Issue #2338: Domains should not support NULL constraints
-
-- Issue #2334: build target mavenInstallLocal broken since commit 7cbbd55e
-
-- #2335: TestDateTimeUtils fails if system timezone has DST in the future
-
-- Issue #2330: Syntax error with parenthesized expression in GROUP BY clause
-
-- Issue #2256: <interval value expression> with datetime subtraction
-
-- Issue #2325: H2 does not parse nested bracketed comments correctly
-
-- Issue #466: Confusion about INFORMATION_SCHEMA content related to UNIQUE constraints
-
-- PR #2323: Assorted changes
-
-- Issue #2320: Remove SAMPLE_SIZE clause from SELECT
-
-- Issue #2301: Add compatibility setting to accept some keywords as identifiers
-
-- PR #2317: Replace CHECK_COLUMN_USAGE with CONSTRAINT_COLUMN_USAGE and other changes
-
-- Issue #2315: Sequence must remember its original START WITH value
-
-- Issue #2313: DISTINCT does not work in ordered aggregate functions
-
-- PR #2306: Add support for RESTART of sequence without initial value
-
-- Issue #2304: NPE in multiple define commands in one statement after upgrade from H2 4.1.197
-
-- PR #2303: Assorted minor changes
-
-- Issue #2286: Inline check constraints not in INFORMATION_SCHEMA
-
-- PR #2300: Continue generification of MVStore codebase
-
-- PR #2298: add some minimal security documentation
-
-- PR #2292: synchronize fileBase subclasses use of position
-
-- PR #2238: Some MVStore refactoring
-
-- Issue #2288: ConcurrentModificationException during commit
-
-- Issue #2293: Remove TestClearReferences and workarounds for old versions of Apache Tomcat
-
-- Issue #2288: ConcurrentModificationException during commit
-
-- PR #2284: Remove unrelated information from README and add some information about H2
-
-- PR #2282: add PostgreSQL compatible variable STATEMENT_TIMEOUT
-
-- PR #2280: little comment
-
-- Issue #2205: H2 1.4.200 split FS issue
-
-- Issue #2272: UpdatableView and obtaining the Generated Keys
-
-- PR #2276: Split up filesystem classes
-
-- PR #2275: improve detection of JAVA_HOME on Mac OS
-
-- Issue #2268: Numeric division needs better algorithm for scale selection
-
-- Issue #2270: IGNORE_UNKNOWN_SETTINGS is ignored
-
-- PR #2269: Fix existence check of non-persistent databases
-
-- Issue #1910: BinaryOperation should evaluate precision and scale properly
-
-- PR #2264: Clean up redundant parts of file system abstraction
-
-- PR #2262: add setting AUTO_COMPACT_FILL_RATE
-
-- Issue #2255 / PR #2259: Use NIO2 in main sources and build
-
-- PR #2257: Catch java.lang.NoClassDefFoundError
-
-- Issue #2241: Mark H2-specific and compatibility only clauses in documentation
-
-- PR #2246: Update third-party drivers
-
-- Issue #2239 / PR #2236: Add NETWORK_TIMEOUT setting for SO_TIMEOUT
-
-- PR #2235: Don't use RandomAccessFile in FilePathNio
-
-- Issue #2233: "Prepared.getObjectId() was called before" when granting on multiple tables
-
-- PR #2230: Add factory methods for Row
-
-- Issue #2226, PR #2227: Remove support of Apache Ignite
-
-- PR #2224: Update some hyperlinks and use https in them where possible
-
-- PR #2223: Fix data change delta tables in views
-
-- Issue #1943: Deadlock in TestTriggersConstraints
-
-- PR #2219: do not retry failed DDL commands
-
-- PR #2214: Fix TRACE_LEVEL_FILE=4 for in-memory databases
-
-- PR #2216: Add FileChannel.lock in the connection URL summary
-
-- PR #2215: Add white-space: pre to tables with query results
-
-- Issue #2213: NUMERIC scale can be larger than a precision
-
-- PR #2212: Get rid of multi-version CurrentTimestamp and fix negative scale of NUMERIC
-
-- PR #2210: Meta table extras
-
-- PR #2209: Add standard expressions with interval qualifier
-
-- PR #2195: Feature abort_session function
-
-- PR #2201: Add padding to negative years and other changes
-
-- PR #2197: Add some additional methods from JDBC 4.2 and return 4.2 as supported version
-
-- PR #2193: Require Java 8 and remove Java 7 support
-
-- Issue #2191: NPE with H2 v1.4.200 repeatable read select queries
-
-- Issue #1390: Add standard-compliant ARRAY data type syntax
-
-- PR #2186: Refactor Parser.parseColumnWithType() and fix some minor issues with CAST
-
-- Issue #2181: SET EXCLUSIVE quirks
-
-- PR #2173: Move snapshots from Transaction to TransactionMap
-
-- Issue #2175: Regression: NPE in ResultSet#getTime(int)
-
-- Issue #2171: Wrong PostgreSQL compatibility syntax for the creation of indexes
-
-- PR #2169: Clean up some find methods of indexes and fix minor issues with them
+
- PR #3542: Fix failed to delete a readonly file on Windows file systems
-Version 1.4.200 (2019-10-14)
+Version 2.1.214 (2022-06-13)
-- PR #2168: Add non-standard SNAPSHOT isolation level to MVStore databases
-
-- Issue #2165: Problem with secondary index on SERIALIZABLE isolation level
-
-- Issue #2161: Remove undocumented PageStore-only FILE_LOCK=SERIALIZED
-
-- PR #2155: Reduce code duplication
-
-- Issue #1894: Confusing error message when database creation is disallowed
-
-- Issue #2123: Random failures in TestTransactionStore
-
-- Issue #2153: Different behavior in SET LOCK_TIMEOUT after 1.4.197
-
-- Issue #2150: Remove MULTI_THREADED setting and use multi-threaded MVStore and single-threaded PageStore backends
-
-- Issue #216: Support READ UNCOMMITTED isolation level in MVStore mode
-
-- Issue #678: Support REPEATABLE READ isolation level in MVStore mode
-
-- Issue #174: Support SERIALIZABLE isolation level in MVStore mode
-
-- Issue #2144: MVStore: read uncommitted doesn't see committed rows
-
-- Issue #2142: CURRVAL / CURRENT VALUE FOR should return the value for the current session
-
-- Issue #2136: ConstraintCheck concurrency regression
+
- Issue #3538: In Postgres compatibility mode the NUMERIC type w/o scale should not default to 0
-- PR #2137: Don't use SYSTEM_RANGE for SELECT without a FROM
+
- Issue #3534: Subquery has incorrect empty parameters since 2.1.210 that breaks sameResultAsLast()
-- PR #2134: Assorted fixes and other changes in DateTimeUtils
+
- Issue #3390: "ROW" cannot be set as a non keyword in 2.x
-- PR #2133: Optimize COUNT([ALL] constant) and other changes
+
- Issue #3448: With linked table to postgreSQL, case-sensitive column names not respected in where part
-- PR #2132: Typo and another bug in MVStore.readStoreHeader()
+
- Issue #3434: JavaTableFunction is not closing underlying ResultSet when reading column list
-- Issue #2130: Group-sorted query returns invalid results with duplicate grouped columns in select list
+
- Issue #3468: Invalid DB format exception (for 1.x DB in 2.x h2) should have a specific SQLException vendorCode
-- Issue #2120: Add IF EXISTS clause to column name in ALTER TABLE ALTER COLUMN statement
+
- Issue #3528: Weird syntax error with HAVING clause in Oracle Mode
-- Issue #521: Add support for the TIME WITH TIME ZONE data type
+
- Issue #3307: Fix SHUTDOWN DEFRAG for encrypted databases
-- PR #2127: Fix race condition / performance issue during snapshotting
+
- Issue #3515: Support for NEXTVAL property in DB2 mode
-- Issue #2124: MVStore build is broken
+
- Issue #3444: Conversion 'text' to 'integer' doesn't work anymore
-- PR #2122: Add support for LMT in time zones and fix large years in datetime values
+
- Issue #3493: org.h2.tools.DeleteDbFiles won't delete files under certain circumstances
-- Issue #2067: Incorrect chunk space allocation during chunks movement
+
- Issue #3486: FilePathDisk.newDirectoryStream() may fail on remote drive on Windows due to AccessDeniedException in Path.toRealPath()
-- PR #2066: Not so happy path - "four alternatives" implementation
+
- Issue #3484: LOB issue
-- PR #2121: Reduce code duplication for datetime API with custom Calendar instances
-
-- PR #2119: SQL: statement read consistency
-
-- Issue #2116: Empty IN() operator should result in error (MSSQL)
-
-- Issue #2036: CAST from TIME to TIMESTAMP returns incorrect result
-
-- PR #2114: Assorted changes
-
-- PR #2113: Add feature F411: Time zone specification
-
-- PR #2111: CURRENT_CATALOG, SET CATALOG and other changes
-
-- Issue #2109: IW date formatting does not produce proper output
-
-- PR #2104: Fix ordinary grouping set with parentheses and empty grouping set in GROUP BY
-
-- Issue #2103: Add QUOTE_IDENT() function to enquote an identifier in SQL
-
-- Issue #2075: Add EXECUTE IMMEDIATE implementation
-
-- PR #2101: Fix infinite loop in Schema.removeChildrenAndResources()
-
-- Issue #2096: Convert LEFT and RIGHT to keywords and disallow comma before closing parenthesis
-
-- PR #2098: Fix typos
-
-- Issue #1305 / PR #2097: Remove unused and outdated website translation infrastructure
-
-- PR #2093: CURRENT VALUE FOR and other sequence-related changes
-
-- PR #2092: Allow to simulate usage of multiple catalogs by one connection
-
-- PR #2091: Oracle mode now uses DECIMAL with NEXTVAL
-
-- Issue #2088: Division by zero caused by evaluation of global conditions before local conditions
-
-- Issue #2086: TCP_QUICKACK on server socket
-
-- Issue #2073: TableLink should not pass queries to DatabaseMetaData.getColumns()
-
-- Issue #2074: MySQL and MSSQLServer Mode: TRUNCATE TABLE should always RESTART IDENTITY
-
-- Issue #2063: MySQL mode: "drop foreign key if exists" support
-
-- PR #2061: Use VirtualTable as a base class for RangeTable
-
-- PR #2059: Parse IN predicate with multiple subqueries correctly
-
-- PR #2057: Fix TestCrashAPI failure with Statement.enquoteIdentifier()
-
-- PR #2056: Happy path: speed up database opening
-
-- Issue #2051: The website shows outdated information about the storage engine
-
-- PR #2049: bugfix - mvstore data lost issue when partial write occurs
-
-- PR #2047: File maintenance
-
-- PR #2046: Recovery mode
-
-- Issue #2044: setTransactionIsolation always call commit() even if transaction is auto-commit
-
-- Issue #2042: Add possibility to specify generated columns for query in web console
-
-- Issue #2040: INFORMATION_SCHEMA.SETTINGS contains irrelevant settings
-
-- PR #2038: MVMap: lock reduction on updates
-
-- PR #2037: Fix SYS_GUID, RAWTOHEX, and HEXTORAW in Oracle mode
-
-- Issue #2016: ExpressionColumn.mapColumns() performance complexity is quadratic
-
-- Issue #2028: Sporadic inconsistent state after concurrent UPDATE in 1.4.199
-
-- PR #2033: Assorted changes
-
-- Issue #2025: Incorrect query result when (OFFSET + FETCH) > Integer.MAX_VALUE
-
-- PR #2023: traverseDown() code deduplication
-
-- PR #2022: Mvmap minor cleanup
-
-- Issue #2020: Wrong implementation of IN predicate with subquery
-
-- PR #2003: Change dead chunks determination algorithm
-
-- Issue #2013: DECIMAL is casted to double in ROUND function
-
-- PR #2011: ZonedDateTime and (INTERVAL / INTERVAL)
-
-- Issue #1997: TestRandomSQL failure with ClassCastException
-
-- Issue #2007: PostgreSQL compatibility mode: support ON CONFLICT DO NOTHING
-
-- Issue #1927: Do not allow commit() when auto-commit is enabled
-
-- PR #1998: Reduce TxCounter memory footprint
-
-- PR #1999: Make RootReference lock re-entrant
-
-- PR #2001: Test improvements, OOME elimination
-
-- Issue #1995: Obscure condition in MVPrimaryIndex.extractPKFromRow()
-
-- Issue #1975: Add client ip address to information_schema
-
-- PR #1982: Hindi language translation added
-
-- Issue #1985: Add thread number to TCP server thread names
-
-- Do not allow empty password for management DB
-
-- Issue #1978: getGeneratedKeys() can use the same rules as FINAL TABLE
-
-- PR #1977: Change JSON literals and add support for compound character literals
-
-- PR #1974: Use proleptic Gregorian calendar for datetime values
-
-- Issue #1847: Add support for data change delta tables
-
-- PR #1971: Add maximum cardinality parameter to ARRAY data type
-
-- PR #1970: Switch from log map rename to "committed" marker log record
-
-- PR #1969: Add unique predicate
-
-- Issue #1963: Expression.addFilterConditions() with outer joins
-
-- PR #1966: Add standard CURRENT_SCHEMA function
-
-- PR #1964: Add Feature T571: Truth value tests
-
-- PR #1962: Fix data types of optimized conditions
-
-- PR #1961: Failure to open DB after improper shutdown
-
-- Issue #1957: NullPointerException with DISTINCT and ORDER BY CASE
-
-- PR #1956: Fix row value handling in the null predicate
-
-- PR #1955: Add standard UNKNOWN literal
-
-- Issue #1952: Connection.setSchema doesn't work with query cache
-
-- PR #1951: Assorted changes
-
-- PR #1950: Fix NULL handling in ARRAY_AGG
-
-- PR #1949: Extract aggregate and window functions into own pages in documentation
-
-- PR #1948: Add standard LOG() function with two arguments
-
-- Issue #1935: Improve file locking on shared filesystems like SMB
-
-- PR #1946: Reimplement table value constructor on top of Query
-
-- PR #1945: Fix IN (SELECT UNION with OFFSET/FETCH)
-
-- Issue #1942: MySQL Mode: convertInsertNullToZero should be turned off by default?
-
-- Issue #1940: MySQL Mode: Modify column from NOT NULL to NULL syntax
-
-- PR #1941: Extract OFFSET / FETCH handling from Select and SelectUnion to Query
-
-- Issue #1938: Regression with CREATE OR REPLACE VIEW. Causes "Duplicate column name" exception.
-
-- PR #1937: Get rid of FunctionCursorResultSet
-
-- Issue #1932: Incoherence between DbSettings.mvStore and getSettings()
-
-- PR #1931: Fix wildcard expansion for multiple schemas
-
-- PR #1930: Move PageStore table engine into own package
+
+
+Version 2.1.212 (2022-04-09)
+
+- Issue #3512: BITNOT(BIT_NAND_AGG(...) OVER ()) produces wrong result
-- PR #1929: Initial implementation of type predicate and other changes
+
- Issue #3510: PreparedStatement execution with java.io.tmpdir pointing to a directory symlink results in FileAlreadyExistsException
-- PR #1926: Assorted improvements for BINARY data type
+
- PR #3504: Fix TypeInfo.getHigherGeometry() for types with and without SRID
-- Issue #1925: Support SQL Server binary literal syntax
+
- PR #3481: Add support for standard interval literals with precision
-- Issue #1918: MySQL: CREATE TABLE with both CHARSET and COMMENT failed
+
- Issue #3471: Possibility of corruption after SHUTDOWN DEFRAG
-- Issue #1913: MySQL: auto_increment changing SQL not supported
+
- Issue #3473: DROP TABLE/INDEX causes memory leak
-- Issue #1585: The translate function on DB2 mode could have parameters order changed
+
- PR #3464 / Issue #3457: increase max length of VAR* types
-- PR #1914: Change storage and network format of JSON to byte[]
+
- PR #3460: fix bug in readStoreHeader()
-- Issue #1911: Foreign key constraint does not prevent table being dropped
+
- PR #3458: Add performance tests for SQLite
-- PR #1909: Add JSON_OBJECTAGG and JSON_ARRAYAGG aggregate functions
+
- Issue #1808: Occasional NPE in concurrent update of LOB
-- PR #1908: Cast VARCHAR to JSON properly and require FORMAT JSON in literals
+
- Issue #3439: Cannot use enum values in JSON without explicit casts
-- PR #1906: Add JSON_OBJECT and JSON_ARRAY functions
+
- Issue #3426: Regression: BIT(1) is not accepted in MySQL compatibility mode
-- Issue #1887: Infinite recursion in ConditionAndOr.java
+
- PR #3422: Allow combination of any geometry types with the same SRID
-- Issue #1903: MSSQLServer Mode - Support Update TOP(X)
+
- Issue #3414: H2 2.1.210: Query with Parameters throws NPE
-- Issue #1900: Support SQLServer stored procedure execution syntax
+
- Issue #3413: Parser can't parse REFERENCES … NOT NULL
-- PR #1898: Add IS JSON predicate
+
- Issue #3410: OOME with nested derived tables
-- Issue #1896: MSSQLServer compatibility mode - GETDATE() incorrectly omits time
+
- Issue #3405: Enhance SCRIPT to support operations on STDOUT
-- PR #1895: Add standard array concatenation operation
+
- Issue #3406 / PR #3407: FunctionMultiReturn.polar2CartesianArray result set iteration throws ClassCastException
-- Issue #1892: Window aggregate functions return incorrect result without window ordering and with ROWS unit
+
- Issue #3400: Regression: ORDER BY ROWNUM fails with General error: "Unexpected code path"
-- Issue #1890: ArrayIndexOutOfBoundsException in MVSortedTempResult.getKey
+
- Issue #3387: SYSDATE behavior changed in 2.x
-- Issue #308: Mode MySQL and LAST_INSERT_ID with argument
+
- Issue #3394: SYSDATE Considered Identifier when used in inner select
-- Issue #1883: Suspicious code in Session.getLocks()
+
- Issue #3391: Hang on merge statement with data change delta table
-- Issue #1878: OPTIMIZE_REUSE_RESULTS causes incorrect result after rollback since 1.4.198
+
- PR #3384: Remove abandoned Java to C converter and fix some warnings from Sonatype Lift
-- PR #1880: Collation names like CHARSET_* recognition
+
- PR #3382: Use secure parser in H2AuthConfigXml to avoid future reports
-- Issue #1844: MySQL Compatibility: create table error when primary key has comment
+
+
+Version 2.1.210 (2022-01-17)
+
+- PR #3381: Add IDENTITY() and SCOPE_IDENTITY() to LEGACY mode
-- PR #1873: Concurrency in database metadata
+
- Issue #3376: Data cannot be read after insert of clob data > MAX_LENGTH_INPLACE_LOB with data change delta table
-- Issue #1864: Failing to format NotSerializableException corrupting the database
+
- PR #3377: Add -webExternalNames setting and fix WebServer.getConnection()
-- PR #1868: add more checking to TestFileLock
+
- PR #3367: Use faster checks of dimension systems of geometries
-- Issue #1819: Trace.db file exceed file size limit (64MB)
+
- PR #3369: Added v2 changes in migration docs
-- Issue #1861: Use COALESCE in named columns join for some data types
+
- Issue #3361: MemoryEstimator.estimateMemory() can return negative size
-- PR #1860: Additional fix for deadlock on shutdown (exclusively in PageStore mode)
+
- PR #3362: Use BufferedReader instead of BufferedInputStream to avoid Illegal seek exception
-- Issue #1855: Wrong qualified asterisked projections in named column join
+
- Issue #3353: Wrong rownum() scope for DML with change delta table
-- Issue #1854: Wrong asterisked projection and result in named column right outer join
+
- PR #3352: make Javadoc happier
-- Issue #1852: Named column joins doesn't work with the VALUES constructor and derived column lists
+
- Issue #3344: Changelog could link to github issue
-- Issue #1851: Wrong asterisked projection in named column joins
+
- Issue #3340: JDBC index type seems wrong
-- PR #1850: Duplicate map identifiers
+
- Issue #3336: FT_INIT error when mode=MySQL
-- PR #1849: Reimplement MVStore.findOldChunks() with PriorityQueue
+
- Issue #3334: Regression with CREATE ALIAS - Parameter "#2" is not set
-- PR #1848: Reimplement MVStore.findChunksToMove() with PriorityQueue
+
- Issue #3321: Insert Primary Key after import CSV Data does not work
-- Issue #1843: Named columns join syntax is not supported
+
- PR #3323: Tokenize SQL before parsing and preserve tokens for recompilation
-- Issue #1841: Deadlock during concurrent shutdown attempts with 1.4.199
+
- PR #3320: Add Servlet 5-compatible servlet for H2 Console
-- Issue #1834: NUMERIC does not preserve its scale for some values
+
- Issue #918: Parser fails recognising set operations in correlated subqueries
-- PR #1838: Implement conversion from JSON to GEOMETRY
+
- Issue #2050: PostgreSQL with recursive fail with union in the final query
-- PR #1837: Implement conversion from GEOMETRY to JSON
+
- PR #3316: Update copyright years
-- PR #1836: Add LSHIFT and RSHIFT function
+
- PR #3315: Never put read locks into lockSharedSessions and other minor changes
-- PR #1833: Add BITNOT function
+
- Issue #492: H2 does not correctly parse <parenthesized joined table>
-- PR #1832: JSON validation and normalization
+
- Issue #3311: Parser creates wrong join graph in some cases and uses wrong tables for column mapping
-- PR #1829: MVStore chunks occupancy rate calculation fixes
+
- FORCE_JOIN_ORDER setting is removed
-- PR #1828: Basis for implementation of SQL/JSON standard
+
- Issue #1983: Official build script is not compatible with Java 13
-- PR #1827: Add support for Lucene 8.0.0
+
- PR #3305: Add UNIQUE(VALUE) and remove some non-standard keywords
-- Issue #1820: Performance problem on commit
+
- PR #3299: Remove useless StringBuilder.toString() call
-- Issue #1822: Use https:// in h2database.com hyperlinks
+
- PR #3298: Delete unused sqlTypes array
-- PR #1817: Assorted minor changes in documentation and other places
+
+
+Version 2.0.206 (2022-01-04)
+
+- Issue #3322: Create linked table fails when the table contains a Geometry with a data type specified
-- PR #1812: An IllegalStateException that wraps EOFException is thrown when partial writes happens
+
- Issue #3297: Unexpected GROUP BY results with indexed IGNORECASE column
-Version 1.4.199 (2019-03-13)
+Version 2.0.204 (2021-12-21)
-- PR #1807: Reduce code duplication and remove h2.mixedGeometries
-
-- PR #1806: Improve SELECT FOR UPDATE documentation
+
- Issue #3291: Add Legacy and Strict modes
-- PR #1804: Lift limit of 10 characters on enum value (1.4.198 regression)
+
- Issue #3287: SELECT statement works on 1.4.200 but fails on 2.0.202 with "Column XYZ must be in the GROUP BY list"
-- PR #1803: Do not rely on index sorting in SELECT FOR UPDATE
+
- PR #3284: Remove unused UNDO_LOG setting
-- Issue #1800: Remove experimental status from window functions
+
- Issue #3251: Table with GEOMETRY column can't have a TriggerAdapter-based trigger any more
-- PR #1799: Fire triggers after row locking and remove some leftovers
+
- PR #3281: DateTimeFormatter-based FORMATDATETIME and PARSEDATETIME and other changes
-- PR #1798: Reuse some string builders, remove StatementBuilder and other minor changes
+
- Issue #3246: Spatial predicates with comparison are broken in MySQL compatibility mode
-- Issue #1795: 1.4.198 regression with batch updates and transactions
+
- Issue #3270: org.h2.jdbc.JdbcSQLFeatureNotSupportedException: Feature not supported: "Unsafe comparison or cast"
-- PR #1794: Ask password in Shell in secure way and improve database creation information in tutorial
+
- Issue #3268 / PR #3275: Add TO_DATE and TO_TIMESTAMP to PostgreSQL compatibility mode
-- PR #1791: Move commands to commands.html and other changes
+
- PR #3274: Remove some dead code and unused params
-- Issue #1774: H2 Browser configuration is unclear and fails on KUbuntu
+
- Issue #3266: Oracle compatibility NUMBER without precision and scale should have variable scale
-- PR #1790: Do not convert standard TRIM function to non-standard functions
+
- Issue #3263: Unable to store BigDecimal with negative scale in NUMERIC(19,6) column
-- Issue #1787: Non-standard MERGE throws LOCK_TIMEOUT_1 on violation of some constraints
+
- PR #3261: Small optimization for MIN and MAX
-- PR #1784: improve database not found error
+
- Issue #3258 / PR #3259: Prevent incorrect optimization of COUNT(*) and other changes
-- Issue #1740: Enhancement Request: h2 server: do not swallow exceptions
+
- PR #3255: Throw proper exception when type of argument isn't known
-- Issue #1616: Metadata and scripts should be persisted with unconditionally quoted identifiers
+
- Issue #3249: Multi-column assignment with subquery throws exception when subquery doesn't return any rows
-- PR #1779: Improve isSimpleIdentifier() and enquoteIdentifier()
+
- PR #3248: Remove redundant uniqueness check, correct version in pom
-- PR #1776: Improve DATABASE_TO_LOWER handling
+
- PR #3247: Avoid AIOBE exception in TestCrashAPI and in Transaction
-- Issue #1771: NPE in Comparison.createIndexConditions
+
- Issue #3241: ResultSetMetaData::getColumnTypeName should produce the correct ARRAY type
-- PR #1772: Fix newlines in test scripts
+
- Issue #3204: H2 Tools Web Console: Unicode 32
-- Issue #1762: NullPointerException in Parser. Introduced in 1.4.198
+
- Issue #3227: Regression when referencing outer joined column from correlated subquery
-- PR #1768: Add more context-sensitive keywords
+
- Issue #3237: Can no longer cast CHAR(n) to BOOLEAN with n > 1
-- Issue #1758: sequence restart issue with 1.4.198
+
- Issue #3235: Regression in IN predicate with empty in list
-- Issue #1759: SELECT … FOR UPDATE returns old data in 1.4.198
+
- Issue #3236: NullPointerException in DatabaseMetaData::getIndexInfo when querying the info for views
-- PR #1756: Fix DISTINCT ON in presence of ORDER BY
+
- Issue #3233: General error when using NULL predicate on _ROWID_ column
-- PR #1754: Fix window functions in JOIN with ON condition
+
- Issue #3223: TRUNC(v, p) with negative precisions no longer works
-- Issue #1751: making it easier to open console and create local databases
+
- Issue #3221: NullPointerException when creating domain
-- Issue #1750: JOIN t ON t.col IN (SELECT ...) throws AssertionError
+
- Issue #3186: ResultSetMetaData.getSchemaName() returns empty string for aliased columns
+