Change Log

Next Version (unreleased)

  • Nothing yet...

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

Version 1.4.200 (2019-10-14)

  • 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
  • PR #2137: Don't use SYSTEM_RANGE for SELECT without a FROM
  • PR #2134: Assorted fixes and other changes in DateTimeUtils
  • PR #2133: Optimize COUNT([ALL] constant) and other changes
  • PR #2132: Typo and another bug in MVStore.readStoreHeader()
  • Issue #2130: Group-sorted query returns invalid results with duplicate grouped columns in select list
  • Issue #2120: Add IF EXISTS clause to column name in ALTER TABLE ALTER COLUMN statement
  • Issue #521: Add support for the TIME WITH TIME ZONE data type
  • PR #2127: Fix race condition / performance issue during snapshotting
  • Issue #2124: MVStore build is broken
  • PR #2122: Add support for LMT in time zones and fix large years in datetime values
  • Issue #2067: Incorrect chunk space allocation during chunks movement
  • PR #2066: Not so happy path - "four alternatives" implementation
  • 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
  • PR #1929: Initial implementation of type predicate and other changes
  • PR #1926: Assorted improvements for BINARY data type
  • Issue #1925: Support SQL Server binary literal syntax
  • Issue #1918: MySQL: CREATE TABLE with both CHARSET and COMMENT failed
  • Issue #1913: MySQL: auto_increment changing SQL not supported
  • Issue #1585: The translate function on DB2 mode could have parameters order changed
  • PR #1914: Change storage and network format of JSON to byte[]
  • Issue #1911: Foreign key constraint does not prevent table being dropped
  • PR #1909: Add JSON_OBJECTAGG and JSON_ARRAYAGG aggregate functions
  • PR #1908: Cast VARCHAR to JSON properly and require FORMAT JSON in literals
  • PR #1906: Add JSON_OBJECT and JSON_ARRAY functions
  • Issue #1887: Infinite recursion in ConditionAndOr.java
  • Issue #1903: MSSQLServer Mode - Support Update TOP(X)
  • Issue #1900: Support SQLServer stored procedure execution syntax
  • PR #1898: Add IS JSON predicate
  • Issue #1896: MSSQLServer compatibility mode - GETDATE() incorrectly omits time
  • PR #1895: Add standard array concatenation operation
  • Issue #1892: Window aggregate functions return incorrect result without window ordering and with ROWS unit
  • Issue #1890: ArrayIndexOutOfBoundsException in MVSortedTempResult.getKey
  • Issue #308: Mode MySQL and LAST_INSERT_ID with argument
  • Issue #1883: Suspicious code in Session.getLocks()
  • Issue #1878: OPTIMIZE_REUSE_RESULTS causes incorrect result after rollback since 1.4.198
  • PR #1880: Collation names like CHARSET_* recognition
  • Issue #1844: MySQL Compatibility: create table error when primary key has comment
  • PR #1873: Concurrency in database metadata
  • Issue #1864: Failing to format NotSerializableException corrupting the database
  • PR #1868: add more checking to TestFileLock
  • Issue #1819: Trace.db file exceed file size limit (64MB)
  • Issue #1861: Use COALESCE in named columns join for some data types
  • PR #1860: Additional fix for deadlock on shutdown (exclusively in PageStore mode)
  • Issue #1855: Wrong qualified asterisked projections in named column join
  • Issue #1854: Wrong asterisked projection and result in named column right outer join
  • Issue #1852: Named column joins doesn't work with the VALUES constructor and derived column lists
  • Issue #1851: Wrong asterisked projection in named column joins
  • PR #1850: Duplicate map identifiers
  • PR #1849: Reimplement MVStore.findOldChunks() with PriorityQueue
  • PR #1848: Reimplement MVStore.findChunksToMove() with PriorityQueue
  • Issue #1843: Named columns join syntax is not supported
  • Issue #1841: Deadlock during concurrent shutdown attempts with 1.4.199
  • Issue #1834: NUMERIC does not preserve its scale for some values
  • PR #1838: Implement conversion from JSON to GEOMETRY
  • PR #1837: Implement conversion from GEOMETRY to JSON
  • PR #1836: Add LSHIFT and RSHIFT function
  • PR #1833: Add BITNOT function
  • PR #1832: JSON validation and normalization
  • PR #1829: MVStore chunks occupancy rate calculation fixes
  • PR #1828: Basis for implementation of SQL/JSON standard
  • PR #1827: Add support for Lucene 8.0.0
  • Issue #1820: Performance problem on commit
  • Issue #1822: Use https:// in h2database.com hyperlinks
  • PR #1817: Assorted minor changes in documentation and other places
  • PR #1812: An IllegalStateException that wraps EOFException is thrown when partial writes happens

