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 withconflict
argument forinsert
(#1838)- Added binary data type support via
binary
(#137, #2612, #2931) binary_format="raw"
added torun
(#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
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
- Python driver
- 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)
- Added a notification and helpful message for out-of-date secondary indexes
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 amap
(#2812) - Convert
header_lines
into amap
(#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
- Web UI
- Testing
- Python driver
- JavaScript driver
Contributors
Many thanks to external contributors from the RethinkDB community for helping
us ship RethinkDB 1.14. In no particular order:
- James Costian (@jamescostian)
- Ed Rooth (@sym3tri)
- Cole Gleason (@colegleason)
- Mikhail Goncharov (@metaflow)
- Elian Gidoni (@eliangidoni)
- Ivan Fraixedes (@ifraixedes)
- Brett Griffin (@brettgriffin)
- Ed Costello (@epc)
- Juuso Haavisto (@9uuso)
- Nick Verlinde (@npiv)
- Ayman Mackouly (@1N50MN14)
- Adam Grandquist (@grandquista)