From 59410eef3c2a2590df2cbb612123f59cd4025a56 Mon Sep 17 00:00:00 2001 From: Elena Krippner Date: Thu, 8 Oct 2026 16:51:14 +0200 Subject: [PATCH] Add 2026-10-08 release notes --- data/releasenotes.json | 343 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 343 insertions(+) diff --git a/data/releasenotes.json b/data/releasenotes.json index fad4b6a..261054e 100644 --- a/data/releasenotes.json +++ b/data/releasenotes.json @@ -1,4 +1,347 @@ [ + { + "version": "v2026-10-08", + "date": "2026-10-08", + "breaksdb": false, + "notes": [ + { + "type": "feat", + "note": "Add support for GRANTED BY in grant operations and allow running grant/revoke as a non-superuser." + }, + { + "type": "feat", + "note": "Add size of datablocks to the cedardb_disk_load_history system table." + }, + { + "type": "feat", + "note": "Add support for on update set null/set default and on delete set null/set default." + }, + { + "type": "feat", + "note": "Add support for SELECT ... FOR UPDATE with NOWAIT and SKIP LOCKED." + }, + { + "type": "feat", + "note": "Implement the JSON path operators #> and #>> for json and jsonb." + }, + { + "type": "feat", + "note": "Add support for default permission changes through ALTER DEFAULT PRIVILEGES." + }, + { + "type": "feat", + "note": "Add support for COPY TO STDOUT (FORMAT binary)." + }, + { + "type": "feat", + "note": "Add support for the binary format for jsonb." + }, + { + "type": "feat", + "note": "Add support for CLOSE ALL, UNLISTEN and RESET ALL." + }, + { + "type": "feat", + "note": "Allow ALTER TABLE ... RENAME on views." + }, + { + "type": "feat", + "note": "Add support for to_timestamp() and to_date() with format strings." + }, + { + "type": "feat", + "note": "Add inet host(), netmask(), network(), and broadcast()." + }, + { + "type": "feat", + "note": "Add support for ALTER TABLE ... ALTER COLUMN TYPE ... USING." + }, + { + "type": "feat", + "note": "Add support for IS NULL and IS NOT NULL on whole-row references." + }, + { + "type": "feat", + "note": "Undo of large transactions is now reusing segments, significantly reducing the recovery on-disk footprint." + }, + { + "type": "feat", + "note": "Implemented pg_cancel_backend(pid) and pg_terminate_backend(pid, timeout default 0)." + }, + { + "type": "feat", + "note": "Add support for the has_foreign_data_wrapper_privilege function." + }, + { + "type": "feat", + "note": "Add spooling statistics to the EXPLAIN ANALYZE output of the group by operator." + }, + { + "type": "perf", + "note": "Top-K queries now properly prune before loading data from disk." + }, + { + "type": "perf", + "note": "Significantly reduce memory requirements of the recovery process." + }, + { + "type": "perf", + "note": "Improve cardinality estimates for tables with many UPDATEs or DELETEs." + }, + { + "type": "perf", + "note": "Improve performance of ANALYZE." + }, + { + "type": "pg", + "note": "Report the PostgreSQL routine name RevalidateCachedQuery on errors about prepared statements invalidated by a schema change." + }, + { + "type": "pg", + "note": "pg_index.indoption now correctly shows whether an index orders nulls first or last." + }, + { + "type": "pg", + "note": "Untyped bind parameters in binary operators and functions such are now typed like in PostgreSQL, so queries that clients that send bare parameters without type casts don't fail with \"invalid arguments\"." + }, + { + "type": "pg", + "note": "Add support for the pg_collation_is_visible() function." + }, + { + "type": "pg", + "note": "Don't show pg_temp in pg_namespace." + }, + { + "type": "pg", + "note": "Always report view columns as nullable in pg_attribute.attnotnull, even if we can prove they're not nullable (like Postgres)." + }, + { + "type": "pg", + "note": "Date and time arithmetic with a quoted interval, such as now() + '1 hour', now works." + }, + { + "type": "pg", + "note": "Add support for named arguments in built-in functions that have named parameters, such as make_interval(secs => 30)." + }, + { + "type": "pg", + "note": "CedarDB now honors the maxRows field in pg wire protocol EXECUTE messages." + }, + { + "type": "pg", + "note": "Add warning about missing permissions in VACUUM." + }, + { + "type": "pg", + "note": "Report the right dependencies and columns of foreign keys in pg_catalog and information_schema interfaces." + }, + { + "type": "fix", + "note": "Fix NULLS LAST ordering in DESC indexes." + }, + { + "type": "fix", + "note": "Fix incorrectly accepted NULL values for ADD COLUMN NOT NULL." + }, + { + "type": "fix", + "note": "Fix several ordered aggregates sharing the same ORDER BY returning only the last value per group when one of them aggregates a computed expression." + }, + { + "type": "fix", + "note": "Fix LIMIT NULL applying a limit of 1." + }, + { + "type": "fix", + "note": "pg_get_constraintdef() now correctly prints foreign key actions (e.g., on delete cascade) if they are different than the default." + }, + { + "type": "fix", + "note": "Fix a crash in the interactive shell when reconnecting with \\c after a write statement or an advisory lock." + }, + { + "type": "fix", + "note": "Fix several edge cases in permission handling." + }, + { + "type": "fix", + "note": "Fix a query crash when creating a table with a foreign key constraint referencing the table itself." + }, + { + "type": "fix", + "note": "Fix days and months being swapped in binary interval values sent and received by clients such as asyncpg and psycopg 3." + }, + { + "type": "fix", + "note": "Report the session's actual DateStyle and IntervalStyle at connection startup." + }, + { + "type": "fix", + "note": "Report client_encoding as UTF8 at connection startup regardless of how the client spelled it." + }, + { + "type": "fix", + "note": "Detect overflow when parsing binary numeric parameters instead of silently storing a wrong value." + }, + { + "type": "fix", + "note": "Fix a crash when executing a prepared EXECUTE statement after its target statement was deallocated." + }, + { + "type": "fix", + "note": "Return NULL instead of the text 'null' for a JSON null in the json ->> operator." + }, + { + "type": "fix", + "note": "Recognize schema-qualified self-referencing foreign keys in CREATE TABLE." + }, + { + "type": "fix", + "note": "Report MERGE ... WHEN NOT MATCHED THEN INSERT as not yet supported instead of failing an internal assertion." + }, + { + "type": "fix", + "note": "Support user-defined types such as enums as declared parameter types in prepared statements." + }, + { + "type": "fix", + "note": "Send the correct element lengths in binary enum arrays, which psycopg previously crashed on." + }, + { + "type": "fix", + "note": "Name the rejected value in the error for an unsupported client_encoding." + }, + { + "type": "fix", + "note": "Quote control characters in text array output the PostgreSQL way instead of with JSON escapes." + }, + { + "type": "fix", + "note": "Reject invalid UTF-8 in binary \"char\" parameters." + }, + { + "type": "fix", + "note": "Fix format('%L', NULL) and quote_nullable(NULL) returning 'NULL' in quotes instead of NULL." + }, + { + "type": "fix", + "note": "Fix a crash in joins against a subquery or filter that returned at most one row." + }, + { + "type": "fix", + "note": "Fix the error \"cannot get physical types for row type\" for scalar subqueries that the optimizer can prove return no rows, such as (SELECT x FROM t WHERE false)." + }, + { + "type": "fix", + "note": "Fix a crash which sometimes manifested in table scans with more than 40 conditions on one table." + }, + { + "type": "fix", + "note": "Fix ARRAY(SELECT ... ORDER BY ... LIMIT n) ignoring LIMIT and OFFSET`." + }, + { + "type": "fix", + "note": "Fix json_agg() in a correlated subquery returning an extra ] when several outer rows have the same correlated value." + }, + { + "type": "fix", + "note": "Fix a crash in scans that filter on several nullable columns with IS NOT TRUE and similar conditions." + }, + { + "type": "fix", + "note": "Fix a crash when trying to drop a schema that doesn't exist as non-superuser." + }, + { + "type": "fix", + "note": "Fix LEFT JOIN and NOT EXISTS returning too few rows when part of the query matched nothing." + }, + { + "type": "fix", + "note": "Fix EXISTS or IN checks combined with OR returning too few rows when the compared column was NULL." + }, + { + "type": "fix", + "note": "Fix a crash when calling json_array_length(json), jsonb_array_length(json) or a vector function with a non-text constant." + }, + { + "type": "fix", + "note": "Fixed DISTINCT ON with a column position, or with a column name that appears in more than one joined table." + }, + { + "type": "fix", + "note": "Reject temporary views and SELECT INTO in materialized views." + }, + { + "type": "fix", + "note": "Fix several edge cases around schema USAGE permission checks." + }, + { + "type": "fix", + "note": "Protect builtin roles and schemas from modification." + }, + { + "type": "fix", + "note": "Prevent ALTER TABLEfrom invalidating views, materialized views and RLS policies." + }, + { + "type": "fix", + "note": "Fixed a bug where CedarDB inlined CTEs and computed them multiple times even when it contained volatile functions which may only run once." + }, + { + "type": "fix", + "note": "Check for hidden column when SELECT * is called in a view and do not display them." + }, + { + "type": "fix", + "note": "Fall back to USING policy when an ALL policy omits an existing WITH CHECK instead of blanket denying an insert." + }, + { + "type": "fix", + "note": "When a client disconnects while running a query, this query is now canceled." + }, + { + "type": "fix", + "note": "Accept any supported privilege in has_X_privilege function instead of requiring all of them." + }, + { + "type": "fix", + "note": "List INET type in pg_catalog." + }, + { + "type": "fix", + "note": "Correctly print sequence precision in information_schema.sequences." + }, + { + "type": "fix", + "note": "Display all temporary objects in pg_catalog, independent of the session they belong to." + }, + { + "type": "fix", + "note": "Reject SELECT FOR UPDATE on views and materialized views." + }, + { + "type": "fix", + "note": "Return timestamp with timezone range instead of timestamp range if tstzrange is called." + }, + { + "type": "fix", + "note": "Some fixes where Collation was ignored." + }, + { + "type": "fix", + "note": "Check full permissions for EXPLAIN statements." + }, + { + "type": "fix", + "note": "Do not ALTER or DROP user defined functions if the parameter types are different." + }, + { + "type": "fix", + "note": "Run data-modifying CTEs exactly once and to completion." + } + ] + }, { "version": "v2026-09-29", "date": "2026-09-29",