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

title: v2.3 series release notes headerTitle: v2.3 series release notes linkTitle: v2.3 series description: v2.3 series release notes menu: preview_releases: identifier: v2.3 parent: end-of-life weight: 2950 aliases: /preview/releases/release-notes/v2.3/ rightNav: hideH4: true type: docs Included here are the release notes for all releases in the v2.2 release series. Released: September 8, 2020 (2.3.0.0-b176). <ul class="nav yb-pills"> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.3.0.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.3.0.0-linux.tar.gz"> <i class="fa-brands fa-linux"></i><span>Linux</span> </a> </li> </ul> ```sh docker pull yugabytedb/yugabyte:2.3.0.0-b176 ``` Fix OOM when running large `COPY TO` statements by creating new memory context for the loop over retrieved rows and resetting it after processing each row. Support transactional batch size for with OOM fix. Batch sizes can be passed in with `ROWSPERTRANSACTION` in the `COPY OPTION` syntax. For an example, see For index backfill flags, use better default values. Set `indexbackfillrpctimeoutms` default from `60000` to `30000` and change `backfillindextimeoutgracemargin_ms` default from `50` to `500`. Remove spurious error message "0A000: Alter table is not yet supported" from `CREATE OR REPLACE VIEW`. Prevent consistency violations when a partitioned table has foreign key constraints due to erroneous classification as a single-row transaction. Fix restore from a distributed backup fails for tables using `SPLIT INTO` without a primary key. Fix wrong result by avoiding pushdown of `UPDATE` statement with the `RETURNING` clause. Improve error message when `UPDATE` changes partition so its clear what went wrong, fixed `ybpgforeignkey` `pgregress` test for semantic merge conflict when updating primary keys and row-level partitioning. Allow `UPDATE` statement to change primary key columns. Support row-level partitioning. Block usage of `TABLEGROUP` with the `SPLIT` clause. For `CREATE TABLE`, usage is blocked in the grammar. For `CREATE INDEX`, if `NO TABLEGROUP` was provided, then presplitting for the index is allowed; otherwise, an error is issued. Buffered operations may share single RPC with read operation. Reducing the number of RPC calls speeds up `CREATE TABLE` statement. For example, the total number of RPC calls is dropped from 66 to 58 for a simple table like `CREATE TABLE t(k INT PRIMARY KEY)`. Add new `ysqlsh` describe metacommands for tablegroups: `\dgr Add `ALTER TABLEGROUP` statements to support `ALTER TABLEGROUP tablegroupname RENAME TO ...` and `ALTER TABLEGROUP tablegroupname OWNER TO ...`. Also changes `pgtablegroup` entry corresponding to `tablegroupname` to properly reflect new `grpname` and `grpowner` (if the user has proper permissions or ownership to issue the `ALTER TABLEGROUP` statement. Add support for indexes to opt out of tablegroups (`NO TABLEGROUPS`) or select their own tablegroup (`TABLEGROUP group_name`). For , enable `serializable-deferrable` mode by default. Add new flag to disable the default mode. Support `ALTER COLUMN type` for variants that don't require on-disk changes. Specifically only allowing `ALTER COLUMN type` for `varch(n)` and `varbit(n)`. For example, changing column type from `varchar(50)` to `varchar(255)`. Enable `USING` clause in `DELETE` statement and `FROM` clause in `UPDATE` statement. Support GRANT/REVOKE/ALTER DEFAULT PRIVILEGES for tablegroups. Implement tablegroup query layer changes. Replace "Foreign Scan" with "Seq Scan" for `EXPLAIN` statement. Fix `initdb` when index backfill is enabled. Properly handle empty delete with backfill by sending appropriate messages to the client, including setting it `skipped` and `rowsaffectedcount` to `0`. `DROP INDEX` statement invalidates table cache entry for the index table, but should invalidate the table cache entry for the indexed table. `yb-admin createdatabasesnapshot` command should not require `ysql.` prefix for database name. For non-prepared statements, optimize `pg_statistic` system table lookups and update debugging utilities. Correctly show beta feature warnings by default. For `WHERE` clause in the `CREATE INDEX` statement, return a `Not supported`

