Release Notes for v1.0-rc.1

May 1, 2017

Backwards-Incompatible Changes

  • It is not possible to upgrade directly to this version of CockroachDB from a version older than beta-20170413. Upgrade any older clusters to that version first. #15228
  • The cockroach start command no longer recognizes the COCKROACH_INSECURE and COCKROACH_CERTS_DIR environment variables which are intended to be client-only. Use the --insecure and --certs-dir command-line flags instead. #15196 #15288
  • Older certificate-related command-line flags have been removed; use --certs-dir instead. #15241
  • Various environment variables have been removed in favor of the new CLUSTER SETTING commands described below.
  • The undocumented SET SYNTAX statement and the “modern” syntax variant have been removed. #15064

General Changes

  • Anonymous diagnostics statistics are now reported by default. To opt out, set COCKROACH_SKIP_ENABLING_DIAGNOSTIC_REPORTING=true in the environment when starting the server, or use SET CLUSTER SETTING diagnostics.reporting.enabled = false in the SQL shell for a running cluster. #14901

Build Changes

  • CockroachDB now builds on Windows. Windows support is currently experimental and is recommended only for development, not production.
  • Building from source on macOS 10.11 works again. #15168
  • Building from source on older CPUs (without SSE4.2) works again. #15247

Enterprise Features

  • Distributed backup and restore capabilities are now available to enterprise-license customers. Using the new BACKUP SQL statement, a cluster’s schema and data can be backed up in full or incrementally as of a given timestamp, and can be stored on the platforms you’re already using, including AWS S3, Google Cloud Storage, NFS, or HTTP storage. In the unlikely event of irreparable cluster failure, the new RESTORE SQL statement can be used to restore a cluster from enterprise backups. Importantly, backup and restore operations are distributed across the nodes of a cluster, minimizing the impact on cluster performance.

    For details about pricing, contact CockroachDB.

SQL Language Changes

  • Table names and other identifiers are now case-insensitive in all cases, even when used in double quotes. These identifiers will be shown in lowercase in many introspection interfaces. This is consistent with PostgreSQL and improves compatibility with the PostgreSQL JDBC driver. #15434
  • New SHOW ALL CLUSTER SETTINGS and SET CLUSTER SETTING statements can be used to view and change certain cluster-wide settings. The following cluster settings are available in this release:
    • diagnostics.reporting.enabled
    • diagnostics.reporting.report_metrics
    • diagnostics.reporting.send_crash_reports
    • kv.allocator.lease_rebalancing_aggressiveness
    • kv.allocator.load_based_lease_rebalancing.enabled
    • kv.raft.command.max_size
    • kv.raft_log.synchronize
    • kv.snapshot_rebalance.max_rate
    • kv.snapshot_recovery.max_rate
    • kv.transaction.max_intents
    • server.remote_debugging.mode
    • sql.defaults.distsql
    • sql.metrics.statement_details.dump_to_logs
    • sql.metrics.statement_details.enabled
    • sql.metrics.statement_details.threshold
    • sql.trace.log_statement_execute
    • sql.trace.session_eventlog.enabled
    • sql.trace.txn.enable_threshold
  • The PREPARE and EXECUTE statements can now be used to use prepared statements in a SQL shell. #15256
  • The regexp_replace() function now handles newlines correctly, both with and without the n flag. #15309
  • Precedence for the binary ~ operator (regex match) has been changed. This could cause DEFAULT or CHECK expressions to have different behavior if ~ was used in combination with other operators. These will need to be fixed manually. #15264
  • Ambiguous results now return the PostgreSQL “statement completion unknown” error code. #15054
  • Time zones can now be specified in more formats in DATE types, including +0700, +07, +7, and +07:00. #15177
  • Set-returning functions (like generate_series()) are now supported in more contexts. #14369

Admin UI Changes

  • Tooltips are now shown on graphs. #15282
  • Fixed elements that overlapped incorrectly. #15387
  • Improved handling of long strings in table cells. #15387
  • The SQL statement latency graphs now include some overhead that was not previously accounted for. #15176

Command-Line Interface Changes

Bug Fixes

  • Table scans over interleaved tables now work correctly. #15043
  • Fixed backslash escaping when used with the Python psycopg2 driver. #15281
  • Improved certificate validation, fixing compatibility with client certs as used by psql. #15286
  • Fixed a race between lease transfers and repair/rebalance operations. #15355
  • Creating a table with a bad DEFAULT expression no longer panics. #15170
  • Improved tracking of memory used by aggregate functions. #14904
  • Rebalancing now only considers ranges for which all replicas are healthy. #15312
  • Writes to the raft log are now fully synced to disk. #15366
  • Fixed a hang during node shutdown. #15465
  • Fixed “requested entry at index” log spam from raft_log_queue.go. #15466

Performance Improvements

  • A new distributed SQL execution engine is now used for a large subset of SELECT statements. Instead of returning all table data involved in the query to the gateway node for final computations, computation is distributed between the gateway node and the nodes where the data resides, with just the relevant results returned to the gateway node. This deeper distribution of work significantly improves performance of queries, especially those using aggregation functions or joins.
  • Smoothed out request stats used by lease rebalancing and reduced thrashing. #15156 #15321
  • Improved retry logic after lease failures. #15199
  • Snapshots that are necessary for recovery are now given higher recovery than those used for rebalancing. #15279
  • Very large transactions and commands that might cause the server to run out of memory are now rejected earlier. #15350
  • Node liveness heartbeats are now retried when they fail due to heavy load. #15362
  • Improved priority adjustments when transactions are pushed. #7380

Doc Updates


This release includes 185 merged PRs by 27 authors. We would like to thank the following contributors from the CockroachDB community, including first-time contributors Evgeniy Vasilev and Mahmoud Al-Qudsi.

  • Evgeniy Vasilev
  • Kenji Kaneda
  • Mahmoud Al-Qudsi