Releases: rethinkdb/rethinkdb
1.15.1 — Lawrence of Arabia
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
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
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 thezip_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)
- Significantly improved performance of read operations by lazily
- Testing
- Python driver
- Modified
r.row
to provide an error message on an attempt to call it like a
function (#2960)
- Modified
- JavaScript driver
- Errors thrown by the driver now have a stack trace (#3087)
Fixed bugs
- ReQL
- Web UI
- Server
- Testing
- JavaScript driver
- Fixed a bug in the JavaScript driver that caused backtraces to not print
properly (#2793)
- Fixed a bug in the JavaScript driver that caused backtraces to not print
- Python driver
- Ruby driver
- Fixed a bug where
default_db
,host
andport
were not exposed in the
Connection object (#2849)
- Fixed a bug where
Contributors
Many thanks to external contributors from the RethinkDB community for helping
us ship RethinkDB 1.15. In no particular order:
- Sathyanarayanan Gunasekaran (@gsathya)
- Adam Grandquist (@grandquista)
- Duane Johnson (@canadaduane)
- Colin Mattson(@cmattson)
- Justas Brazauskas (@jutaz)
- Matt Stith (@stith)
- Dmitry Minkovsky (@dminkovsky)
1.14.1 — Brazil
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 specifybinary_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 andcoerce_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
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)
1.13.4 — My Name is Nobody
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 torethinkdb dump
andrethinkdb restore
(#2783) - The
batchConf
argument torun
now works in the JavaScript driver (#2707) - Fixed the
Accept-Encoding
header sent byr.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
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.
1.13.1 — My Name is Nobody
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
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 likeget
(#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 asget_all
(#1854) - Added
r.http
for interfacing with external APIs (#1383)
- Added
- 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
- Tests
- Build
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
- Ruby driver
- 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:
- Liu Aleaxander (@Aleaxander)
- Nicolas Viennot (@nviennot)
- Elian Gidoni (@eliangidoni)
- Matthew Frazier (@leafstorm)
- Masatoshi Ishida (@Masatoshi)
1.12.5 — The Wizard of Oz
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
followingbetween
(#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 thebase
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
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.