Fix TSAN issue in partition-aware policy for C++ driver 2.9.0-yb-8 (yugabyte/cassandra-cpp-driver). Support YCQL backup for indexes based on JSON-attribute. Correctly set `release_version` for `system.peers` queries. Reject `TRUNCATE` operations when flag is enabled. When enabled, `DROP TABLE` permission is required to truncate a table. Default is `false`. Fix missing return statement in error case of the `SetPagingState` method in `statement_params.cc`. Enable backfilling of transactional tables by default. Fix `ycqlsh` should return a failure when known that the create (unique) index has failed. Fix core dump related to DNS resolution from cache for Kubernetes universes. Fix yb-master fails to restart after errors on first run. Show better error message when using `yugabyted` and yb-master fails to start. Disable ignoring deleted tablets on load by default. For the `serverbroadcastaddresses` flag, provide default port if not specified. Add an API endpoint to download root certificate file. Do not load deleted tables and tablets into memory on startup. Set the follower lag for leaders to `0` by resetting timestamp to the maximum value when a peer becomes a leader and when the peer loses leadership. Flow keyspace information from yb-master to yb-tserver. Implement meta cache lookups throttling to reduce unnecessary thrashing. Fix `rpcz/statements` links in `yb-tserver` Web UI when `pgsqlproxybindaddress` and `cqlproxybindaddress` are `0.0.0.0`. `DumpReplayStateToStrings` should handle too many WAL entries scenario. Also, log lines only display fields critical for debugging and do not show customer-sensitive information. Find the difference between the replica map and consensus state more quickly using a map lookup. Improve failover to a new master leader in the case of a network partition or a dead tserver by registering tablet servers present in Raft quorums if they don't register themselves. Also, mark replicas that are in `BOOTSTRAPPING`/`NOTSTARTED` state with its true consensus information instead of marking it as a `NONPARTICIPANT`. Add YB-Master UI changes to support tablegroups and colocation. Adds a column to the user and index tables to display the YSQL OID information about the colocation parent table (if any). For tablegroups, it displays the OID of the table's tablegroup (same as the OID present in `pgtablegroup` as well as the `reltablegroup` column of `pgclass` for that relation). For colocated databases, it displays the OID of the database. Also, creates a table to display information about the parent tables. Wrap the names and uuid of the parent tables. Display YSQL OIDs as explained above. Fix `MetaCache::TAbleData::stale` is not getting reset back to `false`. Do not crash yb-tserver when the `opid` of the last WAL file is less than the committed `opid`. Add `CREATE TABLEGROUP` and `DROP TABLEGROUP` flow. Add `SHOW_DELETED` flag to show deleted snapshots that are still retained in memory. Move read path functions to a separate file. Wait for `ybclientadminoperationtimeoutsec` for table creation in `yb-admin importsnapshot` task. Create a cache for system-wide queries. Annotate access to `enablecollectcdc_metrics` flag and prevent TSAN warnings. Raise yb-master and yb-tserver process ulimits to hard limits when appropriate. Add a pre-flush step, triggered by yb-master, to snapshot operations to minimize the amount of data being flushed in sync. Use Strand to remove intents and avoid wasting threads. Add metric severity level Decrease logging frequency for no local transaction status tablet from on every warning to once per second. Fix MonoTime subtraction implementation to return `result` of the operation instead of `lhs`. When dropping tables, delete snapshot directories for deleted tables. Set up a global leader balance threshold while allowing progress across tables. Add and to improve performance of leader

