v2.3.0 release notes
Released: September 8, 2020 (2.3.0.0-b176).
New to YugabyteDB? Follow Quick start to get started and running in less than five minutes.
Looking for earlier releases? Release notes for earlier releases are available in Earlier releases.
Downloads
Binaries
Docker
docker pull yugabytedb/yugabyte:2.3.0.0-b176
Features and changes
YSQL
- Fix OOM when running large
COPY TOstatements by creating new memory context for the loop over retrieved rows and resetting it after processing each row. #5205 - Support transactional batch size for
COPY FROMcommand with OOM fix. Batch sizes can be passed in withROWS_PER_TRANSACTIONin theCOPY OPTIONsyntax. For an example, see Import a large table using smaller transactions #2855 #5453 - For index backfill flags, use better default values. Set
index_backfill_rpc_timeout_msdefault from60000to30000and changebackfill_index_timeout_grace_margin_msdefault from50to500. #5494 - Remove spurious error message "0A000: Alter table is not yet supported" from
CREATE OR REPLACE VIEW. #5071 - Prevent consistency violations when a partitioned table has foreign key constraints due to erroneous classification as a single-row transaction. #5387
- Fix restore from a distributed backup fails for tables using
SPLIT INTOwithout a primary key. #4993 - Fix wrong result by avoiding pushdown of
UPDATEstatement with theRETURNINGclause. #5366 - Improve error message when
UPDATEchanges partition so its clear what went wrong, fixedyb_pg_foreign_keypg_regresstest for semantic merge conflict when updating primary keys and row-level partitioning. #659 #5179 #5310 - Allow
UPDATEstatement to change primary key columns. #659 - Support row-level partitioning. #5179
- Block usage of
TABLEGROUPwith theSPLITclause. ForCREATE TABLE, usage is blocked in the grammar. ForCREATE INDEX, ifNO TABLEGROUPwas provided, then presplitting for the index is allowed; otherwise, an error is issued. #5352 - Buffered operations may share single RPC with read operation. Reducing the number of RPC calls speeds up
CREATE TABLEstatement. For example, the total number of RPC calls is dropped from 66 to 58 for a simple table likeCREATE TABLE t(k INT PRIMARY KEY). #5177 - Add new
ysqlshdescribe metacommands for tablegroups:\dgr[+] [grpname]to describe tablegroups,\dgrt[+] [grpname]lists all tables/indexes within the specified tablegroup (or within all tablegroups ifgrpnameis not specified), and\d <table_name>is modified to include tablegroup information in the footer, if any. #5088 - Add
ALTER TABLEGROUPstatements to supportALTER TABLEGROUP tablegroup_name RENAME TO ...andALTER TABLEGROUP tablegroup_name OWNER TO .... Also changespg_tablegroupentry corresponding totablegroup_nameto properly reflect newgrpnameandgrpowner(if the user has proper permissions or ownership to issue theALTER TABLEGROUPstatement. #5249 - Add support for indexes to opt out of tablegroups (
NO TABLEGROUPS) or select their own tablegroup (TABLEGROUP group_name). #5293 - For
ysql_dump, enableserializable-deferrablemode by default. Add new--no-serializable-deferrableflag to disable the default mode. #5128 - Support
ALTER COLUMN typefor variants that don't require on-disk changes. Specifically only allowingALTER COLUMN typeforvarch(n)andvarbit(n). For example, changing column type fromvarchar(50)tovarchar(255). #4424 - Enable
USINGclause inDELETEstatement andFROMclause inUPDATEstatement. #738 #5262 - Support GRANT/REVOKE/ALTER DEFAULT PRIVILEGES for tablegroups. #5087 #5160
- Implement tablegroup query layer changes. #4525
- Replace "Foreign Scan" with "Seq Scan" for
EXPLAINstatement. #2076 - Fix
initdbwhen index backfill is enabled. #5027 - Properly handle empty delete with backfill by sending appropriate messages to the client, including setting it
skippedandrows_affected_countto0. #5015 DROP INDEXstatement invalidates table cache entry for the index table, but should invalidate the table cache entry for the indexed table. #4974yb-admin create_database_snapshotcommand should not requireysql.prefix for database name. #4991- For non-prepared statements, optimize
pg_statisticsystem table lookups and update debugging utilities. #5051 - Correctly show beta feature warnings by default. #5322
YCQL
- For
WHEREclause in theCREATE INDEXstatement, return aNot supportederror. #5363 - Fix TSAN issue in partition-aware policy for C++ driver 2.9.0-yb-8 (yugabyte/cassandra-cpp-driver). #1837
- Support YCQL backup for indexes based on JSON-attribute. #5198
- Correctly set
release_versionforsystem.peersqueries. #5407 - Reject
TRUNCATEoperations whenycql_require_drop_privs_for_truncateflag is enabled. When enabled,DROP TABLEpermission is required to truncate a table. Default isfalse. #5443 - Fix missing return statement in error case of the
SetPagingStatemethod instatement_params.cc. #5441 - Enable backfilling of transactional tables by default. #4708
- Fix
ycqlshshould return a failure when known that the create (unique) index has failed. #5161
Core database
- Fix core dump related to DNS resolution from cache for Kubernetes universes. #5561
- Fix yb-master fails to restart after errors on first run. #5276
- Show better error message when using
yugabytedand yb-master fails to start. #5304 - Disable ignoring deleted tablets on load by default. #5122
- [CDC] Improve CDC idle throttling logic to reduce high CPU utilization in clusters without workloads running. #5472
- For the
server_broadcast_addressesflag, provide default port if not specified. #2540 - [CDC] Fix CDC TSAN destructor warning. #4258
- Add an API endpoint to download root certificate file. #4957
- Do not load deleted tables and tablets into memory on startup. #5122
- Set the follower lag for leaders to
0by resetting timestamp to the maximum value when a peer becomes a leader and when the peer loses leadership. #5502 - Flow keyspace information from yb-master to yb-tserver. #3020
- Implement meta cache lookups throttling to reduce unnecessary thrashing. #5434
- Fix
rpcz/statementslinks inyb-tserverWeb UI whenpgsql_proxy_bind_addressandcql_proxy_bind_addressare0.0.0.0. #4963 DumpReplayStateToStringsshould handle too many WAL entries scenario. Also, log lines only display fields critical for debugging and do not show customer-sensitive information. #5345- Find the difference between the replica map and consensus state more quickly using a map lookup. #5435
- 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/NOT_STARTEDstate with its true consensus information instead of marking it as aNON_PARTICIPANT. #4691 - Add YB-Master UI changes to support tablegroups and colocation. #5086
- 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
pg_tablegroupas well as thereltablegroupcolumn ofpg_classfor 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::staleis not getting reset back tofalse. #5245 - Do not crash yb-tserver when the
op_idof the last WAL file is less than the committedop_id. #1560 - Add
CREATE TABLEGROUPandDROP TABLEGROUPflow. #4525 - Add
yb-admin list_snapshotsSHOW_DELETEDflag to show deleted snapshots that are still retained in memory. #5332 - Move read path functions to a separate file. #4944
- Wait for
yb_client_admin_operation_timeout_secfor table creation inyb-admin import_snapshottask. #5295 - Create a cache for system-wide queries. #5043
- Annotate access to
enable_collect_cdc_metricsflag and prevent TSAN warnings. #5303 - Raise yb-master and yb-tserver process ulimits to hard limits when appropriate. #4943
- Add a pre-flush step, triggered by yb-master, to snapshot operations to minimize the amount of data being flushed in sync. #4718
- Use Strand to remove intents and avoid wasting threads. #5265
- Add metric severity level [PORT] and sever-side level-based filtering for metrics and prometheus-metrics. #4686
- Decrease logging frequency for no local transaction status tablet from on every warning to once per second. #5035
- Fix MonoTime subtraction implementation to return
resultof the operation instead oflhs. #5020 - When dropping tables, delete snapshot directories for deleted tables. #4756
- Set up a global leader balance threshold while allowing progress across tables. Add
load_balancer_max_concurrent_moves_per_tableandload_balancer_max_concurrent_movesto improve performance of leader moves. And properly update state for leader stepdowns to prevent check failures. #5021 #5181 - Reduce default value of
load_balancer_max_concurrent_movesfrom10to2. #5461 - Improve bootstrap logic for resolving transaction statuses. #5215
- Avoid duplicate DNS lookup requests while handling
system.partitionstable requests. #5225 - Handle write operation failures during tablet bootstrap. #5224
- Ensure
strict_capacity_limitis set when SetCapacity is called to prevent ASAN failures. #5222 - Drop index upon failed backfill. For YCQL, generate error to CREATE INDEX call if index backfill fails before the call is completed. #5144 #5161
- Allow overflow of single-touch cache if multi-touch cache is not consuming space. #4495
- Don't flush RocksDB before restoration. #5184
- Fix
yugabytedfails to start UI due to class binding failure. #5069 - On
yb-tserverrestart, prioritize bootstrapping transaction status tablets. #4926 - For
yb-admincommands, clarify syntax for namespace. #5482 - Improve for-loops to avoid unnecessary copies and remove range-loop-analysis warnings. #5458
- 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. #1923
- Fix
SEGVin Master UI when registering YB-TServer from Raft. #5501 - Heartbeats process only new consensus information unless
master_ignore_stale_cstateflag is disabled. #5301 - Remove KernelStackWatchdog and use LongOperationTracker to waste less resources per thread. #5226
- Change the default value of
metric_node_nameflag fromDEFAULT_NODE_NAMEtohostname:port. #4859
Yugabyte Platform
- For S3 backups, install
s3cmdrequired for encrypted backup and restore flows. #5593 - When creating on-premises provider, remove
YB_HOME_DIRif not set. #5592 - Update to use templatized values for setting TLS flags in Helm Charts. #5424
- For YCQL client connectivity, allow downloading root certificate and key from Certificates menu. #4957
- Bypass CSRF checks when registering and logging in due to bug with CSRF token not being set. #5533
- Set node certificate field to subject of CA instead of issuer of CA. #5377
- Add option in universe creation form to control whether node_exporter is installed on provisioned nodes (including creating prometheus user + group). #5421
- Add Microsoft Azure provider UI and related changes to Create Universe form. #5378
- Create default network resources for multi-region deployments in Microsoft Azure if they don't exist and store for use during universe creation. #5388
- For Microsoft Azure, use preexisting network resources. #5389
- Set Assign Public IP correctly using the UI. #5463
- Fix
AreLeadersOnPreferredOnlytimes out when setting preferred zones in Edit Universe. #5406 - Fix
yb_backup.pyscript to removesudorequirement and correctly change user. #5440 - Add CSRF tokens to forms. #5419
- Allow configuration of OIDC scope (for SSO use) as well as email attribute field. #5465
- If Username and Password are left empty in the Custom SMTP Configuration, remove
smtpUsernameandsmtpPasswordfrom the payload. #5439 - Add the UTC label to indicate
cronexpression must be relative to UTC. Also, add help text indicating when next scheduled job will run. #4709 - Move the source of truth for communication ports to the universe level. #5353
- Use appropriate range for time period (over entire step window rather than last minute) when querying Prometheus for metrics. #4203
- Support backing up encrypted at rest universes. #3118
- Only display "Rolling Upgrade Delay" if upgrade type is "Rolling". #5362
- Add guarding against never-ending loop when running the
yb_backup.pyscript and yb-server doesn't have any data directories. #5358 - Fix metric panel displaying incorrect time interval when reloading after changing graph filter. #5294
- Fix logging on health check script failure. #5340
- Rename the label for enabling server-side encryption in S3 backups to Encrypt Backup for both backups and scheduled backup modals. #5273
- Add a VM backup script that includes Prometheus backups. #5120
- Add
BackupAdminrole to authorize users to create backup and restore tasks on universes, but not given other administration privileges. #4694 - Modify the
yb_backup.pyscript to add "round-robin" behavior to thread allocations to better spread loads across nodes in parallel during snapshot upload or download. #4987 - Fix the invalid
yb_backup.pyscript behavior if--keyspaceflag is not specified. #5199 - Add subtasks to check number of pods deployed during upgrades. #5174
- Make use of parallelism argument for
yb_backup.pyscript. 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. #5283 - The Remove Node action should be available if the Add Node action fails. #5123
- Add ability for user to specify the S3 backup target host that their bucket is located on. #3684
- Check if on-premise node instance has a universe that is using it and make a link to the Universe Overview page. #4758
- Fix
Cannot read property 'displayName' of undefinederror. #5267 - Use Host Names setting is not displaying correctly in Provider Configuration page. #5252
- Disable glob before running the cleanup of old log files. #5169
- Schedule job for
setUniverseKeyshould handle errors on per-customer basis. #3142 - After Yugabyte Platform (YugaWare) restart, any in-progress tasks should be cancelled and marked as failed. #5045
- Redirect from login back to index if session is already validated. Logout should redirect to login endpoint. #5019
- Fix updating of Universes list after creating new universe. #4784
- 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. #5178
- Add the ability to override communication port default values during universe creation. #5354