CockroachDB v2.0 is a required Regular Release.
Refer to Major release types before installing or upgrading for release timing and support details.
On this page, you can read about changes and find downloads for all production and testing releases of CockroachDB v2.0
- For key feature enhancements in v2.0 and other upgrade considerations, refer to the notes for v2.0.0. 
- For details about release types, naming, and licensing, refer to the Releases page. 
- Be sure to also review the Release Support Policy. 
- After downloading a supported CockroachDB binary, learn how to install CockroachDB. 
Get future release notes emailed to you:
v2.0.7
Release Date: December 10, 2018
Docker image
$ docker pull cockroachdb/cockroach:v2.0.7
Bug fixes
- Fixed a security vulnerability in which data could be leaked from a cluster, or tampered with in a cluster, in secure mode. #30823
- Fixed a bug where queries could get stuck for seconds or minutes, usually following node restarts. #31350
- CockroachDB no longer crashes due to a SIGTRAPerror soon after startup on macOS Mojave. #31522
- Fixed bug causing transactions to unnecessarily hit a "too large" error. #31827
- Fixed a bug causing transactions to appear partially committed. Occasionally, CockroachDB claimed to have failed to commit a transaction when some (or all) of its writes were actually persisted. #32223
- Fixed a bug where entry application on Raft followers could fall behind entry application on the leader, causing stalls during splits. #32601
- CockroachDB now properly rejects queries that use an invalid function (e.g., an aggregation) in the SETclause of anUPDATEstatement. #32507
Build changes
- CockroachDB can now be built from source on macOS 10.14 (Mojave). #31310
Contributors
This release includes 11 merged PRs by 6 authors.
v2.0.6
Release Date: October 1, 2018
Security bug fix
- Fixed a vulnerability in which TLS certificates were not validated correctly for internal RPC interfaces. This vulnerability could allow an unauthenticated user with network access to read and write to the cluster. #30821
Command-line changes
- The cockroach zonecommand is now compatible with CockroachDB v2.1. However, note thatcockroach zoneis also deprecated in CockroachDB v2.1 in favor ofALTER ... CONFIGURE ZONEandSHOW ZONE CONFIGURATIONstatements to update and view replication zones. #29632
Bug fixes
- The Jobs page now sorts by Creation Time by default instead of by User. #30429
- Fixed out-of-memory errors caused by very large raft logs. #28398 #28526
- Fixed a rare scenario where the value written for one system key was seen when another system key was read, leading to the violation of internal invariants. #28798
- Fixed a memory leak when contended queries time out. #29100
- Fixed a bug causing index creation to fail under rare circumstances. #29203
- Fixed a panic that occurred when not all values were present in a composite foreign key. #30154
- The ON DELETE CASCADEandON UPDATE CASCADEforeign key actions no longer cascade throughNULLs. #30129
- Fixed the occasional improper processing of the WITHoperand withIMPORT/BACKUP/RESTOREand common table expressions. #30199
- Transaction size limit errors are no longer returned for transactions that have already committed. #30309
- Fixed a potential infinite loop when the merge joiner encountered an error or cancellation. #30380
- This release includes the following fixes to the cockroach sqlcommand:- The command now properly prints a warning when a ?character is mistakenly used to receive contextual help in a non-interactive session, instead of crashing. #28325
- The command now works properly even when the TERMenvironment variable is not set. #28614
- The commands are now properly able to customize the prompt with ~/.editrcon Linux. #28614
- The commands once again support copy-pasting special unicode character from other documents. #28614
 
