CockroachDB v1.1 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 v1.1
For key feature enhancements in v1.1 and other upgrade considerations, refer to the notes for v1.1.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:
v1.1.9
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
Contributors
This release includes 1 merged PR by 1 author.
v1.1.8
Release Date: April 23, 2018
Bug Fixes
- Fixed potential cluster unavailability after Raft logs grow too large. #24889
ALTER INDEX ... RENAME
can now be used on the primary index. #24779- Fixed "dangling rows" left over by transactions including both a schema change and
ROLLBACK TO SAVEPOINT
. #24888
Contributors
This release includes 6 merged PRs by 4 authors.
v1.1.7
Release Date: March 26, 2018
This release includes several bug fixes and stability improvements.
Build Changes
- CockroachDB now builds with go 1.9.4 and higher. #23639
Bug Fixes
- Fixed a deadlock when tables are rapidly created or dropped. #23957
- Fixed a rare deadlock for transactions performing schema changes and encountering retryable errors. #23981
Contributors
This release includes 3 merged PRs by 2 authors.
v1.1.6
Release Date: March 12, 2018
This release includes several bug fixes and stability improvements.
General Changes
- Disabling diagnostics reporting also disables new version notification checks. #23008
Bug Fixes
- Prevented disruptions in performance when gracefully shutting down a node. #23302
- Fixed a zero QPS scenario when gracefully shutting down a node. #23306
- Fixed a panic caused by empty
COCKROACH_UPDATE_CHECK_URL
orCOCKROACH_USAGE_REPORT_URL
environment variables. #23008 - The conversion from
INTERVAL
toFLOAT
now properly returns the number of seconds in the interval. #22893 - Fixed a bug that caused queries of virtual tables with an explicit database name prefix (e.g.,
select * from mydb.crdb_internal.tables
) to not get scrubbed properly in diagnostics reporting. #22815 - A
COMMIT
reporting 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 aROLLBACK
is not necessary. #22814 - Fixed an issue with stale buffer data when using the binary format for
ARRAY
values. #22262 - Fixed a bug that caused SQL connection errors during node startup. #22663
- Fixed a bug that included decommissioned nodes in cluster stats aggregates. #22864
Contributors
This release includes 12 merged PRs by 11 authors. We would like to thank the following contributors from the CockroachDB community:
- Xudong Zheng
v1.1.5
Release Date: February 5, 2018
General Changes
- Removed error messages from SQL execution statistics included in diagnostic reporting. #21827
Enterprise Edition Changes
- When external storage is not accessible,
RESTORE
jobs no longer loop indefinitely during failure or cancellation. #21573
Bug Fixes
- 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. #21865
DROP INDEX
with an unqualified index name (without a specific table name) no longer fails if there are views in the database. #21857- Fixed tuple equality to evaluate correctly in the presence of
NULL
elements. #21237 - Fixed an issue with the wire-formatting of
BYTES
arrays. #21796 - Fixed a stack overflow in the code for shutting down a server when out of disk space. #21804
- Fixed incorrect logic in lease rebalancing that prevented leases from being transferred. #21442
Doc Updates
- Added best practices for optimizing SQL performance in CockroachDB. #2243
- Added more detailed clock synchronization guidance per cloud provider. #2295
- Added a tutorial on using our Kubernetes-orchestrated AWS CloudFormation template for easy deployment and testing of CockroachDB. #2356
- Improved the styling of code samples and page tocs. #2323 #2371
Contributors
This release includes 8 merged PRs by 8 authors.
v1.1.4
Release Date: January 8, 2018
SQL Language Changes
- For compatibility with PostgreSQL, the
transaction isolation level
,transaction priority
, andtransaction status
session variables have been renamedtransaction_isolation
,transaction_priority
, andtransaction_status
. #20301 - The
IMPORT
statement now supports201
and204
return codes from HTTP storage. #20516
Command-Line Changes
- Client
cockroach
commands that use SQL (cockroach sql
,cockroach node ls
, etc.) now print a warning if the server is running an older version of CockroachDB than the client. Also, this and other warning messages are now clearly indicated with the "warning:" prefix. #20945 - The
cockroach sql
command no longer fails when the server is running a version of CockroachDB that does not support thesql_safe_updates
session variable. #20945 - The
cockroach sql
command now performs client-side syntax checking automatically only if the client and server are running the same version of CockroachDB. This restriction will be lifted in CockroachDB v2.0. #21135 - Reduced temporary disk space usage for the
debug compact
command. #20502
Bug Fixes
- Improved rebalancing to make thrashing back and forth between nodes much less likely, including when localities have very different numbers of nodes. #20934
- Fixed a scenario where a range that is too big to snapshot can lose availability even with a majority of nodes alive. #20906
- Fixed a replica corruption that could occur if a process crashed in the middle of a range split. #20939
- Fixed an issue where seemingly irrelevant error messages were being returned for certain
INSERT
statements.#20855 - Crash details are now properly copied to the log file even when a node was started with
--logtostderr
as well as in other circumstances when crash details could be lost previously. #20842 - Fixed an issue where wildcards (
_
,%
) and `escaped characters in
LIKE` patterns were not handled properly. #20654 - Fixed the return type signature of the
array_positions()
built-in function. This caused a crash if the function was used in query execution by the distributed execution engine. #20652 - Fixed a crash caused by null collated strings. #20648
- Fixed a crash caused by
NATURAL JOINS
andUSING
in conjunction with a filter. #20582 - Fixed build when new versions of
libgtest
are installed. #20598 - Fixed a crash caused by an edge-case when queries are run against a table undergoing a schema change. #20541
- Fixed a race condition that would result in some queries hanging after cancellation. #20534
- Fixed a crash caused by some corner-case queries containing
ORDER BY
. #20512 - Prevented generating empty sstables at the storage layer, which could cause corruption. #20284
- Fixed a crash caused by
cockroach dump
in the presence of reference cycles. #20283 - It is no longer possible to use conflicting
AS OF SYSTEM TIME
clauses in different parts of a query. #20286 - Improved S3 resiliency during
BACKUP
/RESTORE
/IMPORT
. #21003
Performance Improvements
- Improved garbage collection of very large transactions and large volumes of abandoned write intents. #20446
Enterprise Edition Changes
Doc Updates
- Improved the initial steps for troubleshooting a problem, and added a list of common errors with recommended solutions. #2311
- Updated docs styling to increase information density. #2304
- Documented how to request and set trial and enterprise license keys for CockroachDB. #2278
- Fixed the placement of
AS OF SYSTEM TIME
in enterpriseBACKUP
examples. #2324 - Updated the secure Kubernetes tutorial with RBAC support. #2281
v1.1.3
Release Date: November 27, 2017
SQL Language changes
SHOW TRACE FOR SELECT
now supportsAS OF SYSTEM TIME
. #20187
Bug Fixes
Decommissioned nodes are now excluded from the staggered version warning. #19626
When an enterprise
RESTORE
fails or is canceled, partially restored data is now properly cleaned up. #19653Correctly resume
RESTORE
jobs that skip foreign keys. #20168Improved memory usage for certain queries that use
LIMIT
at multiple levels. #19688Fixed a panic in distributed SQL. #19828
Fixed grouping of
ANY/SOME/ALL
. #19831Fixed a panic in
SHOW KV TRACE
withCOUNT(*)
. #19868Fixed a panic involving the use of the
IN
operator and improperly typed subqueries. #19878Fixed a bug leading to incorrect results for some queries with
IN
constraints. #20040Fixed the encoding of indexes that use
STORING
columns. #20074Fixed a panic when updating
COLLATE
andDECIMAL
columns. #20074Avoid overloading the system during cleanup of large transactions. #20083
Fixed
PARTITION BY
multiple columns withWINDOW
functions. #20156Fixed a possible crash due to statements finishing execution after the client connection has been closed. #20183
Write prometheus vars outside the metrics lock. #20209
Doc Updates
- 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 a tutorial on CockroachDB's follow-the-workload capability. #2194
- Documented how to increase the system-wide file descriptors limit on Linux. #2139
- Clarified that multiple transaction options in a single
SET TRANSACTION
statement can be space-separated as well as comma-separated. #2139 - Added
e'\x
to 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
INT
types. #2116 - Corrected the description of the
--host
flag in our insecure cloud deployment tutorials. #2117
v1.1.2
Release Date: November 2, 2017
SQL Language Changes
Bug Fixes
Reverted the default behavior of
DROP DATABASE
toCASCADE
for compatibility with PostgreSQL, some schema migration tools, and CockroachDB v1.0. #19209Fixed a bug preventing crash reports from being submitted with anonymous diagnostics details. #19563
Important errors such as "writes: no space left on device" are now included in crash reports. #19314
The
cockroach dump
command now properly supportsARRAY
values and primary keys named other than "primary". #19526 #19400It is now possible to use AWS S3 buckets in any region for
IMPORT
and enterpriseBACKUP
andRESTORE
. #19473Reduced unnecessary log messages when a cluster becomes temporarily unbalanced, for example, when a new node joins. #19494
Fixed a bug causing redundant log messages when running
SHOW TRACE FOR
. #19469ARRAY
values containing strings with multiple consecutive escapes are now parsed properly. #19452Fixed a bug causing certain queries with
ORDER BY
to return incorrectly ordered results when the ordering columns contain NULL values. #19419Fixed
NATURAL JOIN
operations (where the join clause is implicit based on the common columns in the tables being joined) when one side of the join is a subquery. #19544Improved the handling of errors during range splits. #19448
Fixed a bug causing correctness problems when nodes run out of disk. #19447
Fixed a bug causing the decommissioning process to hang when the target node is already decommissioned. #19279
Fixed a bug preventing aborted transactions from seeing their own writes. #19093
Improved performance for some transaction conflicts. #19093
Doc Updates
- Added a known limitation about downgrading to v1.1.0 from a later v1.1.x patch release. #2095
- Corrected the aliases and allowed widths of various
INT
types. #2116 - Corrected the description of the
--host
flag in our insecure cloud deployment tutorials. #2117 - Minor improvements to the CockroachDB Architecture Overview page. #2103 #2104 #2105
v1.1.1
Release Date: October 19, 2017
SQL Language Changes
Bug Fixes
SET CLUSTER SETTING version = '1.1'
now works correctly. You issue this command when finalizing a cluster upgrade from 1.0.x to 1.1.1. #19225- Created, dropped, or truncated tables no longer result in non-restorable backups. #19067
- Some issues that could cause non-restorable backups are now detected during the backup process. #19286
- Fixed a deadlock in the crash reporting code, making more information available about certain fatal errors. #19287
- Very large arguments to the SQL
repeat()
function now return an error instead of panicking. #19066 - It is now possible to drop a foreign key constraint on a column that is part of the primary key. #19092
- Attempting to use
SHOW TRACE FOR
while session tracing is enabled no longer turns off session tracing. #19099 SHOW TRACE FOR
no longer includes detailed KV-level information (these messages are included in the separateSHOW KV TRACE FOR
command). #19143
v1.1.0
Release Date: October 12, 2017
With the release of CockroachDB v1.1.0, we’ve included support for faster migrations from other databases for developers, simplified cluster management for operators, and improved performance in real-world environments.
- Read more about these changes in the v1.1 blog post.
- Check out a summary of backwards-incompatible changes and new features.
- Then upgrade to CockroachDB v1.1.0. The process of upgrading from v1.0.x to v1.1.0 is different than upgrading within the v1.0.x series, so please follow the upgrade instructions carefully.
Summary
This section summarizes the most significant user-facing changes in v1.1.0. For a complete list of changes, including bug fixes and performance improvements, see the release notes for previous testing releases.
- Backwards-Incompatible Changes
- SQL Statements
- SQL Types
- Cockroach Commands
- Admin UI
- Documentation
- Known Limitations
Backwards-Incompatible Changes
Change | Description |
---|---|
DROP DATABASE |
This statement no longer drops non-empty databases unless the CASCADE modifier is added. |
cockroach start |
The --max-sql-memory and --cache flags now default to 128MiB instead of 25% of physical memory. These new defaults are reasonable for local development clusters. However, for production deployments, they should be increased to 25% or higher. See Recommended Production Settings for more details.Also, if the server's own hostname cannot be resolved, CockroachDB reports an error at startup instead of starting a node that will be unable to participate in a cluster. Local test clusters may need to pass --host=localhost to avoid this error. |
Various names | Database, table, view, and column names in double quotes are now case-sensitive (as in PostgreSQL). |
DROP COLUMN |
It is no longer possible to drop columns in tables depended on by views. This is an overly-broad change to avoid schema changes that might break views; it will be narrowed in the future. |
EXPLAIN (DEBUG) EXPLAIN(TRACE) |
These EXPLAIN options have been removed. They have been replaced by the new SHOW TRACE statement. |
SQL Statements
Statement | Description |
---|---|
IMPORT |
Use this new statement to import an entire table's data into a running cluster by loading CSV files. |
SHOW QUERIES CANCEL QUERY |
Use these new statements to monitor the progress of active queries, and, if necessary, cancel long-running queries causing unwanted resource consumption. |
SHOW SESSIONS |
Use this new statement to monitor the overall state of client connections and identify those that may need investigation or adjustment. |
SHOW JOBS |
Use this new statement to monitor the progress of schema changes and enterprise backups and restores. |
CANCEL JOB PAUSE JOB RESUME JOB |
Use these new statements to cancel, pause, or resume enterprise backups and restores. |
SHOW BACKUP |
Use this new statement to list the contents of an enterprise backup. |
SHOW TRACE |
Use this new statement to execute a target statement and then return a trace of its actions through all of CockroachDB's software layers. |
DROP USER |
Use this new statement to remove one or more SQL users. This features is equivalent to the existing cockroach user rm command. |
RESET |
Use this new statement to reset a session variable to its default value. You can also use the new SET .. TO DEFAULT option. |
RESET CLUSTER SETTING |
Use this new statement to reset a cluster setting to its default value. You can also use the new SET CLUSTER SETTING .. TO DEFAULT option. |
DROP DATABASE |
Use the new CASCADE option to drop all tables and views in a database as well as all objects that depend on those tables, such as constraints and views. This option does not list objects it drops, so should be used cautiously. |
INSERT |
Use a WHERE clause with ON CONFLICT to conditionally apply updates that conflict with a Unique constraint on one or more columns. |
SQL Types
Type | Description |
---|---|
ARRAY |
Use this new data type to store 1-dimensional, 1-indexed, homogeneous arrays of any non-array data type. |
UUID |
Use this new data type to store 128-bit values that are globally unique. This type is recommended for auto-generating unique row IDs. |
Cockroach Commands
Command | Description |
---|---|
init |
Use this new command to perform a one-time initialization of a new multi-node cluster. For a full walk-through of the cluster startup and initialization process, see Manual Deployment or one of the Cloud Deployment tutorials. |
node decommission node recommission |
Use these new subcommands of cockroach node to decommission nodes for permanent removal or recommission nodes that were accidentally decommissioned. See Remove Nodes for more details. |
start |
When starting a node, the new --max-disk-temp-storage flag lets you set the maximum on-disk storage capacity available to store temporary data for SQL queries that exceed the memory budget. This ensures that JOINs, sorts, and other memory-intensive SQL operations are able to spill intermediate results to disk. |
sql |
When starting the built-in SQL client, the new --echo-sql flag reveals the SQL statements sent implicitly by the command-line utility, and the new --unsafe-updates flag allows potentially unsafe statements, such as DELETE without a WHERE clause.Within the interactive SQL shell, you can now get interactive help about statements and functions and you can set new SQL shell options to control how table rows get printed, to reveal the statements sent implicitly by the SQL shell, to reveal the time a query takes to complete, and to return the current status of a transaction. Also, when the built-in SQL client connects or reconnects to a node, the welcome text it prints now includes version and cluster ID details. |
dump |
Table and view schemas are now dumped in the order in which they can successfully be recreated. Also, the new --echo-sql flag reveals the SQL statements sent implicitly by the command-line utility. |
zone |
The new --echo-sql flag reveals the SQL statements sent implicitly by the command-line utility. |
Admin UI
Area | Description |
---|---|
Jobs Page | This new page in the Admin UI shows the user, description, creation time, and status of each backup and restore job, as well as schema changes performed across all nodes in the cluster. |
Nodes List | Nodes that have been decommissioned for permanent removal are now listed in a separate table. |
Documentation
Topic | Description |
---|---|
CockroachDB Architecture | This new section of the documentation provides an introduction to CockroachDB internals, with detailed explanations of each layer of the software. |
Admin UI | This new section of the documentation explains how to understand and use the Admin UI to monitor and optimize cluster performance. |
Parallel Statement Execution | CockroachDB supports parallel execution of independent INSERT , UPDATE , UPSERT , and DELETE statements within a single transaction. This new topic explains why, how, and when to use this feature. |
Cross-Cloud Migration | This new topic walks you through a local simulation of migrating data from one cloud to another without any service interruption. An accompanying blog post features a live demonstration of the process. |
Recommended Production Settings | This topic now provides improved hardware recommendations for a CockroachDB cluster and expanded details on how CockroachDB handles unsynchronized clocks. |
Rotate Security Certificates | This new topic shows you how to rotate security certificates without restarting nodes. |
Stop a Node | This topic now explains what happens when a node is temporarily stopped. |
Contribute to CockroachDB | This topic now gives external contributors guidelines on finding a project, determining its complexity, and learning what to expect in collaborations with the Cockroach Labs team. |
Known Limitations
For information about limitations we've identified in CockroachDB v1.1, with suggested workarounds where applicable, see Known Limitations.
v1.1.0-rc.1
Release Date: October 5, 2017
Build Changes
- Docker images now contain root CA certificates, permitting the use of
BACKUP
andRESTORE
on cloud storage. #18959 - Docker images are now built without caching to ensure they contain the latest packages at the time of release. #18999
Command-Line Interface Changes
- Timestamps in logs now use UTC regardless of the system time zone. #18764
- Added an explanatory message when
--background
is used and the node is waiting to join an existing cluster or forcockroach init
to be run. #18840
Bug Fixes
SERIALIZABLE
transactions should no longer return "transaction deadline exceeded". #18852- Transaction deadlines are now updated properly when a transaction restarts. #18943
- Fixed a panic when an error was generated in
COMMIT
orROLLBACK
. #18937 - Fixed a panic in queries with
JOIN
using the distributed SQL engine. #18975 - Reverted a change in beta-20170928 to asynchronously refresh table leases when near expiration. #18862
- Casting
TIMESTAMP WITH TIME ZONE
toTIMESTAMP
respects the session time zone. #18764 - Range debug pages now work when a replica is awaiting garbage collection. #18941
- Temporary directory cleanup now works correctly on
overlayfs
. #19000
Doc Updates
- Documented the
cockroach init
command and updated the manual and cloud deployment tutorials to use the new cluster initialization workflow. #1942 - Updated various diagrams in our SQL statement documentation. #1946
- Documented the
DROP USER
statement, and updated related docs to clarify that removing a user does not automatically remove the user's privileges; that must be done manually. #1954 - Updated the Rust transaction code sample to work against PostgreSQL v0.15.1. #1941
- Updated the ActiveRecord tutorial to clarify the dependency between the ActiveRecord version and the CockroachDB Ruby adapter. #1949
- Clarified that window functions are supported by CockroachDB (more docs coming soon). #1948
- Updated the
SHOW CREATE TABLE
example to show improved output for foreign key dependencies. #1953
v1.1-beta.20170928
Release Date: September 28, 2017
Build Changes
- The release docker images now use Debian 8.9 (instead of 8.7) #18755
SQL Language Changes
- The
IMPORT
command is now considered an experimental feature and must be enabled before use with the cluster settingexperimental.importcsv.enabled
. #18753 - The cluster settings beginning with
sql.defaults.distsql.tempstorage
have been renamed to begin withsql.distsql.temp_storage
. #18487 - The new
sql.distsql.temp_storage.workmem
cluster setting sets the memory threshold at which a DistSQL processor falls back to on-disk storage. Defaults to 64MiB. #18487 - The
SHOW JOBS
statement no longer shows numeric descriptor IDs. #18797
Command-Line Interface Changes
- The new
--max-disk-temp-storage
flag for thecockroach start
command controls how much disk space can be used for temporary storage. #18761 - The
cockroach load csv
command now increases its soft limit on the number of open file descriptors when possible. #18678 - The
cockroach init
command now provides a better error message when run on an already-initialized cluster. #18548
Admin UI Changes
- Reduced false positives when marking nodes as "suspect". #18563
- The Jobs page can now be limited to import jobs. #18615
- The Keys Written per Second per Store graph on the Replication dashboard is now accurate. #18800
- Fixed the display of the number of indexes per table. #18769
Bug Fixes
- Fixed a bug in which queries using
DISTINCT
orGROUP BY
could return incorrect results. #18727 - After some results have been streamed to the client, queries are no longer auto-retried. #18515 #18569
- Tables with no columns now work correctly. #18532
- The
cockroach dump
command now supports values of typeUUID
. #18543 - The distributed SQL engine now avoids scheduling work on nodes running version 1.0.x in a mixed-version cluster. #18546
- The distributed SQL engine no longer attempts to schedule work on decommissioned nodes. #18698
- The
TRUNCATE
statement now works correctly on tables in the middle of a schema change (the schema change finishes immediately on the now-empty table). #18549 - Fixed a panic in
tableState.findForTimestamp
#18557 - Fixed a bug in which importing a CSV would fail to report unique constraint violations. #18563
- Fixed a bug when importing a CSV into a table with multiple column families. #18563
SHOW TRACE
now works correctly when ipv6 is used. #18567- Foreign key checks are now included in
SHOW KV TRACE
. #18568 - Fixed the display of version numbers. #18562
- Improved tracing of range lookups #18613
- Fixed an overflow check in key decoding. #18639
- Fixed a trace use-after-finish panic. #18645
- Fixed a panic in
disk_row_container
. #18685 - Improved some error reporting. #18708
- Fixed zone config problems after dropping or truncating a table. #18781
SHOW CLUSTER QUERIES
andSHOW CLUSTER SESSIONS
no longer panic when a node is down. #18802- Fixed a bug with queries using
COUNT(*)
and tables containing multiple column families. #18805
Performance Improvements
- Improved performance of foreign key checks. #18597
- Table leases are now refreshed asynchronously when near expiration. #18824
- Improved performance of
COUNT(*)
queries. #18524 - Reduced some noisy log messages. #18589
- Distributed CSV import is now aware of the target range size. #18634
- The GC queue now gives up earlier after a timeout. #18672
- The distributed SQL engine now supports array values. #18792
- Improved load-based lease rebalancing for distributed SQL queries. #18794
Doc Updates
- In the
cockroach dump
documentation, clarified that table and view schemas are dumped in the order in which they can successfully be recreated. Also added this as a known limitation in CockroachDB v1.0. #1923 - Added a message when searches of the documentation return no results. #1927
v1.1-beta.20170921
Release Date: September 21, 2017
Admin UI Changes
- New debug endpoint
/debug/logspy
can be used to access verbose logging remotely (when remote debugging is enabled). #18221 #18415 - Improvements to debug pages. #18411 #18498
Bug Fixes
- Improve diagnostic messages for nodes incorrectly restarted without the
--join
flag. #18203 - Ranges can no longer become quiescent while a leadership transfer is in progress. #18217
- Fixed an issue with cached raft terms that could result in unavailable ranges. #18338
- Fixed serialization of negative integers in the distributed SQL engine. #18323
- Fixed bugs in reverse scans. #18383
- Fixed bugs in sideloaded raft storage (used by
RESTORE
andIMPORT
). #18409 #18466 #18481 - Improved implementation of the
COPY
protocol. #18259 - Failure to find a table name no longer aborts the current transaction. #18373
pg_table_is_visible
now qualifies table names correctly. #18373- Fixed an interaction between RocksDB DeleteRange operations and snapshots. #18380 #18446
Performance Improvements
- Prevented rapid retries of non-queueable "push transaction" operations. #18196
- Fixed busy loop in the replication queue. #18465
- Rebalancing is no longer disabled temporarily after a lease transfer. #18230
Doc Updates
- Documented how to perform a rolling upgrade from v1.0.x to v1.1. #1899
- Documented how to decommission and permanently remove nodes from a cluster. #1876
- Added an explanation of what happens when a node is temporarily stopped, and improved the examples for stopping nodes. #1899
- Updated the default
--cache
and--max-sql-memory
size for nodes, and added guidance on increasing the cache and SQL memory size for production deployments. #1906 - Documented the new
--unsafe-updates
flag and new SQL shell options for thecockroach sql
command. #1905 - Documented the new
--echo-sql
flag for thecockroach sql
,cockroach dump
,cockroach user
, andcockroach zone
commands. #1905 - Added the
CASCADE
andRESTRICT
options to theDROP DATABASE
documentation. #1903
v1.1-beta.20170907
Release Date: September 7, 2017
Backwards-Incompatible Changes
DROP DATABASE
no longer drops non-empty databases unless theCASCADE
modifier is added. #17926- The
--cache
and--max-sql-memory
flags for thecockroach start
command now default to 128MiB instead of 25% of physical memory to avoid using too much memory by default. Production deployments are encouraged to set--cache
explicitly to 25-50% of the memory allocated to CockroachDB for best performance. #18040
SQL Language Changes
- The new
IMPORT
statement provides a fast way to import an entire table's data into CockroachDB by loading CSV files. Although this feature uses CCL-licensed code, and is therefore available only in builds that include CCL-licensed code, using it is free and does not require an enterprise license. #17539 - The
DELETE
andUPDATE
statements now supportORDER BY
andLIMIT
clauses. #18023 - The
sql_safe_updates
session variable can be set to disable certain "dangerous" SQL statements, such asDELETE
orUPDATE
without aWHERE
clause. This is set by default in thecockroach sql
shell. #17604 #17889 - Parsing of the
DATE
type is no longer affected by the session time zone. #18164 - Type hints are now permitted even when they are imprecise, improving compatibility with some drivers and frameworks. #16672
- Untyped string literals can now be implicitly cast to numbers, improving compatibility with Javascript clients. #15903
- Query cancellation is now supported for queries using the distributed SQL engine. #17527
- The output of
SHOW SESSIONS
now includes alast_active_query
column. #17579 - The
SET TRANSACTION
statement no longer requires commas when multiple directives are given. #17723 - The PostgreSQL-compatible
e'\x0d0a...'
syntax for hex-encoded byte literals is now supported. #17693 - Star expansion is now supported in more cases. #17833
- The
information_schema.sequences
table is now supported; it is always empty as sequences are not yet supported. #17804 - Improved support for
GROUP BY
andORDER BY
with tuples. #17888 - Statements that spawn jobs (
BACKUP
,RESTORE
, schema changes) no longer appear inSHOW QUERIES
. #17786 - The
CANCEL
,RESUME
,PAUSE
,BACKUP
,RESTORE
, andIMPORT
statements are now valid in prepared statements. TheSET
statement now supports placeholders for values in prepared statements. #17805 #17591
Command-Line Interface Changes
- Fatal error messages are now printed to both
stderr
and the logs. #17588 - The
cockroach dump
command now understands views and orders tables to satisfy foreign key constraints (as long as there are no cycles). #17581 - The
cockroach dump
command correctly represents values such asNaN
andInf
. #18031 - The
cockroach sql
shell now supports ah
command for "help". Context-sensitive syntax help is available by typing a question mark followed by the tab key while typing a command. #13540 - The
cockroach sql
shell now sets a defaultapplication_name
ofcockroach
. #17602 - The
cockroach sql
shell now prints hints and warnings when available from the server. #17604 - The
cockroach sql
shell has new debugging optionsset echo
(and an equivalent command-line flag--echo-sql
) andunset smart_prompt
. #18127
Admin UI Changes
- Various debugging pages are now available at
/#/debug
. #17635 - Changes to cluster settings are now recorded in the event log. #17619 #17866
- The Live Bytes per Store graph has been replaced with Logical Bytes per Store, which includes the size of old MVCC values waiting to be garbage collected. #17782
- The
/debug/vmodule/
endpoint has been removed; use the SQL functioncrdb_internal.set_vmodule()
instead. #17792 #17914 - When diagnostic reporting is enabled, anonymous web analytics are also collected in the admin UI. #17937 #18046 #18125
- Local tracing is now always enabled when nodes start up (even though it will be disabled by default when the node is fully initialized). This helps diagnose problems that keep a node from joining its cluster. #17944
- Various adjustments to fonts and margins. #16773 #17673
Bug Fixes
- Fixed a regression in the command queue (introduced in
alpha-20170810
) that could result in data inconsistencies. #17939 - Fixed a bug in range quiescence that could result in some ranges getting stuck indefinitely. #18184
- Foreign keys that point to a prefix of an existing index now work correctly. Previously, rows could be deleted from the referenced table without recognizing the constraint violation if rows in the referring table pointed to them. These foreign keys are also now shown correctly in
SHOW CREATE TABLE
. #17638 - Fixed a bug in
ReverseScan
that could cause data to be missing from query results. #17868 - Fixed a build error on FreeBSD. #17650
- Windows builds no longer fail with
SyncWAL
errors. #17735 - Improved error handling to reduce panics when unsupported SQL features are attempted. #17521
- Corrected computation of lease type metrics. #17615
- More errors now return the correct PostgreSQL error code, and use the protocol's "hint" and "detail" fields. #17630 #17708 #18028 #13540
- Improved error message for parse errors containing funny characters like carriage returns. #18095
- Queries are not removed from
SHOW QUERIES
orSHOW SESSIONS
until all their results have been sent to the client. #17579 - The crash reporter will now time out instead of waiting indefinitely to reach the server. #17683
- gRPC no longer closes inter-node connections unnecessarily. #17706
- Fixed
duplicate key value
errors when performing large number of splits. #17763 - Fixed a deadlock in
quotaPool
. #17796 - Fixed a deadlock in
RangeLookup
duringSCATTER
. #17760 - The distributed SQL engine avoids scheduling work on nodes running an incompatible version. #17747
AS OF SYSTEM TIME 0
is now a normal error instead of a panic. #17680- Fixed a panic in
distSQLPlanner
. #17852 - Fixed a flow control leak that could lead to deadlock. #17856
- Parallelized queries now handle retryable errors correctly. #17627
- Nodes now panic if they fail a consistency check. The
server.consistency_check.interval
cluster setting replaces theCOCKROACH_CONSISTENCY_CHECK_INTERVAL
environment variable for configuring the consistency checker. #17853 - Dropping an interleaved index no longer leaves the table in a broken state. #17860
- Changed "flow already registered" from a panic to a regular error. #17876
- Certain code paths that used to panic on invalid UTF-8 inputs now return an error instead. #17935
- Fixed a memory accounting panic in top-K sorting. #17984
- It is no longer possible to set the
kv.raft.command.max_size
cluster setting to a very low value (which could make the cluster inoperable). #17991
Performance Improvements
- Stats-based rebalancing is now disabled by default. #17968
- Reduced unnecessary rebalancing. #17613
- The rebalancer now avoids removing the most recently-added replica. #17930
- Increased the size of the leaseholder cache. #17623
- The new
kv.range_descriptor_cache.size
cluster setting can be used to control the size of the range descriptor and leaseholder caches. #17940 - Reduced the size of the timestamp cache by 50%. #17983
- Replaced several
sync.Maps
with a faster specializedIntMap
. #17625 - Improved job recovery after node restarts. #17590
- Reduced synchronization overhead for quiesced replicas. #17617
- Increased the number of allowed gossip connections to reduce thrashing. #17633
- The
ALTER TABLE ... SCATTER
statement is more efficient. #17644 - Attempting to add a column with the
NOT NULL
constraint but no default value now fails earlier. #17634 - The
sql.defaults.distsql.tempstorage
cluster setting now defaults to true. #17665 - Improved rebalancing on clusters with little data. #17733
- Improved performance of raft log truncation. #17818
- The "node liveness" span is now split by default to minimize interactions with the timeseries span. #17810
- "Slow timer" log messages are no longer repeated. #17828
- Set-returning functions used without a
FROM
clause no longer generate a cross-join. #17835 - Memory needed for the RocksDB memtable now counts towards the cache memory budget. #17865
- Reduced log spam for distSQL memory usage. #17807
- Tracing no longer records the transaction ID multiple times. #17954
- MVCC garbage collection is now faster when there are many records to collect. #17986
- Reduced occurrence of
AmbiguousResultError
due to RPC failures. #18000 - Outer joins with filters are now more efficient. #18017
- Added a timeout to heartbeat requests. #18005
- Sideloaded data is now correctly accounted for in raft log truncation decisions, reducing disk usage after a
RESTORE
completes. #18090 - Sideloaded raft log storage avoids creating too many subdirectories in one parent directory. #17787
- Fixed integer overflow in
generate_series()
. #18066 INSERT
statements usingRETURNING NOTHING
that target different rows in the same table can now be parallelized. #17757- The timeout used for intent resolution has been increased to reduce the probability of failed resolutions that need to be retried. #18155
Doc Updates
- Documented why and how to use
RETURNING NOTHING
to execute statements within a transaction in parallel. #1790 - Documented SQL statements for managing queries and sessions:
SHOW QUERIES
,CANCEL QUERY
,SHOW SESSIONS
. #1828 - Added a quick reference on Managing Long-Running Queries. #1828
- Documented the
SHOW BACKUP
statement. #1869 - Added overview pages for the
ALTER DATABASE
andALTER INDEX
statements that point to pages for relevant subcommands, e.g.,RENAME DATABASE
andRENAME INDEX
. #1869 - Documented the
ARRAY
andUUID
data types. #1837 #1834 - The RFC process has been updated. #17568
- Updated the Contribute to CockroachDB page to provide guidelines on finding a project, determining its complexity, and learning what to expect in your collaboration with the Cockroach Labs team. #1881
Enterprise Edition Changes
- The initial split/scatter phase of large
RESTORE
jobs is now much faster. #18043 - End times are now recorded correctly in backup descriptors. #17908
- Avoided slowdowns when multiple backup/restore goroutines attempt to update their progress simultaneously. #17934
RESTORE
now uses larger SSTables to avoid running out of file descriptors. #17991 #18037- Fixed a deadlock in
RESTORE
. #18101
v1.1-alpha.20170817
Release Date: August 17, 2017
SQL Language Changes
- New statements
PAUSE JOB
,RESUME JOB
, andCANCEL JOB
can be used to control enterprise backup/restore jobs. #17434 ARRAY
values now support the append (||
) and equality (=
) operators. #17318- New functions
array_append()
,array_cat()
,array_prepend()
,array_remove()
,array_replace()
,array_position()
, andarray_positions()
are now supported. #17331 - Collated strings are now supported in arrays. #17489
- Arrays can now be created with the syntax
<type> ARRAY
in addition to<type>[]
. #17455 INSERT ... ON CONFLICT DO UPDATE
statements now supportWHERE
clauses. #17435
Command-Line Interface Changes
- New commands
cockroach node decommission
andcockroach quit --decommission
can be used to permanently and safely remove nodes from a cluster. #17272 - The
cockroach node status
command now supports several new flags to return subsets of a node's information. #17555
Admin UI Changes
- Running jobs (schema changes and enterprise backup/restore) now show their estimated time remaining, instead of estimated total running time. #17559
- Decommissioned nodes are now reflected in the UI. #17553
Bug Fixes
- View dependency analysis (which prevents
DROP
of tables that are used by views) is more accurate for newly-created views. #17310 - Range splits are no longer allowed in the
meta2
range; this limits the scalability of a cluster but prevents certain panics in large clusters. #17565 - 3DES has been removed from the list of supported TLS cipher suites (it would never be selected because we require TLS 1.2, but it could be reported as a false positive by security scanners). #17237
- Fixed a panic in destroyed replicas. #17303
ALTER TABLE ... SCATTER
once again returns information about the affected ranges. #17409- Fixed a data race in table leases. #17510
- Time-travel queries can no longer read tables before they were created. #17378
Performance Improvements
- The
rocksdb.min_wal_sync_interval
cluster setting now defaults to zero, improving write performance in most cases. #17601 - Results are now streamed back to the client as they are produced instead of being buffered. #17019
- Query processing can now take advantage of on-disk storage, rather than erroring out when the working set of the query is too large to fit in memory. This is turned off by default in this release, but can be enabled by setting the
sql.defaults.distsql.tempstorage
cluster setting to true. - Improved diversity-based rebalancing of replicas. #17570
- Stats-based rebalancing handles empty stores and ranges better. #17593
Doc Updates
- Updated the Go-specific transaction code sample. #1816
- Updated the flag and response field definitions for the
cockroach version
command.
v1.1-alpha.20170810
Release Date: August 10, 2017
SQL Language Changes
- The
RETURNING
clause can now be used withUPSERT
andINSERT .. ON CONFLICT DO UPDATE
statements. #17149
Command-Line Interface Changes
- The
cockroach sql
shell now prints the running time of each statement (only in interactive shells using thepretty
output format). #17358
Bug Fixes
- Fix a panic when parsing an interval consisting only of
+
or-
characters. #17344 - Improved responsiveness of query cancellation. #17219
- Prepared statements with more than 65535 arguments now return an error instead of crashing the server. #17380
- Improved tracing for batches that get split across multiple ranges. #17414
Performance Improvements
- Rebalancing now considers data size and write load, not just number of replicas. #16878
- The default MVCC garbage collection TTL has been changed from 24 to 25 hours, allowing statements (especially
dump
orBACKUP
) started at the 24h mark to be completed. #17366 - Reduced number of goroutines used in the command queue. #9448
Doc Updates
- Improved the UX of the documentation version selector on mobile devices. #1670
- Expanded the instructions for upgrading a cluster's version. #1769
- Added an example for using a
WHERE
clause to apply anINSERT .. ON CONFLICT .. DO UPDATE SET
expression conditionally. #1803
Enterprise Edition Changes
- The
SHOW BACKUPS
statement now includes information about table size. #17261 - Backup and restore jobs now restart if their coordinating node dies. #17301
- Restoring multiple tables now allocates table IDs in the correct order. #17412
v1.1-alpha.20170803
Release Date: August 3, 2017
Backwards-Incompatible Changes
- Table and column names in double quotes are now case-sensitive (same as in PostgreSQL). #16884
- The
SHOW SESSION TRACE
statement is nowSHOW TRACE FOR SESSION
. TheSET/SHOW TRACE
statements are nowSET/SHOW TRACING
. #17033 - It is no longer possible to drop columns in tables depended on by views. This is an overly-broad change to avoid schema changes that might break views; it will be narrowed in the future. #17280
Build Changes
- It is now possible to build CockroachDB Enterprise Edition for Windows. #17035
make help
in a source checkout now prints documentation for the available build targets. #17056- CockroachDB now uses gRPC version 1.5.0. #17166
SQL Language Changes
- New statement
CANCEL QUERY
can be used to cancel a query in progress. #17003 - A limited form of one-dimensional
ARRAY
columns are now supported. #16764 #17231 OUTER JOIN
statements now use the distributed SQL execution engine. #17017- Some new syntactic forms for table references with aliases are now supported. #17031
- Strings within arrays are now formatted consistently with PostgreSQL. #17069
- Transactions can now see their own changes to table schemas. #16988
RETURNING
clauses now accept fully-qualified table names. #17293- Improved handling of null as a function argument. #17264
Command-Line Interface Changes
- A new
cockroach init
command can be used in place of starting one node without the--join
flag. #16371
Bug Fixes
- We removed a behavior causing statements in the first batch of a transaction to essentially defer their retryable errors until COMMIT; now, instead, we automatically retry statements in the first batch. As a result, fewer retryable errors should be encountered by COMMIT. #16874
- Fixed a race condition that could lead to serializability violations when requests race with a lease transfer. #17109
- Fixed a potential raft election issue during range splits. #17051
- Fixed a use-after-close for parallelized statements. #17126
- Fixed some panics in
ORDER BY INDEX
. #17314
Performance Improvements
- The
TRUNCATE
statement now works by renaming the table and asynchronously garbage collecting the data, so it is much faster but no longer transactional (similar to PostgreSQL). #17045 - Fixed a memory leak in the HTTP layer. #17080
- Raft log truncations are now more efficient. #16993
- Fixed a regression that caused a node to talk to itself over the network. #17196
- Improved networking efficiency when tracing is disabled. #17185
- Reduced redundant trace messages. #17182
- Added a fast path for committing read-only transactions. #17128
- Memory footprints of various internal structures have been reduced. #17089 #17106 #17138 #17137 #17152
- Table descriptors are now passed by reference instead of value. #17100
Doc Updates
- New RFCs: web session authentication (#16829), buffering hash router (#17105
- Corrected information about how
TIMESTAMP WITH TIME ZONE
works. Previous versions incorrectly said that they stored timestamps; they do not. Instead they simply display timestamps in the client's session time zone. - CockroachDB in Comparison was redesigned.
Enterprise Edition Changes
- Replayed commands during a
RESTORE
are now more efficient. #17079 - Backup jobs now checkpoint their progress every minutes. #17070
- Streamlined concurrency of
RESTORE
operations, removing most tunable constants. #17163 RESTORE
now rate-limits its disk I/O, reducing its impact on other traffic and improving performance on cloud platforms that throttle disk access. #17239- The
enterprise.enabled
setting has been removed. #17224
v1.1-alpha.20170720
Release Date: July 20, 2017
Build changes
- CockroachDB binary releases are now compatible with older CPUs (previous builds required SSE4.2; new ones only require SSE3). #16949
- CockroachDB has reverted from
jemalloc
5.0.1 to 4.5 due to observed memory leaks. #17055
SQL Language Changes
- New syntax
ORDER BY PRIMARY KEY tbl
orORDER BY INDEX tbl@idx
can be used as shorthand to sort results by the columns in an index. #17023 - Parentheses are now optional when calling the
current_schema
function, improving compatibility with PostgreSQL. #16921 - The text format of
DECIMAL
values now uses scientific notation when appropriate. #17029
Command-Line Interface Changes
- The
cockroach sql
shell now correctly handles errors that occur once some results have been received. #17042
Admin UI Changes
- New graphs for "live bytes per store" and "keys written per second per store". #16982
Bug Fixes
- Fixed spurious errors when updating primary key columns while a schema change is in progress. #16866
- Fixed issues with diagnostic reporting. #16955
- Fixed a race in distsql draining. #17012
Performance Improvements
- The
DROP TABLE
statement now returns as soon as the table name is no longer in use, instead of waiting for all data to be deleted. #17016 - Improved batching of disk syncs, improving write throughput and latency. #16942 #16976
- Queries containing
VALUES
clauses can now use the distributed SQL engine. #16849 - Reduced lock contention in node liveness updates. #16918
- Improved performance of the raft storage layer. #16945
- Improved performance of large batches spanning multiple ranges. #16946
- Removed all non-test uses of
reflect.DeepEqual
. #16960 - Fixed "context cancellation after 0.0s" log spam. #17014
- Improved implementation of
ALTER TABLE SCATTER
. #16249
Enterprise Edition Changes
- New command
cockroach load csv
can convert CSV files into a format compatible withRESTORE
. #16611 - Reduced write amplification in
RESTORE
. #16990 #16924 - Improved performance of SSTable ingestion. #17018
Doc Updates
- New RFCs: monitor jobs from SQL (#16688), resume interrupted backup/restore jobs (#16633)
- Updated the sample secure Kubernetes configuration. #16740
- Added docs on the cluster and version details that are printed upon connecting the built-in SQL shell to a node. #1714
- Improved the UX of the Install CockroachDB page. #1711
- Completed documentation on the
UPDATE
statement. #1707 - Published a video demo of cross-cloud deployment and migration. #1702
v1.1-alpha.20170713
Release Date: July 13, 2017
Backwards-Incompatible Changes
- The
EXPLAIN (DEBUG)
command has been removed. It is replaced bySHOW TRACE FOR
. #16694
General Changes
- CockroachDB now uses RocksDB 5.5.1,
jemalloc
5.0.1, Snappy 1.1.5, and protobuf 3.3.2. #16852 #16872 #16879 #16909 - C++ dependencies are now managed via submodules. #16859
SQL Language Changes
- Additional numeric types
INT2
,INT8
,FLOAT4
, andFLOAT8
are now supported. #16720 - The new
SHOW JOBS
statement can show the state of backups, restores, and schema changes. #16733 - The new
DISCARD ALL
statement can be used to reset all session state. #16746 - The new
node_id
session variable contains the ID of the gateway node. #16703 - The new
trace.zipkin.collector
cluster setting can now be used to report trace data to Zipkin. #16903 - The
SHOW CREATE TABLE
statement and similar introspection mechanisms now remember more precise type information, such as whether the column was created asINT8
orINT64
. #16548 - It is now possible to query
information_schema
orpg_catalog
for other databases. #16760 ROLLBACK TO SAVEPOINT
is now accepted at any time. #16846- Improved type inference for
ON CONFLICT DO UPDATE
clauses. #16910
Command-Line Interface Changes
- Colored log output is now used on more terminal types. #16710
- The SQL shell prints the client and server version number at startup. #16703
- Improved handling of multi-line transactions. #16848
Bug Fixes
- Fixed a consistency problem that could result when a transaction commit races with a lease transfer. #16759
- Fixed a name escaping bug in
SHOW CREATE TABLE
and view definitions. #16782 #16815 - Casting a string to
regtype
now uses the full type parser. #16774 - Unary operators (
+
,-
, and~
) are formatted without a space. #16658 - Improved garbage collection of removed replicas. #16752
- Fixed an ignored error return. #13607
- Fixed incorrect rewrites of long statements in the SQL history. #16714
- Improved error handling in node liveness updates. #16698
- Added support for
NULL
columns inUNION
. #16757 - Improved error message for
TransactionStatusError
. #16725 - Improved truncation of unicode SQL strings. #16805
- Fixed a panic when an invalid
SAVEPOINT
name is used. #16834 - A failed
BEGIN
statement no longer leaves the connection in a broken state. #16863 - The
SHOW CREATE TABLE
statement no longer omits indexes that are used in foreign keys. #16861
Performance Improvements
- Increased the GRPC message size limit. #16685
- Improved efficiency of non-incremental backups. #16690
- Improved performance of incremental backups #16743
- Reverted a replica balancing change that led to thrashing. #16772
- Replica balancing avoids removing a replica that is a necessary part of the latest quorum. #16539
- Improved performance of queries run under
SHOW
. #16782 - Table IDs are now generated non-transactionally, reducing the likelihood of transaction retry errors during table creation. #16704
- Improve performance of the timestamp cache. #16801
- Reduced mutex contention. #16798 #16807 #16822 #16877 #16896
- The first statement of a transaction is now retried automatically instead of returning
transaction retry
errors. #16719 - Reduced log spam. #16900 #16917
- Reduced write amplification, improving write performance by 5%. #16905
- Increased write buffer size. #16929
Doc Updates
- Added a sample secure Kubernetes configuration. #16486
- Updated the
CONTRIBUTING.md
file to better explain page front-matter options and the docs sidebar. #1669 - Improved the certificate generation workflow in the Manual Deployment and Cloud Deployment tutorials. #1691
v1.1-alpha.20170629
Release Date: June 29, 2017
Backwards-Incompatible Changes
- If the server's own hostname cannot be resolved, CockroachDB reports an error at startup instead of starting a node that will be unable to participate in a cluster. Local test clusters may need to pass
--host=localhost
to avoid this error. #16177 - The
EXPLAIN (TRACE)
statement has been removed because the query being traced would unintentionally get executed. It has been replaced bySHOW TRACE FOR ...
, so that theEXPLAIN
commands can remain read-only. #16524
Known Limitations
- This release has a regression in replica balancing. #16742
SQL Language Changes
- The new
SHOW SESSION TRACE
statement can be used to view trace data collected with theSET TRACE=on|off
statement introduced in a previous alpha. #16524 - The new
SHOW KV TRACE FOR ...
orSET trace=on,kv; ...; SHOW SESSION KV TRACE
statements can be used to trace KV operations. #16622 - Schema changes now report their progress in the jobs table. #16636
- The
PREPARE
statement andSELECT ... FROM [...]
syntax now accept any statement that can beEXPLAIN
ed. #16524 - The statement
SET datestyle='ISO'
is now supported for compatibility with PostgreSQL clients. Values other thanISO
are not supported. #16557
Command-Line Interface Changes
- The
cockroach sql
command now tracks the current database and will restore it when a connection must be recreated. #16589
Admin Interface Changes
- The
/health
endpoint can now be accessed over HTTP even when the server is configured for secure mode. This works around limitations of some load balancers. #16609
Bug Fixes
- The admin UI no longer intermittently gets stuck until the server is restarted. #16612
- The GC threshold is now copied when ranges split. #16485
- The
IN
operator now works with tuples ofOIDs
. #16644 - The
SHOW {QUERIES,SESSIONS}
statement no longer produces invalid UTF-8 when truncating strings. #16602
Performance Improvements
- The intent resolver now works in smaller batches, reducing memory spikes after large transactions. #16632
- MVCC garbage collection now works in smaller batches, avoiding problems with refreshing leases. #16637
- Added a special case for
COUNT(*)
in the distributed SQL engine. #16533 - Reduced overhead of session tracking. #16543
- Limited the number of intents printed in logs and traces. #16560
- Reduced allocations when tracing is not enabled. #16545
- Load balancing is now based on data size instead of range count. #16575
New RFCs
Doc Updates
- The new Automatic Cloud Migration tutorial shows you how to use a local cluster to simulate deploying across clouds and then migrating from one cloud to another with no downtime. #1610
- Expanded details on how CockroachDB handles unsynchronized clocks. #1636
- Added a "copy to clipboard" option to code samples. #1624 #1632
- Updated the Node.js transaction code sample to perform a
SELECT
as part of the transaction and return the results through the transaction wrapper. #1615
v1.1-alpha.20170622
Release Date: June 22, 2017
General Changes
- Building from the source repo now works when
$GOPATH
is unset. #16364 - CockroachDB now uses
dep
instead ofglide
to manage Go dependencies. #16275 - gRPC has been updated to version 1.4.0. #16496
- The APD library has been updated, improving performance of
DECIMAL
operations. #16520
SQL Language Changes
- New
SHOW SESSIONS
andSHOW QUERIES
statements display active sessions and queries on a node or cluster. #16072 - The
DROP USER
statement is now supported. #16442 - The
BEGIN
statement now accepts theREAD WRITE
modifier for compatibility with the Golib/pq
driver. #16387 - The
pg_catalog.pg_table_is_visible()
function is now implemented, improving compatibility with several ORMs. #16410 - A new session-based tracing interface is available with
SET TRACE=(ON|OFF)
andSELECT * from crdb_internal.session_trace
. #16253 - The beginning and end of schema changes are now recorded in the
crdb_internal.jobs
table. #15936 SET "time zone"
is now recognized as equivalent toSET TIME ZONE
. #16459SET client_encoding='unicode'
is now recognized as equivalent toUTF-8
. #16511
Admin UI Changes
- All pages under
/debug/
are now controlled by theserver.remote_debugging.mode
setting. #16341 - Several debug pages now work even when the system config is unavailable. #16423
- Crash reports no longer include hostnames. #16332
Bug Fixes
- Backup URLs are now sanitized before being written to the system jobs table. #16370
- Improved the ability of the system to recover when all nodes are stopped at once, then all but one are restarted. #16347
- Outer joins no longer incorrectly return extra rows when there are multiple rows with the same value in the joined columns. #16372
RESTORE
no longer attempts to split at invalid keys. #16375- Fixed a panic with message
indexed var linked to different container
. #16434 - Fixed
quota pool no longer in use
errors when leadership and the range lease are not co-located. #16413 - Improved error handling in the
COPY FROM
command. #16393 - Casting a string to
regtype
now uses the full type parser. #16476 - Some fatal errors now end the process immediately instead of unwinding the stack and allowing new errors to occur and mask the original failure. #16482
- The system will try to avoid replicating to unstable two-replica configurations unless a third candidate is also available. #16411
- Fixed a panic in the timestamp cache. #16503
Performance Improvements
- Adjusted timeouts used in internal retry loops. #16357
- Reduced some redundant logging. #16358
- Improved performance under high-contention workloads. #16256
- Reduced command queue overhead in read-heavy workloads. #16360
- Prepared statements are now included in memory accounting. #16433 #16470
- Snappy compression is now enabled by default for inter-node communication. #16432 #16451
- The GC queue now works in smaller chunks. #16299
- Smoothed statistics used in rebalancing. #16464
- Improved performance of the distSQL row fetcher. #16446 #16467
- OpenTracing spans are now identified by name instead of
file:lineno
. #16397 - Read-only batches now reuse iterators when possible. #16406
- The hash joiner now looks ahead on both streams to see if one of them is very small. #16402
Doc Updates
- Improved basic hardware recommendations for a CockroachDB cluster. #1596
- Improved the
REVOKE
documentation. #1595 - Updated the Node.js transaction wrapper to allow values to be returned to the client. #1603
- Updated the instructions for orchestrating a local CockroachDB cluster with Kubernetes Minikube. #1616
v1.1-alpha.20170608
Release Date: June 8, 2017
General Changes
- CockroachDB now uses Go 1.8.3 (fixing a security issue when elliptic curve certificates are used, as well as a panic). #16133
SQL Language Changes
- The
UUID
type is now supported. #15930 - New
SHOW BACKUP
statement displays metadata about a backup. #16186 - The
USE
statement is now recognized as an alias forSET DATABASE =
. #16293 - The
SET NAMES 'utf8'
statement is now recognized as an alias forSET client_encoding 'utf8'
. Encodings other than UTF-8 are still not supported. #16305 ALTER TABLE...ADD FOREIGN KEY
no longer attempts to create an index on the source table. #16175- Fixed decoding of very large
DECIMAL
values. #16152 - If a prepared statement is invalidated by a schema change, it now returns an error instead of an incorrect result. #16089
INT2VECTOR
is now zero-indexed. #16289- Timestamp parsing is now consistent between prepared and non-prepared statements. #16049
- The ANSI SQL syntax
FETCH FIRST N ROWS ONLY
is now supported as an alias forLIMIT
. #16114 - Foreign key constraint errors now return the same error code as PostgreSQL. #16319
Admin Interface Changes
- The
cockroach cert list
command now lists the number of certificates in the CA cert file. #16101 - All pages under the
/debug/
namespace are now guarded by theserver.remote_debugging.mode
setting. #16238 - The new
trace.debug.enable
cluster setting controls the collection of tracing data for the/debug/requests
pages. The settingtrace.lightstep.token
can be used to send tracing data to LightStep. #16265 - The sample monitoring configs now include alerts about certificate expiration. #16329
Bug Fixes
- Fixed several bugs with the
OFFSET
clause, including incorrect results and a panic when it is used without aLIMIT
. #16109 - Fixed the behavior of
LIMIT
in index joins. #16339 - Fixed the behavior of
DISTINCT
with omitted columns. #16307 - Dropping a table with a self-referential foreign key no longer results in
broken fk backward reference
errors. #16316 - The replica allocator will no longer remove replicas from a down node if there are no live nodes to receive them. #16139
- Improved tracking of memory allocated by SQL functions. #15402
- Improved thread safety of tracing. #16114
- Reverted a change to lease durations from
v1.1-alpha.20170601
. #16148 - Fixed an RPC retry that could result in statements being applied twice. #16181
ConditionalPut
failures during initial migrations are now handled gracefully. #16224- Fixed a
span used after call to Finish
panic during shutdown. #16277
Performance Improvements
- Introduced flow control for raft proposals. Slow replicas now apply backpressure instead of allowing the raft log to grow too large. #15802
- Improved performance of MVCC garbage collection. #16129 #16166 #16210
- Reduced unhelpful retries of slow commands. #16205
- Improved performance of
RESTORE
. #16077 #15946 #16140 - Improved efficiency of SQL planning. #16040
Doc Updates
- Added a guide for new contributors submitting their first PR. #16078
- Added a codelab guiding a new contributor through the process of adding a SQL function. #16259
- Added an FAQ about CockroachDB's default diagnostics reporting. #1514
- Clarified that when
ORDER BY
is not included in aSELECT
query, rows are not sorted by any consistent criteria. #1526
v1.1-alpha.20170601
Release Date: June 1, 2017
General Changes
- CockroachDB now uses RocksDB 5.3.4 (#15696), protobuf 3.3.0 (#15522), and a newer version of gRPC (#15991)
- Non-release binaries no longer send crash reports. #15823
- Some
make
targets have changed to follow convention.make
by default now builds the binary without running tests.make install
defaults to/usr/local/bin/
instead of$GOPATH/bin
(usemake install prefix=/path/
to change).make check
is now an alias formake test
; the formermake check
is now calledmake lint
. #15909 #16030 - The Kubernetes templates now use the latest production release instead of tracking testing releases. #15878
SQL Language Changes
- The
information_schema.user_privileges
table is now supported. #15745 - The
ON UPDATE RESTRICT
andON DELETE RESTRICT
modifiers can now be used when creating foreign keys (this behavior is the default, but now it can be specified explicitly). #15815 - The hash functions
sha512()
,fnv32()
,fnv32a()
,fnv64()
,fnv64a()
,crc32ieee()
, andcrc32c()
are now supported. All hash functions now accept multiple arguments and arguments of typeBYTES
. #15828 #15859 - Casts to type
DECIMAL
now respect specified precision and scale. #15834 - A new aggregate function
xor_agg()
is now available. #15831 - Schema change commands now wait until the schema change is complete instead of starting it in the background. #15598
- It is now possible to
SELECT
from the result of aSHOW
statement with the syntaxSELECT ... FROM [ SHOW ... ] WHERE ...
#15590 - It is now possible to
CREATE
a table andALTER
(orDROP
) it in the same transaction. #15929 - The standard SQL syntax
FETCH FIRST N ROWS ONLY
is now supported as an alias forLIMIT
. #16083
Command-Line Interface Changes
- A
raw
mode has been added to the SQL shell'sdisplay_format
options. #15590 cockroach zone set
with an incomplete config for the special system ranges now merges the given config with the default instead of using zeros. #16048- Commands that create certificates will fail if asked to create a certificate that would expire after the corresponding CA. #16055
- The default duration of client and node certificates is now 5 years. #16055
Admin UI Changes
- The log viewer now shows more than just the first line of multi-line log entries. #15949
- A new query plan inspector is available at
/queryplan
. #15908 - Metrics are now reported about certificate expiration. #16045
Bug Fixes
MAX(bool)
andMIN(bool)
no longer panic. #15803SHOW GRANTS *
on an empty database now works correctly. #15881- Fixed a data race involving transaction records. #15882
DECIMAL
types now report the correct precision and scale for compatibility with JDBC. #15927- Fixed a panic when a removed replica attempts to get the range lease. #15754
Performance Improvements
- Raft logs are now cleaned up more aggressively when large commands (such as
RESTORE
) are used. #15799 - Reduced allocations when working with
DECIMAL
values. #15829 - Reduced lock contention during command evaluation. #15935
- Reduced lease durations to improve responsiveness to node failures. #15331
- Improved performance of queries that combine aggregate functions and
WHERE
clauses, such asSELECT MAX(age) FROM customers WHERE name >= 'Albert' AND name <= 'Bernie'
. #13194