Project: YugabyteDB (App Definition and Development / Database)
File: v2.2.md

title: v2.2 Series release notes headerTitle: v2.2 Series release notes linkTitle: v2.2 series description: v2.2 series release notes menu: preview_releases: identifier: v2.2 parent: end-of-life weight: 2960 aliases: /preview/releases/release-notes/v2.2/ rightNav: hideH4: true type: docs Included here are the release notes for all releases in the v2.2 release series. {{< note title="New release versioning" >}} Starting with v2.2.0, Yugabyte follows a . Stable release series are denoted by `MAJOR.EVEN`, introduce new features and changes added since the previous stable release series, and are supported for production deployments. Patch releases, denoted by `MAJOR.EVEN.PATCH`, include bug fixes and revisions that do not break backwards compatibility. {{< /note >}} {{< note title="Upgrading from 1.3" >}} Prior to v2.0, YSQL was still in beta. Upon release of v2.0, a backward-incompatible file format change was made for YSQL. For existing clusters running pre-2.0 release with YSQL enabled, you cannot upgrade to v2.0 or later. Instead, export your data from existing clusters and then import the data into a new cluster (v2.0 or later). {{< /note >}} Here is an overview of all notable features and enhancements added to the v2.2 release series. For features added in specific releases, see below. YugabyteDB now supports , including backup of all tables in a database. and YugabyteDB can now build indexes on non-empty tables while online, without failing other concurrent writes. When you add a new index to a table that is already populated with data, you can now use the YSQL statement to enable building these indexes in an online manner, without requiring downtime. For details how online backfill of indexes works, see the design document. Backfilling an index while online is disable by default. To enable online index backfilling, set the `yb-tserver` flag to `false` when starting YB-TServers. Note: Do not use this flag in a production cluster yet. For details on how this works, see Database-level colocation for YSQL, which started as a beta feature in the 2.1 release, is now generally available in the 2.2 release. Traditional RDBMS modeling of parent-child relationships as foreign key constraints can lead to high-latency `JOIN` queries in a geo-distributed SQL database. This is because the tablets (or shards) containing the child rows might be hosted in nodes, availability zones, and regions different from the tablets containing the parent rows. By using , you can let a single tablet be shared across all tables. Colocation can also be at the overall database level, where all tables of a single database are located in the same tablet and managed by the same Raft group. Note that tables that you do not want to reside in the overall database's tablet because of the expectation of large data volume can override the feature at table creation time and hence get independent tablets for themselves. {{< note title="Note" >}} Colocated tables are not currently recommended for production, as backup-restore is not yet fully supported for colocated tables. Backup-restore support for colocated tables is in active development. Refer to issues and for details. {{< /note>}} What happens when the "colocation" tablet containing all the tables of a database becomes too large and starts impacting performance? Check out . Foreign keys in YSQL now support the and clauses. Work on deferring additional constraints, including those for primary keys, is in progress. Application developers often declare constraints that their data must obey, leaving it to relational databases to enforce the

