What's New in v20.1.4

This version of CockroachDB is no longer supported. For more details, see the Release Support Policy.

August 3, 2020

This page lists additions and changes in v20.1.4 since v20.1.3.

  • For a comprehensive summary of features in v20.1, see the v20.1 GA release notes.
  • To upgrade to the latest production release of CockroachDB, see this article.

A denial-of-service (DoS) vulnerability is present in CockroachDB v20.1.0 - v20.1.10 due to a bug in protobuf. This is resolved in CockroachDB v20.1.11 and later releases. When upgrading is not an option, users should audit their network configuration to verify that the CockroachDB HTTP port is not available to untrusted clients. We recommend blocking the HTTP port behind a firewall.

For more information, including other affected versions, see Technical Advisory 58932.


CockroachDB introduced a critical bug in the v20.1.4 release that affects UPSERT and INSERT … ON CONFLICT DO UPDATE SET x = excluded.x statements involving more than 10,000 rows. All deployments running CockroachDB v20.1.4 and v20.1.5 are affected. A fix is included in v20.1.6.

For more information, see Technical Advisory 54418.


Cockroach Labs has discovered a bug relating to incremental backups, for CockroachDB v20.1.0 - v20.1.13. If a backup coincides with an in-progress index creation (backfill), RESTORE, or IMPORT, it is possible that a subsequent incremental backup will not include all of the indexed, restored or imported data.

Users are advised to upgrade to v20.1.15 or later, which includes resolutions.

For more information, including other affected versions, see Technical Advisory 63162.

Get future release notes emailed to you:

General changes

  • Links in error messages that point to unimplemented issues now use the Cockroach Labs redirect/short-link server. #50310
  • Schema changes are now logged in greater detail. #50373

Enterprise edition changes

  • RESTORE now has a new option skip_missing_sequence_owners that must be supplied when restoring only the table/sequence that was previously a sequence owner/owned by a table. Additionally, a bug causing ownership relationships to not be remapped after a restore has been fixed. #51629

SQL language changes

  • CockroachDB no longer writes to slow query log unless explicitly enabled. #50941

Command-line changes

  • The new statement-diag cockroach command can now be used to manage statement diagnostics. #51229
  • The statement-diag command now shows all times in UTC. #51457

Bug fixes

  • Fixed a bug affecting some DROP DATABASE schema changes where multiple GC jobs are created, causing the GC job for the database to fail. GC jobs will no longer fail if a table descriptor that has already been deleted by a different GC job is not found. #50556
  • Previously, if a full cluster restore failed while restoring the system table data, it would not clean up after itself properly and would leave some temporary tables public and not dropped. This bug has been fixed. #50209
  • Fixed a bug causing a cluster restore to fail when the largest descriptor in the backup was a database. This was typically seen when the last action in backing up a cluster was a database creation. #50817
  • Cluster backup would previously appear as BACKUP TABLE TO rather than BACKUP TO in the jobs table. This bug has been fixed. #50818
  • Fixed a bug causing a badly timed power outage or a system crash to report an error upon process restart. #50847
  • Some pg_catalog queries that previously returned an error like "crdb_internal_vtable_pk column not allowed" now work again. #50843
  • Fixed "column not in input" internal error in some corner cases. #50859
  • Fixed a rare bug causing a multi-range SELECT FOR UPDATE statement containing an IN clause to fail to observe a consistent snapshot and violate serializability. #50816
  • Fixed regression where granting privileges and dropping objects would be slow when performed on a large number of objects due to unnecessary queries for looking up jobs in the system.jobs table. Previously, CockroachDB executed a quadratic number of queries based on the number of objects. CockroachDB now executes a linear number of queries based on the number of objects, which significantly improves the speed of dropping multiple objects or granting multiple privileges to a user. #50923
  • Previously, CockroachDB could crash when internal memory accounting hit a discrepancy. Now it will report an error instead. #51014
  • Improved support for large statement diagnostic bundles. #51031
  • CockroachDB now prevents spurious "SimpleQuery not allowed while in extended protocol mode" errors. #51249
  • Renaming a temporary table no longer converts it to a persistent table. The table continues to remain temporary after a rename. This patch also prevents users from converting a temporary table to a persistent table by renaming the table with a fully-qualified name and a schema referring to public. #51309
  • Fixed incorrect results in some cases involving joins on interleaved tables with limits. #51432
  • cockroach dump no longer errors out when dumping temporary tables, views, or sequences. It either ignores them or throws an informative error if the temporary object is explicitly requested to be dumped via the CLI. #51457
  • Fix a bug causing cockroach dump to improperly escape quotes within table comments. #51510
  • Fix a bug causing cockroach dump to not emit a correct statement for comments on indexes. #51510
  • There is a known issue where BACKUPs may get stuck when nearly completed. When this happens, we prevent garbage collection of old data from the targets that are being backed up, until the job is cancelled. This change stops the garbage build-up while the BACKUP is stuck. #51519
  • Previously, CockroachDB could hit an internal error when executing regexp_replace builtin. This bug has been fixed. #51347
  • Previously, CockroachDB could hit a "command is too large" error when performing UPSERT operations with many values. This bug has been fixed. #51626
  • Fixed a bug that prevented a table from being dropped if a user created a sequence owned by the table's column and then dropped the sequence. #51629
  • DROP DATABASE CASCADE now works as expected even when the database has a sequence with an owner in it. #51629
  • Fixed a bug causing descriptors to be in an invalid state due to ownership issues. #51629
  • Previously, orphaned system.namespace/system.descriptor entries were left if a DROP DATABASE CASCADE was issued, and the database contained dependency relations. For example, if the database included a view that depended on a table in the database, dropping the database would result in an orphaned entry for the view. This bug is now fixed, and cleanup happens as expected. #51895
  • CockroachDB now returns proper error messages for index creation statements that use a column that does not exist. #51892
  • Fixed a bug preventing NULL index members from being added to hash-sharded indexes. #51906
  • In earlier testing releases, columns that were members of hash-sharded indexes could not be renamed. Indexes created in prior releases will need to be dropped and recreated to resolve this limitation. #51906
  • It is no longer possible for rapid range lease movement to trigger a rare assertion failure under contended workloads. The assertion contained the text: "discovered lock by different transaction than existing lock". #51869
  • Fixed bug in the Pebble storage engine that in rare circumstances could construct corrupted store, resulting in a node crash. #51915
  • Fixed a bug causing traces collected through the sql.trace.txn.enable_threshold setting to be incomplete sometimes. #51845
  • Increased the robustness of restore against descriptors which may be in an unexpected state. #51925
  • Previously, CockroachDB could encounter benign internal "context canceled" errors when queries were executed by the vectorized engine. #51933
  • Fixed a bug causing BACKUP jobs to block when finished backing up data. #52003
  • Fixed a bug causing RESTORE jobs to sometimes block at the end of the job when sending its results back if the connection that started the job disconnected. #52003
  • Fixed a bug causing CockroachDB to crash on some queries with merge joins. #52046
  • An unknown condition previously caused CockroachDB to crash with the message "committed txn with writeTooOld err". This condition no longer crashes a node. Instead, an error message is printed to the logs asking for help in the investigation. #51843

Performance improvements

  • Introduced a new server.consistency_check.max_rate setting, expressed in bytes/seconds, to throttle the rate at which CockroachDB scans through the disk to perform a consistency check. This control is necessary to ensure smooth performance on a cluster with large node sizes, in the 10TB+ range. #50066


This release includes 41 merged PRs by 18 authors.

YesYes NoNo