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 optionskip_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 thanBACKUP 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 anIN
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
BACKUP
s 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 theBACKUP
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 aDROP 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
Contributors
This release includes 41 merged PRs by 18 authors.