Version 1.4.199 (2019-03-13)

  • PR #1807: Reduce code duplication and remove h2.mixedGeometries
  • PR #1806: Improve SELECT FOR UPDATE documentation
  • PR #1804: Lift limit of 10 characters on enum value (1.4.198 regression)
  • PR #1803: Do not rely on index sorting in SELECT FOR UPDATE
  • Issue #1800: Remove experimental status from window functions
  • PR #1799: Fire triggers after row locking and remove some leftovers
  • PR #1798: Reuse some string builders, remove StatementBuilder and other minor changes
  • Issue #1795: 1.4.198 regression with batch updates and transactions
  • PR #1794: Ask password in Shell in secure way and improve database creation information in tutorial
  • PR #1791: Move commands to commands.html and other changes
  • Issue #1774: H2 Browser configuration is unclear and fails on KUbuntu
  • PR #1790: Do not convert standard TRIM function to non-standard functions
  • Issue #1787: Non-standard MERGE throws LOCK_TIMEOUT_1 on violation of some constraints
  • PR #1784: improve database not found error
  • Issue #1740: Enhancement Request: h2 server: do not swallow exceptions
  • Issue #1616: Metadata and scripts should be persisted with unconditionally quoted identifiers
  • PR #1779: Improve isSimpleIdentifier() and enquoteIdentifier()
  • PR #1776: Improve DATABASE_TO_LOWER handling
  • Issue #1771: NPE in Comparison.createIndexConditions
  • PR #1772: Fix newlines in test scripts
  • Issue #1762: NullPointerException in Parser. Introduced in 1.4.198
  • PR #1768: Add more context-sensitive keywords
  • Issue #1758: sequence restart issue with 1.4.198
  • Issue #1759: SELECT … FOR UPDATE returns old data in 1.4.198
  • PR #1756: Fix DISTINCT ON in presence of ORDER BY
  • PR #1754: Fix window functions in JOIN with ON condition
  • Issue #1751: making it easier to open console and create local databases
  • Issue #1750: JOIN t ON t.col IN (SELECT ...) throws AssertionError