The end result is simpler application logic, lower error probability, and higher developer productivity. Automatic constraint enforcement is a powerful feature that should be leveraged whenever possible. There are times, however, when you need to temporarily defer enforcement. An example is during the data load of a relational schema where there are cyclic foreign key dependencies. Data migration tools usually defer the enforcement of foreign key dependencies to the end of a transaction by which data for all foreign keys would ideally be present. This should also allow YSQL to power Django apps. The `yugabyted` server is now out of beta for single-node deployments. New users can start using YugabyteDB without needing to understand the underlying architectures acts as a parent server, reducing the need to understand data management by YB-TServers and metadata management by YB-Masters. See it in action by following the updated . For details, see in the Reference section. YugabyteDB now supports automatic tablet splitting, resharding your data by changing the number of tablets at runtime. For details, see and . , , and To enable automatic tablet splitting, use the new `yb-master` flag to specify the size when tablets should split. New results are now available for benchmarking the performance of the YSQL API using the TPC-C suite. For the new TPC-C results and details on performing your own benchmark tests to evaluate YugabyteDB, see . YugabyteDB supports . and YugabyteDB can now build indexes on non-empty tables while online, without failing other concurrent writes. When you add a new index to a table that is already populated with data, you can now use the YCQL statement to enable building these indexes in an online manner, without requiring downtime. For details how online backfill of indexes works, see the design document. In YCQL, backfilling an index while online is enabled by default. To disable, set the `yb-tserver` flag to `false` when starting YB-TServers. For details on how online index backfill works, see . and Most applications have a need to frequently evolve the database schema, while simultaneously ensuring zero downtime during those schema change operations. Therefore, there is a need for schema migrations (which involve DDL operations) to be safely run in a concurrent and online manner alongside foreground client operations. In case of a failure, the schema change should be rolled back and not leave the database in a partially modified state. With the 2.2 release, not only the overall DocDB framework for supporting such schema changes in an online and safe manner has been introduced but also this feature is now available in beta in the context of YCQL using the statement. YugabyteDB now supports automatic tablet splitting at runtime by changing the number of tablets based on size thresholds. For details, see and . , , and To enable automatic tablet splitting, use the new `yb-master` flag to specify the size when tablets should split. <ul class="nav yb-pills"> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.2.7.0-darwin.tar.gz"> <i class="fa-brands fa-apple"></i><span>macOS</span> </a> </li> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.2.7.0-linux.tar.gz"> <i class="fa-brands fa-linux"></i><span>Linux</span> </a> </li> </ul> ```sh docker pull yugabytedb/yugabyte:2.2.7.0-b5 ``` Backup-related tasks (schedules, restores, deletes) failed when the storage configuration was deleted , Fixed incorrect selection of the preferred leader zones Removed the "Transactions" plot line from YSQL Ops and Latency graphs Added ability to specify allowed (and disallowed) SSL protocols Fixed build issues on

