H2 database logo   ▲

Home
Download
Cheat Sheet

Documentation
Quickstart
Installation
Tutorial
Features
Security
Performance
Advanced

Reference
Commands
Functions
• Aggregate • Window

Data Types
SQL Grammar
System Tables
Javadoc
PDF (2 MB)

Support
FAQ
Error Analyzer
Google Group

Appendix
History
License
Build
Links
MVStore
Architecture
Migration to 2.0

 

Change Log

Next Version (unreleased)

  • Nothing yet ...

Next Version 2.1.212 (2022-04-09)

  • 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 (2022-01-17)

  • 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 (2022-01-04)

  • 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 (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)

  • 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 #2635: Implement REGEXP_SUBSTR function
  • PR #2632: Improve ROW data type
  • PR #2630: fix: quoted VALUE in documentation
  • Issue #2628: Cached SQL throws JdbcSQLSyntaxErrorException if executed with different parameter values than before
  • Issue #2611: Add quantified distinct predicate
  • Issue #2620: LOBs in triggers
  • PR #2619: ARRAY_MAX_CARDINALITY and TRIM_ARRAY functions
  • PR #2617: Add Feature F262: Extended CASE expression
  • PR #2615: Add feature T461: Symmetric BETWEEN predicate
  • PR #2614: Fix support of multi-dimensional arrays in Java functions
  • Issue #2608: Improve concatenation operation for multiple operands
  • PR #2605: Assorted minor changes
  • Issue #2602: H2 doesn't allow to create trigger from Java source code if there are nested classes
  • PR #2601: Add field SLEEP_SINCE to INFORMATION_SCHEMA.SESSIONS table
  • Issue #1973: Standard MERGE statement doesn't work with views
  • Issue #2552: MERGE statement should process each row only once
  • Issue #2548: Wrong update count when MERGE statement visits matched rows more than once
  • Issue #2394: H2 does not accept DCL after source merge table
  • Issue #2196: Standard MERGE statement doesn't release the source view
  • Issue #2567: ARRAY-returning Java functions don't return the proper data type
  • Issue #2584: Regression in NULL handling in multiple AND or OR conditions
  • PR #2577: PgServer: `array_to_string()` and `set join_collapse_limit`
  • PR #2568: Add BIT_XOR_AGG aggregate function
  • PR #2565: Assorted minor changes
  • PR #2563: defrag is not contributing much, remove from test run
  • PR #2562: new exception MVStoreException
  • PR #2557: don't throw IllegalStateException in checkOpen
  • PR #2554: Reenable mvstore TestCrashAPI
  • Issue #2556: TestOutOfMemory: Table "STUFF" not found
  • PR #2555: Move current datetime value functions into own class
  • PR #2547: split up the ValueLob classes
  • PR #2542: Pipelining mvstore chunk creation / save
  • Issue #2550: NullPointerException with MERGE containing unknown column in AND condition of WHEN
  • Issue #2546: Disallow empty CASE specifications and END CASE
  • Issue #2530: Long query with many AND expressions causes StackOverflowError
  • PR #2543: Improve case specification support and fix some issues with it
  • Issue #2539: Replace non-standard functions with standard code directly in Parser
  • Issue #2521: Disallow untyped arrays
  • Issue #2532: Duplicate column names in derived table should be acceptable in the presence of a derived column list that removes ambiguities
  • PR #2527: Feature: allow @ meta commands from Console
  • PR #2526: Reduce I/O during database presence check and restrict some compatibility settings to their modes
  • PR #2525: Restore support of third-party drivers in the Shell tool
  • Issue #1710: getHigherType() returns incorrect type for some arguments
  • PR #2516: SHUTDOWN IMMEDIATELY should be a normal shut down
  • PR #2515: Fix nested comments in ScriptReader
  • Issue #2511: Restrict Oracle compatibility functions to Oracle compatibility mode
  • PR #2508: Minor refactoring around Tx isolation level
  • PR #2505: Assorted changes in DATEADD, DATEDIFF, DATE_TRUNC, and EXTRACT
  • Issue #2502: Combination of DML with data change delta table skips subsequent update
  • PR #2499: Performance fix for PageStore under concurrent load
  • PR #2498: Add some PostgreSQL compatibility features mentioned in issue #2450
  • Issue #2496: Error when using empty JSON_OBJECT() or JSON_ARRAY() functions
  • PR #2495: Fix JSON_OBJECT grammar in documentation
  • Issue #2493 / PR #2494: Replace ColumnNamer with mode-specific generation of column names for views
  • PR #2492: Assorted changes in parser, keywords, and ILIKE condition
  • PR #2490: Replace pg_catalog.sql with PgCatalogTable and use DATABASE_TO_LOWER in PG Server
  • Issue #2488 / PR #2489: Mark version functions as not deterministic
  • Issue #2481: Convert TO to keyword
  • PR #2476: Add some PostgreSQL compatibility features mentioned in issue #2450
  • PR #2479: Recognize absolute path on Windows without drive letter
  • Issue #2475: Select order by clause is exported with non-portable SQL
  • Issue #2472: Updating column to empty string in Oracle mode with prepared statement does not result in null
  • PR #2468: MVStore scalability improvements
  • PR #2466: Add partial support for MySQL COLLATE and CHARACTER statements
  • Issue #2464: `client_encoding='utf-8'` (single quoted) from `node-postgres` not recognized
  • Issue #2461: Support for binary_float and binary_double type aliases
  • Issue #2460: Exception when accessing empty arrays
  • 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