From 931772747beb7cc659b1991dc35377388bc3de69 Mon Sep 17 00:00:00 2001 From: Elena Krippner Date: Wed, 16 Sep 2026 10:53:43 +0200 Subject: [PATCH] Add 2026-09-16 release notes --- data/releasenotes.json | 195 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 195 insertions(+) diff --git a/data/releasenotes.json b/data/releasenotes.json index e507099..66d3e0d 100644 --- a/data/releasenotes.json +++ b/data/releasenotes.json @@ -1,4 +1,199 @@ [ + { + "version": "v2026-09-16", + "date": "2026-09-16", + "breaksdb": false, + "notes": [ + { + "type": "feat", + "note": "Add support for the make_interval() function." + }, + { + "type": "feat", + "note": "Allow multiple DDL statements in the same transaction. We previously required ALTER / CREATE statements to be executed in autocommit mode. Now, we support multiple DDL statements in a one transaction provided that they are not mixed with SELECT / INSERT statements." + }, + { + "type": "feat", + "note": "Add load history collection metrics for transactions, disk usage, memory usage, and network usage." + }, + { + "type": "feat", + "note": "Support materialized views, including REFRESH, WITH NO DATA and indexes on them." + }, + { + "type": "feat", + "note": "Add support for IF NOT EXISTS modifier in CREATE TYPE." + }, + { + "type": "feat", + "note": "Improve log messages during recovery." + }, + { + "type": "feat", + "note": "Add the concatenation operator || for bit strings." + }, + { + "type": "perf", + "note": "Add datablock skipping filters for singleton joins." + }, + { + "type": "perf", + "note": "Optimize unsigned division by constants." + }, + { + "type": "perf", + "note": "Consider range predicates for index joins." + }, + { + "type": "perf", + "note": "Optimize min() / max() queries to skip blocks that can't contribute to the result." + }, + { + "type": "pg", + "note": "All system_stats tables now check for role pg_read_all_stats." + }, + { + "type": "pg", + "note": "Implement string_agg(bytea, bytea)." + }, + { + "type": "pg", + "note": "Accept UNLOGGED qualifier for tables for compatibility purposes. These tables are still properly logged." + }, + { + "type": "pg", + "note": "ON CONFLICT DO NOTHING no longer reports an index violation if the same value is inserted twice, and instead inserts an arbitrary one, just like postgres." + }, + { + "type": "fix", + "note": "Fix a failed UPDATE leaving invalid records in the write-ahead log, which could disrupt crash recovery." + }, + { + "type": "fix", + "note": "Fix rows becoming permanently inaccessible when an UPDATE or bulk insert ran out of memory, leaving the affected page locked for the rest of the session." + }, + { + "type": "fix", + "note": "Fix a crash or memory corruption when updating a row with several hundred columns." + }, + { + "type": "fix", + "note": "Fix an internal error when planning queries that read a CTE from multiple UNION ALL branches without using its computed columns." + }, + { + "type": "fix", + "note": "Fix parser assertion errors for multiple not yet supported features." + }, + { + "type": "fix", + "note": "Fix a rare case where a triggered assertion aborted a query during very complex recursive queries." + }, + { + "type": "fix", + "note": "Improve table statistics after TRUNCATE." + }, + { + "type": "fix", + "note": "Improve stability when using TEMP tables in transactions." + }, + { + "type": "fix", + "note": "Fix an edge case on delete cascade with deleted foreign keys." + }, + { + "type": "fix", + "note": "Fix potentially lost SSL keys on quick DB shutdown." + }, + { + "type": "fix", + "note": "Fix a crash when a CTE that was used multiple times was inlined." + }, + { + "type": "fix", + "note": "Fix \\copy from parquet file to stream parquet file over psql." + }, + { + "type": "fix", + "note": "Abort failed uploads to remote servers due to already closed sockets instead of retrying." + }, + { + "type": "fix", + "note": "Fix a query hang when scanning incomplete on-disk data." + }, + { + "type": "fix", + "note": "Fix a potential referential integrity violation when adding FOREIGN KEYs with concurrent deletes." + }, + { + "type": "fix", + "note": "Fix a crash for certain complex UPDATE / DELETE queries with subselects." + }, + { + "type": "fix", + "note": "Fix arg_min() and arg_max() types when working with strings." + }, + { + "type": "fix", + "note": "Fix a crash when running explain (verbose) on window functions." + }, + { + "type": "fix", + "note": "Fix a crash in psql \\df for functions returning void." + }, + { + "type": "fix", + "note": "Fix indexes restored after an unclean shutdown being unusable for writes and returning wrong index lookup results." + }, + { + "type": "fix", + "note": "Fix livelock when starting up a corrupted database." + }, + { + "type": "fix", + "note": "Some queries missed some result rows under very high load and concurrency (> 100 cores)." + }, + { + "type": "fix", + "note": "Allow LOCK TABLE inside read-only transactions, which unblocks pg_dump." + }, + { + "type": "fix", + "note": "Stop pg_dump from truncating the last character of every view definition." + }, + { + "type": "fix", + "note": "Correctly check for mistakenly added extra parameters in EXECUTE statements." + }, + { + "type": "fix", + "note": "Fix ordering of strings with collations in min() / max() aggregates." + }, + { + "type": "fix", + "note": "INSERT .. ON CONFLICT ... against a unique constraint wrongly disallowed nulls to be inserted if the index already contained a null." + }, + { + "type": "fix", + "note": "INSERT ... ON CONFLICT DO UPDATE ignored the WHERE clause - it doesn't anymore." + }, + { + "type": "fix", + "note": "Fix a case where regr_r2() could return a wrong NULL result." + }, + { + "type": "fix", + "note": "Fix a case where statistical aggregates like var_samp() would return 0 instead of NULL." + }, + { + "type": "fix", + "note": "Fix swapped regr_avgx() and regr_avgy() aggregates." + }, + { + "type": "fix", + "note": "Fixed a bug that canceled TLS connections to remote S3 tables." + } + ] + }, { "version": "v2026-09-03", "date": "2026-09-03",