- The command now properly prints a warning when a 
Performance improvements
- Greatly improved the performance of catching up followers that are behind when Raft logs are large. #28526
Contributors
This release includes 26 merged PRs by 12 authors.
v2.0.5
Release Date: August 13, 2018
SQL language changes
Bug fixes
- IMPORTno longer silently converts- rncharacters in CSV files into- n. #28225
- Fixed a bug that could cause the row following a deleted row to be skipped during BACKUP. #28196
- Limited the size of "batch groups" when committing a batch to RocksDB to avoid rare scenarios in which multi-gigabyte batch groups are created, which can cause a server to run out of memory when replaying the RocksDB log at startup. #28009
- Prevented unbounded growth of the Raft log caused by a loss of quorum. #27868
- CockroachDB now properly reports an error when a query attempts to use ORDER BYwithin a function argument list, which is an unsupported feature. #25147
Doc updates
- Added a Performance Tuning tutorial that demonstrates essential techniques for getting fast reads and writes in CockroachDB, starting with a single-region deployment and expanding into multiple regions. #3378
- Expanded the Production Checklist to cover a detailed explanation of network flags and scenarios and updated production deployment tutorials to encourage the use of --advertise-hoston node start. #3352
- Expanded the Kubernetes tutorials to include setting up monitoring and alerting with Prometheus and Alertmanager. #3370
- Updated the OpenSSL certificate tutorial to allow multiple node certificates with the same subject. #3423
Contributors
This release includes 9 merged PRs by 7 authors. We would like to thank the following contributor from the CockroachDB community:
- neeral
v2.0.4
Release Date: July 16, 2018
SQL Language Changes
- CHECKconstraints are now checked when updating a conflicting row in- INSERT ... ON CONFLICT DO UPDATEstatements. #26699
- An error is now returned to the user instead of panicking when trying to add a column with a UNIQUEconstraint when that column's type is not indexable. #26728
Command-Line Changes
- CockroachDB now computes the correct number of replicas on down nodes. Therefore, when decommissioning nodes via the cockroach node decommissioncommand, the--wait=alloption no longer hangs indefinitely when there are down nodes. As a result, the--wait=liveoption is no longer necessary and has been deprecated. #27158
Bug Fixes
- Fixed a typo on Node Map screen of the Admin UI. #27129
- Fixed a rare crash on node decommissioning. #26717
- Joins across two interleaved tables no longer return incorrect results under certain circumstances when the equality columns aren't all part of the interleaved columns. #26832
- Successes of time series maintenance queue operations are no longer counted as errors in the Metrics dashboard of the Admin UI. #26820
- Prevented a situation in which ranges repeatedly fail to perform a split. #26944
- Fixed a crash that could occur when distributed LIMITqueries were run on a cluster with at least one unhealthy node. #26953
- Failed IMPORTs now begin to clean up partially imported data immediately and in a faster manner. #26986
- Alleviated a scenario in which a large number of uncommitted Raft commands could cause memory pressure at startup time. #27024
- The pg-specific syntax SET transaction_isolationnow supports settings other thanSNAPSHOT. This bug did not affect the standard SQLSET TRANSACTION ISOLATION LEVEL. #27047
- The DISTINCT ONclause is now reported properly in statement statistics. #27222
- Fixed a crash when trying to plan certain UNION ALLqueries. #27233
- Commands are now abandoned earlier once a deadline has been reached. #27215
- Fixed a panic in IMPORTwhen creating a table using a sequence operation (e.g.,nextval()) in a column's DEFAULT expression. #27294
Doc Updates
- Added a tutorial on benchmarking CockroachDB with TPC-C. #3281
- Added systemdconfigs and instructions to deployment tutorials. #3268
- Updated the Kubernetes tutorials to reflect that pods aren't "Ready" before init. #3291
Contributors
This release includes 22 merged PRs by 17 authors. We would like to thank the following contributors from the CockroachDB community, with special thanks to first-time contributors Emmanuel.
- Emmanuel
- neeral
v2.0.3
Release Date: June 18, 2018
General Changes
- The new compactor.threshold_bytesandmax_record_agecluster settings can be used to configure the compactor. #25458
- The new cluster.preserve_downgrade_optioncluster setting makes it possible to preserve the option to downgrade after performing a rolling upgrade to v2.1. #25811
SQL Language Changes
- Prevented DROP TABLEfrom using too much CPU. #25852
Command-Line Changes
- The cockroach sqlcommand no longer prompts for a password when a certificate is provided. #26232
- The cockroach quitcommand now prints warning messages to the standard error stream, not to standard output. #26163
Bug Fixes
- Prevented the internal gossip network from being partitioned by making it much less likely that nodes in the network could forget about each other. #25521
- Prevented spurious BudgetExceededErrorsfor some queries that read a lot of JSON data from disk. #25719
- Fixed a crash in some cases when using a GROUP BYwithHAVING. #25654
- Fixed a crash caused by inserting data into a table with computed columns that reference other columns that weren't present in the INSERTstatement. #25807
- UPSERTis now properly able to write- NULLvalues to every column in tables containing more than one column family. #26181
- Fixed a bug where a long-running query running from one day to the next would not always produce the right value for current_date(). #26413
- Fixed a bug where cockroach quitwould erroneously fail even though the node already successfully shut down. #26163
- Rows larger than 8192 bytes are now supported by the "copy from" protocol. #26641
- Trying to "copy from stdin" into a table that doesn't exist no longer drops the connection. #26641
- Previously, expired compactions could stay in the queue forever. Now, they are removed when they expire. #26659
Performance Improvements
- The performance impact of dropping a large table has been substantially reduced. #26615
Doc Updates
- Documented special syntax forms of built-in SQL functions and conditional and function-like operators, and updated the SQL operator order of precedence. #3192
- Added best practices on understanding and avoiding transaction contention and a related FAQ. #3156
- Improved the documentation of AS OF SYSTEM TIME. #3155
- Expanded the manual deployment guides to cover running a sample workload against a cluster. #3149
- Added FAQs on generating unique, slowly increasing sequential numbers and the differences between UUID, sequences, andunique_rowid(). #3104
Contributors
This release includes 19 merged PRs by 14 authors.
v2.0.2
Release Date: May 21, 2018
General Changes
- The header of new log files generated by cockroach startwill now include the cluster ID once it has been determined. #24982
- The cluster ID is now reported with tag [config]in the first log file, not only when log files are rotated. #24982
- Stopped spamming the server logs with "error closing gzip response writer" messages. #25108
SQL Language Changes
- Added more ways to specify an index name for statements that require one (e.g., DROP INDEX,ALTER INDEX ... RENAME, etc.), improving PostgreSQL compatibility. #24817
- Clarified the error message produced upon accessing a virtual schema with no database prefix (e.g., when databaseis not set). #24809
- STOREDis no longer a reserved keyword and can again be used as an unrestricted name for databases, tables and columns. #24864
- Errors detected by SHOW SYNTAXare now tracked internally like other SQL errors. #24900
- IMPORTnow supports hex-encoded byte literals for- BYTEScolumns. #25063
- Collated strings can now be used in WHEREclauses on indexed columns. #25175
- The Level and Type columns of EXPLAIN (VERBOSE)results are now hidden; if they are needed, they can beSELECTed explicitly. #25206
Admin UI Changes
- Added RocksDB compactions/flushes to storage graphs. #25457
Bug Fixes
- It is once again possible to use a simply qualified table name in qualified stars (e.g., SELECT mydb.kv.* FROM kv) for compatibility with CockroachDB v1.x. #24842
- Fixed a scenario in which a node could deadlock while starting up. #24831
- Ranges in partitioned tables now properly split to respect their configured maximum size. #24912
- Some kinds of schema change errors that were stuck in a permanent loop now correctly fail. #25015
- When adding a column, CockroachDB now verifies that the column is referenced by no more than one foreign key. Existing tables with a column that is used by multiple foreign key constraints should be manually changed to have at most one foreign key per column. #25079
- CockroachDB now properly reports an error when using the internal-only functions final_variance()andfinal_stddev()instead of causing a crash. #25218
- The constraint_schemacolumn ininformation_schema.constraint_column_usagenow displays the constraint's schema instead of its catalog. #25220
- Fix a panic caused by certain queries containing OFFSETandORDER BY. #25238
- BEGIN; RELEASE SAVEPOINTnow returns an error instead of causing a crash. #25251
- Fixed a rare segfaultthat occurred when reading from an invalid memory location returned from C++. #25361
- Fixed a bug with IS DISTINCT FROMnot returningNULLvalues that pass the condition in some cases. #25339
- Restarting a CockroachDB server on Windows no longer fails due to file system locks in the store directory. #25439
- Prevented the consistency checker from deadlocking. This would previously manifest itself as a steady number of replicas queued for consistency checking on one or more nodes and would resolve by restarting the affected nodes. #25474
- Fixed problems with IMPORTsometimes failing after node decommissioning. #25307
- Fixed a bug causing PREPAREto hang when run in the same transaction as aCREATE TABLEstatement. #24874
Build Changes
- Build metadata, like the commit SHA and build time, is properly injected into the binary when using Go 1.10 and building from a symlink. #25062
Doc Updates
- Improved the documentation of the now(),current_time(),current_date(),current_timestamp(),clock_timestamp(),statement_timestamp(),cluster_logical_timestamp(), andage()built-in functions. #25383 #25145
Contributors
This release includes 42 merged PRs by 16 authors. We would like to thank the following contributors from the CockroachDB community:
- Garvit Juniwal
- Jingguo Yao
v2.0.1
Release Date: April 23, 2018
General Changes
- The new server.clock.persist_upper_bound_intervalcluster setting can be used to guarantees monotonic wall time across server restarts. #24624
- The new server.clock.forward_jump_check_enabledcluster setting can be used to cause nodes to panic on clock jumps. #24606
- Prevented execution errors reporting a missing libtinfo.so.5on Linux systems. #24531
Enterprise Edition Changes
- It is now possible to RESTOREviews when using theinto_dboption. #24590
- The new jobs.registry.leniencycluster setting can be used to allow long-runningIMPORTjobs to survive temporary node saturation. #24505
- Relaxed the limitation on using BACKUPin a mixed version cluster. #24515
SQL Language Changes
- Improved the error message returned on object creation when no current database is set or only invalid schemas are in the search_path. #24812
- The current_schema()andcurrent_schemas()built-in functions now only consider valid schemas, like PostgreSQL does. #24758
- The experimental SQL features SHOW TESTING_RANGESandALTER ... TESTING_RELOCATEhave been renamedSHOW EXPERIMENTAL_RANGESandALTER ... EXPERIMENTAL_RELOCATE. #24699
- ROLE,- VIRTUAL, and- WORKare no longer reserved keywords and can again be used as unrestricted names. #24665 #24549
Command-Line Changes
- When cockroach gen haproxyis run, if anhaproxy.cfgfile already exists in the current directory, it now gets fully overwritten instead of potentially resulting in an unusable config. #24336
Bug Fixes
- Fixed a bug when using fractional units (e.g., 0.5GiB) for the--cacheand--sql-max-memoryflags ofcockroach start. #24388
- Fixed the handling of role membership lookups within transactions. #24334
- Fixed a bug causing some lookup join queries to report incorrect type errors. #24825
- ALTER INDEX ... RENAMEcan now be used on the primary index. #24777
- Fixed a panic involving inverted index queries using the ->operator. #24596
- Fix a panic involving inverted index queries over NULL. #24566
- Fixed a bug preventing inverted index queries that have a root with a single entry or element but multiple children overall. #24376
- JSONBvalues can now be cast to- STRINGvalues. #24553
- Prevented executing distributed SQL operations on draining nodes. #23916
- Fixed a panic caused by a WHEREcondition that requires a column to equal a specific value and at the same time equal another column. #24517
- Fixed a panic caused by passing a Nametype tohas_database_privilege(). #24270
- Fixed a bug causing index backfills to fail in a loop after exceeding the GC TTL of their source table. #24427
- Fixed a panic caused by null config zones in diagnostics reporting. #24526
Performance Improvements
- Some SELECTs with limits no longer require a second low-level scan, resulting in much faster execution. #24796
Contributors
This release includes 39 merged PRs by 16 authors. Special thanks to Vijay Karthik from the CockroachDB community.
v2.0.0
Release Date: April 4, 2018
With the release of CockroachDB v2.0, we’ve made significant performance improvements, expanded our PostgreSQL compatibility by adding support for JSON (among other types), and provided functionality for managing multi-regional clusters in production.
- Read more about these changes in the v2.0 blog post.
- Check out a summary of the most significant user-facing changes.
- Then upgrade to CockroachDB v2.0.
Summary
This section summarizes the most significant user-facing changes in v2.0.0. For a complete list of features and changes, including bug fixes and performance improvements, see the release notes for previous testing releases.
- Enterprise Features
- Core Features
- Backward-Incompatible Changes
- Known Limitations
- Documentation Updates
Enterprise Features
These new features require an enterprise license. You can register for a 30-day trial license.
| Feature | Description | 
|---|---|
| Table Partitioning | Table partitioning gives you row-level control of how and where your data is stored. This feature can be used to keep data close to users, thereby reducing latency, or to store infrequently-accessed data on slower and cheaper storage, thereby reducing costs. | 
| Node Map | The Node Map in the Admin UI visualizes the geographical configuration of a multi-region cluster by plotting the node localities on a world map. This feature provides real-time cluster metrics, with the ability to drill down to individual nodes to monitor and troubleshoot cluster health and performance. | 
| Role-Based Access Control | Roles simplify access control by letting you assign SQL privileges to groups of users rather than to individuals. | 
| Point-in-time Backup/Restore (Beta) | Data can now be restored as it existed at a specific point-in-time within the revision history of a backup. This is a beta feature. It is currently undergoing continued testing. Please file a Github issue with us if you identify a bug. | 
Core Features
These new features are freely available in the core version and do not require an enterprise license.
SQL
| Feature | Description | 
|---|---|
| JSON Support | The JSONBdata type and inverted indexes give you the flexibility to store and efficiently query  semi-structured data. | 
| Sequences | Sequences generate sequential integers according to defined rules. They are generally used for creating numeric primary keys. | 
| SQL Audit Logging (Experimental) | SQL audit logging gives you detailed information about queries being executed against your system. This feature is especially useful when you want to log all queries that are run against a table containing personally identifiable information (PII). This is an experimental feature. Its interface and output are subject to change. | 
| Common Table Expressions | Common Table Expressions (CTEs) simplify the definition and use of subqueries. They can be used in combination with SELECTclauses andINSERT,DELETE,UPDATEandUPSERTstatements. | 
| Computed Columns | Computed columns store data generated from other columns by an expression that's included in the column definition. They are especially useful in combination with table partitioning, JSONBcolumns, and secondary indexes. | 
| Foreign Key Actions | The ON UPDATEandON DELETEforeign key actions control what happens to a constrained column when the column it's referencing (the foreign key) is deleted or updated. | 
| Virtual Schemas | For PostgreSQL compatibility, CockroachDB now supports a three-level structure for names: database name > virtual schema name > object name. The new SHOW SCHEMASstatement can be used to list all virtual schemas for a given database. | 
| IMPORT | The IMPORTstatement now imports tabular data in a fully distributed fashion, and import jobs can now be paused, resumed, and cancelled. | 
| INET | The INETdata type stores an IPv4 or IPv6 address. | 
| TIME | The TIMEdata type stores the time of day without a time zone. | 
Operations
| Feature | Description | 
|---|---|
| Node Readiness Endpoint | The new /health?ready=1endpoint returns anHTTP 503 Service Unavailablestatus response code with an error when a node is being decommissioned or is in the process of shutting down and is therefore not able to accept SQL connections and execute queries. This is especially useful for making sure load balancers do not direct traffic to nodes that are live but not "ready", which is a necessary check during rolling upgrades. | 
| Node Decommissioning | Nodes that have been decommissioned and stopped no longer appear in Admin UI and command-line interface metrics. | 
| Per-Replica Constraints in Replication Zones | When defining a replication zone, unique constraints can be defined for each affected replica, meaning you can effectively pick the exact location of each replica. | 
| Replication Zone for "Liveness" Range | Clusters now come with a pre-defined replication zone for the "liveness" range, which contains the authoritative information about which nodes are live at any given time. | 
| Timeseries Data Controls | It is now possible to reduce the amount of timeseries data stored by a CockroachDB cluster or to disable the storage of timeseries data entirely. The latter is recommended only when using a third-party tool such as Prometheus for timeseries monitoring. | 
Backward-Incompatible Changes
| Change | Description | 
|---|---|
| Replication Zones | Positive replication zone constraints no longer work. Any existing positive constraints will be ignored. This change should not impact existing deployments since positive constraints have not been documented or supported for some time. | 
| Casts from BYTEStoSTRING | Casting between these types now works the same way as in PostgreSQL. New functions encode()anddecode()are available to replace the former functionality. | 
| NaNComparisons | NaNcomparisons have been redefined to be compatible with PostgreSQL.NaNis now equal to itself and sorts before all other non-NULL values. | 
| DROP USER | It is no longer possible to drop a user with grants; the user's grants must first be revoked. | 
| Cluster Settings | The obsolete kv.gc.batch_sizecluster setting has been removed. | 
| Environment Variables | The COCKROACH_METRICS_SAMPLE_INTERVALenvironment variable has been removed. Users that relied on it should reduce the value for thetimeseries.resolution_10s.storage_durationcluster setting instead. | 
| Sequences | As of the v1.2-alpha.20171113 release, how sequences are stored in the key-value layer changed. Sequences created prior to that release must therefore be dropped and recreated. Since a sequence cannot be dropped while it is being used in a column's DEFAULTexpression, those expressions must be dropped before the sequence is dropped, and recreated after the sequence is recreated. Thesetval()function can be used to set the value of a sequence to what it was previously. | 
| Reserved Keywords | ROLE,VIRTUAL, andWORKhave been added as reserved keywords and are no longer allowed as identifiers. | 
Known Limitations
For information about limitations we've identified in CockroachDB v2.0, with suggested workarounds where applicable, see Known Limitations.
Documentation Updates
| Topic | Description | 
|---|---|
| Production Checklist | This topic now provides cloud-specific hardware, security, load balancing, monitoring and alerting, and clock synchronization recommendations as well as expanded cluster topology guidance. Related deployment tutorials have been enhanced with much of this information as well. | 
| Monitoring and Alerting | This new topic explains available tools for monitoring the overall health and performance of a cluster and critical events and metrics to alert on. | 
| Common Errors | This new topic helps you understand and resolve errors you might encounter, including retryable and ambiguous errors for transactions. | 
| SQL Performance | This new topic provides best practices for optimizing SQL performance in CockroachDB. | 
| SQL Standard Comparison | This new topic lists which SQL standard features are supported, partially-supported, and unsupported by CockroachDB. | 
| Selection Queries | This new topic explains the function and syntax of queries and operations involved in reading and processing data in CockroachDB, alongside more detailed information about ordering query results, limiting query results, subqueries, and join expressions. | 
v2.0-rc.1
Release Date: April 2, 2018
This is the first release candidate for CockroachDB v2.0. All known bugs have either been fixed or pushed to a future release, with large bugs documented as known limitations.
- Improved the Node Map to provide guidance when an enterprise license or additional configuration is required. #24271
- Bug fixes and stability improvements.
Admin UI Changes
- Improved the Node Map to provide guidance when an enterprise license or additional configuration is required. #24271
- Added the available storage capacity to the Cluster Overview metrics. #24254
Bug Fixes
- Fixed a bug in RESTOREthat could lead to missing rows if theRESTOREwas interrupted. #24089
- New nodes running CockroachDB v2.0 can now join clusters that contain nodes running v1.1. #24257
- Fixed a crash in cockroach zone lsthat would happen if a table with a zone config on it had been deleted but not yet garbage collected. (This was broken in v2.0 alphas, not in v1.1.) #24180
- Fixed a bug where zooming on the Node Map could break after zooming out to the maximum extent. #24183
- Fixed a crash while performing rolling restarts. #24260
- Fixed a bug where privileges were sometimes set incorrectly after upgrading from an older release. #24393
Contributors
This release includes 11 merged PRs by 10 authors. We would like to thank all contributors from the CockroachDB community, with special thanks to first-time contributor Vijay Karthik.
v2.0-beta.20180326
Release Date: March 26, 2018
General Changes
- A CockroachDB process now flushes its logs upon receiving SIGHUPinstead ofSIGUSR1as it did earlier. This is aimed to simplify the automation of process monitoring, test, and backup tools. #23783
- Information about zone config usage is now included in diagnostic reports. #23750
Enterprise Edition Changes
- Added the cloudstorage.timeoutcluster setting for import/export operations. #23776
SQL Language Changes
- SQL features introduced in CockroachDB v2.0 cannot be used in clusters that are not upgraded fully to v2.0. #24013
- Added an escapeoption to theencode()anddecode()built-in functions. #23781
- Introduced a series of PostgreSQL-compatible, privilege-related built-in functions. #23839
- Added the pg_languagetable to thepg_catalogvirtual schema. #23839
- Added the anyarraytype to thepg_typevirtual schema. #23836
- Retryable errors on schema change operations are now less likely to be returned to clients; more operations are retried internally. #24050
Command-Line Changes
- Client commands now report a warning if the connection URL is specified by the --urlas well as some other command-line flag. If you use the--urlflag, other flags can fill in pieces missing from the URL.
- Added per-node heap profiles to the debug zipcommand output. #23858
Admin UI Changes
- More debug pages are now locked down by the server.remote_debugging.modecluster setting. #24022
- The Network Diagnostics report no longer crashes when the latencies are very small or on a single node cluster. #23868
- Fixed the flicker in the Node Map as data is being reloaded. #23757
- Fixed the text overflowing past the table cell boundaries on the Jobs page. #23748
- Updated the labels for the Snapshots graph on the Replication dashboard to be more specific. #23742
- Fixed a bug where graphs would not display on clusters with large numbers of nodes. #24045
- Decommissioned nodes no longer appear in the node selection dropdown on the Metrics page. #23800
- Fixed a condition where a persistent trailing dip could appear in graphs for longer time periods. #23874
Bug Fixes
- Redacted string values in debug API responses. #24070
- Old replicas are now garbage collected in a more timely fashion after a node has been offline for a long time (this bug only exists in recent v2.0 alpha/beta releases, not in v1.1). #24066
- Fixed a bug where some inverted index queries could return incorrect results. #23968
- Fixed the behavior of the @>operator with arrays and scalars. #23969
- Inverted indexes can no longer be hinted for inappropriate queries. #23989
- Enforced minimum privileges for the adminrole. #23935
- A panic is now avoided if the SQL audit log directory does not exist when the node is started. #23928
- Supported Postgres syntax for USING GIN. #23910
- Fixed a bug where INSERT/DELETE/UPDATE/UPSERTmay lose updates if run usingWITHor the[ ... ]syntax. #23895
- Made sure that all built-in functions have a unique Postgres OID for compatibility. #23880
- Fixed an error message generated by the experimental SCRUB feature. #23845
- Fixed a bug where CREATE VIEWafterALTER TABLE ADD COLUMNwould fail to register the dependency on the newly added column. #23845
- Fixed crashes or incorrect results when combining an OUTER JOINwith aVALUESclause that contains onlyNULLvalues on a column (or other subqueries which result in aNULLcolumn). #23838
- Fixed rare nil pointer exception in rebalance target selection. #23807
- The cockroach zone setcommand will now automatically retry if it encounters an error while setting zone configurations. #23782
- Fixed a bug where closing a connection in the middle of executing a query sometimes crashed the server. #23761
- Fixed a bug where expressions could be mistakenly considered equal, despite their types being different. #23722
- Fixed a bug where the RANGE COUNTmetric on the Cluster Overview page of the Admin UI could significantly undercount the number of ranges. #23746
- The client URL reported upon cockroach startnow does not include the optionapplication_name. #23894
Performance Improvements
- Improved cluster performance during overload scenarios. #23884
Doc Updates
- Added a local cluster tutorial demonstrating JSON Support. #2716
- Added full documentation for the VALIDATE CONSTRAINTstatement. #2730
Contributors
This release includes 64 merged PRs by 23 authors. We would like to thank the following contributors from the CockroachDB community, with special thanks to first-time contributors Bob Vawter.
v2.0-beta.20180319
Release Date: March 19, 2018
In this release, we’ve improved CockroachDB’s ability to run in orchestrated environments and closed several Postgres capability gaps.
SQL Language Changes
- NO CYCLEand- CACHE 1are now supported options during sequence creation. #23518
- ISNULLand- NOTNULLare now accepted as alternatives to- IS NULLand- IS NOT NULL. #23518
Command-Line Changes
- Changed the server.drain_max_waitcluster setting toserver.shutdown.query_wait#23629
- The generated HAProxy config generated by cockroach gen haproxyhas been extended with readiness checks. #23590
Admin UI Changes
- Implemented a spinner on the Logs page instead of saying "No Data" while loading. #23556
- Now using monospace font and rendering new lines on the Logs page. Also, packed lines together more tightly. #23556
- Moved the Clock Offset graph from the Distributed dashboard to the Runtime dashboard. Now displaying each node's clock offset independently rather than aggregating them together. #23627
- When reporting anonymous usage details, locality tier names are now redacted. #23588
- Clicking on the entire node component is now allowed in the Node Map, not just the visible elements. #23536
- The Node Map now shows how long a node has been dead. #23404
- Correct liveness status text now displays on nodes in the Node Map. #23404
Bug Fixes
- Fixed a bug in which the usable capacity of nodes was not added up correctly in the Admin UI. #23695
- An ARRAYcan now be used with the PostgreSQL binary format. #23467
- Fixed a panic when a query would incorrectly attempt to use an aggregation or window function in ON CONFLICT DO UPDATE. #23658
- CREATE TABLE AScan now be used with scalar subqueries. #23470
- Connection attempts to former members of the cluster and the associated spurious log messages are now prevented. #23605
- Fixed a panic when executing INSERT INTO ... SELECTqueries where the number of columns targeted for insertion does not match the number of columns returned by theSELECT. #23642
- Reduced the risk that a node in the process of crashing could serve inconsistent data. #23616
- Fixed a correctness bug where some ORDER BYqueries would not return the correct results under concurrent transactional load. #23602
- RETURNING NOTHINGnow properly detects parallel statement execution opportunities against statements that contain data-modifying statements in subqueries. #23524
- The /healthHTTP endpoint is now accessible before a node has successfully become part of an initialized cluster, meaning that it now accurately reflects the health of the process rather than the ability of the process to serve queries. This has been the intention all along, but it didn't work until the node had joined a cluster or hadcockroach initrun on it. #23551
- Fixed a panic that could occur with certain types of casts. #23535
- Prevented a hang while crashing when stderris blocked. #23484
- Fixed panics related to distributed execution of queries with REGCLASScasts. #23482
- Fixed a panic with computed columns. #23435
- Added prevention against potential consistency issues when a node is stopped and restarted in rapid succession. #23339
- Decommissioning a node that has already been terminated now works in all cases. Success previously depended on whether the gateway node "remembered" the absent decommissioned node. #23378
Build Changes
Doc Updates
- Documented the SPLIT ATstatement, which forces a key-value layer range split at a specified row in a table or index. #2704
- Various updates to the IMPORTdocumentation. #2676
- Various updates to the SHOW TRACEdocumentation. #2674
- Clarified the upgrade path for rolling upgrades. #2627
- Added more detailed documentation on ordering query results with ORDER BY. #2658
- Documented inverted indexes for JSONBdata. #2608
Contributors
This release includes 48 merged PRs by 21 authors.
v2.0-beta.20180312
Release Date: March 12, 2018
In this release, we’ve enhanced our debug pages to support graphing custom metrics, improved handling of large deletes, and fixed several bugs.
Build Changes
- Binaries are now built with Go 1.10 by default. #23311
General Changes
- Logging data is now flushed to files every second to aid troubleshooting and monitoring. Synchronization to disk is performed separately every 30 seconds. #23231
- Disabling diagnostics reporting also disables new version notification checks. #23007
- Removed the diagnostics.reporting.report_metricscluster setting, which is duplicative with theCOCKROACH_SKIP_ENABLING_DIAGNOSTIC_REPORTINGenvironment variable. #23007
- All internal error messages are now logged when logging is set to a high enough verbosity. #23127
SQL Language Changes
- Improved handling of large DELETEstatements. They are now either allowed to complete or exited with an error message indicating that the transaction is too large to complete. #23289
- The pg_catalogvirtual tables, as well as the special casts::regprocand::regclass, can now only be queried by clients that set a current database. #23148
Command-Line Changes
- When a node spends more than 30 seconds waiting for an initcommand or to join a cluster, a help message now gets prints tostdout. #23181
Admin UI Changes
- Added a new debug page that allows users to create a "custom" graph displaying any combination of metrics. #23227
- In the geographical map on the homepage of the Admin UI enterprise version, node components now link to Note Details page. #23283
- Removed the Keys Written per Second per Store graph. #23303
- Added the Lead Transferee field to the Range Debug page. #23241
Bug Fixes
- Fixed a correctness bug where some ORDER BYqueries would not return the correct results. #23541
- The Admin UI no longer hangs after a node's network configuration has changed. #23348
- The binary format for JSONBvalues is now supported. #23215
- A node now waits in an unready state for the length of time specified by the server.shutdown.drain_waitcluster setting before draining. This helps ensure that load balancers will not send client traffic to a node about to be drained. #23319
- Fixed a panic when using UPSERT ... RETURNINGwithUNION. #23317
- Prevented disruptions in performance when gracefully shutting down a node. #23300
- Hardened the cluster version upgrade mechanism. Rapid upgrades through more than two versions could sometimes fail recoverably. #23287
- Fixed a deadlock when tables are rapidly created or dropped. #23288
- Fixed a small memory leak in IMPORTCSV. #23259
- Prevented a panic in DistSQL under certain error conditions. #23201
- Added a readiness endpoint (/health?ready=1) for better integration with load balancers. #23247
- Fixed a zero QPS scenario when gracefully shutting down a node. #23246
- Secondary log files (e.g., the SQL execution log) are now periodically flushed to disk, in addition to the flush
that occurs naturally when single log files are full (--log-file-max-size) and when the process terminates gracefully. Log file rotation is also now properly active for these files. #23231
- Previously, the rangescolumn in thenode statuscommand output only included ranges whose raft leader was on the node in question. It now includes the count of all ranges on the node, regardless of where the raft leader is. #23180
- Fixed a panic caused by empty COCKROACH_UPDATE_CHECK_URLorCOCKROACH_USAGE_REPORT_URLenvironment variables. [#23008][#23008]
- Prevented stale reads caused by the system clock moving backwards while the cockroachprocess is not running. #23122
- Corrected the handling of cases where a replica fails to retrieve the last processed timestamp of a queue. #23127
- Fixed a bug where the liveness status would not always display correctly on the single-node page in the Admin UI. #23193
- Fixed a bug that showed incorrect descriptions on the Jobs page in the Admin UI. #23256
Doc Updates
- Updated the GCE deployment tutorial with guidance on increasing the backend timeout setting for TCP Proxy load balancers. #2687
- Documented read refreshing in the CockroachDB architecture documentation. #2684
- Updated the explanation of automatic retries. #2680
- Documented changes to the built-in replication zone. #2677
- Updated the information_schemadocumentation to cover new views. #2675 #2673 #2672 #2668 #2662 #2654 #2637
- Clarified the target of the cockroach initcommand. #2670
- Added details about how to monitor clock offsets. #2663
- Documented how to perform a rolling upgrade on a Kubernetes-orchestrated cluster. #2661
- Updated the Azure deployment tutorial with correct network security rule guidance. #2653
- Improved the documentation of the cockroach node statuscommand. #2639
- Clarified that the DROP COLUMNstatement now dropsCHECKconstraints. #2638
- Added details about disk space usage after deletes and select performance on deleted rows. #2635
- Clarified that DROP INDEX .. CASCADEis required to drop aUNIQUEindex. #2633
- Updated the EXPLAINdocumentation to identify all explainable statements, cover the new output structure, and better explain the contents of theOrderingcolumn. #2632 #2682
- Defined "range lease" in the CockroachDB architecture overview. #2625
- Added an FAQ on preparing for planned node maintenance. #2600
Contributors
This release includes 44 merged PRs by 21 authors.
v2.0-beta.20180305
Release Date: March 5, 2018
This week's release includes:
- Improved support for large delete statements.
- Reduced disruption during upgrades and restarts.
- Reduced occurrence of serializable transaction restarts.
JOIN and ORDER BY. This bug will be fixed in next week's beta.Backwards-Incompatible Changes
- Sequences are now supported in enterprise - BACKUP/- RESTOREjobs.- This changes how sequences are stored in the key-value storage layer, so existing sequences must be dropped and recreated. Since a sequence cannot be dropped while it is being used in a column's - DEFAULTexpression, those expressions must be dropped before the sequence is dropped, and recreated after the sequence is recreated. The- setval()function can be used to set the value of a sequence to what it was previously. #21684
- Positive constraints in replication zone configs no longer work. Any existing positive constraints will be ignored. This change should not impact existing deployments since positive constraints have not been documented or supported for some time. #22906 
Build Changes
- CockroachDB now builds with go 1.9.4 and higher. #22608
General Changes
- Diagnostics reports now include information about changed settings and statistics on types of errors encountered during SQL execution. #22705, #22693, #22948
Enterprise Edition Changes
- Revision history BACKUP/RESTOREis no longer considered experimental. #22679
- Revision history BACKUP/RESTOREnow handles schema changes. #21717
- CockroachDB now checks that a backup actually contains the requested restore time. #22659
- Improved BACKUP's handling of tables afterTRUNCATE. #21895
- Ensured that only the backups created by the same cluster can be used in incremental backups. #22474
- Avoided extra internal copying of files during RESTORE. #22281
- Added a geographical map to the homepage of the Admin UI enterprise version, showing the location of nodes and localities in the cluster. The map is annotated with several top-level metrics: storage capacity used, queries per second, and current CPU usage, as well as the liveness status of nodes in the cluster. [#22763][#22763]
SQL Language Changes
- The type determined for constant NULLexpressions is renamed tounknownfor better compatibility with PostgreSQL. #23150
- Deleting multiple rows at once now consumes less memory. #23013
- Attempts to modify virtual schemas with DDL statements now fail with a clearer error message. #23041
- The new SHOW SCHEMASstatement reveals which are the valid virtual schemas next to the physical schemapublic. #23041
- CockroachDB now recognizes the special syntax SET SCHEMA <name>as an alias forSET search_path = <name>for better compatibility with PostgreSQL. #23041
- current_role()and- current_catalog()are supported as aliases for the- current_user()and- current_database()built-in functions for better compatibility with PostgreSQL. #23041
- CockroachDB now returns the correct error code for division by zero. #22948
- The GC of table data after a DROP TABLEstatement now respects changes to the GC TTL interval specified in the zone config #22903
- The full names of tables/view/sequences are now properly logged in the system event log. #22848
- CockroachDB now recognizes the syntax db.public.tblin addition todb.tblfor better compatibility with PostgreSQL. The handling of the session variablesearch_path, as well as that of the built-in functionscurrent_schemas()andcurrent_schema(), is now closer to that of PostgreSQL. ThusSHOW TABLES FROMcan now inspect the tables of a specific schema (for example,SHOW TABLES FROM db.publicorSHOW TABLES FROM db.pg_catalog).SHOW GRANTSalso shows the schema of the databases and tables. #22753
- Users can now configure auditing per table and per access mode with ALTER TABLE. #22534
- SQL execution logs enabled by the cluster setting sql.trace.log_statement_executenow go to a separate log file. This is an experimental feature meant to aid troubleshooting CockroachDB. #22534
- Added the string_to_array()built-in function. #22391
- Added the constraint_column_usagetable and roles-related tables to theinformation_schemadatabase. #22323 #22242
- IMPORTno longer requires the experimental setting. #22531
- Computed columns and CHECKconstraints now correctly report column names in the case of a type error. #22500
- The output of JSONdata now matches that of PostgreSQL. #22393
- Allowed IMPORTjobs to be paused.IMPORTjobs now correctly resume instead of being abandoned if the coordinator goes down. #22291
- Removed the into_dboption inIMPORT. The database is now specified as part of the table name. #21813
- Changed computed column syntax and improved related error messages. #22429
- Implemented additional INETcolumn type operators such ascontainsandcontained by, binary operations, and addition/subtraction.
- Implemented the following operators for INETcolumn types:<<,<<=,>>,>>=,&&,+,-,^,|,&. These operators are compatible with PostgreSQL 10 and are described in Table: 9.36 of the PostgreSQL documentation. #21437
- CockroachDB now properly rejects incorrectly-cased SQL function names with an error. #22365
- Allowed DEFAULTexpressions in theCREATE TABLEof anIMPORTCSV. The expressions are not evaluated (data in the CSV is still required to be present). This change only allows them to be part of the table definition. #22307
- Added the #-operator forJSON. #22375
- The SET transaction_isolationstatement is now supported for better PostgreSQL compatibility. #22389
- Allowed creation of computed columns. #21823
- Avoided extra internal copying of files during IMPORT. #22281
- Casts between array types are now allowed when a cast between the parameter types is allowed. #22338
- Scalar functions can now be used in FROMclauses. #22314
- Added privilege checks on sequences. #22284
- The ON DELETE SET DEFAULT,ON UPDATE SET DEFAULT,ON DELETE SET NULL, andON UPDATE SET NULLforeign key constraint actions are now fully supported. #22220 #21767 #21716
- The ON DELETE CASCADEandON UPDATE CASCADEforeign key constraint actions can now also containCHECKconstraints. #22535
- JSON inverted indexes can now be specified in a CREATE TABLEstatement. #22217
- When a node is gracefully shut down, planning queries are avoided and distributed queries are allowed the amount of time specified by the new server.drain_max_waitcluster setting before the node is drained and stopped. #20450
- Collated string are now supported in IMPORT jobs. #21859
- The new SHOW GRANTS ON ROLEstatement andpg_catalog.pg_auth_memberstable lists role memberships. #22205 #21780
- Role memberships are now considered in permission checks. #21820
Command-Line Changes
- Replication zone constraints can now be specified on a per-replica basis, meaning you can configure some replicas in a zone's ranges to follow one set of constraints and other replicas to follow other constraints. #22906
- Per-replica constraints no longer have to add up to the total number of replicas in a range. If you do not specify all the replicas, then the remaining replicas will be allowed on any store. #23081
- cockroach sqlnow reminds the user about- SET database = ...and- CREATE DATABASEif started with no current database set. #23089
- Error messages displayed while connecting to a server with an incompatible version have been improved. #22709
- The --cacheand--max-sql-memoryflags ofcockroach startnow also support decimal notation to support a fraction of total available RAM size, e.g.,--cache=.25is equivalent to--cache=25%. This simplifies integration with system management tools. #22460
- When printing tabular results as CSV or TSV, no final row count is emitted. This is intended to increase interoperability with external tools. #20835
- The prettyformatter does not introduce special unicode characters in multi-line table cells, for better compatibility with certain clients. To disambiguate multi-line cells from multiple single-line cells, a user can useWITH ORDINALITYto add a row numbering column. #22324
- Allowed specification of arbitrary RocksDB options. #22401
- Debug commands now open RocksDB in read-only mode. This makes them faster and able to run in parallel. #21778
- The cockroach dumpcommand now outputsCREATE SEQUENCEstatements before theCREATE TABLEstatements that use them. #21774
- For better compatibility with psql's extended format, the table formatterrecordsnow properly indicates line continuations in multi-line rows. #22325
- The cockroach sqlclient-side optionshow_timesis now always enabled when output goes to a terminal, not just whendisplay_formatis set topretty. #22326
- When formatting cockroach sqlresults with--format=sql, the row count is now printed in a SQL comment at the end. #22327
- When formatting cockroach sqlresults with--format=csvor--format=tsv, result rows that contain special characters are now quoted properly. #19306
Admin UI Changes
- Decommissioned nodes are no longer included in cluster stats aggregates. #22711
- Time series metrics dashboards now show their own title rather than the generic "Cluster Overview". #22746
- The URLs for Admin UI pages have been reorganized to provide more consistent structure to the site. Old links will redirect to the new location of the page. #22746
- Nodes being decommissioned are now included in the total nodes count until they are completely decommissioned. #22690
- Added new graphs for monitoring activity of the time series system. #22672
- Disk usage for time series data is now visible on the Databases page. #22398
- Added a ui-clean task. #22552
- Added an icon to indicate when descriptions in the Jobs table are shortened and expandable. #22221
- Added "compaction queue" graphs to the Queues dashboard. #22218
- Added Raft snapshot queue metrics to the Queue dashboard. #22210
- Dead nodes are now displayed before live nodes on the Nodes List page. #22222
- Links to documentation in the Admin UI now point to the docs for v2.0. #21894
Bug Fixes
- Fixed an issue where Admin UI graph tooltips would continue to display zero values for nodes which had long been decommissioned. #22626
- Fixed an issue where Admin UI graphs would occasionally have a persistent "dip" at the leading edge of data. #22570
- Fixed an issue where viewing Admin UI graphs for very long time spans (e.g., 1 month) could cause excessive memory usage. #22392
- Fixed padding on the Node Diagnostics page of the Admin UI. #23019
- Corrected the title of the decommissioned node list, which was mistakenly updated to say "Decommissioning". #22703
- Fixed a bug in cockroach dumpoutput withSEQUENCES. #22619
- Fixed a bug that created uneven distribution of data (or failures in some cases) during IMPORTof tables without an explicit primary key. #22542
- Fixed a bug that could prevent disk space from being reclaimed. #23153
- Replication zone configs no longer accept negative numbers as input. #23081
- Fixed the occasional selection of sub-optimal rebalance targets. #23081
- cockroach dumpis now able to dump sequences with non-default parameters. #23062
- Arrays now support the IS [NOT] DISTINCT FROMoperators. #23090
- SHOW TABLESis now again able to inspect virtual schemas. #23041
- The special form of CREATE TABLE .. ASnow properly supports placeholders in the subquery. #23046
- Fixed a bug where ranges could get stuck in an infinite "removal pending" state and would refuse to accept new writes. #23024
- Fixed incorrect index constraints on primary key columns on unique indexes. #23003
- Fixed a panic when upgrading quickly from v1.0.x to v2.0.x #22971
- Fixed a bug that prevented joins on interleaved tables with certain layouts from working. #22935
- The service latency tracked for SQL statement now includes the wait time of the execute message in the input queue. #22881
- The conversion from INTERVALtoFLOATnow properly returns the number of seconds in the interval. #22894
- Fixed incorrect query results when the WHEREcondition containsINexpressions where the right-hand side tuple containsNULLs. #22735
- Fixed incorrect handling for IS (NOT) DISTINCT FROMwhen either side is a tuple that containsNULL. #22718
- Fixed incorrect evaluation of INexpressions where the left-hand side is a tuple, and some of the tuples on either side containNULL. #22718
- Expressions stored in check constraints and computed columns are now stored de-qualified so that they no longer refer to a specific database or table. #22667
- Fixed a bug where reusing addresses of decommissioned nodes could cause issues with Admin UI graphs. #22614
- IMPORTjobs can no longer be started if the target table already exists. #22627
- Computed columns can no longer be added to a table after table creation. #22653
- Allowed UPSERTing into a table with computed columns. #22517
- Computed columns are now correctly disallowed from being foreign key references. #22511
- Various primitives that expect table names as argument now properly reject invalid table names. #22577
- AddSSTableno longer accidentally destroys files in the log on success. #22551
- IsDistinctFromwith- NULLplaceholder no longer returns incorrect results. #22433
- Fixed a bug that caused incorrect results for joins where columns that are constrained to be equal have different types. #22549
- Implemented additional safeguards against RPC connections between nodes that belong to different clusters. #22518
- The /healthendpoint now returns a node as unhealthy when draining or decommissioning. #22502
- Aggregates that take null arguments no return the correct results. #22507
- Fixed empty plan columns of sequenceSelectNode. #22495
- Disallowed any inserts into computed columns. #22470
- Tables with computed columns will produce a meaningful dump. #22402
- cockroach sqlno longer produces an error anymore when an empty statement is entered at the interactive prompt. #22449
- The pg_typeof()function now returns the correct type for the output ofUNION ALLeven when the left sub-select has aNULLcolumn. #22438
- <TYPE> <value>literal casts now work correctly for all fixed-length types. #22397
- Errors from DDL statements sent by a client as part of a transaction, but in a different query string than the final commit, are no longer silently swallowed. #21829
- Fixed a bug in cascading foreign key actions. #21799
- Tabular results where the column labels contain newline characters are now rendered properly. #19306
- Fixed a bug that prevented long descriptions in the Admin UI Jobs table from being collapsed after being expanding. #22221
- Fixed a bug that prevented using SHOW GRANTSwith a grantee but no targets. #21864
- Fixed a panic with certain queries involving the REGCLASStype. #22310
- Fixed the behavior and types of the encode()anddecode()functions. #22230
- Fixed a bug that prevented passing the same tuple for FROMandTOinALTER TABLE ... SCATTER. #21830
- Fixed a regression that caused certain queries using LIKEorSIMILAR TOwith an indexed column to be slow. #21842
- Fixed a stack overflow in the code for shutting down a server when out of disk space #21768
- Fixed Windows release builds. #21793
- Fixed an issue with the wire-formatting of BYTESarrays. #21712
- Fixed a bug that could lead to a node crashing and needing to be reinitialized. #21771
- When a database is created, dropped, or renamed, the SQL session is blocked until the effects of the operation are visible to future queries in that session. #21900
- Fixed a bug where healthy nodes could appear as "Suspect" in the Admin UI if the web browser's local clock was skewed. #22237
- Fixed bugs when running DistSQL queries across mixed-version (1.1.x and 2.0-alpha) clusters. #22897
Performance Improvements
- Improved a cluster's ability to continue operating when nearly out of disk space on most nodes. #21866
- Disk space is more aggressively freed up when the disk is almost full. #22235
- Experimentally enabled some joins to perform a lookup join and increase join speed for cases where the right side of the join is much larger than the left. #22674
- Supported distributed execution of INTERSECTandEXCEPTqueries. #22442
- Reduced cancellation time of DistSQL aggregation queries. #22684
- Unnecessary value checksums are no longer computed, speeding up database writes. #22487
- Reduced unnecessary logging in the storage layer. #22516
- Improved the performance of distributed sql queries. #22471
- Distributed execution of INTERSECT ALLandEXCEPT ALLqueries is now supported. #21896
- Allowed -in usernames, but not as the first character. #22728
- A COMMITreporting an error generated by a previous parallel statement (i.e.,RETURNING NOTHING) no longer leaves the connection in an aborted transaction state. Instead, the transaction is considered completed and aROLLBACKis not necessary. #22683
- Significantly reduced the likelihood of serializable restarts seen by clients due to concurrent workloads. #21140
- Reduced disruption from nodes recovering from network partitions. #22316
- Improved the performance of scans by copying less data in memory. #22309
- Slightly improved the performance of low-level scan operations. #22244
- When a range grows too large, writes are now be backpressured until the range is successfully able to split. This prevents unbounded range growth and improves a clusters ability to stay healthy under hotspot workloads. #21777
- The information_schemaandpg_catalogdatabases are now faster to query. #21609
- Reduced the write amplification of Raft replication. #20647
Doc Updates
- Added cloud-specific hardware recommendations. #2312
- Added a detailed listing of SQL standard features with CockroachDB's level of support. #2442
- Added docs on the INETdata type. #2439
- Added docs on the SHOW CREATE SEQUENCEstatement. #2406
- Clarified that password creation is only supported in secure clusters. #2567
- Added docs on production monitoring tools and the critical events and metrics to alert on. #2564
- Added docs on the JSONBdata type. #2561
- Added docs on the BETWEEN SYMMETRICoperator. #2551
- Updated docs on supporting castings for ARRAYvalues. #2549
- Various improvements to docs on the built-in SQL client. #2544
Contributors
This release includes 430 merged PRs by 37 authors. We would like to thank all contributors from the CockroachDB community, with special thanks to first-time contributors noonan, Mark Wistrom, pocockn, and 何羿宏.
v2.0-alpha.20180129
Release Date: January 29, 2018
General Changes
- CockroachDB now uses gRPC version 1.9.2 #21600
Enterprise Changes
- Failed RESTOREcleanup no longer causes theRESTOREjob to perpetually loop if external storage fails or is removed. #21559
- Non-transactional BACKUPandRESTOREstatements are now disallowed inside transactions. #21488
SQL Language Changes
- Reduced the size of system.rangelogentries to save disk space. #21410
- Prevented adding both a cascading referential constraint action and a check constraint to a column. #21690
- Added json_array_lengthfunction that returns the number of elements in the outermostJSONorJSONBarray. #21611
- Added referential_constraintstable to theinformation_schema. Thereferential_constraintstable contains all foreign key constraints in the current database. #21615
- Replaced BOOLcolumns in theinformation_schemawithSTRINGcolumns to conform to the SQL specification. #21612
- Added support for inverted indexes for JSON. #20941
- DROP SEQUENCEcannot drop a- SEQUENCEthat is currently in use. #21364
- The IMPORTfunction now does not require thetempdirectory and no longer creates aRESTOREjob. Additionally, theTRANSFORM_ONLYoption forIMPORThas been renamed toTRANSFORMand now takes an argument specifying the target directory. #21490
Command-Line Changes
- cockroach start --backgroundnow returns earlier for nodes awaiting the- cockroach initcommand, facilitating use of automated scripts. #21682
- Command-line utilities that print results with the prettyformat now use consistent horizontal alignment for every row of the result. #18491
Admin UI Changes
- The Command Queue debug page now displays errors correctly. #21529
- The Problem Ranges debug page now displays all problem ranges for the cluster. #21522
Bug Fixes
- Fixed a crash caused by NULLplaceholder in comparison expressions. #21705
- The EXPLAIN (VERBOSE)output now correctly shows the columns and properties of each query node (instead of incorrectly showing the columns and properties of theroot). #21527
- Added a mechanism to recompute range stats automatically over time to reflect changes in the underlying logic. #21345
Performance Improvements
- Multiple ranges can now split at the same time, improving our ability to handle hotspot workloads. #21673
- Improved performance for queries that do not read any columns from the key component of the row. #21571
- Improved performance of scans by reducing efforts for non-required columns. #21572
- Improved efficiency of the key decoding operation. #21498
- Sped up the performance of low-level delete operations. #21507
- Prevented the jobs table from growing excessively large during jobs table updates. #21575
Contributors
This release includes 110 merged PRs by 31 authors. We would like to thank the following contributors from the CockroachDB community:
- Constantine Peresypkin
- 何羿宏
Special thanks to first-time contributors Andrew Kimball, Nathaniel Stewart, Constantine Peresypkin and Paul Bardea.
v2.0-alpha.20171218
Release Date: December 18, 2017
SQL Language Changes
- Added support for read-only transactions via PostgreSQL-compatible syntax. #20547
- SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY/READ WRITE
- SET TRANSACTION READ ONLY/READ WRITE
- SET default_transaction_read_only
- SET transaction_read_only
 
- For compatibility with PostgreSQL, the return type of the date_trunc(STRING,TIME)function was changed fromTIMEtoINTERVAL, and the return type of thedate_trunc(STRING,DATE)function was changed fromDATEtoTIMESTAMPTZ. #20467
Bug Fixes
- Fixed a bug preventing CockroachDB from starting when the filesystem generates a lost+founddirectory in the Cockroach data directory. #20565
- Fixed the over-counting of memory usage by aggregations. #20585
- Fix a panic when using the date_trunc(STRING,TIMESTAMP)ordate_trunc(STRING,DATE)function during queries that run with the distributed execution engine. #20467
- Fixed a bug where the date_trunc(STRING,TIMESTAMP)function would return aTIMESTAMPTZvalue. #20467
- Fixed a race condition that would result in some queries hanging after cancellation. #20088
- Fixed a bug allowing privileges to be granted to non-existent users. #20438
Performance Improvements
- Queries that use inequalities using tuples (e.g., (a,b,c) < (x,y,z)) are now slightly better optimized. #20484
- IS DISTINCT FROMand- IS NOT DISTINCT FROMclauses are now smarter about using available indexes. #20346
v1.2-alpha.20171211
Release Date: December 11, 2017
General Changes
- Alpha and beta releases are now published as Docker images under the name cockroachdb/cockroach-unstable. #20331
SQL Language Changes
- The protocol statement tag for CREATE TABLE ... AS ...is nowSELECT, like in PostgreSQL. #20268
- OIDs can now be compared with inequality operators. #20367
- The CANCEL JOBstatement now supports cancelingIMPORTjobs. #20343
- PAUSE JOB/- RESUME JOB/- CANCEL JOBstatements can now be used within SQL transactions. #20185
- Added a cache for the internal system.table_statisticstable. #20212
- The intervalstylesession variable is now supported for PostgreSQL compatibility. #20274
- The SHOW [KV] TRACEstatement now properly extracts file/line number information when analyzing traces produced in debug mode. Also, the newSHOW COMPACT [KV] TRACEstatement provides a more compact view on the same data. #20093
- Some queries using IS NOT NULLconditions are now better optimized. #20436
- Views now support LIMITandORDER BY. #20246
Command-Line Interface Changes
- Reduced temporary disk space usage for the cockroach debug compactcommand. #20460
- The cockroach node statusandcockroach node lscommands now support a timeout. #20308
Admin UI Changes
- The Admin UI now sets the Last-Modifiedheader when serving assets to permit browser caching. This improves page load times, especially on slow connections #20429.
Bug Fixes
- Removed the possibility for OOM errors during distributed IMPORTfrom csv. #20506
- Fixed a crash triggered by some corner-case queries containing ORDER BY. #20489
- Added missing Distributed SQL flows to the exported sql.distsql.flows.activeandsql.distsql.flows.totalmetrics and the "Active Flows for Distributed SQL Queries" admin UI graph. #20503
- Fixed an issue with stale buffer data when using the binary format for ARRAYvalues. #20461
- The cockroach sqlshell now better reports the number of rows inserted by aCREATE TABLE ... AS ...statement. Note, however, that the result are still formatted incorrectly if theCREATE TABLE ... AS ...statement creates zero rows in the new table. #20268
- Self-referencing tables can now reference a non-primary index without manually adding an index on the referencing column. #20325
- Fixed an issue where spans for descending indexes were displaying incorrectly and updated NOT NULLtokens from#to!NULL. #20318
- Fixed BACKUPjobs to correctly resume in all conditions. #20185
- Fix various race conditions with jobs. #20185
- It is no longer possible to use conflicting AS OF SYSTEM TIMEclauses in different parts of a query. #20267
- Fixed a panic caused by dependency cycles with cockroach dump. #20255
- Prevented context cancellation during lease acquisition from leaking to coalesced requests. #20424
Performance Improvements
- Improved handling of IS NULLconditions. #20366
- Improved p99 latencies for garbage collection of previous versions of a key, when there are many versions. #20373
- Smoothed out disk usage under very write heavy workloads by syncing to disk more frequently. #20352
- Improved garbage collection of very large transactions and large volumes of abandoned write intents. #20396
- Improved table scans and seeks on interleaved parent tables by skipping interleaved children rows at the end of a scan. #20235
- Replaced the interval tree structure in TimestampCachewith arena-backed concurrent skiplist. This reduces global locking and garbage collection pressure, improving average and tail latencies. #20300
Doc Updates
- Added an introduction to CockroachDB video. #2234
- Clarified that we have tested the PostgreSQL-compatible drivers and ORMs featured in our documentation enough to claim beta-level support. This means that applications using advanced or obscure features of a driver or ORM may encounter incompatibilities. If you encounter problems, please open an issue with details to help us make progress toward full support. #2235
v1.2-alpha.20171204
Release Date: December 4, 2017
General Changes
- CockroachDB now uses RocksDB version 5.9.0. #20070
Build Changes
- Restored compatibility with older x86 CPUs that do not support SSE4.2 extensions. #19909
SQL Language Changes
- The TIMEdata type is now supported. #19923
- The IMPORTcommand now tolerates empty CSV files and supports201and204return codes from HTTP storage. #19861 #20027
- nodelocal://paths in- IMPORTnow default to relative within the "extern" subdirectory of the first store directory, configurable via the new- --external-io-dirflag. #19865
- Added AWS_ENDPOINTandAWS_REGIONparameters in S3 URIs to specify the AWS endpoint or region forIMPORT. The endpoint can be any S3-compatible service. #19860
- For compatibility with PostgreSQL:
- The time zonesession variable (with a space) has been renamedtimezone(without a space), andSET TIMEZONEandSHOW TIMEZONEare now supported alongside the existingSET TIME ZONEandSHOW TIME ZONEsyntax. Also,SET TIMEZONE =can now be used as an alternative toSET TIMEZONE TO. #19931
- The transaction_read_onlysession variable is now supported. It is always set tooff. #19971
- The transaction isolation level,transaction priority, andtransaction statussession variables have been renamedtransaction_isolation,transaction_priority, andtransaction_status. #20264
 
- The 
- SHOW TRACE FOR SELECTnow supports- AS OF SYSTEM TIME. #20162
- Added the system.table_statisticstable for maintaining statistics about columns or groups of columns. These statistics will eventually be used by the query optimizer. #20072
- The UPDATEandDELETEstatements now supportORDER BYandLIMITclauses. #20069- For UPDATE, this is a MySQL extension that can help with updating the primary key of a table (ORDER BY) and control the maximum size of write transactions (LIMIT).
- For DELETE, theORDER BYclause constrains the deletion order, the output of itsLIMITclause (if any), and the result order of itsRETURNINGclause (if any).
 
- For 
- On table creation, DEFAULTexpressions no longer get evaluated. #20031
Command-Line Interface Changes
- The cockroach node statuscommand now indicates if a node is dead. #20192
- The new --external-io-dirflag incockroach startcan be used to configure the location ofnodelocal://paths inBACKUP,RESTORE, andIMPORT. #19725
Admin UI Changes
- Updated time series axis labels to show the correct byte units. #19870
- Added a cluster overview page showing current capacity usage, node liveness, and replication status. #19657
Bug Fixes
- Fixed how column modifiers interact with ARRAYvalues. #19499
- Enabled an RPC-saving optimization when the --advertise-hostis used. #20006
- It is now possible to drop a column that is referenced as a foreign key when it is the only column in that reference. #19772
- Fixed a panic involving the use of the INoperator and improperly typed subqueries. #19858
- Fixed a spurious panic about divergence of on-disk and in-memory state. #19867
- Fixed a bug allowing duplicate columns in primary indexes. #20238
- Fixed a bug with NaNs andInfinitys inEXPLAINoutputs. #20233
- Fixed a possible crash due to statements finishing execution after the client connection has been closed. #20175
- Fixed a correctness bug when using distributed SQL engine sorted merge joins. #20090
- Fixed a bug excluding some trace data from SHOW TRACE FOR <statement>. #20081
- Fixed a case in which ambiguous errors were treated as unambiguous and led to inappropriate retries. #20073
- Fixed a bug leading to incorrect results for some queries with INconstraints. #20036
- Fixed the encoding of indexes that use STORINGcolumns. #20001
- IMPORTcheckpoints are now correctly cleaned up. #20211
- Fixed a bug that could cause system overload during cleanup of large transactions. #19538
- On macOS, the built-in SQL shell (cockroach sql) once again properly supports window resizing. #20148, #20153
- PARTITION BYmultiple columns with window functions now works properly. #20151
- Fixed a bug so deleting chains of 2 or more foreign key references is now possible. #20050
- Prometheus vars are now written outside the metrics lock. #20194
Enterprise Edition Changes
- Enterprise BACKUPs no longer automatically include thesystem.usersandsystem.descriptortables. #19975
- Added AWS_ENDPOINTandAWS_REGIONparameters in S3 URIs to specify the AWS endpoint or region forBACKUP/RESTORE. The endpoint can be any S3-compatible service. #19860
- RESTORE DATABASEis now allowed only when the backup contains a whole database. #20023
- Fixed RESTOREbeing resumed withskip_missing_foreign_keysspecified. #20092
- BACKUP/- RESTOREjobs now support- 201and- 204return codes from HTTP storage. #20027
- BACKUPnow checks that all interleaved tables are included (as required by- RESTORE). #20206
- Marked revision_historyBACKUP/RESTOREas experimental. #20164
- nodelocal://paths in- BACKUP/- RESTOREnow default to relative within the "extern" subdirectory of the first store directory, configurable via the new- --external-io-dirflag. #19865
Doc Updates
- In conjunction with beta-level support for the C# (.NET) Npgsql driver, added a tutorial on building a C# app with CockroachDB. #2236
- Improved Kubernetes guidance:
- Added a tutorial on orchestrating a secure CockroachDB cluster with Kubernetes, improved the tutorial for insecure orchestrations, and added a local cluster tutorial using minikube. #2147
- Updated the StatefulSet configurations to support rolling upgrades, and added initial documentation. #19995
 
- Added a tutorial on orchestrating a secure CockroachDB cluster with Kubernetes, improved the tutorial for insecure orchestrations, and added a local cluster tutorial using 
- Added performance best practices for INSERTandUPSERTstatements. #2199
- Documented how to use the timeseries.resolution_10s.storage_durationcluster setting to truncate timeseries data sooner than the default 30 days. #2210
- Clarified the treatment of NULLvalues inSELECTstatements with anORDER BYclause. #2237
New RFCs
- SELECT FOR UPDATE#19577
- SQL Optimizer Statistics #18399
- SCRUB Index and Physical Check Implementation #19327
v1.2-alpha.20171113
Release Date: November 13, 2017
Backwards-Incompatible Changes
- Redefined - NaNcomparisons to be compatible with PostgreSQL.- NaNis now equal to itself and sorts before all other non-NULL values. #19144
- It is no longer possible to drop a user with grants; the user's grants must first be revoked. #19095 
Build Changes
- Fixed compilation on the 64-bit ARM architecture. #19795 
- NodeJS 6+ and Yarn 1.0+ are now required to build CockroachDB. #18349 
SQL Language Changes
- SHOW GRANTS(no user specified) and- SHOW GRANTS FOR <user>are now supported. The former lists all grants for all users on all databases and tables; the latter does so for a specified user. #19095
- SHOW GRANTSstatements now report the database name for tables. #19095
- CREATE USERstatements are no longer included in the results of- SHOW QUERIESstatements. #19095
- The new - ALTER USER ... WITH PASSWORD ...statement can be used to change a user's password. #19095
- CREATE USER IF NOT EXISTSis now supported. #19095
- New foreign key constraints without an action specified for - ON DELETEor- ON UPDATEnow default to- NO ACTION, and existing foreign key constraints are now considered to have both- ON UPDATEand- ON DELETEactions set to- NO ACTIONeven if- RESTRICTwas specified at the time of creation. To set an existing foreign key constraint's action to- RESTRICT, the constraint must be dropped and recreated.- Note that - NO ACTIONand- RESTRICTare currently equivalent and will remain so until options for deferring constraint checking are added. #19416
- Added more columns to - information_schema.table_constraints. #19466
Command-Line Interface Changes
- On node startup, the location for temporary files, as defined by the --temp-dirflag, is printed to the standard output. #19272
Admin UI Changes
- Decommissioned nodes no longer cause warnings about staggered versions. #19547
Bug Fixes
- Fixed a bug causing redundant log messages when running - SHOW TRACE FOR. #19468
- DROP INDEX IF EXISTSnow behaves properly when not using- table@idxsyntax. #19390
- Fixed a double close of the merge joiner output. #19794 
- Fixed a panic caused by placeholders in - PREPAREstatements. #19636
- Improved error messages about Raft progress in the replicate queue. #19593 
- The - cockroach dumpcommand now properly supports- ARRAYvalues. #19498
- Fixed range splitting to work when the first row of a range is larger than half the configured range size. #19339 
- Reduced unnecessary log messages when a cluster becomes temporarily unbalanced, for example, when a new node joins. #19494 
- Using - DELETEwithout- WHEREand- RETURNINGinside- [...]no longer causes a panic. #19822
- SQL comparisons using the - ANY,- SOME, or- ALLoperators with sub-queries and cast expressions work properly again. #19801
- On macOS, the built-in SQL shell ( - cockroach sql) once again properly supports window resizing and suspend-to-background. #19429
- Silenced an overly verbose log message. #19504 
- Fixed a bug preventing large, distributed queries that overflow onto disk from completing. #19689 
- It is not possible to - EXECUTEinside of- PREPAREstatements or alongside other- EXECUTEstatements; attempting to do so no longer causes a panic. #19809 #19720
- The admin UI now works when a different - --advertise-hostis used. #19426
- An improperly typed subquery used with - INno longer panics. #19858
- It is now possible to - RESTOREusing an incremental- BACKUPtaken after a table was dropped. #19601
- Fixed an always-disabled crash reporting setting. #19554 
- Prevented occasional crashes when the server is shut down during startup. #19591 
- Prevented a potential Gossip deadlock on cluster startup. #19493 
- Improved error handling during splits. #19448 
- Some I/O errors now cause the server to shut down. #19447 
- Improved resiliency to S3 quota limits by retrying some operations during - BACKUP/- RESTORE/- IMPORT
- Executing - TRUNCATEon a table with self-referential foreign key constraints no longer creates broken foreign key backward references. #19322
Performance Improvements
- Improved memory usage for certain queries that use limits at multiple levels. #19682 
- Eliminated some redundant Raft messages, improving write performance for some workloads by up to 30%. #19540 
- Trimmed the wire size of various RPCs. #18930 
- Table leases are now acquired in the background when frequently used, removing a jump in latency when they expire. #19005 
Enterprise Edition Changes
- When an enterprise - RESTOREfails or is canceled, partially restored data is now properly cleaned up. #19578
- Added a placeholder during long-running - BACKUPand- IMPORTjobs to protect against accidentally using it by concurrent operations. #19713
Doc Updates
- New RFCs:
- Documented how to increase the system-wide file descriptors limit on Linux. #2139
- Clarified that multiple transaction options in a single SET TRANSACTIONstatement can be space-separated as well as comma-separated. #2139
- Added e'\\xto the list of supported hexadecimal-encoded byte array literals formats. #2134
- Clarified the FAQ on auto-generating unique row IDs. #2128
- Corrected the aliases and allowed widths of various INTtypes. #2116
- Corrected the description of the --hostflag in our insecure cloud deployment tutorials. #2117
- Minor improvements to the CockroachDB Architecture Overview page. #2103 #2104 #2105
v1.2-alpha.20171026
Release Date: October 26, 2017
Backwards-Incompatible Changes
- Casts from BYTEStoSTRINGhave been changed and now work the same way as in PostgreSQL. New functionsencode()anddecode()are available to replace the former functionality. #18843
General Changes
- CockroachDB now requires Go 1.9. #18459
- Release binaries now link against libtinfodynamically. Building CockroachDB from source now requireslibtinfo(orncurses) development packages. #18979
- Building the web UI now requires Node version 6 and Yarn version 0.22.0 or newer. #18830
- Most dependencies have been updated to their latest versions. #17490
- Release docker images are now based on Debian 8.9. #18748
SQL Language Changes
- DROP DATABASEnow defaults to- CASCADE, restoring the 1.0 (and PostgreSQL-compatible) behavior. #19182
- The INETcolumn type and related functions are now supported. #18171 #18585
- The ANY,SOME, andALLfunctions now support subquery and tuple operands. #18094 #19266
- current_schemas(false)behaves more consistently with PostgreSQL. #18108
- SET CLUSTER SETTINGnow supports prepared statement placeholders. #18377
- SHOW CLUSTER SETTINGSis now only available to- root. #19031
- A new cluster setting cloudstorage.gs.default.keycan be used to store authentication credentials to be used byBACKUPandRESTORE. #19018
- The RESTORE DATABASEstatement is now supported. #19182
- IMPORTnow reports progress incrementally. #18677
- IMPORTnow supports the- into_dboption. #18899
- The date_trunc()function is now available. #19297
- New function gen_random_uuid()is equivalent touuid_v4()but returns typeUUIDinstead ofBYTES. #19379
- The extractfunction now works withTIMESTAMP WITH TIME ZONEin addition to plainTIMESTAMPandDATE. #19045
- TIMESTAMP WITH TIME ZONEvalues are now printed in the correct session time zone. #19081
- PostgreSQL compatibility updates: The pg_namespace.aclitemcolumn has been renamed tonspacl.pg_classnow has arelpersistencecolumn. New functionspg_encoding_to_char,pg_get_viewdef, andpg_get_keywords. Thepg_tablespacetable is now available. The type name"char"(with quotes) is recognized as an alias forCHAR. Session variableserver_version_numis now available. #18530 #18618 #19127 #19150 #19405
Command-Line Interface Changes
- A new flag --temp-dircan be used to set the location of temporary files (defaults to a subdirectory of the first store). #18544
- Many bugs in the interactive SQL shell have been fixed by switching to libeditfor command-line input. Thenormalize_historyoption has been removed. #18531 #19125
- New command cockroach load showdisplays information about available backups. #18434
- cockroach node statusand- cockroach node lsno longer show nodes that are decommissioned and dead. #18270
- The cockroach node decommissioncommand now has less noisy output. #18458
Bug Fixes
- Fixed issues when meta2ranges split, lifting the ~64TB cluster size limitation. #18709 #18970
- More errors now return the same error codes as PostgreSQL. #19103
- ROLLBACKcan no longer return a "transaction aborted" error. #19167
- Fixed a panic in SHOW TRACE FOR SELECT COUNT(*). #19006
- Escaped backslashes are now supported in regexp_replacesubstitution strings. #19168
- extract(quarter FROM ts)now works correctly. #19298
- The node liveness system is now more robust on a heavily-loaded cluster. #19279
- Added debug logging when attempting to commit a non-existent intent. #17580
Performance Improvements
- New cluster setting timeseries.resolution_10s.storage_durationcan be used to reduce the storage used by built-in monitoring. #18632
- Foreign key checks are now performed in batches. #18730
- Raft ready processing is now batched, increasing performance of uncontended single-range write workloads. #19056 #19164
- The leaseholder cache is now sharded to improve concurrency and uses less memory. #17987 #18443
- Finding split keys is now more efficient. #18649 #18718
- STDDEVand- VARIANCEaggregations can now be parallelized by the distributed SQL engine. #18520
- Store statistics are now updated immediately after rebalancing. #18425 #19115
- Raft truncation is now faster. #18706
- Replica rebalancing is now prioritized over lease rebalancing. #17595
- IMPORTand- RESTOREare more efficient. #19070
- Restoring a backup no longer creates an extra empty range. #19052
- Improved performance of type checking. #19078
- The replica allocator now avoids adding new replicas that it would immediately try to undo. #18364
- Improved performance of the SQL parser. #19068
- Cache strings used for stats reporting in prepared statement. #19240
- Reduced command queue contention during intent resolution. #19093
- Transactions that do not use the client-directed retry protocol and experience retry errors are now more likely to detect those errors early instead of at commit time. #18858
- Commands that have already exceeded their deadline are now dropped before proposal. #19380
- Reduced the encoded size of some internal protocol buffers, reducing disk write amplification. #18689 #18834 #18835 #18828 #18910 #18950
- Reduced memory allocations and GC overhead. #18914 #18927 #18928 #19136 #19246