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",