|
| 1 | +## v25.2.0-alpha.2 |
| 2 | + |
| 3 | +Release Date: March 31, 2025 |
| 4 | + |
| 5 | +{% include releases/new-release-downloads-docker-image.md release=include.release %} |
| 6 | + |
| 7 | +<h3 id="v25-2-0-alpha-2-sql-language-changes">SQL language changes</h3> |
| 8 | + |
| 9 | +- `num_nulls()` and `num_nonnulls()` no longer require that all arguments have the same type. |
| 10 | + [#141193][#141193] |
| 11 | +- `concat()` no longer requires that all arguments have the same type. |
| 12 | + [#141193][#141193] |
| 13 | +- `pg_column_size()` no longer requires that all arguments have the same type. |
| 14 | + [#141193][#141193] |
| 15 | +- Users can now begin logical data replication (LDR) on an existing table if the user has a table-level `REPLICATIONDEST` privilege. Furthermore, users can now begin LDR onto an automatically created table if the user has the parent database level `CREATE` privilege. Finally, during bidirectional LDR, the user in the original source URI, who will begin the reverse LDR stream, will authorize via this table-level `REPLICATIONDEST` privilege. |
| 16 | + [#142840][#142840] |
| 17 | +- `concat_ws()` now accepts arguments of any type in the second and later positions (the separator must still be a string). |
| 18 | + [#141193][#141193] |
| 19 | +- Filters are now supported in JSONPath queries, using the format `$ ? (predicate)`. This allows results to be filtered. For example, `SELECT jsonb_path_query('{"a": [1,2,3]}', '$.a ? (1 == 1)');`. |
| 20 | + [#143097][#143097] |
| 21 | +- `format()` no longer requires that all post-format string arguments have the same type. |
| 22 | + [#141193][#141193] |
| 23 | +- `json_build_object()`, `jsonb_build_object()`, `json_build_array()`, and `jsonb_build_array()` no longer require that all arguments have the same type. |
| 24 | + [#141193][#141193] |
| 25 | +- Added the `jsonb_path_exists` function, which accepts a JSON object and JSONPath query and returns whether the query returned any items. |
| 26 | + [#143028][#143028] |
| 27 | +- Addition, subtraction, multiplication, division, and modulo operators are now supported in JSONPath queries. |
| 28 | + [#143210][#143210] |
| 29 | + |
| 30 | +<h3 id="v25-2-0-alpha-2-operational-changes">Operational changes</h3> |
| 31 | + |
| 32 | +- All `ALTER VIRTUAL CLUSTER REPLICATION JOB` commands for physical cluster replication (PCR), except for `ALTER VIRTUAL CLUSTER SET REPLICATION SOURCE`, will require the `REPLICATIONDEST` privilege, in addition to `MANAGEVIRTUALCLUSTER`. `ALTER VIRTUAL CLUSTER SET REPLICATION SOURCE` now requires the `REPLICATIONSOURCE` privilege. If the ingestion job was created before v25.1, the user can still alter the replication job without the `REPLICATIONDEST` privilege. |
| 33 | + [#142772][#142772] |
| 34 | + |
| 35 | +<h3 id="v25-2-0-alpha-2-db-console-changes">DB Console changes</h3> |
| 36 | + |
| 37 | +- The lock and latch wait time components of a query's cumulative contention time are now tracked separately and surfaced as annotations in `EXPLAIN ANALYZE` output. |
| 38 | + [#113649][#113649] |
| 39 | +- The metric that measures cumulative contention time now includes time spent waiting to acquire latches, in addition to time spent acquiring locks. This metric is displayed in both the DB Console and the `EXPLAIN ANALYZE` output. |
| 40 | + [#113649][#113649] |
| 41 | +- The Replica Quiescence graph on the Replication dashboard in the DB Console now displays the number of replicas quiesced with leader leases. [#143215][#143215] |
| 42 | + |
| 43 | +<h3 id="v25-2-0-alpha-2-bug-fixes">Bug fixes</h3> |
| 44 | + |
| 45 | +- Fixed a bug where index backfills unnecessarily merged new data written to an index, which could lead to extra contention. |
| 46 | + [#142768][#142768] |
| 47 | +- Fixed a bug that could leave behind a dangling reference to a dropped role if that role had default privileges granted to itself. The bug was caused by defining privileges such as: `ALTER DEFAULT |
| 48 | + PRIVILEGES FOR ROLE self_referencing_role GRANT INSERT ON TABLES TO self_referencing_role`. [#143287][#143287] |
| 49 | +- Fixed a bug that caused changefeeds to fail on startup when scanning a single key. |
| 50 | + [#143102][#143102] |
| 51 | +- Fixed a bug where secondary indexes could be unusable by DML statements while a primary key swap was occurring, if the new primary key did not contain columns from the old primary key. |
| 52 | + [#141850][#141850] |
| 53 | +- Fixed a crash due to `use of enum metadata before hydration` when using LDR with user-defined types. [#143311][#143311] |
| 54 | +- MVCC garbage collection is now fully subject to IO admission control. Previously, it was possible for MVCC GC to cause store overload (such as LSM inversion) when a large amounts of data would become eligible for garbage collection. Should any issues arise from subjecting MVCC GC to admission control, the `kv.mvcc_gc.queue_kv_admission_control.enabled` cluster setting can be set to `false` to restore the previous behavior. [#143122][#143122] |
| 55 | +- Fixed a bug where CockroachDB would encounter an internal error when decoding the gists of plans with `CALL` statements. The bug had been present since v23.2. |
| 56 | + [#143252][#143252] |
| 57 | +- Fixed a bug where calling a stored procedure could drop the procedure if it had `OUT` parameters that were not used by the calling routine. This bug had existed since PL/pgSQL `CALL` statements were introduced in v24.1. |
| 58 | + [#143173][#143173] |
| 59 | +- Fixed a bug where CockroachDB incorrectly resolved routine overloads in some cases. Previously, it allowed creating routines with signatures differing only in type width (e.g., `f(p VARCHAR(1))` and `f(p VARCHAR(2))`), which is not permitted in PostgreSQL. This required precise type casting during invocation. Similarly, when dropping a routine, CockroachDB previously required exact types, unlike PostgreSQL, which is more lenient (e.g., `DROP FUNCTION f(VARCHAR)` would fail in the preceding example). This bug had existed since v23.1. |
| 60 | + [#143159][#143159] |
| 61 | +- The reader virtual cluster now starts if the user begins a physical cluster replication (PCR) stream from a cursor via `ALTER VIRTUAL CLUSTER virtual_cluster START REPLICATION OF physical_cluster ON pgurl WITH READ VIRTUAL CLUSTER`. |
| 62 | + [#143072][#143072] |
| 63 | + |
| 64 | +<h3 id="v25-2-0-alpha-2-performance-improvements">Performance improvements</h3> |
| 65 | + |
| 66 | +- Index backfills and row-level TTL deletions that encounter transaction contention will now be retried with smaller batch sizes more quickly, which reduces the latency of these jobs under high-contention workloads. |
| 67 | + [#142702][#142702] |
| 68 | +- Queries that use `SHOW TABLES` without using the `estimated_row_count` column no longer need to look up the table statistics. |
| 69 | + [#59838][#59838] |
| 70 | + |
| 71 | +<h3 id="v25-2-0-alpha-2-miscellaneous">Miscellaneous</h3> |
| 72 | + |
| 73 | +- `pg_column_size()` is now regarded as Stable, matching PostgreSQL. As a result, it will no longer be allowed in computed column expressions or partial index predicate expressions. |
| 74 | + [#141193][#141193] |
| 75 | + |
| 76 | + |
| 77 | +[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 |
| 78 | +[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 |
| 79 | +[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 |
| 80 | +[#142772]: https://github.com/cockroachdb/cockroach/pull/142772 |
| 81 | +[#113649]: https://github.com/cockroachdb/cockroach/pull/113649 |
| 82 | +[#143159]: https://github.com/cockroachdb/cockroach/pull/143159 |
| 83 | +[#141193]: https://github.com/cockroachdb/cockroach/pull/141193 |
| 84 | +[#143210]: https://github.com/cockroachdb/cockroach/pull/143210 |
| 85 | +[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 |
| 86 | +[#143102]: https://github.com/cockroachdb/cockroach/pull/143102 |
| 87 | +[#143311]: https://github.com/cockroachdb/cockroach/pull/143311 |
| 88 | +[#143173]: https://github.com/cockroachdb/cockroach/pull/143173 |
| 89 | +[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 |
| 90 | +[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 |
| 91 | +[#143097]: https://github.com/cockroachdb/cockroach/pull/143097 |
| 92 | +[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 |
| 93 | +[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 |
| 94 | +[#142702]: https://github.com/cockroachdb/cockroach/pull/142702 |
| 95 | +[#143028]: https://github.com/cockroachdb/cockroach/pull/143028 |
| 96 | +[#142768]: https://github.com/cockroachdb/cockroach/pull/142768 |
0 commit comments