What's New in v20.1.10

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

December 21, 2020


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

Backward-incompatible changes

  • The file names for heap profile dumps are now memprof.<date-and-time>.<heapsize>, where previously they were named memprof.<heapsize>.<date-and-time>. #55260

SQL language changes

  • Fixed a bug where temporary tables may be included in BACKUP commands. #56475

Command-line changes

  • CockroachDB now better attempts to retain heap profile dumps after a crash due to an out-of-memory error. #55260
  • CockroachDB now better attempts to retain memory statistics corresponding to increases in total memory usage, not just heap allocations. #55260

Bug fixes

  • Fixed a panic that could occur when running SHOW STATISTICS USING JSON for a table in which at least one of the columns contained all null values. #56515
  • The file names for generated goroutine, CPU and memory profiles were sometimes incorrect, resulting in repeated warnings like strconv.ParseUint: parsing "txt": invalid syntax in log files. This has been corrected. #55260
  • Fixed a bug when the Pebble storage engine is used with encryption-at-rest that could result in data corruption in some fairly rare cases after a table drop, table truncate, or replica deletion. #56680
  • Previously, dumps of tables with a BIT type column would result in an error. This column type is now supported. #56452
  • In 20.1.8, we attempted to fix age's lack of normalization of H:M:S into the years, months, and days field. However, this was also broken for values greater than 1 month, as well as breaking a::timestamp(tz) - b::timestamp(tz) operators. This has now been resolved. #56769
  • CockroachDB previously would crash when executing a query with an AS OF SYSTEM TIME clause that used a placeholder (note that it wasn't a prepared statement, it was an attempt to use an unspecified placeholder value on a non-prepared statement). This is now fixed. #56781
  • CockroachDB previously could encounter an internal error when DATE, TIMESTAMP, or TIMESTAMPTZ values that used year 1 BC were sent between nodes for execution. Additionally, previously it was not possible to specify DATE, TIMESTAMP, or TIMESTAMPTZ values with year 1 BC without using AD/BC notation. This is now fixed. #56743
  • Fixed internal error when collecting a statement diagnostic bundle in some cases where the query hits an error. #56785
  • Some boolean session variables would only accept string ("true" or "false") values. Now they also accept unquoted true or false values. #56814
  • Fixed a bug which would prevent the dropping of hash sharded indexes if they were added prior to other columns. #55823
  • Fixed a race condition in the tpcc workload with the --scatter flag where tables could be scattered multiple times or not at all. #56979
  • Previously if a cluster backup that was taken during a schema change, a cluster restore of that backup would create duplicates of the ongoing schema changes. #56450
  • Fixed a case where attempting to start a second BACKUP to the same location while the first was running using passphrase-based encryption could overwrite the metadata required to decrypt it and thus render it unreadable. #57025
  • Fixed an internal error when using aggregates and window functions in an ORDER BY for a UNION or VALUES clause. #57522
  • The CREATE TEMP TABLE AS statement previously created a non-temporary table. Now it makes a temporary one. #57550
  • Fixed a bug where schema change jobs to add foreign keys to existing tables, via ALTER TABLE, could sometimes not be successfully reverted (either due to being canceled or having failed). #57810
  • Fixed a bug where concurrent addition of a foreign key constraint and drop of a unique index could cause the foreign key constraint to be added with no unique constraint on the referenced columns. #57810
  • Fixed a bug which can occur when canceling schema changes when there are multiple queued schema changes that could result in future schema changes being stuck. #55058
  • Fixed a bug which can lead to canceled schema change jobs ending in the failed rather than canceled state. #55058

Performance improvements

  • Interactions between Raft heartbeats and the Raft goroutine pool scheduler are now more efficient and avoid excessive mutex contention. This was observed to prevent instability on large machines (32+ vCPU) in clusters with many ranges (50k+ per node). #57009

Backward-compatible change

  • The reserved, non-documented cluster settings server.heap_profile.xxx have been renamed to server.mem_profile.xxx. They now control collection of multiple sorts of memory profiles besides just Go heap allocations. #55260


This release includes 34 merged PRs by 16 authors.

YesYes NoNo