June 6, 2019
A denial-of-service (DoS) vulnerability is present in CockroachDB v19.2.0 - v19.2.11 due to a bug in protobuf. This is resolved in CockroachDB v19.2.12 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.
In addition to various enhancements and bug fixes, with this first alpha release of the v19.2.0 series, we would like to highlight the following changes:
Parallel Commit: The parallel commit feature is a major optimization that halves the latency of distributed transactions, including those caused by secondary indexes. Previously, transactions would involve two synchronous rounds of replication consensus - one for write operations performed in parallel via transaction pipelining and then another for the commit. Now, replication for the commit runs in parallel with other write operations, avoiding an extra synchronous round trip and dramatically increasing overall transaction performance. This is achieved via a new "implicit" commit status that is distributed yet atomic and durable and that resolves to an "explicit" centralized status quickly for the efficiency of conflicting transactions. Detailed documentation is coming soon; in the meantime, see the Parallel Commit RFC.
Business Source License (BSL): This release uses the Business Source License instead of the Apache 2.0 License. For more information on why we changed our licensing approach and some practical questions and implications, see our blog post and Licensing FAQs. The full details of the license can be found on Github.
Get future release notes emailed to you:
Downloads
Docker image
docker pull cockroachdb/cockroach-unstable:v19.2.0-alpha.20190606
Backward-incompatible changes
- Removed the deprecated
changefeed.min_high_water
metric; usechangefeed.max_behind_nanos
instead. #36915
General changes
- Added the
kv.range_merge.manual_split_ttl
cluster setting. #37728 - CockroachDB now uses the Business Source License instead of the Apache License. See our blog post for details. #38007
Enterprise edition changes
- You can now alter the zone configuration for a secondary index partition using the syntax
ALTER PARTITION OF INDEX <tablename>@<indexname> CONFIGURE ZONE ...
. #36868
SQL language changes
- Zigzag joins will now be planned by the optimizer in certain cases. They were previously available via the
experimental_enable_zigzag_join
session variable and can still be disabled by setting that value tofalse
. #35911 - The
LATERAL
keyword in aFROM
clause is now supported. #36613 - The
information_schema.columns
table now gives more conformant output forvarbit
,char
,timestamp
, andtime
types. #36598 - Extended the list of advertised OIDs in
pg_type
to include additional array-related types, such as_int2vector
,_regproc
, etc. #36598 - CockroachDB now displays correct array type
oids
foroidvector
andint2vector
types in thepg_type
table, for better PG compatibility. #36598 - CockroachDB now uses the Postgres-compatible name when auto-generating a column alias for a
CAST
expression. #36598 - Locale names in
COLLATE
clauses now have dash characters mapped to underscore when printed as part of SQL syntax. #36598 - Parallel statement execution has been removed because the performance improvement it provided was absorbed by transactional pipelining, which doesn't require client buy in. The
RETURNING NOTHING
syntax will still be accepted but becomes a no-op. #35959 - Only
SELECT
,INSERT
,UPDATE
,UPSERT
,DELETE
,SHOW
,EXPLAIN
are now supported as data sources using theSELECT ... FROM [ ... ]
syntax. #36977 - The
atttypmod
column of thepg_attribute
catalog table is now supported. #37230 - Dates are now fully Postgres-compatible, including support for sentinel values (
+/- infinity
) and the Postgres date range (4714-11-24 BC
to5874897-12-31
). Existing dates outside of this range will be converted to the+/- infinity
dates. #36938 - Added an overload for
now()
that returns a date. #37284 - Added supported for the empty
default_tablespace
session variable for Postgres compatibility. #37333 - Permitted casting empty arrays to any array type. #37356
- Removed the legacy batch-by-batch index backfiller, as well as the
schemachanger.bulk_index_backfill.enabled
cluster setting that could be disabled to activate it. #37213 - Removed the
transform
option fromIMPORT
. #37338 - Added a new
locality_value
built-in function that returns the value of the locality key given as its argument. #37369 - CockroachDB now returns
NaN
instead of an error during invalid decimal operations. #36964 - Foreign keys that are added to an existing table using
ALTER TABLE
will now be validated for existing rows, with improved performance compared to runningADD CONSTRAINT
followed byVALIDATE CONSTRAINT
previously. #37433 SHOW COLUMNS ... WITH COMMENTS
now supports printing out column comments using the optional phraseWITH COMMENT
, e.gSHOW COLUMNS FROM mytable WITH COMMENT
. #37174SHOW DATABASES WITH COMMENTS
now supports printing out database comments using the optional phraseWITH COMMENT
, e.gSHOW DATABASES WITH COMMENT
. #37175CREATE TABLE
statements now always trigger automatic statistics collection on a newly created table. #37611- Added the
split_time
column tocrdb_internal.ranges
andcrdb_internal.ranges_no_leases
. #37610 - Corrected interval math when multiplying or dividing by floats or ints. #37744
- Added the
ALTER TABLE/INDEX ... UNSPLIT AT ...
statement. #37603 - Added support for the time value
24:00
and variants. #37898 - CockroachDB now reports a dedicated SQL error code in the particular situation where a multi-statement transaction is committed but one of the schema change (DDL) operations failed. As in previous versions, CockroachDB leaves the transaction partly committed and partly aborted in that case; the new error code aims to facilitate the recognition of this case in client code. #37791
- Added support for a
SHOW INDEXES FROM DATABASE
command. #37942
Command-line changes
- Included collected goroutine dumps in
cockroach debug zip
. #36813 - Added the
movr
workload to thecockroach workload
command. This workload simulates a fictional ride sharing company and is based on our open-source MovR GitHub repository. #37709
Admin UI changes
- CockroachDB now includes only successfully executed statements in the statement counters. #37264
Bug fixes
- Fixed a roundtrip typecasting issue where an
INET
casted to aSTRING
and back to anINET
would fail. #37938 - Fixed a panic when
json_build_object
is called withBIT
/VARBIT
values. #37057 - Fixed a panic when planning zigzag joins against unique indexes. #36139
RESTORE
now balances the work of ingesting data more evenly between nodes. #36665IMPORT
now balances the work of ingesting data more evenly between nodes. #36665- CockroachDB now computes the result of shifting bit arrays to the right properly and avoids generating invalid bit arrays. #36715
SHOW ZONE CONFIGURATION
no longer emits invalidALTER
syntax in its output when displaying the zone configuration for a table or index partition that is inheriting from the database or the default configuration. #36868SHOW ZONE CONFIGURATION FOR TABLE t PARTITION p
no longer ignores the clausePARTITION p
and now properly displays the zone configuration for that partition instead. #36868- When a node is restarted with another node's address, CockroachDB now performs fewer attempts to communicate with the wrong node. #34197
- It is now possible to write to columns of type
name[]
. #37170 - Permitted planning of window functions within mutation statements (and others that cannot be distributed). #37171
- Avoided a source of internal connectivity problems that would resolve after restarting the affected node. #37204
- Permitted arrays and other sequences to be type-checkable in certain contexts when all of their elements are null. #36673
- CockroachDB now correctly escapes non-finite JSON number values when marshaling to text. #37331
- The
cockroach init
command will now always properly report when a cluster is already initialized, even after the node that it's connecting to is restarted. #37399 - Automated table statistics no longer encounter "batch timestamp must be after replica GC threshold" errors on configurations with low TTL. #36500
- Fixed type inference of columns in subqueries for some expressions of the form
scalar IN (subquery)
. #37578 - Fixed a crash in apply join. #37597
- The
age()
function is now correctly marked as impure, causing it to be unavailable in certain contexts. #37609 - Fixed a panic when constructing the error message for an invalid partitioning. #37689
- Fixed incorrect multiplication of
float
andinterval
types. #37582 - Fixed a case in which
cockroach quit
would return success even though the server process was still running in a severely degraded state. #37668 - Fixed a potential source of (faux) replica inconsistencies that can be reported while running a mixed v19.1 / v2.1 cluster. This error (in that situation only) is benign and can be resolved by upgrading to the latest v19.1 patch release. Every time this error occurs a "checkpoint" is created which will occupy a large amount of disk space and which needs to be removed manually (see
<store directory>/auxiliary/checkpoints
). #37668 - Prevented unlimited memory usage during SQL range deletions #36728
- Dividing floats by zero now returns an error instead of
-Inf
. #37774 - Fixed incorrect results or "incorrectly ordered stream" error in some cases of queries with aggregations. #37713
- A null right operand now causes the sub-operator expression to return null. #37775
- Certain binary encodings of numeric/decimal values no longer result in values that are an order of magnitude off. #35115
- Fixed
GROUP BY
for empty arrays. #37901 - Fixed a race condition that could cause a panic during query planning. #37972
- The
cockroach
command line utilities that internally use a RPC connection (e.g.,cockroach quit
,cockroach init
, etc.) once again properly support passing an IPv6 address literal via the--host
argument. #37977
Performance improvements
- Improved memory efficiency of bulk ingestion and index backfills buffering. #36743
- Fixed a significant performance regression when building CockroachDB with go1.12. #37967
Security improvement
- Stack memory used by CockroachDB is now marked as non-executable, improving security and compatibility with SELinux. #37939
Contributors
This release includes 728 merged PRs by 50 authors. We would like to thank the following contributors from the CockroachDB community:
- George Papadrosou
- Jaewan Park
- Simo Kinnunen (first-time contributor)
- Txiaozhe
- Vijay Karthik
- joowon (first-time contributor)
- lanzao