Version 1.4.198 (2019-02-22)

  • Issue #1746: Infinite loop in TestConcurrent.testConcurrentChangeAndGetVersion()
  • Issue #1739: Table and view names not case sensitive when using DATABASE_TO_UPPER=FALSE
  • Issue #848: H2 PostgreSQL Compatibility Mode: lowercase metadata
  • Issue #485: Problem is in invalid case for schema's IGNORECASE=true;DATABASE_TO_UPPER=false
  • Issue #1742, PR #1743: Assorted small changes
  • PR #1738: Reduce memory allocation in getSQL() methods
  • PR #1737: more javadoc updates
  • Issue #1735: Creating views with DATABASE_TO_UPPER=FALSE fails
  • Issue #1732: source.html does not work
  • Issue #1730: Show error in H2 Console if specified driver is not compatible with URL
  • Issue #1590: Error on executing "DELETE FROM table1 WHERE ID = ?; DELETE FROM table2 WHERE ID = ?;"
  • Issue #1727: Support ISODOW as identifier for the extract function additional to ISO_DAY_OF_WEEK
  • PR #1580, #1726: Disable remote database creation by default
  • PR #1725: Add partial implementation of standard LISTAGG aggregate function
  • PR #1722: Fix window definition lookup in some queries
  • PR #1721: Fix derived column list in complex queries
  • Issue #1718: Window function and values clause don't work well together
  • Issue #1592: Index out of bounds exception in Page.getKey()
  • PR #1716: Improve documentation of some DML commands
  • Issue #1715: Postgres mode: Domain "regproc" already exists
  • PR #1714: Assorted changes
  • PR #1713: Remove DataType.defaultDisplaySize and fix display size in TypeInfo
  • PR #1711: Add QUALIFY clause to SELECT command
  • Issue #1708: CREATE TABLE AS doesn't support column lists without data types
  • PR #1707: Fix sort order and ENUM data type in external results
  • PR #1706: Add hypothetical set functions
  • PR #1705: Fix GROUP_CONCAT with variable separator
  • PR #1704: Fix return type of PERCENTILE_CONT and MEDIAN
  • PR #1701: Add PERCENTILE_CONT and PERCENTILE_DISC inverse distribution functions
  • Issues #1297, #1697: Failure on concurrent session closure
  • Issue #1297: removeOldTempIndexes on PageStore causes NullPointerException
  • Issue #1354: TestCrashAPI: another NPE
  • PR #1695: Reduce memory for TestMVTempResult to 64m
  • Issue #1691: Append mode causes OOME in MVPlainTempResult
  • PR #1692: Use MVTempResult unconditionally
  • Issue #1689: Use separate constants for data types in Data, ValueDataType, and Transfer
  • PR #1687: MVMap minor cleanup
  • PR #1686: Fix a regression with ENUM data type
  • PR #1685: Fix CHAR in PostgreSQL mode and refactor some code
  • Issue #1681: IN () doesn't work with row values when data types are not exactly the same
  • Issue #1320: OOME / GC overhead in IndexCursor.nextCursor()
  • PR #1680: Assorted fixes for ALTER TABLE ALTER COLUMN
  • PR #1679: Use TestScript for testSimple
  • Issue #1677: Unable to use VALUES keyword in WHERE clause
  • Issue #1672: Deadlock on MVStore close in TestOutOfMemory
  • Issue #1665: TestCrashAPI: NPE with ENUM in MINUS operator
  • Issue #1602: Combine type, precision, scale, display size and extTypeInfo into one object
  • PR #1671: Assorted changes
  • Issue #1668: MySQL compatibility DATE() function should return NULL on error
  • Issue #1604: TestCrashAPI: PreparedStatement.getGeneratedKeys() is already closed
  • PR #1667: Detect NULL values and overflow in window frame bounds
  • PR #1664: Allow any expressions in window frames
  • Issue #1576: H2 Console should not display precision and scale for data types that don't have them
  • PR #1662: Fix Alter Table Drop Column In View when table name is wrapped by Double Quotes
  • PR #1660: Optimize window aggregates with AND UNBOUNDED FOLLOWING and no exclusions
  • PR #1658: Assorted small changes
  • PR #1657: Failure to stop background thread
  • PR #1656: Optimize window aggregates with ORDER BY + UNBOUNDED PRECEDING + no exclusions
  • Issue #1654: OOM in TestMemoryUsage, in big mode
  • Issue #1651: TIMESTAMP values near DST may be changed in MVStore database due to UTC-based PageStore format in some temporary storages
  • PR #1650: Fix race in MVStore.close()
  • Issue #1212: TestDiskFull: The file is locked
  • PR #1648: Add functions ARRAY_CAT(), ARRAY_APPEND() and ARRAY_SLICE()
  • PR #1646: In preparation to a release
  • PR #1643: more javadoc update
  • PR #1642: update javadoc
  • PR #1641: Update copyright years
  • PR #1640: Suggest ANY(?) instead of variable IN() again
  • PR #1638: Add support for Java 11 to test suite
  • PR #1637: Remove explicit unboxing
  • PR #1635: Optimize UUID to VARCHAR conversion and use correct time check in Engine.openSession()
  • Issue #1632: TestMVTableEngine failure
  • PR #1631: Prepare to release: javadoc cleanup
  • PR #1630: fix duplicate words typos in comments and javadoc
  • PR #1627: Use lock to protect append buffer
  • Issue #1618: GROUP BY does not work with two identical columns in selected expressions
  • Issue #1619: Two-phase commit regression in MASTER
  • PR #1626: fix doc
  • PR #1625: Prepare to release: javadoc cleanup, fix maven build, fix javadoc build
  • Issue #1620: UUIDs are unexpectedly sorted as signed
  • PR #1614: Use bulk .addAll() operation
  • PR #1613: Add explicit table query
  • Issue #1608: ARRAY and row value expression should not be the same
  • Issue #1606: Quantified comparison predicate doesn't work correctly on primary key column
  • Issue #1057: Very slow execution with subquery and connection parameter LAZY_QUERY_EXECUTION=1
  • Issue #1072: Very slow execution with join and connection parameter LAZY_QUERY_EXECUTION=1
  • PR #1601: Return BIGINT from ROWNUM(), ROW_NUMBER() and rank functions
  • PR #1599: cleanup StringUtils.cache
  • PR #1598: Minor changes in parser and documentation
  • PR #1597: Remove SysProperties.CHECK preconditions around simple assertions
  • PR #1596: Improve SQL Standard compliance in LOB precision parsing
  • Issue #1594: DBSettings.optimizeIsNull and dead code in IndexCursor.getMax()
  • PR #1591: Use multi-catch java 7 language construction to simplify code
  • Issue #1582: h2 not using best index for >=
  • PR #1588: Add support for java.time.Period
  • Issue #446: FILE_READ from classpath not working because of 0 byte file length
  • PR #1579: fix unintentional append mode disruption
  • Issue #1573: DELETE FROM w/ ROWNUM and subquery
  • Issue #187: SHUTDOWN DEFRAG corrupts splitted file database
  • PR #1571: Optimizing ConditionAndOr queries
  • Issue #1565: SOME / ANY conflict
  • PR #1564: Refactor Expression implementations
  • Issue #1561: Incorrect documentation and strange fallback value of SysProperties.FILE_ENCODING
  • Issue #1566: MVStore implements Closeable/AutoCloseable
  • Issue #1550: OutOfMemoryError during "shutdown defrag"
  • Issue #1440: OOM when executing "shutdown compact" in server mode
  • Issue #1561: Incorrect documentation and strange fallback value of SysProperties.FILE_ENCODING
  • PR #1557: increase lock timeout to TestConcurrentUpdate due to Travis failures
  • Issue #1554: REGEXP_REPLACE - accept 'g' flag in PostgreSQL compatibility mode
  • Issue #950: Comparison between databases in README.md and in features.html
  • Issue #1549: [RFE] Implement locking modes (select for update)
  • PR #1548: Add AsynchronousFileChannel-based experimental FilePathAsync
  • PR #1547: Speedup unused chunks collection
  • PR #1546: Tiny optimization: use `System.arraycopy` when possible
  • PR #1545: Export datetime value functions to SQL using standard syntax
  • Issue #1371: NPE in CacheLRU
  • Issue #1534: Typo in message
  • Issue #1527: Parser performance: Excessive use of regular expressions to validate column names
  • PR #1543: MVStore assorted re-factorings
  • PR #1538: Add support for newer Lucene versions without recompilation
  • Issue #1536: CURRENT_TIMESTAMP result doesn't change under Transactions
  • Issue #239: Consider supporting Lucene 5 indexes
  • PR #1520: Fixes bug in PutIfAbsentDecisionMaker
  • Issue #1518: ENUM and VIEW with filtering on enum column
  • Issue #1516: Array element reference array[index] should be 1-based
  • Issue #1512: TestMVTableEngine.testLowRetentionTime(): NPE in VersionedValue.Type
  • PR #1513: Assorted minor changes
  • PR #1510: Add optional EXCEPT clause to wildcards
  • PR #1509: Use domain term everywhere
  • Issue #1507: Add INFORMATION_SCHEMA.COLUMNS.COLUMN_TYPE qualification for domains
  • Issue #1499: TestScript::envelope.sql failure in “big” mode
  • Issue #1498: NPE in SimpleResultSet.getColumnCount()
  • Issue #1495: MERGE statement doesn't affect any rows when Oracle UPDATE .. WHERE .. DELETE .. WHERE is used
  • Issue #1493: MERGE statement fails when it updates more than one row
  • Issue #1492: Unnecessary restriction on MERGE USING statement when ON clause doesn't reference any target table columns
  • Issue #1491: Unnecessary restriction on MERGE USING statement when ON predicate doesn't match inserted row
  • Issue #1490: NullPointerException when running invalid MERGE statement
  • Issue #1489: MERGE USING documentation has misleading railroad diagram
  • Issue #1488: Improve documentation of window and some other functions
  • Issue #1485: Default window frame in presence of ORDER BY is RANGE .., not ROWS
  • PR #1484: New tests, reimplemented EXCLUDE clause, and assorted changes
  • Issue #1338: MSSQLServer compatibility enhancements
  • PR #1480: Update Maven build instruction and fix some problems
  • PR #1478: Upgrade maven-surefire-plugin
  • PR #1476: Add TransactionStore to MVStore jar
  • Issue #1475: Dropping column used by a view produces misleading error message
  • Issue #1473: TestScript needs better detection of sorted result
  • PR #1471: issue 1350: TestCrashAPI: PageStore.freeListPagesPerList
  • PR #1470: Fix window functions in queries with HAVING
  • PR #1469: Forbid incorrect nesting of aggregates and window functions
  • Issue #1437: Generated as Identity has a different behaviour.
  • PR #1467: Fix subtraction of timestamps
  • PR #1464: Assorted minor changes in window processing code
  • PR #1463: Fix some window aggregates and reduce amount of collecting implementations
  • PR #1462: Separate aggregate and window code in some places
  • PR #1461: Add WINDOW clause support
  • Issue #1427: Scalability problem in MVSpatialIndex
  • PR #1459: Improve window clause correctness checks
  • PR #1457: Add NTILE(), LEAD() and LAG() window functions
  • PR #1456: Add experimental implementation of remaining types of window frames
  • PR #1454: Add FIRST_VALUE(), LAST_VALUE(), and NTH_VALUE()
  • PR #1453, Issue #1161: Add ROW_NUMBER(), RANK(), DENSE_RANK(), PERCENT_RANK(), and CUME_DIST() window functions
  • PR #1452: Reset aggregates before reuse
  • PR #1451: Add experimental support for aggregates with OVER (ORDER BY *)
  • PR #1450: Evaluate window aggregates only once for each partition
  • PR #1449: Move more code from Aggregate and JavaAggregate to AbstractAggregate
  • PR #1448: Add experimental implementation of grouped window queries
  • PR #1447: Refactor OVER() processing code and fix some issues
  • PR #1446: fix : The French messages are bad generated (not contain DB message)
  • PR #1445: Use PostGIS-compatible format for SRID-only constraint in GEOMETRY
  • PR #1444: Add experimental unoptimized support for OVER ([PARTITION BY ...]) in aggregates
  • PR #1442: Bugfix - Release MVStore lock and file resources rightly even if errors when compacting database
  • PR #1441: Add GEOMETRY type subtypes with type and SRID constraints
  • PR #1434: Add support for ENUM in CAST and other changes
  • PR #1431: Fix some inconsistencies in documentation and improve mvn build
  • PR #1428: Add support for M and ZM dimensions to GEOMETRY data type
  • Issue #1405: Introduce LocalResult factory
  • PR #1422: Add ENVELOPE aggregate function
  • Issue #1421: Remove old-style outer join
  • PR #1419: Assorted minor changes
  • PR #1414: DEFRAG and COMPACT mixup
  • PR #1413: improvements to MVStore garbage collection
  • PR #1412: Added org.h2.store.fs package to exported osgi bundles
  • PR #1409: Map all remaining error codes to custom exception classes
  • Issue #1407: Add a MODE() aggregate function
  • PR #1402: Duplicate conditions in column check constraint
  • PR #1399: Add more subclasses of SQLException and use it for some error codes
  • PR #1397: Add DATEADD return type detection
  • Issue #1393: Add INFORMATION_SCHEMA.COLUMNS.IS_VISIBLE
  • PR #1392: Some refactoring and assorted minor optimizations
  • PR #1388: Extract UnaryOperation from Operation and other changes
  • PR #1386: DISK_SPACE_USED() for MVStore and other minor changes
  • PR #1385: split up the rather large convertTo method
  • PR #1384: Throw exception if unknown mode is specified in database URL
  • Issue #1365, PR #1382: Parse more date-time literals for compatibility with other databases
  • PR #1381: Minor fixes for INTERVAL data type
  • PR #1380: Improve documentation of intervals
  • Issue #1189: "Merge into using" parameters aren't found
  • Issue #1377: org.h2.api.Interval and TIME leftovers
  • PR #1376: TestMultiThreadedKernel is back
  • PR #1373: INTERVAL data type
  • Issue #1369: In MSSQL Server Mode generated UUID fields need NEWID() function
  • Issue #756: FunctionsMySql is not in the main jar
  • PR #1368: Parse BINARY VARYING, BINARY LARGE OBJECT, and CHARACTER LARGE OBJECT
  • PR #1367: Assorted changes with SELECT output limitation clauses
  • Issue #1363: Why H2 requires random own packages in OSGi bundle description?
  • Issue #1192: Add an Automatic-Module-Name
  • Issue #1361, PR #1362: Add limited support for MONEY and SMALLMONEY in compatibility modes
  • Issue #1327: mvn build misses some resources
  • PR #1359: Add system property to return OffsetDateTime from ResultSet.getObject()
  • PR #1357: Simplify execution flow in some places
  • PR #1356: Fix NPE in Query.initExpression()
  • PR #1355: Assorted changes in MetaTable
  • Issue #1352: TestCrashAPI: Prepared.getObjectId() was called before
  • PR #1349: Changes is conversion and comparison methods of Value
  • Issue #1346: Exception when using IN condition for enums
  • PR #1345: Replace some init methods with constructors
  • PR #1344: Streamline last chunk verification on startup
  • PR #1341: Optimize MVSecondaryIndex.convertToKey()
  • PR #1340: NoSuchElementException instead of returning null
  • PR #1339: Add support of TIMESTAMP WITH TIME ZONE to addition and subtraction operators
  • PR #1337: Streamline Value comparison
  • PR #1336: Minor refactorings
  • Issue #1332: Constraint name not set correctly
  • Rename fields to reflect actual type
  • Issue #1331: Regression in Database.updateMeta()
  • Issue #1323: Slow update after altering table in 1.4.197
  • PR #1326: Add support of PERCENT in FETCH and TOP clauses
  • PR #1325: Optimize WITH TIES in some queries and specify data types for KEY_COLUMN_USAGE
  • PR #1321: Do not add rows before OFFSET to result if possible
  • PR #1319: Treat NEXTVAL as an auto-generated key
  • PR #1318: Mode append fo MVPlainTempResult
  • PR #1314: Add ALTER VIEW RENAME command
  • PR #1313, issue #1315: Bugfix - using default locale encoding issue in conversion between varchar and varbinary value, and checking javac output text issue in SourceCompiler
  • PR #1312: Add Java 9+ support to NIO_CLEANER_HACK
  • PR #1311: Fix minor issues with ResultSet.getObject(..., Class) and WITH TIES
  • Issue #1298: TestKillRestartMulti: A map named undoLog.2 already exists
  • Issue #1307: Invalid value "null" for parameter "calendar" [90008-193]
  • PR #1306: Add initial implementation of WITH TIES clause
  • PR #1304: Update changelog and fix building of documentation
  • PR #1302: Use OpenJDK instead of OracleJDK 10 in Travis builds due to Travis problem
  • Issue #1032: Error when executing "SELECT DISTINCT ON"
  • Issue #1295: ConditionInSelect violates requirements of LocalResult
  • PR #1296: Assorted minor changes
  • PR #1293: Move HELP and SHOW tests into own files
  • PR #1291: Fix update count for REPLACE and move some SQL tests into separate files
  • PR #1290: Do not load the whole LOBs into memory for comparison operation
  • Issue #408: DISTINCT does not properly work with ORDER BY on function like LOWER
  • PR #1286: Fix MVTempResult implementations for results with invisible columns
  • Issue #1284: Nanoseconds of timestamps from old H2 versions are not read properly
  • PR #1283: Clean up interaction between LocalResult and ResultExternal
  • Issue #1265: OOME is not handled properly in TraceObject.logAndConvert()
  • Issue #1061: Regression: Braces after WITH clause not allowed anymore
  • PR #1277: Assorted changes in Parser
  • PR #1276: Improve support of ARRAY and SQLXML in JDBC layer
  • PR #1275: Do not quote other lower case characters
  • PR #1274: Use token type in Parser instead of string comparisons
  • PR #1272: Reduce code duplication in Parser
  • PR #1271: Minor memory leak
  • PR #1270: drop TableView isPersistent field
  • PR #1269: Eliminate commit of empty batch in some tests
  • Issue #1266: Add INFORMATION_SCHEMA.COLUMNS.DATETIME_PRECISION
  • Issue #1261: How to discover stored enum types through INFORMATION_SCHEMA
  • Issue #1258: Failing to remove index when using schema.table
  • PR #1256: misc tiny refactorings
  • PR #1255: Minor changes in MERGE USING, DATE_TRUNC, and EXTRACT
  • Issue #1214: Internal compiler believes that "3 warnings" is an error
  • PR #1252: Assorted minor changes
  • PR #1251: Fix SQL representation of CAST for types with fractional seconds precision
  • PR #1250: Batch append mode for MVMap
  • PR #1248: StringIndexOutOfBoundsException due to undoLog map
  • PR #1246: Detect disabled tests
  • PR #1242: Add implementation of SQLXML interface
  • PR #1241: Various tweaks in attempting to fix TestDiskFull test
  • PR #1240: Optimise ValueLobDB comparison methods
  • PR #1239: Don't try to find tools.jar on Java 9+
  • PR #1238: remove unfinished android API
  • PR #1237: remove JaQu
  • PR #1236: remove STORE_LOCAL_TIME code
  • PR #1235: Do not use deprecated Class.newInstance()
  • PR #1234: Fix NPE in Parser.parseMergeUsing()
  • PR #1233: Simplify old lob ValueLob class
  • Issue 1227: lob growth in pagestore mode
  • PR #1230: clean up some javadoc and some throws clauses
  • PR #1229: Create UndoLog only when necessary and remove outdated code
  • PR #1228: Remove some PageStore+MVCC leftovers
  • PR #1226: Fix inconsistencies in checks for transaction isolation level
  • PR #1224: Enable Java 10 testing on Travis
  • PR #1223: Fix issues with testing on latest Java versions
  • PR #1222: Leftovers handling
  • Issue #1220: JDK-9 build fails due to usage of java.xml.bind in external authentication
  • PR #1218: Test utilities only once during TestAll
  • PR #1217: Postpone session.endStatement() until after commit
  • PR #1213: KillRestart fix
  • PR #1211: Assorted minor changes
  • Issue #1204: Always use MVCC with MVStore and never use it with PageStore
  • PR #1206: Forbid reconnects in non-regular modes in TestScript
  • PR #1205: Misc test fixes
  • Issue 1198: Enable MULTI_THREADED by default for MVStore mode
  • Issue #1195: Calling setBytes to set VARCHAR field fails
  • PR #1197: Fix or suppress errors in tests
  • PR #1194: TestKillRestartMulti: A map named undoLog-1 already exists
  • PR #1193: enable TestRandomSQL on non-memory databases
  • PR #1191: External authentication with datasource issue
  • PR #1188: Undo log split to reduce contention
  • PR #1186: TransactionMap::sizeAsLong() optimized - temp map eliminated
  • PR #1185: Improve naming of the object id field in Prepared
  • Issue #1196: Feature request for MS SQL Server Compatibility Mode
  • Issue #1177: Resource leak in Recover tool
  • PR #1183: Improve concurrency of connection pool with wait-free implement
  • Issue #1073: H2 v1.4.197 fails to open an existing database with the error [Unique index or primary key violation: "PRIMARY KEY ON """".PAGE_INDEX"]
  • PR #1179: Drop TransactionMap.readLogId
  • PR #1181: Improve CURRENT_TIMESTAMP and add LOCALTIME and LOCALTIMESTAMP
  • PR #1176: Magic value replacement with constant
  • PR #1171: Introduce last committed value into a VersionedValue
  • PR #1175: tighten test conditions - do not ignore any exceptions
  • PR #1174: Remove mapid
  • PR #1173: protect first background exception encountered and relate it to clients
  • PR #1172: Yet another attempt to tighten that testing loop
  • PR #1170: Add support of CONTINUE | RESTART IDENTITY to TRUNCATE TABLE
  • Issue #1168: ARRAY_CONTAINS() returning incorrect results when inside subquery with Long elements.
  • PR #1167: MVStore: Undo log synchronization removal
  • PR #1166: Add SRID support to EWKT format
  • PR #1165: Optimize isTargetRowFound() and buildColumnListFromOnCondition() in MergeUsing
  • PR #1164: More fixes for parsing of MERGE USING and other changes in Parser
  • PR #1154: Support for external authentication
  • PR #1162: Reduce allocation of temporary strings
  • PR #1158: make fields final
  • Issue #1129: TestCrashAPI / TestFuzzOptimizations throw OOME on Travis in PageStore mode
  • PR #1156: Add support for SQL:2003 WITH [NO] DATA to CREATE TABLE AS
  • PR #1149: fix deadlock between OnExitDatabaseCloser.DATABASES and Engine.DATABASES
  • PR #1152: skip intermediate DbException object when creating SQLException
  • PR #1144: Add missing schema name with recursive view
  • Issue #1091: get rid of the "New" class
  • PR #1147: Assorted minor optimizations
  • PR #1145: Reduce code duplication
  • PR #1142: Misc small fixes
  • PR #1141: Assorted optimizations and fixes
  • PR #1138, #1139: Fix a memory leak caused by DatabaseCloser objects
  • PR #1137: Step toward making transaction commit atomic
  • PR #1136: Assorted minor optimizations
  • PR #1134: Detect possible overflow in integer division and optimize some code
  • PR #1133: Implement Comparable<Value> in CompareMode and optimize ValueHashMap.keys()
  • PR #1132: Reduce allocation of ExpressionVisitor instances
  • PR #1130: Improve TestScript and TestCrashAPI
  • PR #1128: Fix ON DUPLICATE KEY UPDATE with ENUM
  • PR #1127: Update JdbcDatabaseMetaData.getSQLKeywords() and perform some minor optimizations
  • PR #1126: Fix an issue with code coverage and building of documentation
  • PR #1123: Fix TCP version check
  • PR #1122: Assorted changes
  • PR #1121: Add some protection to ValueHashMap against hashes with the same less significant bits
  • Issue #1097: H2 10x slower than HSQLDB and 6x than Apache Derby for specific query with GROUP BY and DISTINCT subquery
  • Issue #1093: Use temporary files for ResultSet buffer tables in MVStore
  • PR #1117: Fix sorting with distinct in ResultTempTable
  • Issue #1095: Add support for INSERT IGNORE INTO <table> (<columns>) SELECT in MySQL Mode
  • PR #1114: Minor cleanup and formatting fixes
  • PR #1112: Improve test scripts
  • PR #1111: Use a better fix for issue with SRID
  • Issue #1107: Restore support of DATETIME2 with specified fractional seconds precision
  • Issue #1106: Get rid of SwitchSource
  • PR #1105: Assorted minor changes
  • Issue #1102: CREATE SYNONYM rejects valid definition
  • PR #1103: Remove redundant synchronization
  • Issue #1048: 1.4.197 regression. org.h2.jdbc.JdbcSQLException: Timeout trying to lock table "SYS"
  • PR #1101: Move some tests in better place and add an additional test for 2PC
  • PR #1100: Fix Insert.prepareUpdateCondition() for PageStore
  • PR #1098: Fix some issues with NULLS FIRST / LAST
  • Issue #1089: Parser does not quote words INTERSECTS, DUAL, TOP
  • Issue #230: Renaming a column does not update foreign key constraint
  • Issue #1091 Get rid if the New class
  • PR #1087: improve performance of planning large queries
  • PR #1085: Add tests for simple one-column index sorting
  • PR #1084: re-enable some pagestore testing
  • PR #1083: Assorted changes
  • Issue #394: Recover tool places COLLATION and BINARY_COLLATION after temporary tables
  • PR #1081: Session.getTransactionId should return a more distinguishing value
  • Improve the script-based unit testing to check the error code of the exception thrown.
  • Issue #1041: Support OR syntax while creating trigger
  • Issue #1023: MVCC and existing page store file
  • Issue #1003: Decrypting database with incorrect password renders the database corrupt
  • Issue #873: No error when `=` in equal condition when column is not of array type
  • Issue #1069: Failed to add DATETIME(3) column since 1.4.197
  • Issue #456: H2 table privileges referring to old schema after schema rename
  • Issue #1062: Concurrent update in table "SYS" caused by Analyze.analyzeTable()
  • Yet another fix to Page memory accounting
  • Replace MVStore.ASSERT variable with assertions
  • Issue #1063: Leftover comments about enhanced for loops
  • PR #1059: Assorted minor changes
  • PR #1058: Txcommit atomic
  • Issue #1038: ora_hash function implementation off by one
  • PR #1054: Introduce overflow bit in tx state
  • Issue #1047: Support DISTINCT in custom aggregate functions
  • PR #1051: Atomic change of transaction state
  • PR #1046: Split off Transaction TransactionMap VersionedValue
  • PR #1045: TransactionStore move into separate org.h2.mvstore.tx package
  • PR #1044: Encapsulate TransactionStore.store field in preparation to a move
  • PR #1040: generate less garbage for String substring+trim
  • PR #1035: Minor free space accounting changes
  • Issue #1034: MERGE USING should not require the same column count in tables
  • PR #1033: Fix issues with BUILTIN_ALIAS_OVERRIDE=1
  • PR #1031: Drop schema rights together with schema
  • PR #1029: No need to remove orphaned LOBs when the db is read-only
  • Issue #1027: Add support for fully qualified names in MySQL compatibility mode
  • Issue #178: INSERT ON DUPLICATE KEY UPDATE returns wrong generated key
  • PR #1025: Remove BitField and replace its usages with BitSet
  • Issue #1019: Console incorrectly sorts BigDecimal columns alphanumerically
  • PR #1021: Update JdbcDatabaseMetaData to JDBC 4.1 (Java 7)
  • Issue #992: 1.4.197 client cannot use DatabaseMetaData with 1.4.196 and older server
  • Issue #1016: ResultSet.getObject() should return enum value, not ordinal
  • Issue #1012: NPE when querying INFORMATION_SCHEMA.COLUMNS on a view that references an ENUM column
  • Issue #1010: MERGE USING table not found with qualified table
  • PR #1009: Fix ARRAY_AGG with ORDER BY and refactor aggregates
  • Issue #1006: "Empty enums are not allowed" in 1.4.197 (mode=MYSQL)
  • PR #1007: Copy also SRID in ValueGeometry.getGeometry()
  • PR #1004: Preserve type names in more places especially for UUID
  • Issue #1000: Regression in INFORMATION_SCHEMA.CONSTRAINTS.CONSTRAINT_TYPE content
  • Issue #997: Can not delete from tables with enums
  • Issue #994: Too much column in result set for GENERATED_KEYS on table with DEFAULT
  • PR #993: Fix some compiler warnings and improve assert*() methods
  • PR #991: Generate shorter queries in JdbcDatabaseMetaData.getTables() and remove some dead code
  • PR #989: Fix more issues with range table and improve its documentation