And properly update state for leader stepdowns to prevent check failures. Reduce default value of from `10` to `2`. Improve bootstrap logic for resolving transaction statuses. Avoid duplicate DNS lookup requests while handling `system.partitions` table requests. Handle write operation failures during tablet bootstrap. Ensure `strictcapacitylimit` is set when SetCapacity is called to prevent ASAN failures. Drop index upon failed backfill. For YCQL, generate error to CREATE INDEX call if index backfill fails before the call is completed. Allow overflow of single-touch cache if multi-touch cache is not consuming space. Don't flush RocksDB before restoration. Fix `yugabyted` fails to start UI due to class binding failure. On `yb-tserver` restart, prioritize bootstrapping transaction status tablets. For `yb-admin` commands, clarify syntax for namespace. Improve for-loops to avoid unnecessary copies and remove range-loop-analysis warnings. Apply large transaction in a separate thread if the transaction will not fit into the limit of key-value pairs. The running transaction is removed from memory after all its intents are applied and removed. Fix `SEGV` in Master UI when registering YB-TServer from Raft. Heartbeats process only new consensus information unless `masterignorestale_cstate` flag is disabled. Remove KernelStackWatchdog and use LongOperationTracker to waste less resources per thread. Change the default value of `metricnodename` flag from `DEFAULTNODENAME` to `hostname:port`. For S3 backups, install `s3cmd` required for encrypted backup and restore flows. When creating on-premises provider, remove `YBHOMEDIR` if not set. Update to use templatized values for setting TLS flags in Helm Charts. For YCQL client connectivity, allow downloading root certificate and key from Certificates* menu. Bypass CSRF checks when registering and logging in due to bug with CSRF token not being set. Set node certificate field to subject of CA instead of issuer of CA. Add option in universe creation form to control whether node_exporter is installed on provisioned nodes (including creating prometheus user + group). Add Microsoft Azure provider UI and related changes to Create Universe* form. Create default network resources for multi-region deployments in Microsoft Azure if they don't exist and store for use during universe creation. For Microsoft Azure, use preexisting network resources. Set Assign Public IP* correctly using the UI. Fix `AreLeadersOnPreferredOnly` times out when setting preferred zones in Edit Universe*. Fix `yb_backup.py` script to remove `sudo` requirement and correctly change user. Add CSRF tokens to forms. Allow configuration of OIDC scope (for SSO use) as well as email attribute field. If Username and Password are left empty in the Custom SMTP Configuration*, remove `smtpUsername` and `smtpPassword` from the payload. Add the UTC* label to indicate `cron` expression must be relative to UTC. Also, add help text indicating when next scheduled job will run. Move the source of truth for communication ports to the universe level. Use appropriate range for time period (over entire step window rather than last minute) when querying Prometheus for metrics. Support backing up encrypted at rest universes. Only display "Rolling Upgrade Delay" if upgrade type is "Rolling". Add guarding against never-ending loop when running the `yb_backup.py` script and yb-server doesn't have any data directories. Fix metric panel displaying incorrect time interval when reloading after changing graph filter. Fix logging on health check script failure. Rename the label for enabling server-side encryption in S3 backups to Encrypt Backup* for both backups and scheduled backup modals. Add a VM backup script that includes Prometheus backups. Add `BackupAdmin` role to authorize users to create backup and restore tasks on universes, but not given other administration privileges. Modify the

