---
title: "What's new in the v2.23 preview release series"
url: "https://docs.yugabyte.com/stable/releases/ybdb-releases/end-of-life/v2.23/"
---

# What's new in the v2.23 preview release series

Enhancements, changes, and resolved issues in the v2.23 preview release series.

- [![Server Icon](/icons/database.svg)YugabyteDB](/stable/releases/ybdb-releases/end-of-life/v2.23/)
- [![Server Icon](/icons/server.svg)YugabyteDB Anywhere](/stable/releases/ybdb-releases/end-of-life/v2.23-anywhere/)

## Release announcements

- [Enhanced Cron Job Resilience With pg\_cron in YugabyteDB](https://www.yugabyte.com/blog/enhanced-cron-job-resilience-in-yugabytedb/ "Enhanced Cron Job Resilience With pg_cron in YugabyteDB")

## v2.23.1.0 - November 12, 2024

**Build:** `2.23.1.0-b220`

### Downloads

- [macOS](https://software.yugabyte.com/releases/2.23.1.0/yugabyte-2.23.1.0-b220-darwin-x86_64.tar.gz)
- [Linux x86](https://software.yugabyte.com/releases/2.23.1.0/yugabyte-2.23.1.0-b220-linux-x86_64.tar.gz)
- [Linux ARM](https://software.yugabyte.com/releases/2.23.1.0/yugabyte-2.23.1.0-b220-el8-aarch64.tar.gz)

**Docker:**

```sh
docker pull yugabytedb/yugabyte:2.23.1.0-b220
```

### Change log

View the detailed changelog

### Improvements

#### YSQL

- Changes the CatalogCacheMisses metric name to showcase separate cache misses for each catalog cache, assisting users in easily preloading necessary catalog tables. [#22843](https://github.com/yugabyte/yugabyte-db/issues/22843)
- Enables in-place updates for non-key columns in indexes, reducing number of flushes. [#20908](https://github.com/yugabyte/yugabyte-db/issues/20908)
- Introduces the `yb_make_next_ddl_statement_nonincrementing` configuration parameter to reduce catalog version increments during many consecutive DDLs, lowering memory and latency spikes. [#23786](https://github.com/yugabyte/yugabyte-db/issues/23786)
- Updates advisory lock error message with a workaround hint instead of `not yet implemented.` [#23881](https://github.com/yugabyte/yugabyte-db/issues/23881)
- Allows certain ALTER VIEW commands in the parser without requiring additional changes. [#23117](https://github.com/yugabyte/yugabyte-db/issues/23117)
- Includes a modification to ysql\_dump and Postgres that ensures all pg\_class and pg\_type OID preservation across a backup/restore when passing the include-yb-metadata flag. [#23304](https://github.com/yugabyte/yugabyte-db/issues/23304)
- Streamlines sys table prefetching by automatically resetting catalog read time. [#23502](https://github.com/yugabyte/yugabyte-db/issues/23502)
- Simplifies several ybc\_pggate functions for better value return and removes unused functions. [#23513](https://github.com/yugabyte/yugabyte-db/issues/23513)
- Revamps the restoration of old backups by only applying the check for `pg_class OID` if the new YSQL configuration parameter, `yb_ignore_heap_pg_class_oids`, is enabled. [#23304](https://github.com/yugabyte/yugabyte-db/issues/23304)
- Unmodified columns on main table will continue to be written out when update optimizations are enabled, removing dependency on the feature controlled by `ysql_skip_row_lock_for_update`. [#18822](https://github.com/yugabyte/yugabyte-db/issues/18822)
- Adds table-level Prometheus metrics for catcache misses at node-level, viewable at `:13000/prometheus-metrics` endpoint. [#23706](https://github.com/yugabyte/yugabyte-db/issues/23706)
- Auto analyze service now tracks mutation counts from DDL changes and eliminates redundant analysis of indexes. [#22104](https://github.com/yugabyte/yugabyte-db/issues/22104), [#23506](https://github.com/yugabyte/yugabyte-db/issues/23506)
- Adds serialization/deserialization and equality checking mechanism for update optimization metadata. [#18822](https://github.com/yugabyte/yugabyte-db/issues/18822)
- Allows adding a primary key using a unique index by performing a table rewrite. [#23118](https://github.com/yugabyte/yugabyte-db/issues/23118)
- Enables the batch execution of explicit row lock requests in Pg, improving the handling and performance of such requests. [#22519](https://github.com/yugabyte/yugabyte-db/issues/22519)
- Allows validation of foreign-key and check constraints with `ALTER TABLE ...VALIDATE CONSTRAINT`. [#3946](https://github.com/yugabyte/yugabyte-db/issues/3946)
- Added yb\_make\_next\_ddl\_statement\_nonincrementing to YbDbAdminVariables for yb\_db\_admin role. [#23786](https://github.com/yugabyte/yugabyte-db/issues/23786)
- Allows preloading of foreign key lists in relcache, avoiding on-demand master fetches, controlled by `yb_enable_fkey_catcache`. [#23686](https://github.com/yugabyte/yugabyte-db/issues/23686)
- Refines the PatchStatus function by storing relation id directly in the relations vector, avoiding the need to call the PgSession::LoadTable method. [#24040](https://github.com/yugabyte/yugabyte-db/issues/24040)

#### YCQL

- Updates YCQL tables `system_schema.functions` and `system_schema.aggregates` to align with Cassandra, aiding Cortex migration. [#3893](https://github.com/yugabyte/yugabyte-db/issues/3893)

#### DocDB

- Reduces risk of WAL over-garbage collection in xCluster and avoids unnecessary flushes by modifying the WAL retention policy. [#22862](https://github.com/yugabyte/yugabyte-db/issues/22862)
- Enables reduction of duplicate code and custom flag filtering through `GetFlagInfos` relocation. [#23632](https://github.com/yugabyte/yugabyte-db/issues/23632)
- Accelerates xCluster setup for tables by reducing setup time, storing all intermediate state in-memory, and limiting writes to `sys_catalog`. [#23286](https://github.com/yugabyte/yugabyte-db/issues/23286)
- Allows adding new CatalogEntries without modifying the sys-catalog-tool through using helper functions. [#23235](https://github.com/yugabyte/yugabyte-db/issues/23235)
- Enables reading stored vector index data from DocDB. [#23460](https://github.com/yugabyte/yugabyte-db/issues/23460)
- Enables scanning of the `sequences_data` table for xCluster replication, aiding in the bootstrapping process by integrating current sequence information into the WAL from the source universe. [#23493](https://github.com/yugabyte/yugabyte-db/issues/23493)
- Introduces `DEFINE_NEW_INSTALL_VALUE` macro to enable controlled rollout of new features in fresh clusters. [#23505](https://github.com/yugabyte/yugabyte-db/issues/23505)
- Enables taking into account of changed data during a vector index data update. [#23524](https://github.com/yugabyte/yugabyte-db/issues/23524)
- Adds utilities for HNSW vector index implementation, benchmarking, and file reading. [#23376](https://github.com/yugabyte/yugabyte-db/issues/23376)
- Removes the `CallVisitor` template function to simplify the sys-catalog-tool code. [#23548](https://github.com/yugabyte/yugabyte-db/issues/23548)
- Allows each sequence to have an update in the WAL for seamless xCluster replication. [#23493](https://github.com/yugabyte/yugabyte-db/issues/23493)
- Introduces a command-line tool for building, validating, and benchmarking HNSW indexes with Usearch implementation. [#23556](https://github.com/yugabyte/yugabyte-db/issues/23556)
- Offers support for different vector coordinate types including vector-related templates. [#23613](https://github.com/yugabyte/yugabyte-db/issues/23613)
- Imports hnswlib header-only library for enhancements. [#23609](https://github.com/yugabyte/yugabyte-db/issues/23609)
- Introduces a new gflag `max_disk_throughput_mbps` for automated control of write rejections when disk is full, replacing `reject_writes_min_disk_space_aggressive_check_mb`. [#23373](https://github.com/yugabyte/yugabyte-db/issues/23373)
- Allows easier debugging with additional logging and updated log prefixes. [#23702](https://github.com/yugabyte/yugabyte-db/issues/23702)
- Ensures that ddl\_queue and replicated\_ddls do not colocate on the same tablet in colocated databases. [#23728](https://github.com/yugabyte/yugabyte-db/issues/23728)
- Integrates hnswlib into the vector indexing framework, adding wrapper and allowing different distance calculations. [#23752](https://github.com/yugabyte/yugabyte-db/issues/23752)
- Eliminates the capability to rename xCluster replication groups, reducing potential confusion. [#23778](https://github.com/yugabyte/yugabyte-db/issues/23778)
- Enables sequences replication feature in source universe by creating `sequences_data` table and incorporating an outgoing stream. [#23917](https://github.com/yugabyte/yugabyte-db/issues/23917)
- Enables shared memory by default for executing read and write pg client queries to enhance performance. [#23820](https://github.com/yugabyte/yugabyte-db/issues/23820)
- Streamlines automatic syncing of inline third-party dependencies and breaks down `thirdparty_tool` into separate modules. [#23846](https://github.com/yugabyte/yugabyte-db/issues/23846)
- Enables automatic application of DDL changes in xCluster using `automatic_ddl_mode` proto field. [#23860](https://github.com/yugabyte/yugabyte-db/issues/23860)
- Enables display of cluster\_uuid in tserver /varz endpoint for better test and call\_home tracking. [#23864](https://github.com/yugabyte/yugabyte-db/issues/23864)
- Resets the `cdc_wal_retention_time_secs` value on table removal from xCluster replication and applies updates dynamically, eliminating need to drop and recreate replication. [#20769](https://github.com/yugabyte/yugabyte-db/issues/20769)
- Ensures correct functioning of `search_path` by skipping its value's enquote during transaction setup. [#23440](https://github.com/yugabyte/yugabyte-db/issues/23440)
- Enhances sequence generation consistency by making backend process stick to a logical connection when initializing a sequence variable with `nextval` function. [#23601](https://github.com/yugabyte/yugabyte-db/issues/23601)
- Ensures DDL operations success with a sleep interval after database catalog version updates when Connection Manager is active. [#23756](https://github.com/yugabyte/yugabyte-db/issues/23756)
- Updates the callhome URL to use HTTPS for enhanced security. [#23947](https://github.com/yugabyte/yugabyte-db/issues/23947)
- Includes PID in yb\_active\_session\_history for easy correlation with actual processes in YSQL, YCQL, and background activities. [#23070](https://github.com/yugabyte/yugabyte-db/issues/23070)
- Allows reduction of thread stack size to avoid Linux hugepage backing. [#23927](https://github.com/yugabyte/yugabyte-db/issues/23927)
- Allows explicit addition of gFlags to `gflag_allowlist.txt` for secure callhome data collection, plus `version_info` in tserver data. [#24103](https://github.com/yugabyte/yugabyte-db/issues/24103)
- Adds `max_follower_heartbeat_delay` metric to alert users when the master follower heartbeat delay is too high. [#21178](https://github.com/yugabyte/yugabyte-db/issues/21178)
- Removes the need to set `set_cdc_min_replicated_index` during xCluster bootstrap for improved log retention. [#24105](https://github.com/yugabyte/yugabyte-db/issues/24105)
- Ensures the user interface accurately displays disk size, even when multiple data directories are used. [#23810](https://github.com/yugabyte/yugabyte-db/issues/23810)

#### CDC

- Allows dynamic table addition alongside table removal from CDC streams without needing to disable or restart. [#23581](https://github.com/yugabyte/yugabyte-db/issues/23581)
- Adds `DYNAMIC_TABLES_DISABLED` yb-admin option to disable dynamic table addition when creating new streams. [#23482](https://github.com/yugabyte/yugabyte-db/issues/23482)
- Enables default non-eligible table cleanup in CDC streams, replaces the flag `enable_cleanup_of_non_eligible_tables_from_cdcsdk_stream` with `cdcsdk_enable_dynamic_table_addition_with_table_cleanup`, and removes flag protection for table identification. [#23806](https://github.com/yugabyte/yugabyte-db/issues/23806)
- Syncs table removal from a CDC stream to a more performant async process, allowing both manual and automatic removal via the `RemoveUserTableFromCDCSDKStream` and `RemoveTablesFromCDCSDKStream` RPCs respectively. [#23700](https://github.com/yugabyte/yugabyte-db/issues/23700)
- Disables `wal_level` checks for logical replication in YSQL as PG WAL is not used. [#23661](https://github.com/yugabyte/yugabyte-db/issues/23661)
- Changes the default `wal_level` to `logical` to ensure compatibility with logical replication clients. [#23661](https://github.com/yugabyte/yugabyte-db/issues/23661)
- Enables asynchronous removal of user tables from CDC streams by adjusting how background threads process and persist stream metadata. [#23700](https://github.com/yugabyte/yugabyte-db/issues/23700)
- Enables tablet splitting on tables under CDCSDK stream by default using the GFLAG `enable_tablet_split_of_cdcsdk_streamed_tables`. [#24190](https://github.com/yugabyte/yugabyte-db/issues/24190)
- Adds a tag for the slot name attribute in the CDC metrics. [#24307](https://github.com/yugabyte/yugabyte-db/issues/24307)

#### yugabyted

- Handles OBJECT\_NOT\_FOUND errors during SELECT/UPDATE/DELETE after TRUNCATE when Connection Manager is enabled. [#23668](https://github.com/yugabyte/yugabyte-db/issues/23668)
- Enables bitmap scans and removes size-based fetching in the pg parity feature by updating GFlags. [#23777](https://github.com/yugabyte/yugabyte-db/issues/23777)
- Updates to the pg parity testcase now remove size-based fetching and include enabling bitmap scans. [#23777](https://github.com/yugabyte/yugabyte-db/issues/23777)
- Changes the flag name from `enable_pg_parity_tech_preview` to `enable_pg_parity_early_access` in all branches. [#23896](https://github.com/yugabyte/yugabyte-db/issues/23896)
- Stops sending gflags details in the callhome diagnostics to eliminate redundant data. [#24029](https://github.com/yugabyte/yugabyte-db/issues/24029)

### Bug fixes

#### YSQL

- Removes unnecessary DCHECK for smoother rolling upgrades from release 2.20, enhancing `ysql_enable_db_catalog_version_mode` gflag functionality. [#23462](https://github.com/yugabyte/yugabyte-db/issues/23462)
- Fixes an issue related to regular expression pushdown causing inconsistency and crashes by introducing thread local cache. [#22989](https://github.com/yugabyte/yugabyte-db/issues/22989)
- Resets catalog read time after table prefetching to prevent outdated readings for on-demand loading from a master. [#23421](https://github.com/yugabyte/yugabyte-db/issues/23421)
- Corrects IndexScan's indextlist to improve accuracy of variable references in subquery scenarios. [#22533](https://github.com/yugabyte/yugabyte-db/issues/22533)
- Prevents individually moving a colocated table to a different tablespace, forcing users to move all tables collectively. [#23314](https://github.com/yugabyte/yugabyte-db/issues/23314)
- Minimizes read restart errors during ANALYZE operation by using a fresh read time for each table, finding an optimal balance between read oldness and transactionality. [#22135](https://github.com/yugabyte/yugabyte-db/issues/22135)
- Reduces the memory consumption of the `fk_reference_cache_` in large transactions, thereby ensuring minimal use of RAM. [#23734](https://github.com/yugabyte/yugabyte-db/issues/23734)
- Prevents retry of schema mismatch errors in batched execution mode to maintain transaction atomicity. [#23843](https://github.com/yugabyte/yugabyte-db/issues/23843)
- Revamped `Storage Read Requests` metric now better reflects true RPC count in `PrecastRequestSender` usage. [#23396](https://github.com/yugabyte/yugabyte-db/issues/23396), [#18785](https://github.com/yugabyte/yugabyte-db/issues/18785)
- Resolves `INSERT ON CONFLICT` bugs in temporary tables to ensure consistent outputs. [#1999](https://github.com/yugabyte/yugabyte-db/issues/1999)
- Fixes a TupleDesc reference leak warning in nested INSERT ON CONFLICT. [#23429](https://github.com/yugabyte/yugabyte-db/issues/23429)
- Restores unintentional grammar changes to YSQL ALTER SCHEMA command for bug fix. [#23457](https://github.com/yugabyte/yugabyte-db/issues/23457)
- Fixes repeated calls in `DeleteTableInternal`, preventing `YbAdminSnapshotScheduleTest.SysCatalogRetention` failure on asan builds. [#23459](https://github.com/yugabyte/yugabyte-db/issues/23459)
- Resolves potential memory corruption by mutating pushdown expressions outside the per tuple context. [#23461](https://github.com/yugabyte/yugabyte-db/issues/23461)
- Eliminates the publishing of empty metrics from the `statementType` enum on the YSQL Metrics endpoint. [#23557](https://github.com/yugabyte/yugabyte-db/issues/23557)
- Simplifies the process of identifying identical data by using storage equality, not semantic equality, during UPDATE queries, handling problems that arise when data types lack equality operators or when user-defined data types exhibit unusual semantic equality. [#23490](https://github.com/yugabyte/yugabyte-db/issues/23490)
- Addresses a bug in YSQL that caused crashes while costing an index scan on a hash index with included columns using CBO. [#22772](https://github.com/yugabyte/yugabyte-db/issues/22772)
- Adds more logs to aid in debugging a transaction status mismatch issue. [#23669](https://github.com/yugabyte/yugabyte-db/issues/23669)
- Fixes the hanging issue when creating a colocated table by correcting the unconditional reading of the `relkind` column. [#23708](https://github.com/yugabyte/yugabyte-db/issues/23708)
- Adds `log_dist` option to auto\_explain docs for YSQL. [#23814](https://github.com/yugabyte/yugabyte-db/issues/23814)
- Addresses the issue of invalid Attnum with Bitmap Scan +subplans +nested loops previously encountered in Index Scans. [#23596](https://github.com/yugabyte/yugabyte-db/issues/23596)
- Adds table name to table-level metrics on `/metrics` endpoint for better identification. [#23707](https://github.com/yugabyte/yugabyte-db/issues/23707)
- Fixes a bug that caused incorrect deducing of commit/abort status for transactions which do not change the table's schema. [#23669](https://github.com/yugabyte/yugabyte-db/issues/23669)
- Adds HELP and TYPE metadata to YSQL Prometheus metrics endpoint for better metrics accessibility. [#23578](https://github.com/yugabyte/yugabyte-db/issues/23578)
- Corrects an issue causing heap-buffer-overflow errors during ysqlconnmgr ASAN tests. [#23913](https://github.com/yugabyte/yugabyte-db/issues/23913)
- Fixes a crash caused by using the `pg_hint_plan` with the `hint_table` enabled. [#23547](https://github.com/yugabyte/yugabyte-db/issues/23547)
- Updates the copyright string from `YugaByteDB` to the correct version `YugabyteDB`, ensuring error-free linter runs. [#23940](https://github.com/yugabyte/yugabyte-db/issues/23940)
- Allows for a modified calculation of net connections in YSQL connection manager with the warmup random mode. [#23588](https://github.com/yugabyte/yugabyte-db/issues/23588)
- Prevents background parallel workers from executing check/assign hooks of YSQL configuration parameters, eliminating potential crashes. [#23787](https://github.com/yugabyte/yugabyte-db/issues/23787)
- Modifies backup/restore process to skip column name checks for indexes, allowing for successful restoration even with renamed columns. [#24207](https://github.com/yugabyte/yugabyte-db/issues/24207)
- Fixes crashes caused by using a RowComparisonExpression on a reordered primary key index. [#23824](https://github.com/yugabyte/yugabyte-db/issues/23824)
- Improves cache re-invalidation for `ALTER TABLE` commands to avoid schema version mismatch errors within the same session. [#23882](https://github.com/yugabyte/yugabyte-db/issues/23882)
- Streamlines ysql\_dump process by eliminating faulty statements for colocated table unique constraint, enhancing database reliability. [#24057](https://github.com/yugabyte/yugabyte-db/issues/24057)
- Introduces batching for the `INSERT ON CONFLICT` command to enhance performance by minimizing alternating read and write operations. [#24179](https://github.com/yugabyte/yugabyte-db/issues/24179)
- Fixes the flaw in the current DDL atomicity workflow where only the first table's schema was compared, even if it doesn't change after a schema version increment. [#23988](https://github.com/yugabyte/yugabyte-db/issues/23988)
- Alters encoding setup order to ensure `UTF8` use instead of `SQL_ASCII` and adds `pg_collation` to preloaded tables to prevent specific errors. [#24149](https://github.com/yugabyte/yugabyte-db/issues/24149)
- Corrects a typo to prevent incorrect loading of pg\_collation catalog caches, eliminating associated performance issues. [#24149](https://github.com/yugabyte/yugabyte-db/issues/24149)

#### YCQL

- Eliminates unexpected error during shell type definition update across multiple sessions. [#24217](https://github.com/yugabyte/yugabyte-db/issues/24217)

#### DocDB

- Prevents tablet bootstrap from getting stuck when replaying a truncate operation. [#23243](https://github.com/yugabyte/yugabyte-db/issues/23243)
- Limits the response size of ListSnapshotSchedules RPC by excluding unnecessary per-object details to prevent overflow issues. [#23518](https://github.com/yugabyte/yugabyte-db/issues/23518)
- Reduces the risk of deadlocks when making active read/write requests to a table right after a tablet-split. [#23747](https://github.com/yugabyte/yugabyte-db/issues/23747)
- Simplifies handling of large RPC responses by catching errors earlier and appropriately using `narrow_cast`. [#22301](https://github.com/yugabyte/yugabyte-db/issues/22301)
- Fixes errors from executing rpc callback twice due to lack of return after detecting disabled wait-queue or deadlock features. [#23808](https://github.com/yugabyte/yugabyte-db/issues/23808)
- Switches write query duration from `CoarseMonoClock` to `MonoClock` for precise nanosecond granularity. [#20335](https://github.com/yugabyte/yugabyte-db/issues/20335)
- Sets the `close_timestamp_micros` field for partially copied log segments to prevent time-based policy violation. [#23335](https://github.com/yugabyte/yugabyte-db/issues/23335)
- Eliminates persistent logging issue after dropping a colocated table by removing unnecessary logs. [#22037](https://github.com/yugabyte/yugabyte-db/issues/22037)
- Corrects leader balancing for geopartitioned tables to prevent early exits and ensure accurate global leader sorting. [#23886](https://github.com/yugabyte/yugabyte-db/issues/23886)
- Adds `database_oid` to the `TSLocalLockManager` locking contract to distinguish objects from different databases. [#23454](https://github.com/yugabyte/yugabyte-db/issues/23454)
- Adds debugging information for retryable requests rejected by followers despite acceptance by leaders. [#23523](https://github.com/yugabyte/yugabyte-db/issues/23523)
- Corrects typo and includes minimum allowed value in the validation message for `xcluster_checkpoint_max_staleness_secs` flag. [#23576](https://github.com/yugabyte/yugabyte-db/issues/23576)
- Prevents tablet partition collision during `ImportSnapshot` by not cloning `DELETED` or `REPLACED` tablets. [#23552](https://github.com/yugabyte/yugabyte-db/issues/23552)
- Allows pg\_cron to correctly handle SIGTERM by using `quickdie` instead of `die` or `pg_cron_sigterm`. [#23655](https://github.com/yugabyte/yugabyte-db/issues/23655)
- Allows the retry of checkpoint if `leader not ready` or `service unavailable` errors occur, and prevents client retries on a failed checkpoint by storing an `InternalError` status. [#23719](https://github.com/yugabyte/yugabyte-db/issues/23719)
- Restores `transaction_aware` field in `master_backup.proto` for compatibility with older DB versions. [#23739](https://github.com/yugabyte/yugabyte-db/issues/23739)
- Enhances tablet limit flags by adding more details to the main flag and adjusting the help strings. [#23695](https://github.com/yugabyte/yugabyte-db/issues/23695)
- Adds filtering for bootstrap intent iterators based on `min_replay_txn_start_ht` to prevent unnecessary SST files buildup during bootstrap. [#23890](https://github.com/yugabyte/yugabyte-db/issues/23890)
- Fixes a compile error caused by a mismatch in the declaration of `protobuf_message_total_bytes_limit`. [#23828](https://github.com/yugabyte/yugabyte-db/issues/23828)
- Reduces the potential for core dump errors during Point In Time Recovery (PITR) by utilizing shared\_ptr in callbacks. [#23399](https://github.com/yugabyte/yugabyte-db/issues/23399)
- Renames the `yql_endpoint_tserver_uuid` field to `top_level_node_id` in `/rpcz` to maintain consistency. [#23835](https://github.com/yugabyte/yugabyte-db/issues/23835)
- Ensures correct and consistent updating of `grptablespace` column in `pg_yb_tablegroup` after `ALTER TABLE` command. [#23336](https://github.com/yugabyte/yugabyte-db/issues/23336)
- Ensures the `CREATE TABLE ...TABLESPACE pg_default` command in colocated databases aligns with PostgreSQL semantics. [#23410](https://github.com/yugabyte/yugabyte-db/issues/23410)
- Now treats YSQL configuration parameters in a case-insensitive manner, avoiding variable duplication and potential failures, aligning closer with Postgres behavior. [#23478](https://github.com/yugabyte/yugabyte-db/issues/23478)
- Ensures node restarts successfully with `secure` enabled by introducing a timeout framework. [#23447](https://github.com/yugabyte/yugabyte-db/issues/23447)
- Restores loading of old dumps that lack index PG class OIDs by enhancing the flag `yb_ignore_pg_class_oids`. [#23626](https://github.com/yugabyte/yugabyte-db/issues/23626)
- Promotes cluster start-up when master\_webserver\_port is customized by considering user input during the `validate_and_set_configs` step. [#23629](https://github.com/yugabyte/yugabyte-db/issues/23629)
- Allows the packed row size to exceed its limit during repacking, preventing tserver crash after `alter table add column` commands with a default value. [#24050](https://github.com/yugabyte/yugabyte-db/issues/24050)
- The update stabilizes WriteBuffer, preventing potential crashes when constructed over non-zeroed memory. [#23960](https://github.com/yugabyte/yugabyte-db/issues/23960)
- Adds a null check to prevent a system crash when cleaning up a recently applied transaction state after a flush operation. [#24026](https://github.com/yugabyte/yugabyte-db/issues/24026)
- Resolves the shutdown issue with the shared exchange causing TServer to hang by properly managing concurrent threads and session destruction, and sets `pg_client_use_shared_memory` to false by default on Mac to enhance performance. [#24000](https://github.com/yugabyte/yugabyte-db/issues/24000)
- Ensures "create table" requests for colocated tables don't fail due to mistaken tablet limit checks. [#23922](https://github.com/yugabyte/yugabyte-db/issues/23922)

#### CDC

- Refactors CDCSDK to prevent data loss during workload with single shard transactions by ensuring WAL messages are committed before being replicated. [#19294](https://github.com/yugabyte/yugabyte-db/issues/19294)
- Reduces disk IO overhead by optimizing the tablet-meta update process in CDCService. [#22805](https://github.com/yugabyte/yugabyte-db/issues/22805)
- Introduces three new yb-admin commands : `disable_dynamic_table_addition_in_change_data_stream`, `remove_user_table_from_change_data_stream`, `validate_and_sync_cdc_state_table_entries_on_change_data_stream` for managing user tables in a CDC stream and addresses a race condition issue [#22876](https://github.com/yugabyte/yugabyte-db/issues/22876), [#22835](https://github.com/yugabyte/yugabyte-db/issues/22835), [#22773](https://github.com/yugabyte/yugabyte-db/issues/22773)
- Obsoletes expired or unpolled tables from CDC stream and state table, reducing unnecessary resource retention and potential blocking of split tablet deletion. [#23367](https://github.com/yugabyte/yugabyte-db/issues/23367)
- Filters out records related to index tables in colocated databases to prevent GetChanges call failures. [#23809](https://github.com/yugabyte/yugabyte-db/issues/23809)
- Ensures old-tuples for updates are only sent when replica identity is FULL, matching PostgreSQL behavior. [#23353](https://github.com/yugabyte/yugabyte-db/issues/23353)
- Enhances table removal from a CDC stream by fetching tablets from the local master copy instead of the entire cdc\_state table, enhancing performance. [#23589](https://github.com/yugabyte/yugabyte-db/issues/23589)
- Prevents crashes that occur due to concurrent GetChanges calls on the same producer tablet. [#23394](https://github.com/yugabyte/yugabyte-db/issues/23394)
- Ensures entries for dropped tables are removed from the replica identity map, preventing replication errors. [#24308](https://github.com/yugabyte/yugabyte-db/issues/24308)

#### yugabyted

- Offers corrected DB OID in the function `calculate_table_size`, now matching `YBCGetDatabaseOid(rel)` for improved reliability. [#20030](https://github.com/yugabyte/yugabyte-db/issues/20030)
- Enables a node to successfully join using the `join` flag by implementing a retry mechanism. [#23898](https://github.com/yugabyte/yugabyte-db/issues/23898)

## v2.23.0.0 - September 13, 2024

**Build:** `2.23.0.0-b710`

### Downloads

- [macOS](https://software.yugabyte.com/releases/2.23.0.0/yugabyte-2.23.0.0-b710-darwin-x86_64.tar.gz)
- [Linux x86](https://software.yugabyte.com/releases/2.23.0.0/yugabyte-2.23.0.0-b710-linux-x86_64.tar.gz)
- [Linux ARM](https://software.yugabyte.com/releases/2.23.0.0/yugabyte-2.23.0.0-b710-el8-aarch64.tar.gz)

**Docker:**

```sh
docker pull yugabytedb/yugabyte:2.23.0.0-b710
```

### Highlights

We're excited to announce the [technical preview](/stable/releases/versioning/#tech-preview-tp "technical preview") of four powerful new features in YugabyteDB aimed at simplifying operations, enhancing functionality, and improving performance.

**Instant database cloning** [TP](/stable/releases/versioning/#feature-maturity)

[Clone to PIT](/stable/manage/backup-restore/point-in-time-recovery/clone/ "Clone to PIT") allows you to quickly create independent copies of your database for data recovery, development, and testing. Clones can be created in seconds, and initially consume no additional disk space because they share the same data files as the original database. Clones can be created as of now, or as of any time in the recent past (within a configurable history retention period), so developers can experiment without impacting production performance. Clones also provide a safety net for rapid recovery from accidental data loss or corruption.

**pg\_cron extension** [TP](/stable/releases/versioning/#feature-maturity)

We're introducing support for the [pg\_cron extension](/stable/additional-features/pg-extensions/extension-pgcron/ "pg_cron extension"), which brings a cron-based job scheduler directly into the database. With pg\_cron, you can schedule YSQL commands using familiar cron syntax, including jobs on intervals as fine as seconds. While pg\_cron operates on a single node known as the pg\_cron leader, the queries it schedules leverage the full resources of the distributed cluster. In case of node failure, leadership is automatically transferred, ensuring continuous availability and smooth scheduling operations.

**Semi-automatic xCluster replication** [TP](/stable/releases/versioning/#feature-maturity)

[Semi-automatic xCluster replication](/stable/deploy/multi-dc/async-replication/async-replication-transactional/ "Semi-automatic xCluster replication") simplifies the management of YSQL transactional xCluster replication by operating at the database level instead of the table level. This reduces the need for IT admin involvement when tables are created or dropped, as xCluster management is only required for adding or removing entire databases from replication. DDL operations can be performed by authorized users or DBAs without needing elevated privileges. Semi-automatic xCluster supports YSQL transactional replication and is ideal for Disaster Recovery (DR) purposes.

**Improvement to backward scans** [TP](/stable/releases/versioning/#feature-maturity)

We've improved the performance of backward scans by 10x. For example, descending scans on tables that are stored in ascending order are now much faster. Previously, backward scans were significantly slower than forward scans in YugabyteDB, causing the query optimizer to implement various workarounds, including adding a sort operator on top of the forward scan operator to keep the backward scan pattern comparable. Such optimizer tricks might have been ineffective in complex query plans. The improvements to backward scan performance now allows such queries to be faster out of the box. You enable the feature using the `use_fast_backward_scan` preview flag.

### Change log

View the detailed changelog

### Improvements

#### YSQL

- Enhances logging for DDL transaction conflicts and PG catalog version mismatches by including the DDL command tag and specific log details outside of the `log_ysql_catalog_versions` flag. [#20084](https://github.com/yugabyte/yugabyte-db/issues/20084)
- Reduces per-backend memory consumption by reinstating TOAST compression for catalogue tables. [#21040](https://github.com/yugabyte/yugabyte-db/issues/21040)
- Enables DDL atomicity feature by default by altering `ysql_yb_ddl_rollback_enabled`, `report_ysql_ddl_txn_status_to_master`, and `ysql_ddl_transaction_wait_for_ddl_verification` flags' defaults. [#22097](https://github.com/yugabyte/yugabyte-db/issues/22097)
- Adds a new YSQL view for YCQL statement metrics, allowing it to be joined with YCQL wait events in the `yb_active_universe_history` table. [#20616](https://github.com/yugabyte/yugabyte-db/issues/20616)
- Displays distinct prefix keys explicitly in the explain output, enhancing the clarity of indexing for users. [#20831](https://github.com/yugabyte/yugabyte-db/issues/20831)
- Adds auto flag `ysql_yb_enable_ddl_atomicity_infra` to control DDL atomicity feature during the upgrade phase. [#21535](https://github.com/yugabyte/yugabyte-db/issues/21535)
- Updates read time for each operation to simplify code and avoid applying used read time from obsolete operations. [#21623](https://github.com/yugabyte/yugabyte-db/issues/21623)
- Allows YbInitPinnedCacheIfNeeded to only load the shared pinned cache, enhancing concurrent handling of DDLs in various databases. [#21635](https://github.com/yugabyte/yugabyte-db/issues/21635)
- Rectifies a compilation error by eliminating duplicate declaration and unnecessary function triggered by merge issues. [#20616](https://github.com/yugabyte/yugabyte-db/issues/20616)
- Avoids schema version mismatch errors during ALTER TABLE operations in cases where DDL atomicity is enabled. [#21787](https://github.com/yugabyte/yugabyte-db/issues/21787)
- Adds new columns to localhost:13000/statements for more comprehensive database management, including user and database IDs along with varied block level statistics. [#21735](https://github.com/yugabyte/yugabyte-db/issues/21735)
- Now logs global-impact DDL statements that increment all database catalog versions. [#21826](https://github.com/yugabyte/yugabyte-db/issues/21826)
- Reorganizes extensions into three segregated directories for better access and ease of use. [#21897](https://github.com/yugabyte/yugabyte-db/issues/21897)
- Resolves schema version mismatch errors that occur after an ALTER TABLE operation due to DDL transaction verification in non-debug builds. [#21787](https://github.com/yugabyte/yugabyte-db/issues/21787)
- Introduces a new YSQL configuration parameter `yb_parallel_range_size` for better tuning of parallel range size. [#21928](https://github.com/yugabyte/yugabyte-db/issues/21928)
- Removes the unused `keep_order` field from `YbctidGenerator` for cleaner results processing. [#21944](https://github.com/yugabyte/yugabyte-db/issues/21944)
- Introduces a new YSQL configuration parameter `yb_enable_parallel_append` to disable the unannounced feature `parallel append`. [#21934](https://github.com/yugabyte/yugabyte-db/issues/21934)
- Performs stylistic modifications and refactors in various YSQL scripts for better readability and performance. [#22004](https://github.com/yugabyte/yugabyte-db/issues/22004)
- Adds support for creating vector indexes using a dummy ANN method `ybdummyann`, enabling preliminary vector-based searching in databases. [#22195](https://github.com/yugabyte/yugabyte-db/issues/22195)
- Restricts the undesired usage of LWFunction by disallowing move copy. [#22069](https://github.com/yugabyte/yugabyte-db/issues/22069)
- Simplifies the column binding logic for ybgin and lsm access methods and prepares for addition of user-defined index types. [#22195](https://github.com/yugabyte/yugabyte-db/issues/22195)
- Enables the grammar for CREATE/DROP ACCESS METHOD for more flexible extension handling. [#22364](https://github.com/yugabyte/yugabyte-db/issues/22364)
- Eradicates misleading log message during table creation with DDL atomicity enabled. [#22459](https://github.com/yugabyte/yugabyte-db/issues/22459)
- Introduces a new enum PgYbrowidMode to deduplicate hidden internal column addition logic. [#22536](https://github.com/yugabyte/yugabyte-db/issues/22536)
- Adds Save/Restore state functionality to `ConsistentReadPoint` using a new `Momento` class. [#22597](https://github.com/yugabyte/yugabyte-db/issues/22597)
- Avoids renaming DocDb tables during legacy rewrite operations to prevent issues with backup/restore and improves handling of failed ADD/DROP primary key, ALTER TYPE operations. [#22802](https://github.com/yugabyte/yugabyte-db/issues/22802)
- Stops python checks on all third-party extensions to avoid build failure. [#23166](https://github.com/yugabyte/yugabyte-db/issues/23166)
- Simplifies and cleans up code in PgDml/PgSelect/PgSelectIndex classes, ensuring only necessary fields are used and removing redundant destructors, with no logic changes. [#23192](https://github.com/yugabyte/yugabyte-db/issues/23192)
- Improves backward scans by updating the cost-based optimizer to consider backward scan enhancements, leading to significant execution-time improvements when `FLAGS_use_fast_backward_scan` is enabled. [#22370](https://github.com/yugabyte/yugabyte-db/issues/22370)
- Introduces new role-related flags in `yb_backup.py` script to enhance backup and restore functionalities. [#20972](https://github.com/yugabyte/yugabyte-db/issues/20972)
- Fixes various issues in the Batch Nested Loop Join code, particularly the new row array comparison, for clearer functioning and better documentation. [#23407](https://github.com/yugabyte/yugabyte-db/issues/23407)

#### YCQL

- Now throws an error when using the unsupported GROUP BY clause in YCQL with autoflag `ycql_suppress_group_by_error` available for compatibility issues. [#13956](https://github.com/yugabyte/yugabyte-db/issues/13956)

#### DocDB

- Adds an `ABORTED` state and an `abort_message` field to the `SysCloneStateInfoPB` object for better clone failure management. [#21054](https://github.com/yugabyte/yugabyte-db/issues/21054)
- Offers a new stack trace tracking framework for improved visibility of disk I/O operations, configurable through the `track_stack_traces` flag. [#17993](https://github.com/yugabyte/yugabyte-db/issues/17993)
- Resolves build failure caused by a problematic merge, offering better disk IO visibility by tracking IOs by stacktrace. [#17993](https://github.com/yugabyte/yugabyte-db/issues/17993)
- Blocks writes based on the total number of bytes being flushed, not just when 2 memtables are flushing. [#22571](https://github.com/yugabyte/yugabyte-db/issues/22571)
- Allows asynchronous DNS cache updating and resolution retry upon failure to reduce RPC call delays and prevent unexpected leadership changes. [#22930](https://github.com/yugabyte/yugabyte-db/issues/22930), [#22311](https://github.com/yugabyte/yugabyte-db/issues/22311)
- Introduces a new flag to toggle on or off recommended memory defaults for increased control over individual memory settings. [#22161](https://github.com/yugabyte/yugabyte-db/issues/22161)
- Introduces utility to dump top heap stacks when memory limit is exceeded for enhanced debugging. [#21396](https://github.com/yugabyte/yugabyte-db/issues/21396)
- Deprecates unused flags and old svc\_num\_workers flags for clearer user configurations. [#20906](https://github.com/yugabyte/yugabyte-db/issues/20906)
- Allows local debug builds of YugabyteDB to restart from release builds to enhance debugging. [#21093](https://github.com/yugabyte/yugabyte-db/issues/21093)
- Shifts xCluster-related functions from Catalocustomeranager to XClusterSourceManager for easier management. [#21325](https://github.com/yugabyte/yugabyte-db/issues/21325)
- Speeds up backward scans by building rows from end to start, reducing unnecessary repositioning and Seek calls, enabled with `FLAGS_use_fast_backward_scan` flag. [#19352](https://github.com/yugabyte/yugabyte-db/issues/19352)
- Boosts error messaging clarity when preview flags are not set in `allowed_preview_flags_csv`. [#21484](https://github.com/yugabyte/yugabyte-db/issues/21484)
- Prevents GetChangesForXCluster from returning an invalid safe time in certain conditions. [#21528](https://github.com/yugabyte/yugabyte-db/issues/21528)
- Broadens the rewrite\_test\_log.py script to incorporate more directory replacements such as home directory, YB\_SRC\_ROOT, LLVM toolchain directory, and third-party dependencies directory. [#21532](https://github.com/yugabyte/yugabyte-db/issues/21532)
- Adjusts TServer memory percentage from 50% to 48% for (4,8]GiB boxes and sets new recommendations for boxes over 16 GiB. [#20664](https://github.com/yugabyte/yugabyte-db/issues/20664)
- Incorporates the usearch and fp16 header-only libraries into the src directory, simplifying code import. [#21830](https://github.com/yugabyte/yugabyte-db/issues/21830)
- Returns the original error messages from CreateTable and CreateTablegroup instead of an incorrect "Database not found" message. [#21760](https://github.com/yugabyte/yugabyte-db/issues/21760)
- Enables replication of DDL schemas and users to maintain consistency between source and target. [#21848](https://github.com/yugabyte/yugabyte-db/issues/21848)
- Updates `AreNodesSafeToTakeDown` to return earlier and deliver a readable error message when hitting a timeout, using a control flag, `are_nodes_safe_to_take_down_timeout_buffer_ms` with a default setting of 2 seconds. [#21855](https://github.com/yugabyte/yugabyte-db/issues/21855)
- Reduces unnecessary alerts by removing "No active snapshot" warning from the logs. [#21911](https://github.com/yugabyte/yugabyte-db/issues/21911)
- Ensures Data Definition Language (DDL) operations replicate exactly once by checking the `replicated_ddls` table prior to rerunning any DDL. [#21943](https://github.com/yugabyte/yugabyte-db/issues/21943)
- Streamlines the creation of xCluster streams by unifying the scattered code into `XClusterClient::CreateXClusterStream<Async>`. [#22343](https://github.com/yugabyte/yugabyte-db/issues/22343)
- Allows for faster failover in xCluster DR by skipping the cleanup process when `skip_producer_stream_deletion` is set on `DeleteUniverseReplicationRequestPB`. Safe for upgrades and rollbacks. [#22050](https://github.com/yugabyte/yugabyte-db/issues/22050)
- Reduces extra reactor threads by reusing server messenger in AutoFlags. [#22076](https://github.com/yugabyte/yugabyte-db/issues/22076)
- Reduces resource usage by enabling stateful service client to reuse the server's existing yb\_client. [#22102](https://github.com/yugabyte/yugabyte-db/issues/22102)
- Adds `SCHECK_PB_FIELDS_NOT_EMPTY` macro for validating non-empty fields, with individual checks on list elements. [#22182](https://github.com/yugabyte/yugabyte-db/issues/22182)
- Splits up yb\_xcluster\_ddl\_replication.c into additional util files for better project extensibility. [#22190](https://github.com/yugabyte/yugabyte-db/issues/22190)
- Removes deprecated JSON output format in xCluster for clean and efficient function. [#22219](https://github.com/yugabyte/yugabyte-db/issues/22219)
- Allows only single DDL query strings to prevent issues with DDL+DML mixes or multiple DDLs. [#22060](https://github.com/yugabyte/yugabyte-db/issues/22060)
- Shifts certain RPC endpoint methods from the Catalocustomeranager to the new MasterClusterHandler class for easier management. [#19715](https://github.com/yugabyte/yugabyte-db/issues/19715)
- Adds `read-time` option description in the `help` of `ysql_dump` allowing database dump at a specified past time. [#21886](https://github.com/yugabyte/yugabyte-db/issues/21886)
- Renames and replaces `cdc_consumer_handler_thread_pool_size` with `xcluster_consumer_thread_pool_size` to reduce CPU and memory usage. [#20305](https://github.com/yugabyte/yugabyte-db/issues/20305)
- Refreshes stack trace tracking UI endpoints to enable per-column sorting and optimize sorting script. [#22841](https://github.com/yugabyte/yugabyte-db/issues/22841)
- Allows table locking by acquiring local server object locks for DDLs and DMLs, hosted by a local transaction participant, with session ID and tied to their lifetime. Includes performance upgrades to lock acquisition and conflict resolution. [#23045](https://github.com/yugabyte/yugabyte-db/issues/23045)
- Simplifies replication setup by using table IDs instead of names, helping avoid issues caused by table renames or recreations. [#23013](https://github.com/yugabyte/yugabyte-db/issues/23013)
- Increases speed of backward scans for flat document reader with support for packed row V2. [#22556](https://github.com/yugabyte/yugabyte-db/issues/22556)
- Reuses the Tservers `yb::client` in `CDCService` to decrease 4 threads and a meta cache, addressing a `CDCService`/xCluster source issue. [#22893](https://github.com/yugabyte/yugabyte-db/issues/22893)
- Allows unified usage of XClusterRemoteClient in XClsuterConsumer, centralizing client creation logic. [#22908](https://github.com/yugabyte/yugabyte-db/issues/22908)
- Ensures replication health before succeeding `IsSetupUniverseReplicationDone`, improving error detection. [#22948](https://github.com/yugabyte/yugabyte-db/issues/22948)
- Adds `external_hybrid_time` to log-dump output to detect xCluster target writes. [#22918](https://github.com/yugabyte/yugabyte-db/issues/22918)
- Introduces two new `SOURCE_UNREACHABLE` and `SYSTEM_ERROR` enums to enable more detailed error reporting from the Poller. [#22996](https://github.com/yugabyte/yugabyte-db/issues/22996)
- Allows requesting streams by producer table ids for xCluster DDL Replication to accurately match tables together. [#23013](https://github.com/yugabyte/yugabyte-db/issues/23013)
- Enhances stack trace tracking endpoints usability by adding an access button, a reset tracking link, and timestamp details. [#22842](https://github.com/yugabyte/yugabyte-db/issues/22842)
- Renames and shifts various members and functions from Catalocustomeranager to XClusterManager. [#23044](https://github.com/yugabyte/yugabyte-db/issues/23044)
- Replaces the deprecated and unused namespace replication with DB Scoped replication for a more efficient solution. [#23046](https://github.com/yugabyte/yugabyte-db/issues/23046)
- Makes pggate aware of fast backward scan capability for accurate cost identification in the Cost Based Optimizer. [#22937](https://github.com/yugabyte/yugabyte-db/issues/22937)
- Added `emergency_repair_mode` flag and new yb-admin commands to handle corrupted CatalogEntity data without stopping `yb-master`. [#23098](https://github.com/yugabyte/yugabyte-db/issues/23098)
- Relocates Setup, Bootstrap, Alter and Delete Target Replication functions for better organization. [#23183](https://github.com/yugabyte/yugabyte-db/issues/23183)
- Changes column ID representation in debug builds to be compatible with release builds. [#21093](https://github.com/yugabyte/yugabyte-db/issues/21093)
- Refactored the `PopulateTabletCheckPointInfo` function to improve its readability and maintainability. [#23301](https://github.com/yugabyte/yugabyte-db/issues/23301)
- Removes display of InvalidFlags in the flags UI to clean up the user interface. [#23308](https://github.com/yugabyte/yugabyte-db/issues/23308)
- Allows for storing and loading of vector indexes, ensuring effective management of these indexes. [#23377](https://github.com/yugabyte/yugabyte-db/issues/23377)
- Integrates class `DocDBStatistics` with `ReadOperationData` for better statistics transmission to `IntentAwareIterator`. [#23420](https://github.com/yugabyte/yugabyte-db/issues/23420)
- Introduces a new flag `max_disk_throughput_mbps` for automated control of write rejections when disk is full, replacing `reject_writes_min_disk_space_aggressive_check_mb`. [#23373](https://github.com/yugabyte/yugabyte-db/issues/23373)
- Adds a flag `FLAGS_tablet_split_min_size_ratio` to control tablet splitting based on SST file sizes, ensuring better control over tablet size imbalance. [#21458](https://github.com/yugabyte/yugabyte-db/issues/21458)
- Relocates heartbeat code for greater readability and Catalog Manager size reduction. [#21899](https://github.com/yugabyte/yugabyte-db/issues/21899), [#19715](https://github.com/yugabyte/yugabyte-db/issues/19715)
- Simplifies the clone state manager by moving persisted data to an in-memory structure. [#22138](https://github.com/yugabyte/yugabyte-db/issues/22138)
- Relocates specific heartbeat code to `master_heartbeat_service.cc` for enhanced readability and easier tracking. [#21899](https://github.com/yugabyte/yugabyte-db/issues/21899), [#19715](https://github.com/yugabyte/yugabyte-db/issues/19715)
- Refactors heartbeat path code for easier navigation and reduction of Catalocustomeranager size, with no functional changes. [#21899](https://github.com/yugabyte/yugabyte-db/issues/21899), [#19715](https://github.com/yugabyte/yugabyte-db/issues/19715)
- Shifts tcmalloc profiling code to the Utils folder. [#22258](https://github.com/yugabyte/yugabyte-db/issues/22258)
- Moves tablet splitting specific RPCs and functions from `catalog_manager.cc` to `tablet_split_manager.cc` for better code management. [#22603](https://github.com/yugabyte/yugabyte-db/issues/22603), [#19715](https://github.com/yugabyte/yugabyte-db/issues/19715)
- Introduces a new flag `enable_rwc_lock_debugging` to control slow lock debugging and fixes a bug in `rwc_lock.cc`. [#22807](https://github.com/yugabyte/yugabyte-db/issues/22807)
- Changes CloneStateInfo object from scoped\_refptr to std::shared\_ptr for standardization. [#23036](https://github.com/yugabyte/yugabyte-db/issues/23036)
- Allows setting only non-empty schema names in YBTableName. [#23371](https://github.com/yugabyte/yugabyte-db/issues/23371)
- Transfers ownership of TabletSplitManager, CloneStateManager, and SnapshotCoordinator from Catalocustomeranager to Master for leaner dependency requirements. [#22603](https://github.com/yugabyte/yugabyte-db/issues/22603), [#19715](https://github.com/yugabyte/yugabyte-db/issues/19715)

#### CDC

- Preserves CDC stream even when all associated tables are dropped, tying its lifecycle to the database. [#21419](https://github.com/yugabyte/yugabyte-db/issues/21419)
- Introduces three new yb-admin commands to remove a user table from a CDCSDK stream, descend dynamic table addition in a CDC stream, and validate CDC state for a particular stream, enhancing control over CDC streams. [#22876](https://github.com/yugabyte/yugabyte-db/issues/22876), [#22773](https://github.com/yugabyte/yugabyte-db/issues/22773)
- Prevents addition of tables with enum array column to the CDC stream to avoid crashes during consumption. [#22897](https://github.com/yugabyte/yugabyte-db/issues/22897)
- Transforms the flag `yb_enable_cdc_consistent_snapshot_streams` from a preview into a default true auto flag. [#22984](https://github.com/yugabyte/yugabyte-db/issues/22984)
- Enables dynamic table addition with Postgres replication consumption by setting retention barriers on new tables' tablets during creation. [#21643](https://github.com/yugabyte/yugabyte-db/issues/21643)
- Allows modification of the publication refresh interval using the `cdcsdk_publication_list_refresh_interval_secs` flag. [#21796](https://github.com/yugabyte/yugabyte-db/issues/21796)
- Adds a TServer flag, `ysql_yb_default_replica_identity`, for customizing default replica identity at table creation. [#22326](https://github.com/yugabyte/yugabyte-db/issues/22326)
- Introduces `cdcsdk_enable_dynamic_table_addition` flag to manage dynamic table additions in replication slot consumption model. [#22406](https://github.com/yugabyte/yugabyte-db/issues/22406)
- Introduces replication slot name for internal distinction between two consumption models in the code. [#22810](https://github.com/yugabyte/yugabyte-db/issues/22810)
- Allows creating an old model stream via yb-admin in upgraded environments, ensuring only one stream type per database. [#22894](https://github.com/yugabyte/yugabyte-db/issues/22894)
- Introduces replica identity in CDC to populate before image records, allowing table-level before image information fetching and retaining in stream metadata. [#21314](https://github.com/yugabyte/yugabyte-db/issues/21314)
- Eliminates unnecessary NOTICE messages when setting yb\_read\_time from walsender, reducing message clutter. [#22379](https://github.com/yugabyte/yugabyte-db/issues/22379)
- Enables transaction state to be cleared promptly after a table is deleted, preventing table deletion from getting stuck and resulting in faster functionality. [#22095](https://github.com/yugabyte/yugabyte-db/issues/22095)

#### yugabyted

- Allows Connection Manager to handle error messages, preventing test failures in the YSQL layer. [#21756](https://github.com/yugabyte/yugabyte-db/issues/21756)
- Ensures `RENAME DATABASE` query handles logical and physical connections correctly for consistent database behavior. [#21284](https://github.com/yugabyte/yugabyte-db/issues/21284)
- Redefines tracking of role modifications using role OID in YSQL Connection Manager for accurate behavior during mid-session role renaming. [#21505](https://github.com/yugabyte/yugabyte-db/issues/21505)
- Offers support for single-use YSQL configuration parameters in YSQL Connection Manager. [#21757](https://github.com/yugabyte/yugabyte-db/issues/21757)
- Enables using role OID with `session_authorization` in YSQL Connection Manager for correct role alterations in a session. [#21637](https://github.com/yugabyte/yugabyte-db/issues/21637)
- Allows sticky connections when setting certain YSQL configuration parameters not permitted in explicit transactions. [#22957](https://github.com/yugabyte/yugabyte-db/issues/22957)
- Allows modification of YSQL configuration parameters on a running cluster by destroying the control connection. [#21516](https://github.com/yugabyte/yugabyte-db/issues/21516)
- Adds a new `/pitr` endpoint and screen in the database page to list scheduled PITRs on yugabyted UI. [#21355](https://github.com/yugabyte/yugabyte-db/issues/21355)
- Introduces `upgrade_finalize` command for smoother YugabyteDB version upgrades using yugabyted CLI and includes an `upgrade_ysql_timeout` flag. [#21888](https://github.com/yugabyte/yugabyte-db/issues/21888)
- Directly enables `yb_enable_read_committed_isolation` and `ysql_enable_read_request_caching` on `yb-master` and `yb-tserver` processes. [#22061](https://github.com/yugabyte/yugabyte-db/issues/22061)
- Delivers alerts on user interface when encountering node version mismatches in the cluster. [#21888](https://github.com/yugabyte/yugabyte-db/issues/21888)
- Simplifies yugabyted by dropping Python2 support and transitioning the script to use Python3, replacing deprecated distutils package with shutil. [#22072](https://github.com/yugabyte/yugabyte-db/issues/22072), [#21409](https://github.com/yugabyte/yugabyte-db/issues/21409)
- Enables better handling of multi-valued flags in yugabyted without duplication, making the system more maintainable. [#22091](https://github.com/yugabyte/yugabyte-db/issues/22091)
- Corrects the Sankey diagram for CPU usage by accurately calculating the total number of used/available cores. [#22125](https://github.com/yugabyte/yugabyte-db/issues/22125)
- Made changes to string literals in `yugabyted` to avoid SyntaxWarning and added checks for exceptions during incorrect `advertise_address` input. [#22210](https://github.com/yugabyte/yugabyte-db/issues/22210), [#22230](https://github.com/yugabyte/yugabyte-db/issues/22230)
- Enables correct parsing of startup parameters with spaces in values when using the YSQL Connection Manager. [#22248](https://github.com/yugabyte/yugabyte-db/issues/22248)
- Allows to specify multiple data directories using the new `additional_data_dir` configuration. [#22126](https://github.com/yugabyte/yugabyte-db/issues/22126)
- Enables xCluster replication management between database clusters using new yugabyted commands. [#22349](https://github.com/yugabyte/yugabyte-db/issues/22349)
- Ensures yugabyted UI metrics display properly with Kubernetes OSS operator deployed clusters. [#22532](https://github.com/yugabyte/yugabyte-db/issues/22532)
- Elevates the reliability of the UUID retrieval process for tablet server nodes on the user interface. [#22532](https://github.com/yugabyte/yugabyte-db/issues/22532)
- Ensures accurate CPU usage metrics by updating `prev_ticks_` at each metrics snapshotting iteration. [#22910](https://github.com/yugabyte/yugabyte-db/issues/22910)
- Allows smooth node restart even if the `data_dir` parameter is missing in the user configuration file. [#23052](https://github.com/yugabyte/yugabyte-db/issues/23052)
- Reduces `collect_logs` command failures by removing the yugabyted running check even when the yugabyted process is not running. [#23210](https://github.com/yugabyte/yugabyte-db/issues/23210)
- Enhances `yugabyted configure_read_replica` commands with checks to gracefully handle failures when `data_placement_constraint` lacks `:<num_of_replicas>`. [#23273](https://github.com/yugabyte/yugabyte-db/issues/23273)

### Bug fixes

#### YSQL

- Fixes an error that occurs when decoding null values from a boolean column sorted as NULLS LAST in a secondary index. [#22121](https://github.com/yugabyte/yugabyte-db/issues/22121)
- Fixes YSQL upgrade single connection mode error preventing new connection attempts before the old ones are released. [#22283](https://github.com/yugabyte/yugabyte-db/issues/22283)
- Allows YB Admins to run pg\_locks without requiring superuser status. [#23266](https://github.com/yugabyte/yugabyte-db/issues/23266)
- Avoids failure when upgrading from version 2.14/2.16 to 2.20 by introducing a check to ensure pggate can handle RPC metrics sidecar before sending Scanned Rows count. [#21229](https://github.com/yugabyte/yugabyte-db/issues/21229)
- Fixes memory leaks in pg\_constraint/pg\_attrdef local cache by adding a missing `hash_destroy` call in `YbCleanupTupleCache`. [#22262](https://github.com/yugabyte/yugabyte-db/issues/22262)
- Resolves remaining memory leaks in CacheMemoryContext to stabilize cache memory after every catalog cache refresh. [#22262](https://github.com/yugabyte/yugabyte-db/issues/22262)
- Allows YSQL DDL operations to wait for rollback/roll-forward operations to finish before proceeding. [#20033](https://github.com/yugabyte/yugabyte-db/issues/20033)
- Allows more accurate modeling of base scan costs by taking into account the impact of storage index filters on secondary index. [#20635](https://github.com/yugabyte/yugabyte-db/issues/20635)
- Resolves colocation option issues in table creation linked to table rewriting and partitioning. Enhances the `defGetBoolean` function to parse string values "0" and "1" as false and true respectively, and shifts a verification step to a earlier spot in the CREATE TABLE execution path, ensuring successful table partition creation. [#20302](https://github.com/yugabyte/yugabyte-db/issues/20302), [#20914](https://github.com/yugabyte/yugabyte-db/issues/20914)
- Renames the YSQL configuration parameter `ddl_rollback_enabled` to `yb_ddl_rollback_enabled` for specificity. [#21480](https://github.com/yugabyte/yugabyte-db/issues/21480)
- Adds network latency cost to startup cost, yielding more accurate cost calculations in small tables. [#20898](https://github.com/yugabyte/yugabyte-db/issues/20898)
- Disables bitmap scan by default to prevent unwarranted selection due to lower CBO costs. [#21479](https://github.com/yugabyte/yugabyte-db/issues/21479)
- Reduces unnecessary log messages when `catalog_version_table_in_perdb_mode` is set to true. [#21481](https://github.com/yugabyte/yugabyte-db/issues/21481)
- Corrects an issue where certain unbatchable filters weren't detected during indexpath formation when indexpath accepted batched values from multiple relations. Requires backports to 2.20 and 2.18. [#21292](https://github.com/yugabyte/yugabyte-db/issues/21292)
- Exposes the YSQL configuration parameter `yb_enable_optimizer_statistics` as a flag `ysql_yb_enable_optimizer_statistics`. [#21650](https://github.com/yugabyte/yugabyte-db/issues/21650)
- Corrects buffer overflow during placement validation in `ALTER TABLE SET TABLESPACE` operation. [#21655](https://github.com/yugabyte/yugabyte-db/issues/21655)
- Allows for an enhanced readability and performance of yb\_cost\_index code, aiding in merging with the pg15 branch. [#21672](https://github.com/yugabyte/yugabyte-db/issues/21672)
- The deadlock issue occurring when both a table and its index are deleted concurrently in yb-master has been resolved. [#21663](https://github.com/yugabyte/yugabyte-db/issues/21663)
- Refines the YbGetOrdinaryColumnsNeedingPgRecheck condition to align with the ybIsTupMismatch implementation, ensuring Postgres rechecks index conditions when the "preliminary check" is skipped due to an invalid target key attnum. [#21451](https://github.com/yugabyte/yugabyte-db/issues/21451)
- Corrects checks in YbIsScanCompatible to ensure the right-hand side (RHS) of all bound index conditions, not just inequalities, fits into the left-hand side (LHS) datatype. [#21758](https://github.com/yugabyte/yugabyte-db/issues/21758)
- Prevents query layer retries for multi-statement queries to avoid redoing whole queries, ensuring idempotence. [#21361](https://github.com/yugabyte/yugabyte-db/issues/21361)
- Fixes a bug that caused incorrect setting of global catalog version mode on TServer start. [#21850](https://github.com/yugabyte/yugabyte-db/issues/21850)
- Fixes a bug in the index tuple width calculation for better YB base scans cost model. [#21892](https://github.com/yugabyte/yugabyte-db/issues/21892)
- Ensures pushed down RowCompareExpressions correctly enforce non-null column references, rectifying previous behavior and enhancing data accuracy. [#21847](https://github.com/yugabyte/yugabyte-db/issues/21847)
- Reduces the frequency of `schema version mismatch` errors during consecutive DDL operations by ensuring the up-to-date schema is fetched. [#21706](https://github.com/yugabyte/yugabyte-db/issues/21706)
- Allows usage of `YsqlDdlRollbackEnabled` in pggate C++ code by correctly passing the result of `YbDdlRollbackEnabled`, reducing DDL atomicity g-flag issues in RF 1 clusters. [#21706](https://github.com/yugabyte/yugabyte-db/issues/21706)
- Adds a new flag `ysql_min_new_version_ignored_count` to prevent a TServer crash caused by the downward shift in yb-master's catalog version, often surfacing post a PITR restore operation. [#21776](https://github.com/yugabyte/yugabyte-db/issues/21776)
- The postgres process no longer crashes when running a "show all" command due to correct placement of the `yb_enable_ddl_atomicity_infra` description. [#21947](https://github.com/yugabyte/yugabyte-db/issues/21947)
- Prevents failures in transaction restarts with UPDATE ...RETURNING queries in debug builds. [#22010](https://github.com/yugabyte/yugabyte-db/issues/22010)
- Reverts updates from `Storage SQL` to `Remote SQL` and `Storage Filter` to `Remote Filter` for Foreign Scan. [#22070](https://github.com/yugabyte/yugabyte-db/issues/22070)
- Adjusts inaccurate `ALTER TABLE` rewrite check for dropped rules to prevent unnecessary command failure. [#22064](https://github.com/yugabyte/yugabyte-db/issues/22064)
- Fills in the "relation" column in `pg_locks` with the correct table OID after a table rewrite. [#22081](https://github.com/yugabyte/yugabyte-db/issues/22081)
- Adjusts the value of YB\_AT\_REWRITE\_ALTER\_PRIMARY\_KEY to prevent flag clashes and accommodate future upstream PG flags. [#22086](https://github.com/yugabyte/yugabyte-db/issues/22086)
- Fixes the issue of PG crash when `yb_debug_log_catcache_events=1` is used before a database has been selected. [#22139](https://github.com/yugabyte/yugabyte-db/issues/22139)
- Enables backward parallel scan capabilities, adjusting key bounds when conducting descending order scans. [#21633](https://github.com/yugabyte/yugabyte-db/issues/21633)
- Prevents unnecessary CPU cycles and log flooding by not reading `pg_yb_catalog_version` when `enable_ysql=false`. [#22213](https://github.com/yugabyte/yugabyte-db/issues/22213)
- Corrects the log message for successful column drop operations, ensuring accurate representation of DDL operations. [#22243](https://github.com/yugabyte/yugabyte-db/issues/22243)
- Stops Batched Nest Loop (BNL) crashes by ensuring better indexing condition checks. [#21954](https://github.com/yugabyte/yugabyte-db/issues/21954)
- Refines the logic to accurately push down join clauses to batched index scans without causing conflicts. [#21878](https://github.com/yugabyte/yugabyte-db/issues/21878)
- Grants BNL hashtable its own expression context to prevent data overwrites during query execution. [#21266](https://github.com/yugabyte/yugabyte-db/issues/21266)
- Re-enables rechecking for RowCompareExpressions to accurately handle NULL inputs in scan bound calculations. [#22075](https://github.com/yugabyte/yugabyte-db/issues/22075)
- Resolves the `old-style-declaration` error in YbDdlRollbackEnabled by changing its definition to `static inline bool`. [#22334](https://github.com/yugabyte/yugabyte-db/issues/22334)
- Prevents potential crashes by ensuring `yb_table_properties` pointer, in `load_relcache_init_file`, does not point to random, invalid memory. [#22342](https://github.com/yugabyte/yugabyte-db/issues/22342)
- Makes `yb_get_range_split_clause` robust using PG TRY CATCH block, ensuring YB backup doesn't fail. [#22356](https://github.com/yugabyte/yugabyte-db/issues/22356)
- Fixes memory leaks in ybcFetchNextHeapTuple by properly freeing the YBCStatus. [#22396](https://github.com/yugabyte/yugabyte-db/issues/22396)
- Prevents core dumps by ensuring YSQL webserver destruction upon receiving a termination signal. [#18948](https://github.com/yugabyte/yugabyte-db/issues/18948)
- Introduces new functions to enhance and consolidate the focus on tables stored in the system catalog. [#22520](https://github.com/yugabyte/yugabyte-db/issues/22520)
- Allows `CreateNamespaceIfNotExists` function to retry on "already exists" error, preventing race conditions. [#22512](https://github.com/yugabyte/yugabyte-db/issues/22512)
- Fixes the issue when a separately created and later attached partition does not properly inherit the parent's primary key using `ALTER TABLE ...ATTACH PARTITION`. [#22562](https://github.com/yugabyte/yugabyte-db/issues/22562)
- Resolves potential database OID collision with `system_postgres` by excluding reserved OID 65535 in allocation. [#22598](https://github.com/yugabyte/yugabyte-db/issues/22598)
- Allows skipping the relfilenode check on parent partition tables which do not get recreated during table rewrites. [#22625](https://github.com/yugabyte/yugabyte-db/issues/22625)
- Now allows for correct backward prefix-based scanning by eliminating the problematic `kGroupEnd` marker that was leading to inaccurate seek results. [#22615](https://github.com/yugabyte/yugabyte-db/issues/22615)
- Removes the unused function `Catalocustomeranager::WaitForDdlVerificationToFinish` for clarity. [#22649](https://github.com/yugabyte/yugabyte-db/issues/22649)
- Ensures bitmap scans correctly recheck all results and avoid excluding rows, improving accuracy of outcomes. [#22622](https://github.com/yugabyte/yugabyte-db/issues/22622)
- Prevents the `IN` expressions on single column from wrongly taking the tuple path, ensuring correct data processing. [#22704](https://github.com/yugabyte/yugabyte-db/issues/22704)
- Fixes incorrect access to the scan plan's bind descriptor during tuple IN condition rechecks. [#22800](https://github.com/yugabyte/yugabyte-db/issues/22800)
- Allows the creation of new shared relations during YSQL upgrade to have a global impact by incrementing the catalog version across every database. [#22830](https://github.com/yugabyte/yugabyte-db/issues/22830)
- Allows resetting of stats collected by the ANALYZE command, including `reltuples`, `pg_statistic` rows, and `pg_statistic_ext` values. [#22028](https://github.com/yugabyte/yugabyte-db/issues/22028)
- Corrects the YbGetOrdinaryColumnsNeedingPgRecheck function to return table column numbers instead of index numbers, preventing unnecessary data fetches and potential crashes or errors after dropping a column. [#22832](https://github.com/yugabyte/yugabyte-db/issues/22832)
- Resolves a detected deadlock during ALTER TABLE operations, enhancing test stability. [#22882](https://github.com/yugabyte/yugabyte-db/issues/22882)
- Reduces unexpected log messages by not invoking `YsqlDdlTxnCompleteCallback` if all table 'pb\_txn\_id's in the DDL transaction verifier state are already cleared, avoiding potential deadlock situations in DDL atomicity. [#22882](https://github.com/yugabyte/yugabyte-db/issues/22882)
- Reduces prefix length in the index when using distinct index scan with included columns. [#22822](https://github.com/yugabyte/yugabyte-db/issues/22822)
- Returns more accurate results when running EXPLAIN command by fixing relids of prefix keys under a subquery distinct index scan. [#22923](https://github.com/yugabyte/yugabyte-db/issues/22923)
- Reduces sequence cache collision by incorporating both database and sequence OIDs as the entry key. [#22935](https://github.com/yugabyte/yugabyte-db/issues/22935)
- Prevents a crash related to memory release associated with TupleTableSlots in SubPlans during a Values Scan. [#22967](https://github.com/yugabyte/yugabyte-db/issues/22967)
- Allows faster data inserts into tables with identity columns. [#22837](https://github.com/yugabyte/yugabyte-db/issues/22837)
- Enhances log output by adding missing newlines in the `yb_pclose_check` function and corrects memory allocation. [#23057](https://github.com/yugabyte/yugabyte-db/issues/23057)
- Streamlines the "drop column" operation process, preventing hindrance even if the alter schema RPC is missed. [#23100](https://github.com/yugabyte/yugabyte-db/issues/23100)
- Reduces ASAN/TSAN builds' pressure on t-server/master and avoids timeout issues by using less parallelism. [#22594](https://github.com/yugabyte/yugabyte-db/issues/22594)
- Eliminates unnecessary waiting for concurrent transactions in the DEFERRABLE mode for READ ONLY serializable transactions. [#23120](https://github.com/yugabyte/yugabyte-db/issues/23120)
- Fixes TServer crash when pushing down certain SAOP operations like `string_to_array`. [#23287](https://github.com/yugabyte/yugabyte-db/issues/23287)

#### YCQL

- Allows the deletion of the Cassandra role in YCQLsh without it regenerating upon cluster restart, by adding a flag to mark if the role was previously created. [#21057](https://github.com/yugabyte/yugabyte-db/issues/21057)
- Removes extra reads during the processing of `INSERT INTO ...RETURNS STATUS AS ROW` for CQL tables with a specific primary key, improving system load and efficiency. [#23330](https://github.com/yugabyte/yugabyte-db/issues/23330)
- Now ensures simultaneous registration of new split tablet children, fully covering the keyspace during splits. [#19954](https://github.com/yugabyte/yugabyte-db/issues/19954)

#### DocDB

- Fixes hidden split parent tablets wrongly appearing as leaderless in the master's leaderless tablet endpoint, ensuring accurate load balance status and preventing potential issues with Point-in-Time Recovery (PITR) operations. [#21371](https://github.com/yugabyte/yugabyte-db/issues/21371)
- Ensures failed xCluster setup if the xCluster stream state update to `ACTIVE` does not occur. [#22601](https://github.com/yugabyte/yugabyte-db/issues/22601)
- Fix ensures heartbeat processing doesn't blindly overwrite tablet replica state, avoiding potential data corruption. [#21836](https://github.com/yugabyte/yugabyte-db/issues/21836)
- Fixes crash when parsing an invalid timestamp in LTO build by updating C++ dependencies and error handling. [#22191](https://github.com/yugabyte/yugabyte-db/issues/22191)
- Removes unnecessary flush during snapshot deletion, preventing write blocks. [#22369](https://github.com/yugabyte/yugabyte-db/issues/22369)
- Eliminates possible deadlock during setup replication by fixing the order in which locks are acquired. [#22376](https://github.com/yugabyte/yugabyte-db/issues/22376)
- Fixes issue of scans not honoring timeouts, preventing indefinite reads and reducing CPU usage. [#21829](https://github.com/yugabyte/yugabyte-db/issues/21829)
- Allows restoring a snapshot schedule from a time just before the oldest snapshot, improving usability. [#21269](https://github.com/yugabyte/yugabyte-db/issues/21269)
- Removes assumption that every tablet server hosts tablets, preventing potential crashes. [#20230](https://github.com/yugabyte/yugabyte-db/issues/20230)
- Resolves a heartbeat metrics issue ensuring full xCluster error information is sent to the new master even during a leader failover, and makes `tserver_heartbeat_metrics_interval_ms` runtime updatable. [#22624](https://github.com/yugabyte/yugabyte-db/issues/22624)
- Adds validation to RPCs `DeleteSnapshot` and `RestoreSnapshot` to prevent deletion or use of snapshots involved in ongoing processes. [#23055](https://github.com/yugabyte/yugabyte-db/issues/23055)
- Ensures `Create Table` operation fails if `Alter Replication` encounters an error, enhancing the reliability of replication setup. [#21732](https://github.com/yugabyte/yugabyte-db/issues/21732)
- Converted the `ysql_skip_row_lock_for_update` to an auto-flag to resolve compatibility issues during upgrade, preventing incorrect DB record creations that can affect row visibility and integrity. [#22057](https://github.com/yugabyte/yugabyte-db/issues/22057)
- Modifies memory consumption calculations for pending operations to ensure accurate rejection of new writes at bootstrap, preventing loading failures. [#21254](https://github.com/yugabyte/yugabyte-db/issues/21254)
- Trims large error messages in AsyncRpc::Failed to prevent hitting memory limit and resulting unavailability. [#21402](https://github.com/yugabyte/yugabyte-db/issues/21402)
- Excludes hidden tables from `generate snapshot` output to circumvent cloning failure from recreated tables. [#21631](https://github.com/yugabyte/yugabyte-db/issues/21631)
- Prevents `unexpected leader` fatal errors by updating cached leader terms immediately after a leader change. [#21808](https://github.com/yugabyte/yugabyte-db/issues/21808)
- Renames and updates the description of the flag `min_secustomerent_size_to_rollover_at_flush` for clarity. [#21691](https://github.com/yugabyte/yugabyte-db/issues/21691)
- Changes the class of `enable_automatic_tablet_splitting` flag from `kLocalPersisted` (class 2) to `kExternal` (class 4) to eliminate setup issues with xCluster configurations. [#22088](https://github.com/yugabyte/yugabyte-db/issues/22088)
- Switches from using scoped\_refptr to std::shared\_ptr for TabletInfo to handle cycles safely. [#18257](https://github.com/yugabyte/yugabyte-db/issues/18257), [#21139](https://github.com/yugabyte/yugabyte-db/issues/21139)
- Updates cotable IDs in flushed frontiers during a snapshot restore, preventing potential post-restore issues. [#23047](https://github.com/yugabyte/yugabyte-db/issues/23047)
- Allows the persistent mapping of source-target schema versions when a new table is added to a colocated database, thus preventing replication from stalling after T-server restarts. [#23188](https://github.com/yugabyte/yugabyte-db/issues/23188)
- Eliminates potential FATAL errors during reported tabletPB creation by ensuring retrieval of schema version is atomic. [#21340](https://github.com/yugabyte/yugabyte-db/issues/21340)
- Ensures the correct order of destroying components, preventing possible concurrent calls on a WAL append callback. [#21564](https://github.com/yugabyte/yugabyte-db/issues/21564)
- Adds a TSAN suppression to manage the apparent race condition in the function `boost::regex_match`. [#21585](https://github.com/yugabyte/yugabyte-db/issues/21585)
- Fixes the compilation error for almalinux8 fastdebug gcc11 that was previously removed from the build matrix. [#21536](https://github.com/yugabyte/yugabyte-db/issues/21536)
- Corrects a bug causing some tablet metrics to display incorrect `metric_type` attribute. [#21608](https://github.com/yugabyte/yugabyte-db/issues/21608)
- Fixes a segmentation fault in yb-master by checking for a null pointer before dereferencing it, addressing an issue in the CDC run on `2.23.0.0-b37-arm`. [#21648](https://github.com/yugabyte/yugabyte-db/issues/21648)
- Reduces unnecessary logging during checkpoint operations by lowering INFO level logs to DEBUG\_LEVEL, enhancing log readability. [#21658](https://github.com/yugabyte/yugabyte-db/issues/21658)
- Allows DML operations on non-replicated databases and blocks DML only on databases in transactional xCluster replication STANDBY mode. Now only databases part of an inbound transactional xCluster replication group in the xCluster safe time map will have DML operations blocked. Also, certain attributes are moved from TServer to TserverXClusterContext. [#21245](https://github.com/yugabyte/yugabyte-db/issues/21245)
- Enables the session to outlive the callback by holding a shared pointer to it, preventing potential crashes during concurrent DML queries. [#21103](https://github.com/yugabyte/yugabyte-db/issues/21103)
- Avoids multiple destruction of the same database connection, preventing system crashes due to simultaneous connection failures. [#21738](https://github.com/yugabyte/yugabyte-db/issues/21738)
- Allows viewing of the RPC bind addresses in the master leader UI, especially beneficial in cases like k8s where the RPC bind address with the pod DNS is more useful than the broadcast address. [#21959](https://github.com/yugabyte/yugabyte-db/issues/21959)
- Prevents fatal errors by skipping ReserveMarker/AsyncAppend if the tablet peer has already been shut down. [#21769](https://github.com/yugabyte/yugabyte-db/issues/21769)
- Prevents yb-master crash by ensuring background task isn't deleted before the callback is invoked. [#21773](https://github.com/yugabyte/yugabyte-db/issues/21773)
- Enables callback completion wait in PollTransactionStatusBase during shutdown to prevent unexpected process termination. [#21773](https://github.com/yugabyte/yugabyte-db/issues/21773)
- Initializes `prev_op` to `UNKNOWN` to prevent AlmaLinux 8 fastdebug gcc11 compilation failures. [#21811](https://github.com/yugabyte/yugabyte-db/issues/21811)
- Enables batched metric updates for YCQL reads to prevent performance drop due to RocksDB metric updates. [#21832](https://github.com/yugabyte/yugabyte-db/issues/21832)
- Removes pending delete logic from load balancer to prevent delays during high tablet replica movement. [#21806](https://github.com/yugabyte/yugabyte-db/issues/21806)
- Enhances YSQL operation by refining task shutdown procedures and avoiding unnecessary task aborts. [#21917](https://github.com/yugabyte/yugabyte-db/issues/21917)
- Stops fatal errors caused by the re-use of remote log anchor session during remote bootstrap from a non-leader peer. This fix ensures shared pointers are accurately tracked for `tablet_peer` objects using the `=` operator, preventing unintentional destruction of underlying objects. [#22007](https://github.com/yugabyte/yugabyte-db/issues/22007)
- Delays `min_running_ht` initialization until after the successful completion of tablet bootstrap to prevent unexpected behaviors. [#22099](https://github.com/yugabyte/yugabyte-db/issues/22099)
- Enables the `skip_table_tombstone_check` for colocated tables to prevent errors. [#22115](https://github.com/yugabyte/yugabyte-db/issues/22115)
- Prevents potential segfaults during catalog reload by modifying `GetClusterConfig` function. [#21775](https://github.com/yugabyte/yugabyte-db/issues/21775)
- Reduces the interval of the tablet server metrics heartbeat to prevent potential misreporting of a leaderless tablet. [#22189](https://github.com/yugabyte/yugabyte-db/issues/22189)
- Reduces four threads and a meta cache in xCluster consumer by reusing the TServers yb::client. [#22845](https://github.com/yugabyte/yugabyte-db/issues/22845)
- Resolves the issue of `pg_locks` query failure due to missing host node UUID in distributed transactions. [#22181](https://github.com/yugabyte/yugabyte-db/issues/22181)
- Clarifies memory division flags to reflect they are percentage of the process's hard memory limit, not total available memory. [#22423](https://github.com/yugabyte/yugabyte-db/issues/22423)
- Eliminates latency spikes in conflicting workloads by preventing redundant ProbeTransactionDeadlock RPCs. [#22426](https://github.com/yugabyte/yugabyte-db/issues/22426)
- Corrects the CI build issues on GCC 12, debug AlmaLinux 9 caused by updates in cf0c09b. [#22501](https://github.com/yugabyte/yugabyte-db/issues/22501)
- Captures the actual user executing the query instead of only the superuser and fixes ordering in the ddl\_queue handler. [#22514](https://github.com/yugabyte/yugabyte-db/issues/22514)
- Enhances logging during MemTable flushing to better monitor memory usage limits. [#22737](https://github.com/yugabyte/yugabyte-db/issues/22737)
- Prevents premature metric destruction during Prometheus scrapes, resolving non-UTF8 character issues. [#22767](https://github.com/yugabyte/yugabyte-db/issues/22767)
- Ensures object drops correctly cascade to dependent columns in the DocDB table, preventing inconsistencies. [#22874](https://github.com/yugabyte/yugabyte-db/issues/22874)
- Boosts YSQL major version upgrade process by minimal changes in the master branch to reduce its divergence. [#23079](https://github.com/yugabyte/yugabyte-db/issues/23079)
- Adds a flag to disable the intent filtering during bootstrap, preventing potential data corruption on restart. [#23184](https://github.com/yugabyte/yugabyte-db/issues/23184)
- Allows large bytes to be requested on RateLimiter, preventing indefinite call stalling. [#23173](https://github.com/yugabyte/yugabyte-db/issues/23173)
- Restores the previously missing home icon in the master user interface. [#23275](https://github.com/yugabyte/yugabyte-db/issues/23275)
- Removes the `read-time` option from the ysql\_dump help output for proper DDL atomicity handling. [#23299](https://github.com/yugabyte/yugabyte-db/issues/23299)
- Allows setting custom snapshot retention duration using `yb-admin`, including retaining a snapshot indefinitely by setting `retention_duration_hours` to 0. [#23332](https://github.com/yugabyte/yugabyte-db/issues/23332)
- Removes an unreachable line causing GH build failure. [#23375](https://github.com/yugabyte/yugabyte-db/issues/23375)
- Corrects an issue where the load balancer improperly handles a pending leader stepdown task. [#21834](https://github.com/yugabyte/yugabyte-db/issues/21834)
- Removes the TServer warning log for mismatching cluster config versions, reducing unnecessary noise in logs. [#23119](https://github.com/yugabyte/yugabyte-db/issues/23119)
- Eliminates memory leaks in YSQL Connection Manager by ensuring proper deallocation of objects and variables. [#10065](https://github.com/yugabyte/yugabyte-db/issues/10065)
- Resolves the TServer crash issue during query execution happening due to a NULL pointer dereference. [#23004](https://github.com/yugabyte/yugabyte-db/issues/23004)
- Allows for a reliable connection to a remote YugabyteDB universe by setting `skip_master_flagfile` when creating YBClients. [#23145](https://github.com/yugabyte/yugabyte-db/issues/23145)
- Ensures the node restarts properly even with `secure` mode enabled by adding a timeout framework. [#23447](https://github.com/yugabyte/yugabyte-db/issues/23447)
- Ensures the `stack_is_too_deep` function returns predictable results in ASAN, aiding effective limit setting on stack depth. [#15682](https://github.com/yugabyte/yugabyte-db/issues/15682)
- Introduces a check for multi-threaded mode in catalog lookup functions to avoid server crashes and make error mitigation easier for users. [#23401](https://github.com/yugabyte/yugabyte-db/issues/23401)
- Enhances visibility of the `Hidden` state in Master/Tserver Tables UI by shifting its position more prominently to the `State` column. [#22521](https://github.com/yugabyte/yugabyte-db/issues/22521)
- Increases the speed of the `yb-admin snapshot schedule create` command to reduce resource usage. [#21929](https://github.com/yugabyte/yugabyte-db/issues/21929)
- Deprecates the TServer flag `enable_pg_savepoints` to prevent incorrect behavior and avoid silent progress in PL/pgSQL exceptions. [#29018](https://github.com/yugabyte/yugabyte-db/issues/29018)
- Eliminates the occurrence of "schema version mismatch" error following a DROP INDEX statement by introducing a delay in index deletion. [#22637](https://github.com/yugabyte/yugabyte-db/issues/22637)

#### CDC

- Ensures deletion of MemoryContext after each GetChanges RPC to prevent memory leaks. [#22328](https://github.com/yugabyte/yugabyte-db/issues/22328)
- Introduces additional VLOG statements in the ListReplicationSlots function for better debugging. [#21652](https://github.com/yugabyte/yugabyte-db/issues/21652)
- Prevents newly created indexes, materialized views, and non-user tables from being added to the Chang Data Capture (CDC) stream metadata. [#22808](https://github.com/yugabyte/yugabyte-db/issues/22808)
- Reduces resource usage by removing non-eligible tables, like indexes, from existing CDC SDK stream metadata, and releasing retention barriers. This change requires the master flag `enable_cleanup_of_non_eligible_tables_from_cdcsdk_stream` and limits processing to two non-eligible tables per namespace per run with `cdcsdk_table_processing_limit_per_run`. Introduces three yb-admin commands for managing CDC streams. [#22876](https://github.com/yugabyte/yugabyte-db/issues/22876), [#22835](https://github.com/yugabyte/yugabyte-db/issues/22835), [#22773](https://github.com/yugabyte/yugabyte-db/issues/22773)
- Introduces new auto flag `cdcsdk_enable_identification_of_non_eligible_tables` and three yb-admin commands to manage tables in CDC stream, enhancing control and reducing unnecessary resource usage. [#22876](https://github.com/yugabyte/yugabyte-db/issues/22876), [#22835](https://github.com/yugabyte/yugabyte-db/issues/22835), [#22773](https://github.com/yugabyte/yugabyte-db/issues/22773)
- Fixes the issue of getting either `0` or a random time as the server's system clock in XLogData from the logical replication stream. [#22929](https://github.com/yugabyte/yugabyte-db/issues/22929)
- Fixes a memory leakage issue in the walsender process by deep freeing the cached record batch after streaming to the client. [#21530](https://github.com/yugabyte/yugabyte-db/issues/21530)
- Adds more debug logs in the walsender to aid in investigating issues like linked data loss. [#21465](https://github.com/yugabyte/yugabyte-db/issues/21465)
- Allows for better memory management in the walsender process by storing record batches in a separate memory context. [#21530](https://github.com/yugabyte/yugabyte-db/issues/21530)
- Logs RPC errors as warnings during the cleanup of virtual WAL after LogicalReplication ends. [#21651](https://github.com/yugabyte/yugabyte-db/issues/21651)
- Allows stream replication to handle serialized transactions successfully by adding directory creation logic. [#21765](https://github.com/yugabyte/yugabyte-db/issues/21765)
- Stops loading replication slots from disk during startup to avoid potential system crashes. [#21841](https://github.com/yugabyte/yugabyte-db/issues/21841)
- Adds more logs for easy debugging during stress runs for Change Data Capture (CDC) without any impact on performance. [#21780](https://github.com/yugabyte/yugabyte-db/issues/21780)
- Limits unnecessary RPC calls to the local TServer during RollbackToSubTransaction operation if transaction is read-only, a fast-path transaction, or has NON\_TRANSACTIONAL isolation level. [#21519](https://github.com/yugabyte/yugabyte-db/issues/21519)
- Limits transactions' inclusion in the unacked list only upon receiving the commit record, enhancing the restart\_lsn calculation. [#21950](https://github.com/yugabyte/yugabyte-db/issues/21950)
- Removes table level attributes from CDCSDK metrics to avoid TServer crash due to failed DCHECK assertion. [#22142](https://github.com/yugabyte/yugabyte-db/issues/22142)
- Fixes the segmentation fault in walsender for dynamic table addition by refreshing stored replica identities and preventing a race condition when creating dynamic tables. [#22273](https://github.com/yugabyte/yugabyte-db/issues/22273)
- Updates the serialization and de-serialization logic to include the yb\_is\_omitted array, preserving data values in large transactions. [#21946](https://github.com/yugabyte/yugabyte-db/issues/21946)
- Solves an issue where CDCSDK incorrectly deduces tablets as not interesting for stream before reaching the configured time limit. [#22383](https://github.com/yugabyte/yugabyte-db/issues/22383)
- Addresses a race condition in dynamic table creation, enhancing stability during table and tablet initialization. [#22408](https://github.com/yugabyte/yugabyte-db/issues/22408)
- Refines the logic to remove `BEGIN` record when no DML records are added, preventing potential virtual WAL crashes. [#21646](https://github.com/yugabyte/yugabyte-db/issues/21646)
- Resolves "could not open relation" error by updating slot creation method and simplifying yb\_read\_time logic. [#22398](https://github.com/yugabyte/yugabyte-db/issues/22398)
- Enables support for dynamically allotted OID data types in CDC to prevent system crashes. [#23179](https://github.com/yugabyte/yugabyte-db/issues/23179)
- Allows handling of non-eligible table cleanup in CDC stream loading even after table drop, preventing master crash. [#23278](https://github.com/yugabyte/yugabyte-db/issues/23278)
- Reduces total inserts from 5k/thread to 2.5k/thread for clearer consumption of expected records. [#23128](https://github.com/yugabyte/yugabyte-db/issues/23128)
- Prevents failures in decoding change events by refreshing `cached_schema_details` when executing a new `GetChanges` request if the client indicates a necessity for the schema. [#20698](https://github.com/yugabyte/yugabyte-db/issues/20698)
- Allows pg\_replication\_slots to return an empty response instead of an error when `ysql_yb_enable_replication_commands` flag is false. [#23096](https://github.com/yugabyte/yugabyte-db/issues/23096)
