Skip to content

Releases: rethinkdb/rethinkdb

1.15.1 — Lawrence of Arabia

07 Oct 02:09
Compare
Choose a tag to compare

Bug fix update.

  • Fixed a bug where tables were always created with hard durability, regardless of the durability option (#3128)
  • Fixed a bug that caused HTTPS access with r.http to fail under OS X (#3112)
  • Fixed a bug in the Python driver that caused pickling/unpickling of time objects to fail (#3024)
  • Changed the Data Explorer autocomplete to not override Ctrl+Tab on Firefox (#2959)
  • Fixed a bug that caused a crash when a non-directory file was specified as RethinkDB's startup directory (#3036)
  • Added native packages for Debian (#3125, #3107)
  • Fixed a compilation error on ARM CPUs (#3116)
  • Support building with Protobuf 2.6.0 (#3137)

1.15.0 — Lawrence of Arabia

25 Sep 16:21
Compare
Choose a tag to compare

The highlights of this release are support for geospatial objects and queries,
and significant performance upgrades relating to datum serialization (twice as
fast for many analytical workloads). Read the release blog post
for more details.

Only documents modified after upgrading to 1.15 will receive these performance
gains. You may "upgrade" older documents by performing any write that modifies
their contents. For example, you could add a dummy field to all the documents in
a table and then remove it:

r.table('tablename').update({dummy_field: true})
r.table('tablename').replace(r.row.without('dummy_field'))

There are no API-breaking changes in this release.

New features

  • ReQL
    • Added geospatial query and index support (#2571, #2847, #2851, #2854, #2859,
      #3003, #3011)
    • Added r.uuid for generating unique IDs (#2063)
    • Added a BRACKET term to the query language, to improve the bracket
      operator in client drivers (#1179)

Improvements

  • Server
    • Significantly improved performance of read operations by lazily
      deserializing data: ~1.15x faster for simple queries, ~2x faster for many
      analytical queries, and ~50x for count queries (#1915, #2244, #2652)
    • Removed the option for datum_t to be uninitialized (#2985)
    • Improved the performance of zip by replacing the zip_datum_stream_t type
      with a transformer function (#2654)
    • Clarified error messages when the data in the selection could not be printed
      (#972)
    • Improved performance of r.match by adding regex caching and a framework
      for generic query-based caches (#2196)
  • Testing
    • Removed unnecessary files from test/common (#2829)
    • Changed all tests to run with --cache-size parameter (#2816)
  • Python driver
    • Modified r.row to provide an error message on an attempt to call it like a
      function (#2960)
  • JavaScript driver
    • Errors thrown by the driver now have a stack trace (#3087)

Fixed bugs

  • ReQL
    • Fixed a bug for r.literal corner cases (#2710)
    • Improved error message when r.literal is used in an invalid context
      (#1600)
  • Web UI
    • Fixed a bug that caused selection in the query text area to become
      unresponsive with large queries (#3043)
    • Fixed a bug that caused "more data is available" to be displayed incorrectly
      in certain cases (#3037)
  • Server
    • Fixed a display bug with log entries in the web UI (#2627)
    • Fixed a bug where Makefile miscounted dependencies when ql2.proto was
      changed (#2965)
    • Fixed a bug where the connection authorization key was improperly encoded
      (#2952)
    • Fixed an uninitialized variable warning during builds (#2977)
  • Testing
  • JavaScript driver
    • Fixed a bug in the JavaScript driver that caused backtraces to not print
      properly (#2793)
  • Python driver
    • Replaced or isinstance with a tuple of types (#2968)
    • Removed unused kwarg assignments (#2969)
  • Ruby driver
    • Fixed a bug where default_db, host and port were not exposed in the
      Connection object (#2849)

Contributors

Many thanks to external contributors from the RethinkDB community for helping
us ship RethinkDB 1.15. In no particular order:

1.14.1 — Brazil

11 Sep 21:39
Compare
Choose a tag to compare

Release 1.14.1 (Brazil)

Bug fix update.

  • Fixed a bug that caused rethinkdb index-rebuild to fail with auth keys (#2970)
  • Changed rethinkdb export to specify binary_format='raw' to work with binary data correctly (#2964)
  • Fixed rethinkdb import to handle Unicode in CSV files (#2963)
  • Updated the Valgrind suppressions file to fix false "uninitialized value" warnings (#2961)
  • Fixed a bug that caused duplicate perfmons when recreating an index (#2951)
  • Fixed a bug that could cause r.http to crash when used with pagination and coerce_to (#2947)
  • Improved the printing of binary data in Python and Ruby REPLs (#2942)
  • Fixed a bug that could corrupt databases larger than 4GB on 32-bit systems (#2928)
  • Fixed permission issues with the web admin interface files (#2927)
  • Fixed a bug that caused a crash due to incorrect error handling in profile mode (#2718)
  • Fixed a bug that caused a crash when existing servers tried to connect to a new server with an unresolvable hostname (#2708)

1.14.0 — Brazil

26 Aug 16:07
Compare
Choose a tag to compare

The highlights of this release are:

  • Support for storing binary data
  • Seamless database migration
  • Support for Python 3

See the release announcement for more details.

Compatibility

Backwards-compatible changes

Data files from RethinkDB versions 1.13.0 onward will be automatically
migrated to version 1.14.x. As with any major release, back up your data files
before performing the upgrade. If you are upgrading from a release earlier
than 1.13.0, follow the migration instructions before upgrading:

http://rethinkdb.com/docs/migration/

Secondary indexes now use a new format; old indexes will continue to work, but
you should rebuild indexes after upgrading to 1.14.x. A warning about outdated
indexes will be issued on startup.

Indexes can be migrated to the new format with the rethinkdb index-rebuild
utility. Consult the troubleshooting document for more information:

http://rethinkdb.com/docs/troubleshooting#my-secondary-index-is-outdated

API-breaking changes

The return_vals optional argument for insert, delete and update has
been changed to return_changes, and works with all write operations
(previously, this only worked with single-document writes). The returned
object is in a new format that is backwards-incompatible with previous
versions. Consult the API documentation for these commands for details:

http://rethinkdb.com/api/javascript/insert
http://rethinkdb.com/api/javascript/delete
http://rethinkdb.com/api/javascript/update

The upsert optional argument to insert has been replaced with conflict
and new allowed values of error, replace or update. This is a
backwards-incompatible change. Consult the API documentation for more
information.

New features

  • Server
    • Return old/new values for multi-row write operations (#1382)
    • upsert replaced with conflict argument for insert (#1838)
    • Added binary data type support via binary (#137, #2612, #2931)
    • binary_format="raw" added to run (#2762)
    • Secondary indexes can be renamed with index_rename (#2794)
    • Secondary indexes can be duplicated (#2797)
    • Out of date secondary indexes logged on startup (#2798)
    • r.http can return a binary object (#2806)
  • Python driver
    • Added Python 3 support (#2502)
  • Data Explorer
    • Support for displaying binary types (#2804, #2865)

Improvements

  • Server
    • Server names now default to the hostname of the machine (#236, #2548)
    • distinct is faster and now works on indexes (#1864)
    • Improve secondary index queue handling (#1947)
    • The array limit is now configurable (#2059)
    • Allow initializing an empty directory (#2359)
    • Max number of extprocs raised (#2391, #2584)
    • Argument count errors are prettier (#2568)
    • Better error reporting in r.js (#2748)
    • index_status provides more info (#2791)
  • Command line
    • Table names in the CLI are disambiguated (#2360, #2550)
  • Python driver
    • Cleanup unneeded files (#2610)
    • Documentation examples are now PEP8 compliant (#2534)
  • Testing
    • Polyglot targets for Ruby 1.8, 1.9, 2.0, 2.1 (#773)
    • Multiple versions of Python can be tested simultaneously
  • Web UI
    • Added a notification and helpful message for out-of-date secondary indexes
      (#2799)

Fixed bugs

  • Server
    • --runuser and --rungroup set proper permissions when used with
      rethinkdb create (#1722)
    • Improved behavior and error messages for write acks (#2039)
    • Fix getaddrinfo error handling (#2110)
    • Fix a bug with machine name generation (#2552, #2569)
    • Fix a bug when compiling on GCC 4.7.2 (#2572)
    • Fix memory corruption error (#2589)
    • Fix stream cache error (#2607)
    • Fix linking issue with RE2 (#2685)
    • Miscellaneous build fixes (#2666, #2827)
    • Fix rare conflict bug in cluster config (#2738)
    • Fix variable initialization error (#2741)
    • Fix bug in RPCSemilatticeTest.MetadataExchange (#2758)
    • Changefeeds work on multiple joined servers (#2761)
    • Secondary index functions ignore global optargs (#2767)
    • Secondary indexes sort correctly (#2774, #2789)
    • Fix crashing bug with undefined ordering (#2777)
    • Fix dependency includes in Makefile (#2779)
    • Convert query_params to a map (#2812)
    • Convert header_lines into a map (#2818)
    • Improve robustness with big documents (#2832)
    • Wipe out old secondary index tree when post-constructing (#2925)
    • Preliminary fix for web permission issues on CentOS (#2927)
  • ReQL
    • Fix a bug in delete_at (#2696)
    • insert and splice now check array size limit (#2697)
    • Fix error in undocumented batch_conf option (#2709)
  • Web UI
    • Improve interval notation for shard boundaries (#2081, #2635)
    • The Data Explorer now remembers the current query on disconnects (#2460)
    • The Data Explorer now hides overflowing text in its popup containers
      (#2593)
  • Testing
  • Python driver
    • Make all and any behave like and_ and or_ (#2659)
    • Use os.path.splitext to check file extensions (#2681)
  • JavaScript driver
    • Return errors rather than throw them (#2852, #2883)

Contributors

Many thanks to external contributors from the RethinkDB community for helping
us ship RethinkDB 1.14. In no particular order:

1.13.4 — My Name is Nobody

18 Aug 19:04
Compare
Choose a tag to compare

Bug fix update.

The disk format for this release is compatible with versions 1.13.0, 1.13.1 and 1.13.3. If you are upgrading from 1.12.5 or earlier, make sure to migrate your data before upgrading.

  • Resolved several memory leaks (#2899, #2840, #2744)
  • Added a --temp-dir option to rethinkdb dump and rethinkdb restore (#2783)
  • The batchConf argument to run now works in the JavaScript driver (#2707)
  • Fixed the Accept-Encoding header sent by r.http (#2695)
  • Improved the performance of inserting large objects from the JavaScript driver (#2641)
  • cursor.close now takes a callback in the JavaScript driver (#2591)
  • Fixed a bug that caused illegal to destroy fifo_enforcer_sink_t errors (#2264)
  • Fixed a bug that caused Assertion failed: [!parent->draining.is_pulsed()] errors (#2811)
  • Improved the error message when running into version incompatibilities (#2657)
  • Improved the garbage collection for r.js (#2642)

1.13.3 — My Name is Nobody

10 Jul 22:27
Compare
Choose a tag to compare

Bug fix update.

The disk format for this release is compatible with versions 1.13.0 and 1.13.1. If you are upgrading from 1.12.5 or earlier, make sure to migrate your data before upgrading.

  • Fix a compiler warning: cluster_version may be used uninitialized (#2640)
  • Fix code that used std::move twice on the same object (#2638)
  • Prepare for live cluster upgrades (#2563)
  • Fix a bug that could lead to inconsistent data (#2579)

1.13.1 — My Name is Nobody

30 Jun 22:09
Compare
Choose a tag to compare

Bug fix update.

The disk format for this release is compatible with version 1.13.0. If you are upgrading from 1.12.5 or earlier, make sure to migrate your data before upgrading.

  • Fixed a bug that caused Assertion failed: [ptr_] errors when shutting down (#2594)
  • Fixed a performance issue in the JSON parser (#2585)
  • The JavaScript driver no longer buffers change feeds (#2582)
  • Fixed a bug that caused Uncaught exception of type "cannot_perform_query_exc_t" errors (#2576)
  • No longer crash when a secondary index is named primary (#2575)
  • Queries that return null are now handled correctly in the Data Explorer (#2573)
  • r.http now properly parses headers when following a redirection (#2556)
  • Improved the performance of write operations on sharded tables (#2551)
  • Fixed a bug that caused r.js to crash in certain circumstances (#2435)
  • Correctly handle EPIPE errors when connecting to an old version of the server (#2422)
  • Fixed a bug that caused Could not bind socket errors when using --bind (#2405)
  • Fixed a bug that caused Failed to parse as valid uuid errors (#2401)
  • Improved the bad magic number error message (#2302)
  • default now catches index out of bounds errors on streams (#1922)
  • Improved arity error messages in the JavaScript driver (#2449)

1.13.0 — My Name is Nobody

17 Jun 16:26
Compare
Choose a tag to compare

The highlights of this release are the r.http command for external
data access, change feed support via the new changes command, and
full support for Node.js promises in the JavaScript driver.

http://rethinkdb.com/blog/1.13-release/

Compatibility

This release is not compatible with data files from earlier
releases. If you have data you want to migrate from an older version
of RethinkDB, please follow the migration instructions before
upgrading:

http://rethinkdb.com/docs/migration/

There are also some backwards incompatible changes in the JavaScript driver.

  • The hasNext command for cursors has been removed. next can be used instead.

New features

  • ReQL
    • Added r.random for generating random numbers (#865)
    • Made the second argument to slice optional (#2048)
    • eq_join now accepts a function as its first argument, and does not fail if the field doesn't exist (#1764)
    • nth can now return a selection, just like get (#348)
    • Improved the master not available error message (#1811)
    • Switched to the JSON protocol in the Ruby, JavaScript and Python drivers (#2224, #2390)
    • Added the changes command for creating live change feeds (#997)
    • Added r.args to allow specifying a dynamic number of arguments to commands such as get_all (#1854)
    • Added r.http for interfacing with external APIs (#1383)
  • Server
    • Added a JSON protocol to replace the protobuf protocol, which is now deprecated (#1868)
    • Added a README describing the structure of the src/ folder (#2301)
    • Switched to manual versioning of the intra-cluster protocol (#2295)
    • Made the serialization format version-aware (#2308, #2353)
    • Improved the error message when running out of disk space (#1945)
  • JavaScript driver
    • Added support for promises (using bluebird) (#1395)
    • Removed the hasNext command (#2497)
    • Added the on, once, removeListener and removeAllListeners methods to cursors (#2223)
    • The first argument to r.connect has been made optional (#2273)
  • Tests
    • Improved the run-test script and ported it to Python (#2235)
    • Improved the ReQL tests (#1402)
  • Build
    • Symbol files are now generated (#2330)
    • Build with debugging symbols by default (#2323)
    • Added a signature to the OS X package (#1565)
    • Dropped support for GCC 4.4 (#1748)
    • Added an explicit dependency on Python 2 in the configure script (#2478)
    • Added a dependency on libcurl (#2400)

Improved performance

  • Server
    • Allocate smaller pages in the cache (#2130)
    • Reduce overhead by handling requests locally on the primary if possible (#2083)
    • Adjusted the value of chunk_processing_semaphore (#2392)
    • Improved backfilling on rotational drives (#2393)
    • Metadata is no longer copied when evaluating r.db (#1907)
    • No longer update the stat block when updating secondary indexes (#2431)
    • Block writes are better combined in the cache (#2127)
    • Concurrent garbage collection to improve disk space efficiency (#2457)
  • Testing
    • Added automated performance regression tests (#1963)

Fixed bugs

  • Server
    • Fixed the threaded coroutine implementation (#2168, #2332)
    • HTTP 500 errors are now accompanied by an error message (#511)
    • Got rid of vestigial memcache support (#803)
    • Made order_by and other sortings be stable (#2155)
    • Cleaned up blob_t code to make it more reliable (#2227)
    • Fixed a bug that caused crashes when dropping secondary indexes under load (#2251)
    • Fixed a bug in the JSON parsing code that caused a crash (#2489)
    • Fixed a bug that could cause segfaults (#2491)
    • Avoid high memory consumption on startup (#2329)
    • Disabled Nagle algorithm for outgoing TCP connections (#2529)
    • Remove some potentially objectionable server names (#2468)
    • Fixed a bug that caused Callstack overflow in a coroutine errors (#2357)
    • Merged upstream fixes to cJSON (#2496)
    • Fixed a bug that could cause a segmentation fault (#2500)
    • Fixed a bug in the serializer garbage byte calculation (#2541)
  • ReQL
    • Added the database name to error messages (#2280)
    • No longer report run-time errors as client errors (#1908)
    • Arguments to r.expr are now properly validated (#2384)
    • No longer crash when r.js returns a bad datum (#2409)
    • Fixed handling of global optargs (#2525)
  • Ruby driver
    • Ignore close errors when reconnecting (#2276)
    • Fixed conflicts with active support (#2284)
    • Added a missing nesting_depth argument to r.expr (#2408)
    • Modified the driver to work with JRuby (#2296)
    • The driver now prefetches cursor data (#2373)
  • JavaScript driver
    • Improved the variable names in error messages (#2461)
  • Web UI
    • Fixed a bug that caused JavaScript exceptions (#2503)
    • Fixed the per-server document count (#1836)
    • The database name is now shown on the table page (#2366)
    • Removed the inconsistent green tick next to the secondary index status (#2084)
    • Fixed email highlighting (#2378)
    • Large responses no longer cause the Data Explorer to become unresponsive (#2481)
    • Fixed a bug triggered by clearing the Data Explorer history (#2389)
  • Tests
    • Converted the memcache tests to use ReQL (#803)

Contributors

Many thanks to external contributors from the RethinkDB community for
helping us ship RethinkDB 1.13. In no particular order:

1.12.5 — The Wizard of Oz

21 May 22:58
Compare
Choose a tag to compare

Bug fix update.

The disk format for this release is compatible with versions 1.12.0 through 1.12.4. If you are upgrading from 1.11.3 or earlier, make sure to migrate your data before upgrading.

  • Fixed a bug that caused Guarantee failed: [!mod_info->deleted.second.empty() && mod_info->added.second.empty()] errors (#2285)
  • Fixed the behaviour of order_by following between (#2307)
  • Fixed a bug that caused Deserialization of rdb value failed with error archive_result_t::RANGE_ERROR errors (#2399)
  • JavaScript driver: reduce no longer accepts the base argument (#2288)
  • Python driver: improved the error message when a cursor's connection is closed (#2291)
  • Python driver: improved the implementation of cursors (#2364, #2337)

1.12.4 — The Wizard of Oz

24 Apr 00:56
Compare
Choose a tag to compare

Bug fix update.

The disk format for this release is compatible with versions 1.12.0 through 1.12.3. If you are upgrading from 1.11.3 or earlier, make sure to migrate your data before upgrading.

  • Fixed a bug that caused Assertion failed: [page->is_disk_backed()] errors (#2260)
  • Fixed a bug that caused incorrect query results and frequent server crashes under low memory conditions (#2237)