docs/content/stable/releases/ybdb-releases/end-of-life/v2.2.md
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 new release versioning convention. 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 Release notes below.
YugabyteDB now supports distributed backup and restore of YSQL databases, including backup of all tables in a database. #1139 and #3849
CREATE INDEX statement to enable building these indexes in an online manner, without requiring downtime. For details how online backfill of indexes works, see the Online Index Backfill design document.--ysql_disable_index_backfill 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 Online Index BackfillDatabase-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 colocated tables, 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 7378 and 10100 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 automatic tablet splitting [BETA].
Foreign keys in YSQL now support the DEFERRABLE INITIALLY IMMEDIATE and DEFERRABLE INITIALLY DEFERRED 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 rules. 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 Quick start. For details, see yugabyted in the Reference section.
--tablet_split_size_threshold_bytes 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 TPC-C.
YugabyteDB supports distributed backup and restore of YCQL databases and tables. #1139 and #3849
--ycql_disable_index_backfill flag to false when starting YB-TServers. For details on how online index backfill works, see Online Index Backfill. #2301 and #4708Most 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 ALTER TABLE statement.
--tablet_split_size_threshold_bytes flag to specify the size when tablets should split.docker pull yugabytedb/yugabyte:2.2.7.0-b5
(Only applicable to Non-Replicated installations)
platform-support-packages.tar.gz for the fix related to issue - Fixes to delete unnecessary Prometheus snapshot when backing up YB Platform data (6175)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 (5939)
Remove pre-provision script requirement for air-gapped installations (5929)
"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
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) (#6086)
Improvements to installation of Prometheus Node Exporter utility workflow (5926)
(Only applicable to Non-Replicated installations)
Build: 2.2.3.0-b35
docker pull yugabytedb/yugabyte:2.2.3.0-b35
ALTER COLUMN type that does not require on-disk changes #4424COPY FROM command syntax #2855, #5453TRUNCATE #5443cron expression shows the next run time in local browser time and the label displays that cron supports UTC only #4709sudo requirement in DB backup script #5440ORDER BY columns exist in table but not in chosen index #5690UPDATE with RETURNING clause #5366COPY FROM query #2855COPY TO query #5205/opt/yugabyte/release directory does not exist #5615Build: 2.2.2.0-b15
docker pull yugabytedb/yugabyte:2.2.2.0-b15
DROP DATABASE statement should work with databases deleted on YB-Master. #4710pg_statistic system table lookups. #5051cdc_state table for xDC metrics if there are no replication streams enabled. #5173dns_cache_expiration_ms flag (default is 1 minute). #5201CatalogManager::ImportSnapshot(). #5157cql_processors_limit flag to control processor allocation. #5057--webserver_interface, rpc_bind_addresses, and server_broadcast_addresses flags. #5002SCHECK with LOG(DFATAL) when checking for restart-safe timestamps in WAL entries. #5314SCHECK or RETURN_NOT_OK. #5182dns_cache_expiration_ms flag (default is 1 minute). #5201system.partitions table requests. #5225CHECK 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 load_balancer_max_concurrent_moves_per_table flag to limit number of leader moves per table. #5181 and #5021YBClient initialization future in TabletPeer constructor to ensure tablet bootstrap logic can resolve transaction statuses. #52150 if not the leader and if the replication is deleted. #5113fully_* is populated. #5139Not the leader errors should not cause a replica to be marked as failed. #5072rpc_connections_alive metrics for YSQL and YCQL APIs. #5223ssh_user to air-gap provision script and add to on-premise template. #5132--recursive flag to AZCopy for multi-table restore. #5163zip_purge_yb_logs.sh. Fixes issue on Red Hat. #5169Build: 2.2.0.0-b80
docker pull yugabytedb/yugabyte:2.2.0.0-b80
SELECT statements that involve null pushdown on system tables. #4685--ysql_log_min_duration_statement. #4817yb-admin list_tables command with optional flags for listing tables with database type (include_db_type), table ID (include_table_id), and table type (include_table_type). This command replaces the deprecated yb-admin list_tables_with_db_types command. #4546ALTER TABLE on colocated tables. #4293CREATE TABLE with unique column constraint). Skip index backfill for unsupported statements, including DROP INDEX, "CREATE UNIQUE INDEX ON`, and index create in postgres nested DDL). [#4918]incomplete startup packet messages in YSQL logs. #4813throttle_cql_calls_on_soft_memory_limit and throttle_cql_calls_policy can be used to control it. #4973column doesn't exist error when an index is created on a column which is a prefix of another column. #4881<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./api/v1/cluster-config for YB-Master to return the current cluster configuration in JSON format. #4748
yb-admin get_universe_config command is now in JSON format for easier parsing. [#4589]#1462yugabyted destroy command. [#3872]#3849yb-admin list_snapshots command to use not_show_restored option to exclude fully RESTORED entries. #4351yb-admin master_leader_stepdown, specifying a new leader is now optional. #4722--bind_ip flag renamed to --listen. #4960async_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. #2154AccessKeyId and SecretAccessKey and set these in the configuration so that data nodes inherit the required IAM permissions to access S3. #3451 and #4900AccessKeyId and SecretAccessKey and set these in the configuration so that data nodes inherit the required IAM permissions to access S3. #4900