What's new in the YugabyteDB v2.20 LTS release series

YugabyteDB Anywhere release notes

The release notes for YugabyteDB Anywhere are on their own page.

LTS - Feature availability

All features in stable releases are considered to be GA unless marked otherwise.

What follows are the release notes for the YugabyteDB v2.20 release series. Content will be added as new notable features and changes are available in the patch releases of the YugabyteDB v2.20 release series.

For an RSS feed of all release series, point your feed reader to the RSS feed for releases.

v2.20.0.0 - November 13, 2023


Third-party licenses: YugabyteDB, YugabyteDB Anywhere



docker pull yugabytedb/yugabyte:


  • Support for OIDC token-based authentication via Azure AD. This allows YSQL database users to sign in to YugabyteDB universes using their JSON Web Token (JWT) as their password.
  • Support for Transactional CDC.
  • Wait-on conflict concurrency control with pg_locks. This feature is especially important to users that have workloads with many multi-tablet statements, which may have multiple sessions contending for the same locks concurrently. Wait-on conflict concurrency control helps avoid a deadlock scenario as well as ensure fairness so a session is not starved by new sessions. EA
  • Catalog metadata caching to improve YSQL connection scalability and performance with faster warm up times. EA
  • Support for ALTER COLUMN TYPE with on-disk changes is now GA for production deployments. This feature expands ALTER TABLE capabilities with a broader range of data type modifications, including changes to the type itself, not just size increments.

New Features

  • [13686] [DocDB] Introduce the ability to Rollback And Demote an AutoFlag
  • [18748] [CDCSDK] Change default checkpointing type to EXPLICIT while stream creating


  • [4906] [YSQL] Uncouple variables is_single_row_txn from is_non_transactional
  • [9647] [DocDB] Add metric for the number of running tablet peers on a YB-TServer
  • [12751] [CDCSDK] Made maxAttempts and sleepTime for retrying RPCs configurable in AsyncClient
  • [13358] [YSQL] YSQL DDL Atomicity Part 5: YB-Backup support
  • [16177] [DocDB] Mechanisms to reject table creation requests based on cluster resources, switch the tablet limit gflags from test flags to runtime flags
  • [16785] [DocDB] Add tracking for event stats metrics
  • [17904] [DocDB] Prevent YB-TServer heartbeats to master leader in a different universe
  • [18055] [DocDB] Resume waiters in consistent order across tablets
  • [18335] [DocDB] Reject ChangeConfig requests for sys catalog when another server is amidst transition
  • [18384] [14114] [DocDB] Throw consistent error on detected deadlocks
  • [18522] [YSQL] Change default unit for yb_fetch_size_limit to bytes from kilobytes
  • [18940] [DocDB] Metric to track active WriteQuery objects
  • [19071] [DocDB] Add estimated bytes/count to pprof memory pages
  • [19099] [YSQL] [DocDB] Adopt the trace correctly in pg_client_session
  • [19203] [xCluster] Add xCluster YB-TServer UI page, Switch to throughput in the YB-TServer UI pages from MiBps to KiBps
  • [19221] [DocDB] Improved timeout handling for YCQL index scan
  • [19272] [DocDB] Clear ResumedWaiterRunner queue during WaitQueue Shutdown
  • [19274] [xCluster] Update xCluster apply safe time if there are no active transactions
  • [19292] [CDCSDK] Publish snapshot_key in GetCheckpointResponse only if it is present
  • [19295] [yugabyted] Password Authentication showing enabled in UI even when it's not turned on.
  • [19301] [DocDB] Make re-tryable requests mem-tracker metric to be aggregated for Prometheus
  • [19351] Harden more YSQL backends manager tests
  • [19353] [xCluster] Introduce XClusterManager, Cleanup code on master and XClusterConsumer
  • [19417] [DocDB] Support tracing UpdateConsensus API
  • [19454] build: Move macOS support off of mac11
  • [19482] [CDCSDK] Add GFlag to disable tablet split on tables part of CDCSDK stream
  • [19532] [DocDB] Allow Traces to get past Glog's 30k limit
  • [YSQL] Disable backends manager by default
  • [YSQL] Some extra logging in Postgres Automatically determine upstream branch name from local branch name

Bug fixes

  • [17025] [xCluster] Calculate replication lag metrics for split tablet children
  • [17229] [DocDB] Prevent GC of any schema packings referenced in xCluster configuration
  • [18081] [19535] [DocDB] Update TabletState only for tablets that are involved in write, Ignore statuses from old status tablet on promotion
  • [18157] [DocDB] Don't pack rows without liveness column
  • [18540] [xCluster] [TabletSplitting] Fix setting opid in cdc_state for split children
  • [18711] [YSQL] Fix pg_stat_activity taking exclusive lock on t-server session
  • [18732] [DocDB] Don't update cache in LookupByIdRpc if the fetched tablet has been split
  • [18909] [YSQL] Fix ALTER TYPE on temporary tables
  • [18911] [19382] [YSQL] Fix ALTER TYPE null constraint violation and failure for range key tables
  • [19021] [YSQL] Fix bug in computation of semi/anti join factors during inner unique joins
  • [19033] [DocDB] PGSQL operation triggered during parent tablet shutting down may be not retried
  • [19063] [YSQL] Fix table rewrite on a table referenced through a partitioned table's foreign key
  • [19308] [YSQL] Fix bug where tuple IN filters were not bound to the request
  • [19316] [19314] [yugabyted] Bugs regarding --join flag provided.
  • [19329] [YSQL] Avoid O(n^2) complexity in list traversal while generating ybctid for IN operator
  • [19348] [CDCSDK] Only delete removed tablets from cdc_state in CleanUpCDCStreamsMetadata
  • [19384] [YSQL] Fix handling of case where a given RowCompareExpression cannot be bound
  • [19385] [CDCSDK] Fix WAL GC issue for tables added after stream creation
  • [19394] [CDCSDK] Only populate key to GetChangesRequest when it is not null, Set snapshot key from correct parameter in explicit checkpointing
  • [19407] [YSQL] Single shard operations should pick read time only after conflict resolution
  • [19414] [yugabyted] UI bugs
  • [19434] [CDCSDK] Do not completely fail while fetching tablets if one table hits error
  • [19440] [DocDB] Fix bug where invalid filter key was passed to Iterator initialization in backwards scans
  • [19450] [xCluster] Fix CDCServiceTestMultipleServersOneTablet.TestUpdateLagMetrics
  • [19497] [DocDB] Collect end-to-end traces only if the parent trace is non-null
  • [19514] [DocDB] Do not ignore replicas on dead YB-TServer in under-replicated endpoint
  • [19523] [xCluster] Fix TSAN error in xClusterConfig
  • [19544] [DocDB] Hash and Range Indexes grow in size even after rows are deleted, leading to slower queries
  • [19546] [DocDB] Add missing call to Prepare in PlayChangeMetadataRequest
  • [19605] [YSQL] Fix test failures encountered upon enabling DDL Atomicity
  • [19663] [DocDB] Fix AutoFlagsMiniClusterTest.PromoteOneFlag test