due to Clang version , Avoid running out of threads due to FailureDetector Fix backup-restore issues when source table was altered before ybase: a blacklisted TS' initial load was not replicated during master failover YCQL: Fixed range deletes to start and end at specified primary key bounds YCQL: Fixed a bug with an index update on a list after an overwrite YCQL: Fixed JSONB operator execution when applying to NULL objects YCQL: Fixed parser typo when scanning binary values YCQL: Fix case-insensitive pattern matching for audit logging Creating a TLS enabled universe with a custom home dir setting in on-prem provider fails () and ) ) ) ) Tasks page reports an incorrect status of failed backup () Fix for updating user profile when SMTP username or password is empty () Fix for editing YugabyteDB Universe placement info logic () Fixes to delete unnecessary Prometheus snapshot when backing up YB Platform data () Fix for an issue where Client Certificates are not valid on download due to incorrect validity time () Safeguard extra migration for pre-provisioning () Fix handling SSL write errors and Replace retry counter with a check that data is ready () Fix TServer crash with YEDIS workloads and snapshot restore () Disable Rocksdb flush on all DeleteTablet calls () Shutdown status resolver before destroying it in ResolveIntents () Tasks page reports incorrect status of failed backup () (Only applicable to Non-Replicated installations) It is required to pull the latest `platform-support-packages.tar.gz` for the fix related to issue - Yugabyte Platform operations now allow promoting a Yugabyte TServer only node to run Yugabyte Master and TServer process () Enhancements to on-prem Cloud Provider configuration When creating onprem universes, YW will automatically run provisioning if airgap is enabled now, instead of asking the users to run the pre-provision script. Users will need to run the script only when creating universes without passwordless sudo access. Do not fail universe creation if cronjobs can't be created for on-prem () Remove pre-provision script requirement for air-gapped installations () "Sudo passwordless" in on-prem cloud provider configuration toggle is renamed to "Manually Provision Node" Added a new "Advanced" section in on-prem cloud provider configuration which includes Use hostnames Desired home directory Node exporter settings Pre-provisioning of `yugabyte` user is supported for on-prem Cloud Provider. (YB devops script won't run `create_user` if yugabyte user already exists) () Improvements to installation of Prometheus Node Exporter utility workflow () Prometheus Node exporter option is now available in the cloud configuration under advanced settings Supports bringing your own node exporter user UI/UX improvements for YB Platform Add visual feedback when backup or restore is initiated from modal () Add new button for downloading root cert in Certificates page () Use the correct disk mount while calculating the disk usage of logs () YSQL Support ROWSPERTRANSACTION option for COPY FROM stdin () ] Fixed an issue that would leave Replicated in a bad state if the network connection drops while uploading an airgap bundle, preventing the installation from proceeding. () Fix for the check if changing node count by AZ affects master node placement and requires a full move () Fix delete backup failure for TLS enabled universes () Universe disk usage shows up empty on the universe page () Fix for starting a YB TServer Node when another YB Master is down causes issues () Fix platform backup script for replicated installations () for IPv6

(#4901) [YCQL] Fix for bug with the duplicate row detection that allows a unique index to get created when the table is not unique on the index column(s) (5811) (5898) (5603) Client Certificates are not valid on download due to incorrect validity time (6118) Tasks page reports incorrect status of failed backup (6210) (Only applicable to Non-Replicated installations) Fix for On-prem YB Platform backup fails due to file owned by root (6062) Build: `2.2.3.0-b35` <ul class="nav yb-pills"> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.2.3.0-darwin.tar.gz"> <i class="fa-brands fa-apple"></i><span>macOS</span> </a> </li> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.2.3.0-linux.tar.gz"> <i class="fa-brands fa-linux"></i><span>Linux</span> </a> </li> </ul> ```sh docker pull yugabytedb/yugabyte:2.2.3.0-b35 ``` Enhancements to RBAC with a new "Backup Admin" role which allows all read-only permissions plus back up operations Display table sizes in the Tables page On-prem Cloud provider instances table list can be sorted and filtered API for disabling auto-generation of database nodes certificate Backup retention policy for auto-deletion of older backups , Backup improvements YCQL, YSQL, and YEDIS backups are split into different tabs on backup UI screen Back up operation creates a single restore object regardless of "transactional" field selection Added a new field parallel thread for multi-threading backups YSQL backups only support namespace level backup Backup table list has been revamped with the new UX and shows more details - expiration time, duration, backup ty Universe can be restored with a single action Backup objects can be manually deleted Scheduled backups `cron` expression shows the next run time in local browser time and the label displays that `cron` supports UTC only Improve the Replication graph for xDC replication set up to display the graph and metric names cleanly UI improvements for displaying On-prem instances Instance ID is now optional and also shown in the nodes page "In Use" column has been renamed to "Universe Name" Supports adding multiple instances in different rows instead of comma-separated entries Supports generating API tokens for SSO-enabled users Yugabyte Platform restart cancels any tasks that were in progress Remove `sudo` requirement in DB backup script [Platform] Security hardening: Added CSRF token support [Platform] Support for PingFederate OIDC SSO login for Non Replicated deployments Universe disk usage shows up empty on the universe page Platform backup script needs to preserve attributes on copy from Prometheus snapshot Platform backup fails if `/opt/yugabyte/release` directory does not exist Platform backup script needs to stop Prometheus service during the restore of Prometheus data Build: `2.2.2.0-b15` <ul class="nav yb-pills"> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.2.2.0-darwin.tar.gz"> <i class="fa-brands fa-apple"></i><span>macOS</span> </a> </li> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.2.2.0-linux.tar.gz"> <i class="fa-brands fa-linux"></i><span>Linux</span> </a> </li> </ul> ```sh docker pull yugabytedb/yugabyte:2.2.2.0-b15 ``` Fix failed backup if restored table was deleted before restoration. Newly elected YB-Master leader should pause before initiating load balancing. Fix backfilling to better handle large indexed table tablets. Fix `DROP DATABASE` statement should work with databases deleted on YB-Master. For non-prepared statements, optimize `pg_statistic` system table lookups. Implement DNS cache to significantly reduce CPU loads due to a large number of DNS resolution requests (especially for YCQL connections). Adds flag (default is 1 minute). Fixed incorrect names de-mangling in index creation from `CatalogManager::ImportSnapshot()`. Fixed crashes when inserting literals containing newline characters. Reuse CQL parser between processors to improve memory usage. Add new `cqlprocessorslimit` flag to control processor allocation. Fix `yugabyted` fails to start UI due to class binding failure. Show hostnames in YB-Master and YB-TServer Admin UI when hostnames are specified in `--webserverinterface`, `rpcbindaddresses`, and `serverbroadcast_addresses`

Skip tablets without intents during commits, for example, the case of an update of a non-existing row. Fix log spew when applying unknown transaction and release a mutex as soon as possible when transaction is not found. Fix snapshots cleanup when snapshots removed before restart. Replace `SCHECK` with `LOG(DFATAL)` when checking for restart-safe timestamps in WAL entries. Replace all CHECK in the load balancer code with `SCHECK` or `RETURNNOTOK`. Implement DNS cache to significantly reduce CPU loads due to a large number of DNS resolution requests (especially for YCQL connections). Adds YB-Master flag (default is 1 minute). Avoid duplicate DNS requests when handling `system.partitions` table requests. Fix leader load balancing can cause `CHECK` failures if stepdown task is pending on next run. Sets global leader balance threshold while allowing progress to be made across tables. Adds new YB-Master flag to limit number of leader moves per table. and Set the async `YBClient` initialization future in `TabletPeer` constructor to ensure tablet bootstrap logic can resolve transaction statuses. Handle write operation failures during tablet bootstrap. Drop index upon failed backfill. Fix WAL overwriting by new leader and replay of incorrect entries on tablet bootstrap. Avoid taking unique lock when starting lookup request. Set 2DC lag metrics to `0` if not the leader and if the replication is deleted. Set the table to ALTERING state when `fully_` is populated. `Not the leader` errors should not cause a replica to be marked as failed. Use difference between follower's hybrid time and its safe time as a measure of staleness. Add Master section below Tablet Server section in Metrics* page. Add `rpcconnectionsalive` metrics for YSQL and YCQL APIs. Fix restore payload when renaming table to include keyspace. Disable keyspace field when restoring universe backup. Pass in `ssh_user` to air-gap provision script and add to on-premise template. Add the `--recursive` flag to AZCopy for multi-table restore. Fix transactional backup with specified tables list by including keyspace in payload. Fix undefine object property error when Prometheus is unavailable and navigating to the Replication* tab. Backups should take provider-level environment variables, including home directory. Add hostname and display in the Nodes page along with node name and IP address. Support option of DNS names instead of IP addresses for nodes. Add option in Admin UI to choose between using hostnames or IP addresses for on-premises provider. Disable glob before running cleanup of old log files using `zippurgeyb_logs.sh`. Fixes issue on Red Hat. Fix Replication graph units and missing graph in Replication* tab when metrics exist. Build: `2.2.0.0-b80` <a href="https://downloads.yugabyte.com/yugabyte-2.2.0.0-darwin.tar.gz"> <button> <i class="fa-brands fa-apple"></i><span>macOS</span> </button> </a> &nbsp; &nbsp; &nbsp; <a href="https://downloads.yugabyte.com/yugabyte-2.2.0.0-linux.tar.gz"> <button> <i class="fa-brands fa-linux"></i><span>Linux</span> </button> </a> <br /> ```sh docker pull yugabytedb/yugabyte:2.2.0.0-b80 ``` Support presplitting using for range-partitioned table indexes. For details, see . Fix crash for nested `SELECT` statements that involve null pushdown on system tables. Fix wrong sorting order in presplit tables. To help track down unoptimized (or "slow") queries, use the new `yb-tserver` . Enhance the command with optional flags for listing tables with database type (`includedbtype`), table ID (`includetableid`), and table type (`includetabletype`). This command replaces the deprecated `yb-admin listtableswithdbtypes` command. Add support for on colocated tables. Improve logic for index delete permissions. Add fast path option for index backfill when certain statements can create indexes without unnecessary overhead from online schema migration (for example, `CREATE TABLE` with unique column

Skip index backfill for unsupported statements, including `DROP INDEX`, "CREATE UNIQUE INDEX ON`, and index create in postgres nested DDL). [#4918] Suppress `incomplete startup packet` messages in YSQL logs. Improve YSQL create namespace failure handling. Add error messages to table schema version mismatch errors so they are more understandable. [#4810] Increase the default DDL operations timeout to 120 seconds to allow for multi-region deployments, where a CREATE DATABASE statement can take longer than one minute. Throttle YCQL calls when soft memory limit is reached. Two new flags, `throttlecqlcallsonsoftmemorylimit` and `throttlecqlcalls_policy` can be used to control it. Implements a password cache to allow connections to be created more quickly from recently used accounts. Helps reduce high CPU usage when using YCQL authorization. Fix `column doesn't exist` error when an index is created on a column which is a prefix of another column. Fix crashes when using ORDER BY for non-existent column with index scan. Add HTTP endpoints for determining master leadership and returning information on masters. `<web>/api/v1/masters`: Returns all master statuses. `<web>/api/v1/is-leader`: Returns `200 OK` response status code when the master is a leader and `503 Service Unavailable` when the master is not a leader. Add HTTP endpoint `/api/v1/cluster-config` for YB-Master to return the current cluster configuration in JSON format. Thanks, , for your contribution! Output of `yb-admin getuniverseconfig` command is now in JSON format for easier parsing. Add `yugabyted destroy` command. Change logic used to determine if the load balancer is idle. Default to IPv4 addresses for DNS resolution and local addresses. Add a Grafana dashboard for YugabyteDB. Update command to use `notshowrestored` option to exclude fully RESTORED entries. and , specifying a new leader is now optional. `yugabyted` `--bind_ip` flag renamed to `--listen`. Fix malformed URL for ycql rpcz when clicking YCQL Live Ops* link in the YB-TServer utilities page. Fix export name for YCQL metrics. Fix YB-Master UI to show correct number of tablets for colocated tables. Add option to and universe-level transactional backups. On the Universes page, the Replication* tab displays by default and adds default state when replication lag metric query returns no data. Add Replication* tab to Universe overview tab list if enabled and query for replication lag metrics. [#] Add replication lag metrics `async_replication_sent_lag_micros` (last applied time on producer - last polled for record) and `async_replication_committed_lag_micros` (last applied time on producer last applied time on consumer) for 2DC replication and export to Prometheus. Retrieve IAM Instance Profile Credentials for backups. This retrieves the `AccessKeyId` and `SecretAccessKey` and set these in the configuration so that data nodes inherit the required IAM permissions to access S3. and Add option to create a backup of multiple YCQL transactional tables. Add support for c5d instance types. Add support for installing epel-release in Amazon Linux. Fixed requested TLS client certificate generated with expired date and ysqlsh fails to connect. Fixed universe fails to create if user-supplied certificate is selected. Implement OAuth2/SSO authentication for Yugabyte Platform sign-in. and Add backup and restore options for YSQL tables and universe-level transactional backups. Retrieve IAM Instance Profile Credentials for backups. This retrieves the `AccessKeyId` and `SecretAccessKey` and set these in the configuration so that data nodes inherit the required IAM permissions to access S3. In the Health and Alerting tab of the Admin Console, the Username and Password fields in Custom SMTP Configuration* are now optional. Fix password reset in customer profile page. and Fix Backups* page not loading when there is a pending task. Change UI text displaying "GFlag" to "Flag" in the Admin Console.