script to add "round-robin" behavior to thread allocations to better spread loads across nodes in parallel during snapshot upload or download. Fix the invalid `yb_backup.py` script behavior if `--keyspace` flag is not specified. Add subtasks to check number of pods deployed during upgrades. Make use of parallelism argument for `yb_backup.py` script. Explicitly pass the number of threads to concurrently run backup script through UI. The form defaults to the backup script default value of 8 threads if no value is provided. The Remove Node action should be available if the Add Node* action fails. Add ability for user to specify the S3 backup target host that their bucket is located on. Check if on-premise node instance has a universe that is using it and make a link to the Universe Overview page. Fix `Cannot read property 'displayName' of undefined` error. Use Host Names setting is not displaying correctly in Provider Configuration* page. Disable glob before running the cleanup of old log files. Schedule job for `setUniverseKey` should handle errors on per-customer basis. After Yugabyte Platform (YugaWare) restart, any in-progress tasks should be cancelled and marked as failed. Redirect from login back to index if session is already validated. Logout should redirect to the login endpoint. Fix updating of Universes* list after creating new universe. Fix restore payload when renaming table to include keyspace. And check for keyspace if tableName is defined and return invalid request code when keyspace is missing. Add the ability to override communication port default values during universe creation. Released: September 15, 2020 (2.3.1.0-b15). <ul class="nav yb-pills"> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.3.1.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.3.1.0-linux.tar.gz"> <i class="fa-brands fa-linux"></i><span>Linux</span> </a> </li> </ul> ```sh docker pull yugabytedb/yugabyte:2.3.1.0-b15 ``` Fixes OOM when using `COPY <table> FROM <file>` to load data from a large file to a table. Enable 2DC replication bootstrap for YSQL tables. This allows the producer to know where to start replicating from. Fix `CREATE TABLE` is 4-5x slower using Docker on Mac than not using Docker. Speeds up table creation by buffering writes to postgres system tables, caching pinned objects, and significantly reducing write RPC calls. Roll back the catalog version made in commit `46f3701` so that 2.3 upgrades can proceed. Quickly evict known unresponsive tablet servers from the tablet location cache. Applies only to follower reads. For example, when tablet servers are unresponsive or dead not sending heartbeats to the master for 5 minutes. This could also happen after decommissioning nodes. Add search input and data sorting to the on-premises instances table list. Click arrows next to column titles to sort. Use the Search form to search multiple columns. Add the ability to change the user role (`Admin`, `ReadOnly`, or `BackupAdmin`) from the UI by an admin. Also, fix stale users list after creation or deletion of a user and disable Save* buttons at Customer Profile tabs for `ReadOnly` users. Before deleting a universe, stop the master/tserver processes and release the instance so that if started again, the processes are not still running. Released: September 29, 2020 (2.3.2.0-b37). <ul class="nav yb-pills"> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.3.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.3.2.0-linux.tar.gz"> <i class="fa-brands fa-linux"></i><span>Linux</span> </a> </li> </ul> ```sh docker pull yugabytedb/yugabyte:2.3.2.0-b37 ``` Enable `pgstatstatements` extension by default. Clean up unused `PgStatement` objects on hot path after usage to avoid memory consumption. Fix restarting writes (`INSERT` and `UPDATE)` on transaction conflicts and avoid surfacing transaction errors to user applications. Enable batching of updates for YSQL procedures and functions. Add additional system queries (`SELECTLOCAL`, `SELECTLOCALTOKENS`, and `SELECTPEERS_TOKENS`) for

Fix crash for YCQL index scan when `ORDER BY` columns exist in table, but not in the chosen index, and raise an error. Allow setting a custom replacement policy per table through `yb_admin`. Do not clean up transaction that potentially was committed. Fix CDC shutdown races. Moved thread pool shutdown before other CDC objects cleanup. Added explicit CDC poller clear in CDC consumer shutdown. Fix preparer deadlock after switching from leader to follower. Fix `RaftGroupMetadata` construction issues found using PVS Studio. Change `rlimit` flags to have at-least semantics. Only change the process soft limit if it is smaller than the limit specified by the corresponding flag value. Add extra logging when initializing `syscatalog`. Set default `webserverinterface` to `rpcbind_address` IP/host component. Add environmental variables functionality to `yugabyted`. New environment variables for YSQL (`YSQLUSER`, `YSQLPASSWORD`, and `YSQLDB`) and YCQL(`YCQLUSER`, `YCQLPASSWORD`, and `YCQLKEYSPACE`). ( Improve cleanup of aborted transactions. Fix dumping an empty batch by updating MaxReplicateOpId. Set default staleness for read from followers (using `maxstalereadtimems`) to 60 seconds. Previously, a follower could return requested data no matter how state the data is. Calculate the placement UUID from Raft upon tserver registration. Enable ignoring deleted tablets. Remove unreachable nodes from UI (`/tablet-servers` page) after nodes are removed from the cluster. Fix issue parsing multiple comma-separated addresses for `rpcbindaddresses`. Add functionality to delete old backups after a specified time period. In the Create Backup dialog, added Number of Days to Retain Backup* field. Combine the Platform and community Grafana dashboards. Grafana dashboard shows the node status and other panels correctly. Sum table sizes across all nodes of a universe. Fixes releasing OnPrem nodes should not delete them from the universe metadata. Fixes releasing a node should only attempt to shut down processes on that node. Nodes can be re-added using Node > Actions > Add* flow. Add additional property to MetricsPanel to handle width of Replication graph and increase height. Aggregates replication metrics values from all tservers into an average and max value graph across all tservers. Update yb-client JAR version to `0.8.1`. Stop and restart relevant services during Yugabyte Platform backup. Backups stop and restart services. Restores stop and restart Yugabyte Platform and Prometheus, if necessary. Authenticate API tokens even when using OAuth. This allows `curl` requests. Fix Metrics tab and columns misalignment on table page. Rename In Use column to Universe Name* and show `NOT USED` if the node is not in use. Do not generate node certificates for custom certificates. Make instance name field optional for on-premises provider. Fix button for Metrics tab to reset active and focus state when key is unpressed. Add Docker- and VM-aware options to the backup script and will include Prometheus snapshots. Released: October 26, 2020 (2.3.3.0-b106). <ul class="nav yb-pills"> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.3.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.3.3.0-linux.tar.gz"> <i class="fa-brands fa-linux"></i><span>Linux</span> </a> </li> </ul> ```sh docker pull yugabytedb/yugabyte:2.3.3.0-b106 ``` Load data from a large file to a table using the improved `COPY <table> FROM <file>` statement. For details, see . Improved memory management should prevent out-of-memory (OOM) issues. Specify smaller transaction sizes using the `COPY OPTION` `ROWSPERTRANSACTION`. For an example, see . Introducing beta support for Azure IaaS orchestration in Yugabyte Platform cloud provider configuration. (, ) Yugabyte Platform operations now allow promoting a Yugabyte TServer only node to run YB-Master and YB-TServer process. () ) Enhancements to on-premises deployment workflows: Do not fail universe creation if cronjobs can't be created for on-premises. () Remove pre-provision script requirement for airgapped

() "Sudo passwordless" in on-premises cloud provider configuration toggle is renamed. Allow `yugabyte` user to belong to other user groups in Linux. () Added a new "Advanced" section in on-prem cloud provider configuration which includes: Use hostnames Desired home directory Node exporter settings Improvements to installation of Prometheus Node Exporter utility workflow. () The node exporter option is now available in the cloud configuration under advanced settings. Supports bringing your own node exporter user. Make YEDIS API optional for new Universes and no change in behavior of existing universes. () UI/UX improvements for YB Platform: Add visual feedback when backup or restore is initiated from modal. () Minor fixes to primary cluster widget text issue. () Show pre-provision script in UI for non-passwordless sudo on-premises provider. () Update backup target and backup pages. () For YugabyteDB universes with replication factor (RF) > 3, change the default `min_num` replicas for even distribution of AZs across all regions. () Added functionality to create IPv6-enabled universe in Kubernetes. (, ) Support for SQL/JSON Path Language (`jsonbpathquery`). () Remove range-loop-analysis and fallthrough errors in our code. () Incorrect index update if used expression result is still unchanged. () Various improvements to `RaftConsensus` tests. (, ) As part of the tablet splitting feature: Implemented cleanup of the tablet for which all replicas have been split for. () Compaction improvements () Improve performance for sequences by using higher cache value by default. Controlled by a YB-TServer configuration flag `--ysqlsequencecache_minval`. () Added compatibility mode in the `yb_backup.py` script for YugabyteDB version earlier than v2.1.4. () Stability improvements to core database - make exponential backoff on lagging Raft followers send NOOP. () Added use of separate metrics objects for `RegularDB` and `IntentsDB`. () Improvements to 2DC (xCluster replication) by adding TLS support for cleaning up `cdc_state` table. () Fix for Universe disk usage shows up empty on the universe page. () Fix on on-premises backup failures due to file owned by the root user. () Fix for a bug where user operation to perform a change to nodes count by AZ was doing a full move. () Fixes for Yugabyte Platform data backup script for Replicated-based installations Fixes to Client Certificate start time to use UTC during download. () Fixes for migration if no access keys exist yet. () Fix to resolve issues caused by starting a YB-TServer node when another YB-Master node is down in the universe. () Use the correct disk mount point while calculating disk usage of logs. () Fixes to delete backups for TLS-enabled universes. () 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 columns. () Improve fault tolerance of DDLs and reduce version mismatch errors in YSQL. (, ) Fixes to incorrect column-ids in the restored table if the original table was altered. () Fixes timeout bug in Yugabyte Platform when there are read replicas. This fix will ignore read replica YB-TServers when running `AreLeadersOnPreferredOnly`. () Fixes to restore of YSQL Backups after dropping and recreating a database. () Fixes to a bug with the duplicate row detection that allows a unique index to get created when the table is not unique on the index columns. This is fixed by setting the read time for backfill write requests to be the safe time chosen for backfill read requests rather than the hard-coded time `50`. () Azure IaaS orchestration: No pricing information provided. () No support for regions with zero availability zones (AZs). ()