NOTES.md
Fixes for Data Explorer autocomplete, compilation fixes, other small fixes.
None.
fstat64 function (#7141)Windows release, FreeBSD 13 compilation, certificate chain support, no update checker complaint.
None. Some console output is altered, though.
Special thanks are due to Antoni Mróz and unx for getting the Windows release working.
Released on 2022-04-24
Bitrot, futureproofing, and bug fix release.
No migration is required when upgrading from RethinkDB 2.4.x. Please read the RethinkDB 2.4.0 release notes if you're upgrading from an older version.
RethinkDB 2.4.x servers cannot be mixed with servers running RethinkDB 2.3.x or earlier in the same cluster.
The r.js ReQL command now uses QuickJS to run instead of v8.
Because RethinkDB's v8 version was old, this will allow you to use
newer JavaScript features. However, performance and the results of
your JavaScript code may differ.
(Issue numbers point into the https://github.com/rethinkdb/rethinkdb
bugtracker. For a completionist list of changes, run git log v2.4.1..v2.4.2.)
r.http requests use HTTP/1.1 (#7012). This works around
r.http's inability to parse HTTP/2 responses.old_admin branch (#6979)Many thanks to the following contributors whose patches made it into the RethinkDB 2.4.2 server release:
And many thanks go to the driver committers, alternative admin console client developers, bug reporters, and other helpful people who are not listed here.
--
Released on 2020-08-13
Bug fix release.
No migration is required when upgrading from RethinkDB 2.4.x. Please read the RethinkDB 2.4.0 release notes if you're upgrading from an older version.
RethinkDB 2.4.0 servers cannot be mixed with servers running RethinkDB 2.3.x or earlier in the same cluster.
(Issue numbers point into the https://github.com/rethinkdb/rethinkdb bugtracker.)
Released on 2019-12-19
RethinkDB 2.4 introduces write hooks and a few other enhancements.
Data files from RethinkDB version 1.16 onward will be automatically migrated. As with any major release, back up your data files before performing the upgrade. Please read the RethinkDB 2.3.0 release notes if you're upgrading from version 2.2.x or earlier.
RethinkDB 2.4.0 servers cannot be mixed with servers running RethinkDB 2.3.x or earlier in the same cluster.
Except for JavaScript, the official drivers are now generally
maintained as separate projects. But note that there is some coupling
of RethinkDB console commands, like rethinkdb dump, with the Python
driver. RethinkDB 2.4 contains some old copies of the drivers to keep
./test/run working with minimal effort. The JavaScript driver is
still used in the Web UI. However, the web assets are now
pre-generated, at src/gen/web_assets.cc, making the presence of the
driver in the repository not strictly necessary.
Here are links to the official drivers:
match command's behavior on empty regexes.
It had previously been behaving incorrectly.(Issue numbers point into the https://github.com/rethinkdb/rethinkdb bugtracker.)
set_write_hook and get_write_hook commands, which attach to
tables a function that can modify the behavior of any write. (#5813)bit_and, bit_not, bit_or,
bit_sal (or bit_shl), bit_sar, bit_shr, and bit_xor. (#6534)-) to be used in table names. (#5537)iso8601 command round, not truncate. (#6909)inserted guarantee failure. (#6710)r.connect. (#6575)Released on 2017-07-17
Bug fix release
This is the first release of RethinkDB since October 2016. The RethinkDB project has joined the Linux Foundation. This release is brought to you by volunteers from the Open RethinkDB team. The RethinkDB source code is now licensed under an ASLv2 license.
On 32-bit platforms and on Windows (64 and 32 bit), RethinkDB 2.3.6 servers should not
be mixed with servers running RethinkDB 2.3.3 or older in the same cluster. Doing so can lead to
server crashes when using the web UI or when accessing the logs system table.
On 64-bit platforms, RethinkDB 2.3.6 servers can be mixed with older RethinkDB 2.3.x servers in the same cluster. We recommend that you run a mixed-version cluster only temporarily for upgrading purposes.
No migration is required when upgrading from RethinkDB 2.3.x. Please read the RethinkDB 2.3.0 release notes if you're upgrading from an older version.
sample are now bound by the array size limit (#6148) -- @AtnNninterleave argument to union (#6139) -- @AtnNneqJoin of system tables when using the uuid identifierFormat (#6108) -- @nighellesr.match('') to return wrong results (#6241) -- @AtnNn--
Released on 2016-08-26
Bug fix release
On 32-bit platforms and on Windows (64 and 32 bit), RethinkDB 2.3.5 servers should not
be mixed with servers running RethinkDB 2.3.3 or older in the same cluster. Doing so can lead to
server crashes when using the web UI or when accessing the logs system table.
On 64-bit platforms, RethinkDB 2.3.5 servers can be mixed with older RethinkDB 2.3.x servers in the same cluster. We recommend that you run a mixed-version cluster only temporarily for upgrading purposes.
No migration is required when upgrading from RethinkDB 2.3.x. Please read the RethinkDB 2.3.0 release notes if you're upgrading from an older version.
interleave option of the union command,
which could potentially lead to results being generated in the wrong order (#6041)fold and multi-stream map commands,
that would stop results from being generated correctly if these commands were
applied to a changefeed (#6007)connected_to
field of the server_status table, even after they had disconnected (#5871)insert command
(#5842)table_status system table (#4589)Rejected a connection from server X since one is already open when trying to connect
to itself (#5456)Uncaught exception server crash if a TLS-encrypted
connection was closed during a certain connection stage (#5904)merge that could cause r.literal objects to remain after the merge
and be stored in a table (#5977)r.http command that resulted in decoding issues (#5924)make on
OpenSUSE (#2363)host argument to connect is now optional (#5846)Closeable interface (#5468)runNoReply (#5938)reconnect method (#5841)Connection object that was caused by the driver not
properly cleaning up closed cursors (#5980)asyncio loop type is now available when using the driver from a Python .egg
file (#6043)Many thanks to external contributors from the RethinkDB community for helping us ship RethinkDB 2.3.5.
--
Released on 2016-06-03
Bug fix release
On 32-bit platforms and on Windows (64 and 32 bit), RethinkDB 2.3.4 servers should not
be mixed with older RethinkDB 2.3.x servers in the same cluster. Doing so can lead to
server crashes when using the web UI or when accessing the logs system table.
On 64-bit platforms, RethinkDB 2.3.4 servers can be mixed with older RethinkDB 2.3.x servers in the same cluster. We recommend that you run a mixed-version cluster only temporarily for upgrading purposes.
No migration is required when upgrading from RethinkDB 2.3.x. Please read the RethinkDB 2.3.0 release notes if you're upgrading from an older version.
orderBy.limit changefeed implementation (#5824)Many thanks to external contributors from the RethinkDB community for helping us ship RethinkDB 2.3.4.
--
Released on 2016-06-01
Bug fix release
RethinkDB 2.3.3 servers can be mixed with older RethinkDB 2.3.x servers in the same cluster. We recommend that you run a mixed-version cluster only temporarily for upgrading purposes.
No migration is required when upgrading from RethinkDB 2.3.x. Please read the RethinkDB 2.3.0 release notes if you're upgrading from an older version.
RethinkDB 2.3.0 was the first version to include native Windows compatibility. In RethinkDB 2.3.3, the Windows port is ready to emerge from "beta" testing. We now officially support RethinkDB on the Windows platform alongside our existing support for Linux and Mac OS X. We're also extending our commercial support services to include RethinkDB on Windows.
Although RethinkDB is now stable on Windows, there are still a few remaining limitations that we are actively working to address. We also haven't yet carried out as much performance tuning on the Windows port as we have on the Linux and OS X releases.
orderBy.limit changefeeds that caused the server to crash with
Guarantee failed: [sub_it != real_added.end()] (#5561)table_status system table when the cluster is under
high load (#5586)Guarantee failed: [refcount == 0] error (#5783)fold command work on a changefeed stream (#5800)Connection class is now exported from the RethinkDB JavaScript module (#5758)clientPort and clientAddress methods to the Connection class in the
Java driver (#5571)Many thanks to external contributors from the RethinkDB community for helping us ship RethinkDB 2.3.3.
--
Released on 2016-05-06
Bug fix release
RethinkDB 2.3.2 servers can be mixed with older RethinkDB 2.3.x servers in the same cluster. We recommend that you run a mixed-version cluster only temporarily for upgrading purposes.
No migration is required when upgrading from RethinkDB 2.3.x. Please read the RethinkDB 2.3.0 release notes if you're upgrading from an older version.
Guarantee failed: [token.has()] error when accessing
the index (#5715)Guarantee failed: [num_subs == 0] that could occur
when shutting down a server while trying to start new changefeeds at the same time
(#5708)Guarantee failed: [!pair.first.inner.overlaps(region.inner)] that could occur when
using changefeeds while resharding (#5745)--tls-min-protocol server option for reducing the minimum required TLS
protocol version. Drivers using an old OpenSSL version (e.g. on OS X) might require
this option in order to connect to a TLS-enabled RethinkDB server (#5734)order_by with a non-deterministic predicate function
(#5548)--cluster-reconnect-timeout to control how quickly
RethinkDB gives up trying to reconnect to a previously connected server (#5701)insert command can now return null
in order to delete a conflicting document (#5713)orderBy.limit
query that has additional transformations (#5721)ssl option now supports older Python versions from 2.7 up
(#4815)python -m rethinkdb command
(#5147)rethinkdb dump script that caused
name 'file' is not defined errors (#5694)Many thanks to external contributors from the RethinkDB community for helping us ship RethinkDB 2.3.2. In no particular order:
--
Released on 2016-04-22
Bug fix release
RethinkDB 2.3.1 servers can be mixed with RethinkDB 2.3.0 servers in the same cluster. We recommend that you run a mixed-version cluster only temporarily for upgrading purposes.
No migration is required when upgrading from RethinkDB 2.3.0. Please read the RethinkDB 2.3.0 release notes if you're upgrading from an older version.
We now provide packages for Ubuntu 16.04 (Xenial Xerus).
The r.http command no longer supports fetching data from encrypted https resources on
OS X 10.7 and 10.8 (#5681). Newer releases of OS X are not affected.
insert with multiple
occurrences of the same primary key (#5683)hostname_to_ips function that could be
triggered by connecting a server with an unresolvable address (#5629)squash: true option on a
system table (#5644)eqJoin to freeze the server when chained after a changes
command (#5696)returnChanges: "always" option of the insert
command to miss certain types of errors in the changes result (#5366)username option of the r.connect command to user. The username
option is still supported for backwards-compatibility with existing code (#5659)rethinkdb import script
(#5637)rethinkdb restore script (#5647)getNext (#5603)Many thanks to external contributors from the RethinkDB community for helping us ship RethinkDB 2.3.1. In no particular order:
--
Released on 2016-04-06
RethinkDB 2.3 introduces a users and permissions system, TLS encrypted connections, a
Windows beta, and numerous improvements to the ReQL query language. ReQL improvements
include up to 10x better performance for distributed joins, and a new fold command that
allows you to implement efficient stateful transformations on streams.
Read the blog post for more details.
Data files from RethinkDB version 1.16 onward will be automatically migrated. As with any major release, back up your data files before performing the upgrade.
If you're upgrading from RethinkDB 1.15.x or earlier, please read the data migration guide to find out about the required migration steps.
RethinkDB 2.3.0 servers cannot be mixed with servers running RethinkDB 2.2.x or earlier in the same cluster.
If you migrate a cluster from a previous version of RethinkDB and have an auth_key set,
the auth_key is turned into the password for the "admin" user. If no auth_key is
set, a new "admin" user with an empty password is automatically created during
migration.
RethinkDB 2.3 adds a new restriction when adding a server to an existing cluster. If
the existing cluster has a non-empty password set for the "admin" user, a new server
is only allowed to join the cluster if it has a password set as well. This is to avoid
insecure states during the join process. You can use the new --initial-password auto
command line option for joining a new server or proxy to a password-protected cluster.
The --initial-password auto option assigns a random "admin" password on startup,
which gets overwritten by the previously configured password on the cluster once the join
process is complete.
eqJoin command no longer returns results in the order of its first input. You can
pass in the new {ordered: true} option to restore the previous behavior..distinct() command in
order to restore the previous behavior.orderBy(...).limit(...).filter(...) are no longer
allowed. Previous versions of RethinkDB allowed the creation of such changefeeds, but
did not provide the correct semantics.r.wait, r.rebalance and r.reconfigure can no longer be called on the
global r scope. Previously, these commands defaulted to the "test" database
implicitly. Now they have to be explicitly called on either a database or table object.
For example: r.db("test").wait(), r.db("test").rebalance(), etc.{returnChanges: "always"} option with the insert command will now add
{error: "..."} documents to the changes array if the insert fails for some
documents. Previously failed documents were simply omitted from the changes result.r.minval and r.maxval are no longer permitted as return values
of secondary index functions.each function is deprecated in favor of eachAsync. In a
future release, each will be turned into an alias of eachAsync. We recommend
converting existing calls of the form .each(function(err, row) {}) into the
eachAsync equivalent .eachAsync(function(row) {}, function(err) {}).
You can read more about eachAsync in the documentation.auth_key option to connect in the official drivers is deprecated in favor of
the new user and password options. For now, a provided auth_key value is mapped
by the drivers to a password for the "admin" user, so existing code will keep
working.We no longer provide packages for the Debian oldstable distribution 7.x (Wheezy).
When compiling from source, the minimum required GCC version is now 4.7.4.
"users" system table. Permissions can be configured through
either the new "permissions" system table or through the grant command. (#4519)fold command to allow stateful transformations on ordered streams. (#3736)getIntersecting queries. (#4777)--bind option can now be specified separately for the web UI (--bind-http),
client driver port (--bind-driver) and cluster port (--bind-cluster). (#5467)"non_transitive_error" issue in the "current_issues" system table when detecting
an issue. Additionally, the "server_status" system table now contains information on
each server's connectivity in the new connected_to field. (#4936)"memory_error" issue type for the "current_issues" system table that
is displayed when the RethinkDB process starts using swap space. (Linux only) (#1023)--join-delay option to better tolerate unstable network conditions
(#5319)--initial-password command line option to secure the process of adding new
servers to a password-protected cluster. (#5490)interleave option to the union command to allow merging streams in a
particular order. (#5090)insert command.
(#3753)insert command now returns changes in the same order in which they were passed
in when the returnChanges option is used. (#5041)includeOffsets option to the changes command to obtain the positions
of changed elements in an orderBy.limit changefeeds. (#5334)includeTypes option to the changes command that adds a type field to
every changefeed result. (#5188)getIntersecting and
getNearest now return duplicates if multiple index keys match. (#3351)and, or and getAll commands can now be called with zero arguments.
(#4696, #2588)r.wait, r.rebalance and r.reconfigure on the global scope to
avoid confusing semantics. (#4382)count and slice commands can now be applied to strings. (#4227, #4228)reconfigure if too many servers are unreachable.
(#5267)eqJoin command.
(#5115)tableCreate to complete more quickly. (#4746)conn.server() command for getting information about the
connected server. (#5059)user and password options to the
connect method to enable user authentication. (#5458, #5459, #5460, #5461)clientPort and clientAddress functions to the connection objects in the
JavaScript, Python and Ruby drivers. (#4796)cursor.eachAsync function. (#5056)concurrency option for cursor.eachAsync. (#5529)r.min, r.max, r.sum, r.avg and r.distinct now accept an array argument
(#4594)"gevent" loop type to the Python driver. (#4433)tar for the rethinkdb restore and rethinkdb dump
commands. (#5399)--tls-cert option to the rethinkdb import, rethinkdb export,
rethinkdb dump, rethinkdb restore and rethinkdb index-rebuild commands to enable
TLS connections. (#5330)--password and --password-file options to the rethinkdb import,
rethinkdb export, rethinkdb dump, rethinkdb restore and
rethinkdb index-rebuild commands to connect to password-protected servers. (#5464)--format ndjson option to rethinkdb export that allows exporting tables
in a newline-separated JSON format. (#5101)rethinkdb dump rethinkdb restore and rethinkdb import able to write to
stdout and load data from stdin respectively. (#5525, #3838)r.min, r.max, r.sum, r.avg and r.distinct now accept an array argument
(#5494)[cmp != 0] when querying with r.minval or
r.maxval values inside of an array. (#5542)"db_config" system table. (#4465)Guarantee failed: [!pair.first.inner.overlaps(region.inner)] when rebalancing a
table while simultaneously opening new changefeeds. (#5576)jobs system table even after
finishing. (#5223)orderBy(...).limit(...).filter(...),
since they do not provide the correct semantics. (#5325)cursor.close when there are remaining items in the buffer.
(#5432)__str__ function of cursor objects. (#5567)Many thanks to external contributors from the RethinkDB community for helping us ship RethinkDB 2.3. In no particular order:
--
Released on 2016-03-25
Bug fix release
RethinkDB 2.2.6 servers cannot be mixed with servers running RethinkDB 2.2.1 or earlier in the same cluster.
No migration is required when upgrading from RethinkDB 2.2.0 or higher. Please read the RethinkDB 2.2.0 release notes if you're upgrading from an older version.
SANITY CHECK FAILED: [d.has()] error when using the map command on
a combination of empty and non-empty input streams (#5481)conn.server() now includes a proxy field (#5485)backports.ssl_match_hostname module (#5470)cursor.close() call (#5448)Closeable interface (#5468)Many thanks to external contributors from the RethinkDB community for helping us ship RethinkDB 2.2.6. In no particular order:
--
Released on 2016-02-23
Bug fix release
RethinkDB 2.2.5 servers cannot be mixed with servers running RethinkDB 2.2.1 or earlier in the same cluster.
No migration is required when upgrading from RethinkDB 2.2.0 or higher. Please read the RethinkDB 2.2.0 release notes if you're upgrading from an older version.
orderBy queries on secondary indexes (#5280)isFeed() function in the Java driver (#5390, #5400)r.now command now performs arity checking correctly (#5405)unit.ClusteringBranch test (#5182)Many thanks to external contributors from the RethinkDB community for helping us ship RethinkDB 2.2.5. In no particular order:
--
Released on 2016-02-01
This bug fix release addresses a critical bug in RethinkDB's clustering system, that can lead to data loss and invalid query results under certain rare circumstances. The bug can appear if a table is reconfigured during a network partition (read more in GitHub issue #5289).
We recommend upgrading to this release as soon as possible to avoid data loss.
If you see replicas get stuck in the transitioning state during a reconfiguration
after upgrading, you can run .reconfigure({emergencyRepair: '_debug_recommit'})
on the table to allow the reconfiguration to complete. Please make sure that the
cluster is idle when running this operation, as RethinkDB does not guarantee
consistency during the emergency repair.
RethinkDB 2.2.4 servers cannot be mixed with servers running RethinkDB 2.2.1 or earlier in the same cluster.
No migration is required when upgrading from RethinkDB 2.2.0 or higher. Please read the RethinkDB 2.2.0 release notes if you're upgrading from an older version.
stats system table (#5327)map, filter and related commands (#5241)addr2line tool is not installed (#5321)rethinkdb import script with Python 2.6 (#5294)--
Released on 2016-02-01
Legacy bug fix release
This release maintains full compatibility with RethinkDB 2.1.5, while fixing a critical bug in RethinkDB's clustering system.
We recommend installing this version only if upgrading to RethinkDB 2.2.4 is not an option, for example if you depend on a driver that still uses the old protocol buffer client protocol.
--
Released on 2016-01-11
Bug fix release
RethinkDB 2.2.3 servers cannot be mixed with servers running RethinkDB 2.2.1 or earlier in the same cluster.
No migration is required when upgrading from RethinkDB 2.2.0 or higher. Please read the RethinkDB 2.2.0 release notes if you're upgrading from an older version.
Guarantee failed: [env.has()] (#5238)r.http when using pagination (#5256)orderBy.limit changefeeds prevent other changefeeds on the same
table from becoming ready (#5247)Object#timeout function in the Ruby driver (#5232)--
Released on 2015-12-21
Bug fix release
RethinkDB 2.2.2 servers cannot be mixed with servers running RethinkDB 2.2.1 or earlier in the same cluster. The protocol change was necessary to address correctness issues in the changefeed implementation.
No migration is required when upgrading from RethinkDB 2.2.0 or higher. Please read the RethinkDB 2.2.0 release notes if you're upgrading from an older version.
include_initial changefeeds to miss changes (#5216)include_initial changefeeds to stall and never reach the
"ready" state (#5157)include_initial changefeeds to emit unexpected initial
results with a null value (#5153)skip in combination with limit (#5155)ReQLCompileError in the JavaScript driver (#4803)rethinkdb restore now waits for tables to be available (#5154)--
Released on 2015-11-16
Bug fix release
RethinkDB 2.2.1 is fully compatible with RethinkDB 2.2.0. Please read the RethinkDB 2.2.0 release notes if you're upgrading from an older version.
getAll queries (#5085)rethinkdb export and rethinkdb dump now limit the number of subprocesses to
reduce memory consumption (#4809)orderBy.limit changefeeds (#5081)getAll with illegal keys (#5086)r.uuid is now considered a deterministic operation if it is passed a single
argument (#5092)asyncio
event loop on Python (#5043)--
Released on 2015-11-12
RethinkDB 2.2 introduces atomic changefeeds. Atomic changefeeds include existing values from the database into the changefeed result, and then atomically transition to streaming updates.
Atomic changefeeds make building realtime apps dramatically easier: you can use a single code path to populate your application with initial data, and continue receiving realtime data updates.
This release also includes numerous performance and scalability improvements designed to help RethinkDB clusters scale to larger sizes while using fewer resources.
Read the blog post for more details.
Data files from RethinkDB version 1.16 onward will be automatically migrated. As with any major release, back up your data files before performing the upgrade.
If you're upgrading from RethinkDB 1.14.x or 1.15.x, you need to migrate your secondary indexes first. You can do this by following these steps:
sudo pip install 'rethinkdb<2.1.0').rethinkdb index-rebuild.Afterwards, you can install RethinkDB 2.2 and start it on the existing data files.
If you're upgrading directly from RethinkDB 1.13 or earlier, you will need to manually
upgrade using rethinkdb dump.
.orderBy.limit as well as .get queries previously provided
initial results by default. You now need to include the optional argument
includeInitial: true to .changes to achieve the same behavior.ReqlDriverError exceptions now throw
ReqlCompileError exceptions. See #4669 for a full list of changes.RethinkDB 2.2.0 now comes with official packages for Ubuntu 15.10 (Wily Werewolf) and CentOS 7.
We no longer provide packages for Ubuntu 10.04 (Lucid Lynx), which has reached end of life.
include_initial optarg (#3579)values command to obtain the values of an object as an array (#2945)conn.server command to identify the server for a given connection (#3934)r.uuid to accept a string and work as a hash function (#4636)between queries on secondary indexes (#4862)getAll with a secondary index in some edge cases
(#4948)raft_leader field to a table's status to expose its current Raft leader
(#4902)'logs' system table more robust (#4929)indexStatus now exposes the secondary index function (#3231)changefeed_queue_size to specify how many changes the server
should buffer on a changefeed before generating an error (#3607)branch to accept an arbitrary number of conditions and values (#3199)coerceTo('BOOL') consistent with branch (#3133)filter and map queries involving geospatial terms are now allowed
(#4063)or and and to accept zero arguments (#4132)ReqlCompileError rather
than ReqlDriverError for certain errors (#4669)eachAsync method on cursors that behaves like each but also returns a
promise (#4784)--server-name parameter in rethinkdb --help (#4739)'jobs' table (#4923)getIntersecting queries (#4937)r.minval and r.maxval values when writing to the
'_debug_scratch' system table (#4032)r.asc("test") to not fail as it should (#4951)toString are now properly quoted (#4997)Many thanks to external contributors from the RethinkDB community for helping us ship RethinkDB 2.2. In no particular order:
--
Released on 2015-10-08
Bug fix release
rethinkdb.jobs table" errors (#4819)std::terminate() called without any exception. when losing a cluster connection
(#4878)mark_ready() function that could occur when
reconfiguring a table (#4875)orderBy.limit queries (#4850)orderBy.limit queries correctly (#4852)indexStatus to report results for additional indexes that
were not specified in its arguments (#4868)Assertion failed: [ptr_] error when reconfiguring tables quickly with a
debug-mode binary (#4871)r.js functions to avoid a
Guarantee failed: [!key.IsEmpty() && !val.IsEmpty()] crash in the worker process
(#4879)getAll queries that fetch multiple keys at once (#1526)--
Released on 2015-09-16
Bug fix release
reconfigure is called with a non-existent server tag (#4840)stats system table (#4837)rethinkdb restore and rethinkdb import commands now wait for secondary
indexes to become ready before beginning the data import (#4832)--
Released on 2015-09-04
Bug fix release
ssl option in the JavaScript driver (#4786)backports.ssl_match_hostname library to the Python driver package (#4683)https sources in r.http on OS X (#3112)Unexpected exception error (#4758)Guarantee failed: [pair.second] crash that could occur during resharding
(#4774)"_debug_recommit" recovery option to emergency_repair (#4720)celery and nose (#4764)r.db('rethinkdb') while the
server is under load (#4773)Many thanks to external contributors from the RethinkDB community for helping us ship RethinkDB 2.1.3. In no particular order:
--
Released on 2015-08-25
Bug fix release
get_all query no longer return initial values. This restores the
behavior from RethinkDB 2.0get_all queries to avoid various
issues and incompatibilitiesindex_create atomic to avoid race conditions when multiple indexes were created
in quick succession (#4694)r.js (#4663)Branch history is missing pieces error (#4721)Guarantee failed: [!send_mutex.is_locked()] (#4710)Guarantee failed: [active()] (#4678)Guarantee failed: [val.has()] (#4736)Assertion failed issue when running a debug-mode binary (#4685)eglibc bug that caused an unexpected address family
error on startup (#4470)--
Released on 2015-08-25
Bug fix release
r.js (#4663)eglibc bug that caused an unexpected address family
error on startup (#4470)Guarantee failed: [active()] (#4678)Guarantee failed: [fn_id != __null] in combination with the r.js command (#4611)is_empty term (#4592)--
Released on 2015-08-12
Bug fix release
--migrate-inconsistent-data command line argument (#4665)--
Released on 2015-08-11
Release highlights:
Read the blog post for more details.
Data files from RethinkDB versions 1.14.0 onward will be automatically migrated. As with any major release, back up your data files before performing the upgrade.
If you're upgrading directly from RethinkDB 1.13 or earlier, you will need to manually
upgrade using rethinkdb dump.
Note that files from the RethinkDB 2.1.0 beta release are not compatible with this version.
This release introduces a new system for dealing with server failures and network partitions based on the Raft consensus algorithm.
Previously, unreachable servers had to be manually removed from the cluster in order to restore availability. RethinkDB 2.1 can resolve many cases of availability loss automatically, and keeps the cluster in an administrable state even while servers are missing.
There are three important scenarios in RethinkDB 2.1 when it comes to restoring the availability of a given table after a server failure:
emergency_repair option
to table.reconfigure can be used to restore table availability in this case.To reflect changes in the underlying cluster administration logic, some of the tables in
the rethinkdb database changed.
Changes to table_config:
nonvoting_replicas, that can be set to a
subset of the servers in the replicas field.write_acks must now be either "single" or "majority". Custom write ack
specifications are no longer supported. Instead, non-voting replicas can be used to set
up replicas that do not count towards the write ack requirements."error" field.indexes field lists the secondary indexes on the given table.Changes to table_status:
primary_replica field is now called primary_replicas and has an array of
current primary replicas as its value. While under normal circumstances only a single
server will be serving as the primary replica for a given shard, there can temporarily
be multiple primary replicas during handover or while data is being transferred between
servers.state field now are "ready", "transitioning",
"backfilling", "disconnected", "waiting_for_primary" and "waiting_for_quorum".Changes to current_issues:
"table_needs_primary", "data_lost", "write_acks",
"server_ghost" and "server_disconnected" can no longer occur."table_availability" was added and appears whenever a table is
missing at least one server. Note that no issue is generated if a server which is not
hosting any replicas disconnects.Changes to cluster_config:
id "heartbeat" allows configuring the heartbeat timeout for
intracluster connections.RethinkDB 2.1 introduces new error types that allow you to handle different error classes separately in your application if you need to. You can find the complete list of new error types in the documentation.
As part of this change, ReQL error types now use the Reql name prefix instead of Rql
(for example ReqlRuntimeError instead of RqlRuntimeError).
The old type names are still supported in our drivers for backwards compatibility.
.split('') now treats the input as UTF-8 instead of an array of bytesnull values in compound index are no longer discardedread_mode="outdated" optional argument replaces use_outdated=TrueThe older protocol-buffer-based client protocol is deprecated in this release. RethinkDB 2.2 will no longer support clients that still use it. All "current" drivers listed on the drivers page use the new JSON-based protocol and will continue to work with RethinkDB 2.2.
table.reconfigure now works even if some servers are disconnected (#3913)ceil, floor and round (#866)rethinkdb export now supports the --delimiter option for CSV files (#3916)table_status system table (#3882, #4196)indexes field to the table_config system table (#4525)datum_t movable (#4056)is_empty term (#4592)squash option now send batches early if the changefeed queue
gets too full (#3942).split('') is now UTF-8 aware (#2518)null (#4146)r.union is now a top-level term (#4030)condition.branch(...) now works just like r.branch(condition, ...) (#4438)update and replace arguments (#4582)--max-document-size option to the rethinkdb import script to handle
very large JSON documents (#4452)r.__version__ property (#3100)time_of_date and date now respect timezones (#4149)has_fields now returns a selection when called on a table (#2609)Guarantee failed: [fn_id != __null] in combination with the r.js command (#4611)db optional argument to run consistent with the Ruby and
Python drivers (#4347)Many thanks to external contributors from the RethinkDB community for helping us ship RethinkDB 2.1. In no particular order:
--
Released on 2015-07-08
Bug fix release
distinct queries over low-cardinality data sets (#4362)info on an ordered table stream (#4242)--
Released on 2015-06-10
Bug fix release
r.js (#4190)--
Released on 2015-05-22
Bug fix release
return_changes: 'always' option to restore the return_changes behavior from before 2.0.0 (#4068)return_changes where it would populate changes despite an error occurring (#4208)get_all with many keys (#4218)r.row with the contains command in the JavaScript driver (#4125)--
Released on 2015-04-20
Bug fix release
--
Released on 2015-04-14
Release highlights:
get_all and union commandsRead the release blog post for more details.
Data files from RethinkDB versions 1.13.0 onward will be automatically migrated to version 2.0. As with any major release, back up your data files before performing the upgrade.
IEEE 754 floating point numbers distinguish between negative (-0) and positive (+0) zero. The following information is only relevant if you are storing negative zero values in your documents. We expect very few users to be affected by this change.
ReQL compares -0 and +0 as equal in accordance with IEEE 754. In previous versions of RethinkDB, -0 and +0 were however treated as distinct values in primary and secondary indexes. This could lead to inconsistent behavior and wrong query results in some rare cases.
Starting with RethinkDB 2.0, -0 and +0 are indexed as equal values.
Secondary indexes can be migrated online using
the rethinkdb index-rebuild utility. If any of your documents have
negative zero values in their primary keys, those documents will
become partially inaccessible in RethinkDB 2.0. You will need to
re-import the affected tables using the rethinkdb dump and
rethinkdb restore commands. See the article "Back up your
data" for more information.
If you are unsure if any of your documents are affected, you can run
python -m rethinkdb._negative_zero_check after upgrading both the
server and Python driver. See the output of python -m rethinkdb._negative_zero_check --help for additional options.
between no longer accepts null bounds. The new r.minval and
r.maxval can be used instead
The any and all commands have been removed. The or and and
commands can be used instead
indexes_of has been renamed to offsets_of
The squash argument to changes now defaults to false
The type hierarchy for exception types in the Python driver changed.
All exceptions including RqlDriverError now inherit from the
RqlError type. RqlRuntimeError, RqlCompileError and
RqlClientError additionally inherit from the new RqlQueryError
type
get_all and union queries (#3642)between no longer accepts null as a bound. The new r.minval and r.maxval can be used instead (#1023)include_states optarg to changes (#3709)cursor.next (#3529)ResponseNotes field to convey extra information (#3715)batchspec_t (#2671)multi_throttling infrastructure (#4021)TCP_NODELAY in the Python and Ruby driver to avoid delays in combination with noreply (#3998)table.rebalance with insufficient data is no longer an error (#3679)indexes_of to offsets_of to avoid confusion with secondary indexes (#3265)any and all in favor of or and and (#1581)return_changes (#3697)timeout option to r.connect (#1666)RDBBtree tests to avoid false positives (#3805)order_by.limit changefeeds when a table become unavailable (#3932)noreplyWait no longer waits for non-noreply queries (#3812)order_by changefeeds are now returned in order (#3993)InternalError when loading large tables (#3873)localStorage (#3935)rethinkdb export compatibility between Python 2 and Python 3 (#3911)rethinkdb export to hang when certain errors occur (#4005)cursor.each to fail with an exception (#3826)close twice (#4017)feed.close (#3967)Many thanks to external contributors from the RethinkDB community for helping us ship RethinkDB 2.0. In no particular order:
--
Released on 2015-03-26
Bug fix update.
rethinkdb export compatibility between Python 2 and Python 3 (#3911)rethinkdb restore (#3859)cursor.each to fail with an exception (#3826)--
Released on 2015-02-16
Bug fix update.
r.range that caused query failures (#3767).order_by.limit.changes (#3765)r.js performance (#3757)--
Released on 2015-02-12
Bug fix update.
rethinkdb dump and other backup scripts to correctly detect the server version (#3706)rethinkdb dump to clarify that indexes are being saved (#3708)written_docs_total field of rethinkdb.stats (#3713)-f flag of rethinkdb import (#3728)r.js (#3745)--
Released on 2015-01-29
The highlights of this release are:
Read the release blog post for more details.
Data files from RethinkDB versions 1.13.0 onward will be automatically migrated to version 1.16.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.
Secondary indexes now use a new format; old indexes will continue to work, but you should rebuild indexes after upgrading to 1.16.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.
The abstraction of datacenters has been replaced by server tags. Existing datacenter assignments will be converted to server tags automatically.
The tableCreate, tableDrop, dbCreate and dbDrop terms have a new set of return values.
The previous return values created and dropped have been renamed to tables_creates / dbs_created and
tables_dropped / dbs_dropped respectively. The terms now additionally return a config_changes field.
Consult the API documentation for these commands for details: tableCreate, tableDrop, dbCreate, dbDrop
Changefeeds on a table now combine multiple changes to the same document into a single notification if they happen rapidly.
You can turn this behavior off by passing the squash: false optional argument (see the
API documentation for details).
Strings passed to ReQL are now rejected if they are not valid UTF-8. Non UTF-8 conformant data can be stored as binary data instead.
rethinkdb
table_config table allows changing a table's configuration (#2870)server_config table allows listing and managing servers in the cluster (#2873)db_config table allows listing and renaming databases (#151, #2871)cluster_config table contains cluster-wide settings (#2924)table_status table displays each table's availability and replication status (#2983, #3269)server_status table contains information about the servers in the cluster (#2923, #3270)current_issues table lists issues affecting the cluster and suggests solutions (#2864, #3258)jobs table lists running queries and background tasks (#3115)stats table contains real-time statistics about the server (#2885)logs table provides access to the server logs (#2884)identifierFormat optional argument to table switches how databases, tables and servers are referenced in the system tables. Can be either "name" or "uuid" (#3266)_debug_table_status, _debug_stats). These tables are subject to change and not part of the official administration interface (#2901, #3385)--server-tag flag or by updating the server_config table (#2856)tableCreate (#2876)rethinkdb admin command line interfacereconfigure command to change the replication and sharding settings of a table (#2932)rebalance command to even out the size of a table's shards (#2981)config command for tables and databases as an alias for the corresponding row in db_config or table_configstatus command for tables as an alias for the corresponding row in table_status/ajax endpoints have been removed. Their functionality has been moved to the system tables (#2878, #2879)db_create, db_drop, table_create and table_drop (#3001)durability and write_acks are configured (#3066)r.range which generates all numbers from a given range (#875)wait command which waits for a table to be ready (#2259)toJsonString which converts a datum into a JSON string (#2513)map into a variadic function for mapping over multiple sequences in parallel (#2574)map (#3321)squash argument to the changes command, which lets the server combine multiple changes to the same document (defaults to true) (#2726, #3558)min and max now use an index when passed the new index parameter (#2974, #2981)changes can now be chained onto:
between (#3232)getfiltermap and other commands that are stream-polymorphic such as mergemin and maxorderBy and limitbetween followed by map--direct-io flag to enable direct IO and deprecated the --no-direct-io flag (#3391)rethinkdb export now exports secondary index information and rethinkdb import re-creates those indexes unless it is given the --no-secondary-indexes flag (#3484)rethinkdb executable (#1093)getAll queries on secondary indexes are now shown in the performance graph (#2379)getField to the autocompletion in the Data Explorer (#2624)jemalloc is now used by default instead of tcmalloc, which solves some memory inflation (#2279)stderr can't be flushed (#2790)--machine-name flag is now --server-name (#2877, #3254)info: lines to stderr and added a notice log level (#3040)--no-default-bind option that prevents the server from listening on loopback addresses (#3154)kqueue is now used instead of poll for events on OS X for better performance (#3403)--no-update-check flag (#3170)typeOf and info now match (#3059)isOpen method to connections (#2113)info on tables now works when useOutdated is true (#3355)info on tables now includes the table id (#3358)SUCCESS_ATOM_FEED return type, used when returning changes for a single document (#3389)next method for cursors (#3042)r.expr now accepts any iterable or mapping (#3146)rethinkdb export now avoids traversing each table twice by using an estimated document count (#3483)procps as a dependency in the Debian packages (#3404)jemalloc instead of gperftools (#3419)TimerTest test (#549)between queries to from TABLE to the more correct TABLE_SLICE (#1728)run (#3161)order_by (#3221)Many thanks to external contributors from the RethinkDB community for helping us ship RethinkDB 1.16. In no particular order:
--
Released on 2015-01-08
Bug fix update.
reverse_iterator implementation for leaf nodes (#3446)between and
distinct (#3346)NULL to memcpy (#3317)rethinkdb import and rethinkdb export to hang (#3458)Released on 2014-11-07
Bug fix update.
r.point constructor to be deterministic, allowing it to be used
in secondary index functions (#3287)import command
(#3259)object_buffer_t data (#3300)Released on 2014-10-07
Bug fix update.
durability option (#3128)r.http to fail under OS X (#3112)Released on 2014-09-23
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.
r.uuid for generating unique IDs (#2063)BRACKET term to the query language, to improve the bracket
operator in client drivers (#1179)datum_t to be uninitialized (#2985)zip by replacing the zip_datum_stream_t type
with a transformer function (#2654)r.match by adding regex caching and a framework
for generic query-based caches (#2196)test/common (#2829)--cache-size parameter (#2816)r.row to provide an error message on an attempt to call it like a
function (#2960)r.literal corner cases (#2710)r.literal is used in an invalid context
(#1600)ql2.proto was
changed (#2965)or isinstance with a tuple of types (#2968)kwarg assignments (#2969)default_db, host and port were not exposed in the
Connection object (#2849)Many thanks to external contributors from the RethinkDB community for helping us ship RethinkDB 1.15. In no particular order:
Released on 2014-09-09
Bug fix update.
rethinkdb index-rebuild to fail with auth keys (#2970)rethinkdb export to specify binary_format='raw' to work with binary data correctly (#2964)rethinkdb import to handle Unicode in CSV files (#2963)r.http to crash when used with pagination and coerce_to (#2947)Released on 2014-08-20
The highlights of this release are:
Read the release blog post for more details.
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:
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:
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 insert, delete,
and update for details:
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.
upsert replaced with conflict argument for insert (#1838)binary (#137, #2612, #2931)binary_format="raw" added to run (#2762)index_rename (#2794)r.http can return a binary object (#2806)distinct is faster and now works on indexes (#1864)r.js (#2748)index_status provides more info (#2791)--runuser and --rungroup set proper permissions when used with
rethinkdb create (#1722)getaddrinfo error handling (#2110)RPCSemilatticeTest.MetadataExchange (#2758)query_params to a map (#2812)header_lines into a map (#2818)delete_at (#2696)insert and splice now check array size limit (#2697)batch_conf option (#2709)all and any behave like and_ and or_ (#2659)os.path.splitext to check file extensions (#2681)Many thanks to external contributors from the RethinkDB community for helping us ship RethinkDB 1.14. In no particular order:
Released on 2014-08-14
Bug fix update.
--temp-dir option to rethinkdb dump and rethinkdb restore (#2783)batchConf argument to run now works in the JavaScript driver (#2707)Accept-Encoding header sent by r.http (#2695)cursor.close now takes a callback in the JavaScript driver (#2591)illegal to destroy fifo_enforcer_sink_t errors (#2264)Assertion failed: [!parent->draining.is_pulsed()] errors (#2811)r.js (#2642)Released on 2014-07-07
Bug fix update.
cluster_version may be used uninitialized (#2640)std::move twice on the same object (#2638)Released on 2014-06-26
Bug fix update.
Assertion failed: [ptr_] errors when shutting down (#2594)Uncaught exception of type "cannot_perform_query_exc_t" errors (#2576)primary (#2575)null are now handled correctly in the Data Explorer (#2573)r.http now properly parses headers when following a redirection (#2556)r.js to crash in certain circumstances (#2435)EPIPE errors when connecting to an old version of the server (#2422)Could not bind socket errors when using --bind (#2405)Failed to parse as valid uuid errors (#2401)bad magic number error message (#2302)default now catches index out of bounds errors on streams (#1922)Released on 2014-06-13
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.
Read the release blog post for more details.
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:
There are also some backwards incompatible changes in the JavaScript driver.
hasNext command for cursors has been removed. next can be used instead.r.random for generating random numbers (#865)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)master not available error message (#1811)changes command for creating live change feeds (#997)r.args to allow specifying a dynamic number of arguments to commands such as get_all (#1854)r.http for interfacing with external APIs (#1383)src/ folder (#2301)hasNext command (#2497)on, once, removeListener and removeAllListeners methods to cursors (#2223)r.connect has been made optional (#2273)configure script (#2478)chunk_processing_semaphore (#2392)r.db (#1907)order_by and other sortings be stable (#2155)Callstack overflow in a coroutine errors (#2357)cJSON (#2496)r.expr are now properly validated (#2384)r.js returns a bad datum (#2409)close errors when reconnecting (#2276)nesting_depth argument to r.expr (#2408)Many thanks to external contributors from the RethinkDB community for helping us ship RethinkDB 1.13. In no particular order:
Released on 2014-05-21
Bug fix update.
Guarantee failed: [!mod_info->deleted.second.empty() && mod_info->added.second.empty()] errors (#2285)order_by following between (#2307)Deserialization of rdb value failed with error archive_result_t::RANGE_ERROR errors (#2399)reduce no longer accepts the base argument (#2288)Released on 2014-04-22
Bug fix update.
Assertion failed: [page->is_disk_backed()] errors (#2260)Released on 2014-04-17
Bug fix update.
--join options no longer cause a crash (#2219)fsync a directory is now a warning instead of an error (#2255)Released on 2014-04-08
Bug fix update.
illegal to destroy fifo_enforcer_sink_t errors (#2092)Guarantee failed: [resp != __null] errors (#2214)Segmentation fault errors (#2222)PageTest unit test (#2187)Released on 2014-03-27
Bug fix update.
evicter.cc at line 124: Guarantee failed: [initialized_] (#2182)index_wait which did not always work (#2170, #2179)--hard-durability option to import/restore--cache-size to be more friendly towards machines with less free RAMReleased on 2014-03-26
The highlights of this release are a simplified map/reduce, an experimental ARM port, and a new caching infrastructure.
Read the release blog post for more details.
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:
There are also some backwards incompatible changes in ReQL, the query language.
grouped_map_reduce and group_by were replaced by groupreduce no longer takes a base argument; use default insteadtable_create no longer takes a cache_size argumentrun has changed.--cache-size command line option that sets the cache size in MiB for a single instancecache_size optional argument for table_createmerge now accepts functions as an argument (#1345)object command to build objects from dynamic field names (#1857)base argument to reduce (#888)split command to split strings (#1099)upcase and downcase commands to change the case of a string (#874)grouped_map_reduce and groupBygroup and ungroupcount, sum and avg and added max and minlimit (#1786)r.table(...).count() no longer stalls inserts (#1870)linux_file_t::set_size no longer makes blocking syscalls (#265)rethinkdb admin now prints warnings to stderr instead of stdout (#1316)import and export scripts now display a row count when done (#1659)log_file and no_direct_io in the init script (#1769, #1892)rethinkdb export no longer fails when there are no tables (#1904)rethinkdb import no longer tries to parse CSV files as JSON (#2097)close method on cursors (#1568)define_method instead of method_missing, which improves compatibility with Sinatra (#1896)and_ and or_ and a warning for misuse of | and & (#1582)r.row in eq_join (#1810)count with an argument now behaves correctly (#1992)get_field command (#1941)r.row in eqJoin (#1810)run (#1890)Array.prototype (#2112)./configure now checks for boost and can fetch it if it is not installed (#1699)Released on 2014-01-14
Bug fix update.
order_by followed by count (#1796)database.table) in rethinkdb admin (#1795)get of a non-existent document followed by replace now works as documented (#1570)Released on 2013-12-06
Bug fix update.
r.ISO8601 in the Data Explorerfsync parent directories to avoid data loss (#1703)Released on 2013-12-02
Bug fix update.
ResponseType field in responses to STOP queries (#1715)Released on 2013-11-25
This release introduces a new query profiler, an overhauled streaming infrastructure, and many enhancements that improve ease and robustness of operation.
Read the release blog post for more details.
rethinkdb import and rethinkdb export (#1415)profile=True to run (#175)wait commandclose and reconnectindex_status and index_wait commands (#1562)perfmon_collection_t after destruction (#1497)rethinkdb export more resilient to low-memory conditions (#1546)rethinkdb import (#1597)order_by queries now return arrays (#1566)inserted result (#1547)r.js (#1638)r.js now works with time values (#1513)RqlTzInfo copyable (#1588)ArrayResult (#1578, #1584)limit (#1617)gperftools (#1594)termcap is handled by ./configure (#1622)Released on 2013-10-23
Bug fix update.
r.js no longer fails when interrupted too early (#1553)get_all queries is no longer duplicated (#1541)Guarantee failed: [!token_pair->sindex_write_token.has()] (#1380)pluck in combination with limit now returns a stream when possible (#1502)undefined variable error in tzname() (#1512)Released on 2013-09-26
Read the release blog post for more details.
filter support the nested object syntax (#1325)r.not_ to the Python driver (#1329)threadnum_t instead of using raw ints for thread numbers (#1445)rethinkdb admin help (#936, #1447)make no longer runs ./configure (#979)batched_rget_stream_t no longer uses an out-of-date interruptor (#1411)protobuf_implementation variable was added to the JavaScript driver (#1416)r.json is no longer incorrectly marked as non-deterministic (#1430)rethinkdb_pbcpp in the Python driver (#1438)groupBy with illegal pattern (#1460)default is no longer unprintable in Python (#1476)Released on 2013-09-09
Read the release blog post for more details.
Bug fix update.
datum_t and cJSON (#1041)datum_t instead of cJSON_t (#1326)Buffer instead of ArrayBuffer in the JavaScript driver (#1244)orderBy on an index no longer destroys the preceding between (#1333)rethinkdb import now works with Python 2.6 (#1349)Released on 2013-08-21
Bug fix update.
pip show (#1331)rethinkdb help no longer uses a pager (#1315, #1308)SVGRectElement (#1314)filter with a non-deterministic value (#1299)Released on 2013-08-14
This release introduces date and time support, a new syntax for querying nested objects and 8x improvement in disk usage.
Read the release blog post for more details.
order_by now accepts a function as an argument and can efficiently sort by index (#159, #1120, #1258)slice and between are now half-open by default (#869)
right_bound argument to closed
or by setting left_bound to opencontains can now be passed a predicate (#870)merge is now deep by default (#872)
literal to merge flat valuescoerce_to can now convert strings to numbers (#877)+, -, <, <=, >, >=, == and !=: arithmetic and comparisonduring: match a time with an intervalin_timezone: change the timezone offsetdate, time_of_day, timezone, year, month, day, weekday, hour, minute and second: accessorstime, epoch_time and iso8601: constructorsmonday to sunday and january to december: constantsnow: current timeto_iso8601, to_epoch_time: conversionpluck (#1094)
without, group_by, with_fields and has_fieldsprotobufjs and node-protobuf libraries--canonical-address HOST[:PORT] command line option for connecting RethinkDB nodes across different networks (#486)
--no-direct-io startup flag that turns off direct IO (#1051)extproc code, making r.js interuptible and fixing many crashes (#1097, #1106)flymake-mode (#1161)next and each in the JavaScript driver (#656)pluck, has_fields, with_fields, etcr.union now returns a stream when given two streams (#1081)r.db can now be chained with do in the JavaScript driver (#1082)for_each and return_vals (#1104)--no-http-admin option now disables the check for the web assets folder (#1092)func_t betweek threads (#1157)conflict_resolving_diskmgr_t to suport files over 1TB (#1170)js_runner_t::call times out (#1218)protob_server_t (#1220)More data link in the data explorer now works consistently (#1222)update and pluck (#1141)Released on 2013-07-19
Bug fix update.
--daemon (#1191)Released on 2013-07-18
Bug fix update.
wire_func_t serialization that caused inserts to fail (#1155)nice_crash and nice_guarantee to improve error messages and logging (#1144)rethinkdb import now warns when unexpected files are found (#1143)rethinkdb import now correctly imports nested objects (#1142)r.without (#1139)rethinkdb dump about indexes and cluster config (#1137)debian/rules makefile to properly build the rethinkdb-dbg package (#1130)make install to not use /dev/stdin (#1125)index.html in the web UI (#1117)rethinkdb porcelain now removes the new directory if it fails (#1070)Released on 2013-07-04
Bug fix update.
rethinkdb import to crash on single filesrethinkdb import for custom CSV separators and no headers (#1112)Released on 2013-07-03
This release introduces hot backup, atomic set and get operations, significant insert performance improvements, nested document syntax, and native binaries for CentOS / RHEL.
Read the release blog post for more details.
r.json for parsing JSON strings server-side (#887)pluck to access nested documents (#889)get_all now takes a variable number of arguments (#915)update, insert, delete and replace now take an optional return_vals argument that returns the values that have been atomically modifiedgetattr to get_field and make it polymorphic on arrays (#993)r.json to improve the performance of inserts (#1085)pluck (#1095)
auth_key conflicts via the web UI (#1028)rethinkdb import, rethinkdb export, rethinkdb dump and rethinkdb restorerethinkdb admin no longer requires the --join option (#1052)
between with null and secondary indexes (#1001){...} in the Data Explorer (#1038)Released on 2013-06-19
r.table_list() no longer throws an error (#1005)Released on 2013-06-13
This release introduces basic access control, regular expression matching, new array operations, random sampling, better error handling, and many bug fixes.
Read the release blog post for more details.
sample command for random sampling of sequences (#861, #182)onFinished callback to each in JavaScript to improve cursors (#443)hard_durability=True to durability = 'soft' | 'hard'durability option to runwith_fields command, and pluck no longer throws on missing attributes (#886)contains to has_fields (#885)
has_fields runs on tables, objects, and arrays, and doesn't throw on missing attributescontains now checks if an element is in an arraydefault command: replaces missing fields with a default value (#884)prepend: prepends an element to an arrayappend: appends an element to an arrayinsert_at: inserts an element at the specified indexsplice_at: splices a list into another list at the specified indexdelete_at: deletes the element at the specified indexchange_at: changes the element at the specified index to the specified value+ operator: adds two arrays -- returns the ordered union* operator: repeats an array n timesdifference: removes all instances of specified elements from an arraycount: returns the number of elements in an arrayindexes_of: returns positions of elements that match the specified value in an arrayis_empty: check if an array or table is emptyset_insert: adds an element to a setset_intersection: finds the intersection of two setsset_union: returns the union of two setsset_difference: returns the difference of two setsmatch command for regular expression matching (#867)keys command that returns the fields of an object (#181)-v flag as an alias for --version (#839)--io-threads flag to allow limiting the amount of concurrent I/O operations (#928)make build the Ruby and Python drivers (#923)pluck and without (#947)return is omitted in Javascript (#914){ ... } in the table view (#937)libprotobuf in the correct path (#860, #853)Released on 2013-05-24
Bug fix update.
./configure --fetch protobuf resolved.run in the data explorer gives a more helpful error messageReleased on 2013-05-16
Bug fix update.
Released on 2013-05-16
This release introduces secondary indexes, stability and performance enhancements and many bug fixes.
Read the release blog post for more details.
r.js now takes an optional timeout argumentls tables --long now includes a durability columninfo command that provides information on any ReQL value (useful for retreiving the primary key)table_createmake test outputperfmon_result_t is no longer 32-bit/64-bit dependent0.0.0.0 be equivalent to allAssertion failed: [!br.point_replaces.empty()] in src/rdb_protocol/protocol.cctypeof()table_create: datacenter and cache_sizereducezip in API documentationtabletableCreate, tableDrop and tableList to driversmap after dbList and tableList no longer errorsinserted,deleted,skipped,replaced,unchanged,errors)groupBySTOP query when the connection is closedlimit no longer automatically converts streams to arraystypeOf is no longer broken in JavaScript drivergroupBy can now handle both a MAKE_OBJ protobuf and a literal R_OBJECT datum protobufNaN in all casesuse_outdated when specified as a global option argumentmake test now works on OS Xmake -j2 segfaulting when building on older versions of makemake clean is more aggressivecoffee-scriptclang and ccache./configure --fetch-protobufReleased on 2013-05-03.
Bug fix update:
Released on 2013-04-19.
Bug fix update:
rethinkdb help and --help consistent (#643)Released on 2013-04-10.
Bug fix update:
rethinkdb proxy --help (#565)None (#564)Released on 2013-03-30.
Bug fix update:
~ with About in the web UI (#485)rethinkdb import command (#535)Released on 2013-03-22.
Bug fix update:
runuser or rungroup options are present (#512)Relased on 2013-03-18.
Released on 2013-01-15.
Released on 2012-12-20.
Released on 2012-12-20.
Released on 2012-12-15.
r.row
changes.Released on 2012-12-14.
Released on 2012-11-13.
Released on 2012-11-11.
Released on 2012-11-11.
Released on 2012-11-09.
Released on 2012-11-09.
This is the first release of the product. It includes:
There are a number of technical limitations that aren't baked into the architecture, but were not resolved in this release due to time pressure. They will be resolved in subsequent releases.