What's New in v20.1.3

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

June 29, 2020

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

  • 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.


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:


Docker image

$ docker pull cockroachdb/cockroach:v20.1.3

Security updates

  • HTTP endpoints beginning with /debug/ now require a valid admin login session. #50487

Enterprise edition changes

  • Full cluster restore is now more resilient to transient transaction retry errors during restore. #50004
  • The default flush interval for changefeeds that do not specify a RESOLVED option is now 5s instead of 200ms to more gracefully handle higher-latency sinks. #50251

SQL language changes

  • Previously, using infinity evaluated to a negative, i.e., "-292277022365-05-08T08:17:07Z". This has been fixed to be the maximum supported timestamp in PostgreSQL that is not infinity. Likewise, -infinity is the smallest supported value. Note this does currently does not behave exactly like infinity in PostgreSQL (this is a work in progress and may be resolved later). #50365

Bug fixes

  • Previously, extract(epoch from timestamptz) from a session time zone not in UTC would return a value which was incorrectly offset by the session time zone. This is now fixed. #50075
  • Previously, the parallel importer could get stuck due to a race between emitted import batches and checking for context cancellation (either due to an unforeseen error, or due to explicit context cancallation). This is now fixed. #50089
  • Previously, using separate groups for producer and consumer could lead to a situation where consumer would exit (due to an error, or explicit context cancellation) without the producer realizing, leading to a deadlock. Producer and consumer are now correctly linked during data import. #50089
  • Casting to width-limited strings now works correctly for strings containing Unicode characters. #50159
  • Fixed some cases in which casting a string to a width-limited string array was not truncating the string. #50168
  • Fixed a bug in which restarting CockroachDB with the Pebble storage engine after a crash during write-ahead logging could, in some rare cases, return an "unexpected EOF" error. #50282
  • Previously, the Admin UI Statements page was incorrectly displaying information about whether or not a statement was distributed (it was always Yes). This is now fixed. #50347
  • Fixed a RocksDB bug that could result in inconsistencies in rare circumstances. #50397
  • Fixed a bug that broke the data distribution Advanced Debug page in the Admin UI on clusters that had upgraded from 19.2 to 20.1. #49987
  • Previously, when a changefeed would fail to set up its flows due to a node draining, the changefeed would be marked as failed. These errors are now retriable. #50088

Performance improvements

  • CockroachDB now optimizes reading of files when doing backups and storage-level compactions of files. This should deliver a performance improvement for some read-heavy operations on an IOPS-constrained device. #50105
  • Limited SELECT statements now do a better job avoiding unnecessary contention with UPDATE and SELECT FOR UPDATE statements. #50119
  • Improved the optimizer's estimation of the selectivity of some filters involving a disjunction (OR) of predicates over multiple columns. This results in more accurate cardinality estimation and enables the optimizer to choose better query plans in some cases. #50470

Build changes

  • Release Docker images are now built on Debian 9.12. #50482

Doc updates

  • Updated guidance on node decommissioning. #7304
  • Added node density guidance to the Production Checklist. #7514
  • Renamed "whitelist/blacklist" terminology to "allowlist/blocklist". #7535
  • Updated the Releases navigation in the sidebar to expose the latest Production and Testing releases. #7550
  • Fixed scrollbar visibility on Chrome. #7487


This release includes 22 merged PRs by 15 authors.

YesYes NoNo