RethinkDB Changelog

What's new in RethinkDB 2.2.4

Feb 2, 2016
  • Bug fixes:
  • Fixed a bug in the clustering system that could lead to data loss, inconsistent reads, and server crashes after reconfiguring a table during incomplete connectivity (#5289, #4949)
  • Fixed a segmentation fault that occurred when requesting certain documents from the stats system table (#5327)
  • Changefeeds on system tables now support map, filter and related commands (#5241)
  • Backtraces are now printed even if the addr2line tool is not installed (#5321)
  • The Java driver now supports SSL connections thanks to a contribution by @pires (#5284)
  • Fixed the "Serialized query" debug output in the Java driver (#5306)
  • Fixed an incompatibility of the rethinkdb import script with Python 2.6 (#5294)

New in RethinkDB 2.2.2 (Dec 21, 2015)

  • BUG FIXES:
  • Server:
  • Fixed an issue causing include_initial changefeeds to miss changes (#5216)
  • Fixed an issue causing include_initial changefeeds to stall and never reach the "ready" state (#5157)
  • Fixed an issue causing include_initial changefeeds to emit unexpected initial results with a null value (#5153)
  • Improved the efficiency of skip in combination with limit (#5155)
  • Fixed an issue with determinism checking in geospatial commands (#5130)
  • Fixed an invalid memory access that caused segmentation faults on ARM (#5093)
  • Fixed a crash with "Unreachable code" when migrating from versions of RethinkDB older than 1.16 (#5158)
  • Fixed an issue where the server would send an extra response to the client after a cursor completed (#5159)
  • Fixed a build dependency issue with OpenSSL on OS X 10.11 (#4963)
  • Fixed compiler warnings on ARM (#4541)
  • Made the APT repository compatible with APT 1.1 (#5174)
  • Drivers:
  • Fixed missing backtraces on ReQLCompileError in the JavaScript driver (#4803)
  • Upgraded the version of CoffeeScript used to compile the JavaScript driver in order to avoid errors in strict mode (#5198)
  • Fixed a syntax error warning in the Python driver during installation on older Python versions (#4702)
  • rethinkdb restore now waits for tables to be available (#5154)

New in RethinkDB 2.2.0 (Nov 12, 2015)

  • HIGHLIGHTS:
  • Atomic changefeeds: the changes command now accepts an optional argument called includeInitial, which allows atomically reading existing data and processing new results with a single query.
  • Optimized fetches: the getAll code path has been optimized to perform a single network round trip, which results in an 8x performance improvement.
  • Parallel scans: fetching large amounts of sequential data from RethinkDB now scales linearly with the size of the cluster.
  • Improved memory usage: memory usage on large datasets has been reduced by over 50%.
  • New ReQL commands: We added a new values command, and Peter Hollows expanded r.uuid to support user defined hashes.
  • NEW FEATURES:
  • Added full support for atomic changefeeds through the include_initial optarg (#3579)
  • Added a values command to obtain the values of an object as an array (#2945)
  • Added a conn.server command to identify the server for a given connection (#3934)
  • Extended r.uuid to accept a string and work as a hash function (#4636)
  • IMPROVEMENTS:
  • Server:
  • Improved the scalability of range queries on sharded tables (#4343)
  • Improved the performance of between queries on secondary indexes (#4862)
  • Reduced the memory overhead for large data sets (#1951)
  • Redesigned the internal representation of queries to improve efficiency (#4601)
  • Removed the deprecated protocol buffer driver protocol (#4601)
  • Improved the construction of secondary indexes to make them resumable and to reduce their impact on any production workload (#4959)
  • Improved the performance when using getAll with a secondary index in some edge cases (#4948)
  • Removed the limit of 1024 concurrent changefeeds on a single connection (#4732)
  • Implemented automatically growing coroutine stacks to avoid stack overflows (#4462)
  • Optimized the deserialization of network messages to avoid an extra copy (#3734)
  • Added a raft_leader field to a table's status to expose its current Raft leader (#4902)
  • Made the handling of invalid lines in the 'logs' system table more robust (#4929)
  • ReQL:
  • indexStatus now exposes the secondary index function (#3231)
  • Added an optarg called changefeed_queue_size to specify how many changes the server should buffer on a changefeed before generating an error (#3607)
  • Extended branch to accept an arbitrary number of conditions and values (#3199)
  • Strings can now contain null characters (except in primary keys) (#3163)
  • Streams can now be coerced directly to an object (#2802)
  • Made coerceTo('BOOL') consistent with branch (#3133)
  • Changefeeds on filter and map queries involving geospatial terms are now allowed (#4063)
  • Extended or and and to accept zero arguments (#4132)
  • Web UI:
  • The Data Explorer now allows executing only parts of a query be selecting them (#4814)
  • All drivers:
  • Improved the consistency of ReQL error types by throwing ReqlCompileError rather than ReqlDriverError for certain errors (#4669)
  • JavaScript driver:
  • Added an eachAsync method on cursors that behaves like each but also returns a promise (#4784)
  • Python driver:
  • Implemented an API to override the default JSON encoder and decoder (#4825, #4818)
  • BUG FIXES:
  • Server:
  • Fixed a segmentation fault that could happen when disconnecting a server while having open changefeeds (#4972)
  • Updated the description of the --server-name parameter in rethinkdb --help (#4739)
  • Fixed a crash with the message "Guarantee failed: [ts->tv_nsec >= 0 && ts->tv_nsec < (1000LL * (1000LL * 1000LL))] " (#4931)
  • Fixed a problem where backfill jobs didn't get removed from the 'jobs' table (#4923)
  • Fixed a memory corruption that could trigger a segmentation fault during getIntersecting queries (#4937)
  • Fixed an issue that could stop data files from RethinkDB 1.13 from migrating properly (#4991)
  • Fixed a "Guarantee failed: [pair.second] key for entry_t already exists" crash when rapidly reconnecting servers (#4968)
  • Fixed an "Uncaught exception of type interrupted_exc_t" crash (#4977)
  • Added a check to catch r.minval and r.maxval values when writing to the '_debug_scratch' system table (#4032)
  • ReQL:
  • Fixed the error message that's generated when passing in a function with the wrong arity (#4189)
  • Fixed a regression that caused r.asc("test") to not fail as it should (#4951)
  • JavaScript driver:
  • Object keys in toString are now properly quoted (#4997)

New in RethinkDB 2.1.2 (Aug 28, 2015)

  • Compatibility:
  • RethinkDB 2.1.2 servers cannot be mixed with servers running earlier versions in the same cluster
  • Changefeeds on a get_all query no longer return initial values. This restores the behavior from RethinkDB 2.0
  • Bug fixes:
  • Fixed an issue where writes could be acknowledged before all necessary data was written to disk
  • Restored the 2.0 behavior for changefeeds on get_all queries to avoid various issues and incompatibilities
  • Fixed an issue that caused previously migrated tables to be shown as unavailable (#4723)
  • Made outdated secondary index warnings disappear once the problem is resolved (#4664)
  • Made index_create atomic to avoid race conditions when multiple indexes were created in quick succession (#4694)
  • Improved how query execution times are reported in the Data Explorer (#4752)
  • Fixed a memory leak in r.js (#4663)
  • Fixed the Branch history is missing pieces error (#4721)
  • Fixed a race condition causing a crash with Guarantee failed: [!send_mutex.is_locked()] (#4710)
  • Fixed a bug in the changefeed code that could cause crashes with the message Guarantee failed: [active()] (#4678)
  • Fixed various race conditions that could cause crashes if changefeeds were present during resharding (#4735, #4734, #4678)
  • Fixed a race condition causing a crash with Guarantee failed: [val.has()] (#4736)
  • Fixed an Assertion failed issue when running a debug-mode binary (#4685)
  • Added a workaround for an eglibc bug that caused an unexpected address family error on startup (#4470)
  • Added precautions to avoid secondary index migration issues in subsequent releases
  • Out-of-memory errors in the server's JSON parser are now correctly reported (#4751)

New in RethinkDB 2.1.1 (Aug 13, 2015)

  • Fixed a problem where after migration, some replicas remained unavailable when reconfiguring a table (#4668)
  • Removed the defunct --migrate-inconsistent-data command line argument (#4665)
  • Fixed the slider for setting write durability during table creation in the web UI (#4660)
  • Fixed a race condition in the clustering subsystem (#4670)
  • Improved the handling of error messages in the testing system (#4657)

New in RethinkDB 2.0.4 (Jul 8, 2015)

  • Bug fix release:
  • Fixed the version number used by the JavaScript driver (#4436)
  • Fixed a bug that caused crashes with a "Guarantee failed: [stop]" error (#4430)
  • Fixed a latency issue when processing indexed distinct queries over low-cardinality data sets (#4362)
  • Changed the implementation of compile time assertions (#4346)
  • Changed the Data Explorer to render empty results more clearly (#4110)
  • Fixed a linking issue on ARM (#4064)
  • Improved the message showing the query execution time in the Data Explorer (#3454, #3927)
  • Fixed an error that happened when calling info on an ordered table stream (#4242)
  • Fixed a bug that caused an error to be thrown for certain streams in the Data Explorer (#4242)
  • Increased the coroutine stack safety buffer to detect stack overflows in optarg processing (#4473)

New in RethinkDB 2.0.3 (Jun 23, 2015)

  • Bug fix release:
  • Fixed a bug that broke autocompletion in the Data Explorer (#4261)
  • No longer crash for certain types of stack overflows during query execution (#2639)
  • No longer crash when returning a function from r.js (#4190)
  • Fixed a race condition when closing cursors in the JavaScript driver (#4240)
  • Fixed a race condition when closing connections in the JavaScript driver (#4250)
  • Added support for building with GCC 5.1 (#4264)
  • Improved handling of coroutine stack overflows on OS X (#4299)
  • Removed an invalid assertion in the server (#4313)

New in RethinkDB 2.0.2 (May 21, 2015)

  • Bug fix release:
  • Fixed "duplicate token" error in the web UI that happened with certain browsers (#4174)
  • Fixed a cross site request forgery vulnerability in the HTTP admin interface (#2018)
  • Fixed the EventEmitter interface in the JavaScript driver (#4192)
  • Fixed a problem with the RDBInterrupt.InsertOp unit test in some compilation modes (#4038)
  • Added packages for Ubuntu 15.04 (#4123)
  • Added a `return_changes: 'always'` option to restore the `return_changes` behavior from before 2.0.0 (#4068)
  • Fixed a bug with `return_changes` where it would populate `changes` despite an error occurring (#4208)
  • Fixed a performance regression when calling `get_all` with many keys (#4218)
  • Added support for using `r.row` with the `contains` command in the JavaScript driver (#4125)

New in RethinkDB 2.0.1 (Apr 21, 2015)

  • Bug fixes:
  • Fixed a regression in the backup scripts that detected the server version incorrectly (#3706)
  • Fixed a bug in the cache balancer that could degrade performance (#4066)

New in RethinkDB 2.0.0 (Apr 15, 2015)

  • Highlights:
  • Support for attaching a changefeed to the get_all and union commands
  • Improved support for asynchronous queries
  • The first production-ready release of RethinkDB

New in RethinkDB 1.16.2 (Feb 18, 2015)

  • Bug fix update:
  • Fixed a bug in r.range that caused query failures (#3767)
  • Fixed a race condition in the implementation of .order_by.limit.changes (#3765)
  • Fixed a build error that caused very slow r.js performance (#3757)
  • Removed spurious comma in the Data Explorer (#3730)

New in RethinkDB 1.16.0 (Jan 31, 2015)

  • Highlights:
  • A new administration API
  • Changefeeds on complex queries
  • Numerous improvements and enhancements throughout RethinkDB
  • A detailed changelog of this release is available at https://github.com/rethinkdb/rethinkdb/releases/tag/v1.16.0-1 .

New in RethinkDB 1.15.3 (Jan 10, 2015)

  • Fixed a bug that caused the endpoints of a reversed range to not be correctly included or excluded (#3449)
  • Fixed the reverse_iterator implementation for leaf nodes (#3446)
  • Fixed a bug that could cause a bad ordering of secondary indexes for rows with different primary key sizes (#3444)
  • Fixed a bug that could cause a crash under high load when using changefeeds (#3393)
  • Fixed a bug that made it impossible to chain between and distinct (#3346)
  • Changed some calls to avoid passing NULL to memcpy (#3317)
  • Fixed the installer artwork on OS X Yosemite (#3253)
  • Changed the version scheme for the JavaScript driver to avoid mis-use of pre-release numbers (#3281)
  • Fixed a bug that could cause rethinkdb import and rethinkdb export to hang (#3458)

New in RethinkDB 1.15.2 (Dec 15, 2014)

  • Bug fix update:
  • Added packages for Ubuntu 14.10 "Utopic Unicorn" (#3237)
  • Fixed a bug with memory handling in S2 (#3201)
  • Fixed a bug handling paged results in the Data Explorer (#3111)
  • Fixed a bug that caused a crash on exit if a joined server with an open changefeed crashed (#3038)
  • Fixed a bug that caused a crash when unsharding discarded more rows than expected when batching results (#3264)
  • Fixed a bug that could lead to crashes when changefeeds were frequently registered and unregistered (#3205)
  • Changed the r.point constructor to be deterministic, allowing it to be used in secondary index functions (#3287)
  • Fixed an incompatibility problem between Python 3.4 and the import command (#3259)
  • Fixed a buffer alignment issue with object_buffer_t data (#3300)

New in RethinkDB 1.15.1 (Oct 7, 2014)

  • 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)

New in RethinkDB 1.15.0 (Sep 26, 2014)

  • 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:
  • Fixed various bugs in tests (#2940, #2887, #2844, #2837, #2603, #2793)
  • 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)

New in RethinkDB 1.14.1 (Sep 13, 2014)

  • 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)

New in RethinkDB 1.14.0 (Sep 5, 2014)

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

New in RethinkDB 1.13.3 (Jul 11, 2014)

  • 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)

New in RethinkDB 1.13.1 (Jul 9, 2014)

  • 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)

New in RethinkDB 1.12.5 (May 22, 2014)

  • Bug fix update:
  • 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)

New in RethinkDB 1.12.4 (May 22, 2014)

  • Bug fix update:
  • 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)

New in RethinkDB 1.12.3 (Apr 18, 2014)

  • Bug fix update.
  • The disk format for this release is compatible with versions 1.12.0, 1.12.1 and 1.12.2. If you are upgrading from an earlier version, make sure to migrate your data before upgrading.
  • Compilation no longer fails with SEMANTIC_SERIALIZER_CHECK=1 (#2239)
  • Identical --join options no longer cause a crash (#2219)
  • Fixed a race condition in the Ruby driver (#2194)
  • Concurrent backfills are now limited to 4 per peer and 12 total (#2211)
  • Failure to fsync a directory is now a warning instead of an error (#2255)
  • Packages are now available for Ubuntu 14.04, codename Trusty Tahr (#2101)

New in RethinkDB 1.12.2 (Apr 10, 2014)

  • Fixed a bug that caused illegal to destroy fifo_enforcer_sink_t errors (#2092)
  • Fixed a bug that caused Guarantee failed: [resp != __null] errors (#2214)
  • Fixed a bug that caused Segmentation fault errors (#2222)
  • Use less memory for common operations (#2164, #2213)
  • Ruby 2.1.1 support (#2177)
  • Fixed the PageTest unit test (#2187)
  • Updated the documentation (#2197)
  • Updated the sample config file (#2205)

New in RethinkDB 1.12.1 (Mar 29, 2014)

  • Bug fix update:
  • Fixed crash evicter.cc at line 124: Guarantee failed: [initialized_] (#2182)
  • Fixed index_wait which did not always work (#2170, #2179)
  • Fixed a segmentation fault (#2178)
  • Added a --hard-durability option to import/restore
  • Changed the default --cache-size to be more friendly towards machines with less free RAM
  • Changed tables to scale their soft durability throttling based on their cache size
  • Fixed some build failures (#2183, #2174)
  • Fixed the Centos i686 packages (#2176)

New in RethinkDB 1.12.0 (Mar 27, 2014)

  • New features:
  • Server:
  • Added support for the ARM architecture (#1625)
  • Added per-instance cache quota and removed per-table quotas (#97)
  • Added a --cache-size command line option that sets the cache size in MiB for a single instance
  • Removed the cache_size optional argument for table_create
  • Wrote a new and improved cache (#1642)
  • Added gzip compression to the built-in web server (#1746)
  • ReQL:
  • merge now accepts functions as an argument (#1345)
  • Added an object command to build objects from dynamic field names (#1857)
  • Removed the optional base argument to reduce (#888)
  • Added a split command to split strings (#1099)
  • Added upcase and downcase commands to change the case of a string (#874)
  • Change how aggregation and grouping is performed (#1096):
  • Removed grouped_map_reduce and groupBy
  • Added group and ungroup
  • Changed the behavior of count, sum and avg and added max and min
  • Web UI:
  • Display index status and progress bars in the web UI (#1614)
  • Improved performance:
  • Server:
  • Improved the scalability of meta operations (such as table creation) to allow for more nodes in a cluster (#1648)
  • Changed the CPU sharding factor to 8 for improved multi-core scalability (#1043)
  • Batch sizes now scale better, which speeds up operations like limit (#1786)
  • Tweaked batch sizes to avoid computing unused results (#1962)
  • Improved throttling and LBA garbage collection to avoid stalls in query throughput (#1820)
  • Many optimizations to avoid having the web UI time out when the server is under load (#1183)
  • Improved backfill performance by using batches for sending and inserting data (#1971)
  • Reduced wasteful copies when serializing (#1431)
  • Evaluating queries now yields occasionally to avoid timeouts (#1631)
  • Reduced performance impact of backfilling on other queries (#2071)
  • Web UI:
  • Improved how the web UI handles large clusters with many tables (#1662)
  • Ruby driver:
  • Removed inefficient construction-location backtraces (#1843)
  • Tests:
  • Added automated performance tests (#1806)
  • Fixed bugs:
  • Server:
  • Improved the code to avoid heartbeat timeout errors when resharding (#1708)
  • Resharding one table no longer makes other tables unavailable (#1751)
  • Improved the blueprint suggester to distribute shards more evenly (#344)
  • Queries from the data explorer are now interruptible (#1888)
  • No longer fail if IPv6 is not available (#1925)
  • Added support for the new v8 scope API (#1510)
  • Coroutine stacks now freed to reduce memory consumption (#1670)
  • Added range get, backfill and secondary index reads to the stats (#660)
  • r.table(...).count() no longer stalls inserts (#1870)
  • Fixed crashes when adding a secondary index (#1621, #1437)
  • Improve the handling of out-of-memory conditions (#2003)
  • Secondary index construction is now reported as a write operation in the stats (#1953)
  • Fixed a crash that occasionally happened during replication (#1389)
  • linux_file_t::set_size no longer makes blocking syscalls (#265)
  • Fixed a crash caught by the unit tests (#1084)
  • Command line:
  • rethinkdb admin now prints warnings to stderr instead of stdout (#1316)
  • The import and export scripts now display a row count when done (#1659)
  • Added support for log_file and no_direct_io in the init script (#1769, #1892)
  • Do not display a stack trace for regular errors printed by the backup scripts (#2098)
  • rethinkdb export no longer fails when there are no tables (#1904)
  • rethinkdb import no longer tries to parse CSV files as JSON (#2097)
  • Web UI:
  • No longer display wrong number of rows when a string is returned (#1669)
  • The data explorer now properly closes cursors (#1569)
  • The data explorer now displays empty tables correctly (#1698)
  • Links are now relative so they can be proxied from a subdirectory (#1791)
  • The server time reported by the profiler is now accurate (#1784)
  • Improved the flow for removing dead servers (#1366)
  • No longer lower replicas to 0 if the datacenter is primary (#1834)
  • Now displays consistent availability information (#1756)
  • Fixed a XSS security issue (#2018)
  • Changing the number of acks no longer displays the sharding bar (#2023)
  • The backfilling progress bar doesn't disappear when refreshing the page (#1997)
  • Correctly handle newlines in the data explorer (#2021)
  • Sort the table list in alphabetical order (#1704)
  • Added mouseover text to the query execution time (#1940)
  • The replication status no longer blinks (#2019)
  • Fix inconsistencies in dates caused by DST (#2047)
  • Ruby driver:
  • Added a missing close method on cursors (#1568)
  • Improved conflict handling (#1814)
  • Use define_method instead of method_missing, which improves compatibility with Sinatra (#1896)
  • Python driver:
  • Improved the quality of the generated documentation (#1729)
  • Added missing and_ and or_ and a warning for misuse of | and & (#1582)
  • Added support for r.row in eq_join (#1810)
  • Added a detailed error message when brackets are not used properly (#1434)
  • count with an argument now behaves correctly (#1992)
  • Added missing get_field command (#1941)
  • JavaScript driver:
  • Added support for r.row in eqJoin (#1810)
  • Timeout events on the socket are now handled correctly (#1909)
  • No longer use the deprecated ArrayBuffer API (#1803)
  • Fix backtraces for optional arguments (#1935)
  • Changed the syntax of run (#1890)
  • Exposed the error constructors (#1926)
  • Fixed the string representation of functions (#1919, #1894)
  • Backtrace printing now works correctly for both protobufjs and node-protobuf (#1879)
  • No longer extend Array.prototype (#2112)
  • Build:
  • ./configure now checks for boost and can fetch it if it is not installed (#1699)
  • The source distribution now includes the v8 source (#1844)
  • Use Python 2 to build v8 (#1873)
  • Improved how the build system fetches and builds external packages, and changed the default to not fetch anything (#1231)
  • Packaging:
  • Support for Ubuntu Raring has been dropped (#1924)

New in RethinkDB 1.11.3 (Jan 17, 2014)

  • Fixed a crash on multiple ctrl-c (#1848)
  • Ruby driver: fixed mutable backtraces (#1846)
  • Fixed a build failure on older versions of GCC (#1824)
  • Added missing durability argument to the Javascript driver (#1821)
  • Fixed a crash caused by changing the cluster configuration when there are unresolved issues (#1813)
  • Fixed a bug triggered by using order_by followed by count (#1796)
  • Tables can now be referenced by full name (e.g. database.table) in rethinkdb admin (#1795)
  • Fixed a bug triggered by chaining multiple joins (#1793)
  • Fixed a crash occasionally triggered by dropping an index (#1789)
  • The init script now fails when given wrong arguments (#1779)
  • RethinkDB now refuses to start if it cannot open the log file (#1778)
  • Fixed a JavaScript error in the Web UI (#1754)
  • Speed up count queries (#1733)
  • Fix a bug with thread-local storage that caused a segfault on certain platforms (#1731)
  • get of a non-existent document followed by replace now works as documented (#1570)

New in RethinkDB 1.11.2 (Dec 7, 2013)

  • Bug fix:
  • Fixed a bug caused by suggesting r.ISO8601 in the Data Explorer
  • Cursor in the Data Explorer is restored when a command is selected via dropdown
  • Fixed a bug where queries returning null in the Data Explorer could not be parsed (#1739)
  • Always fsync parent directories to avoid data loss (#1703)
  • Fixed IPv6 issues with link-local addresses (#1694)
  • Add some support for Python 3 in the build scripts (#1709)

New in RethinkDB 1.11.1 (Dec 4, 2013)

  • Drivers no longer ignore the timeFormat flag (#1719)
  • RethinkDB now correctly sets the ResponseType field in responses to STOP queries (#1715)
  • Fixed a bug that caused RethinkDB to crash with a failed guarantee (#1691)

New in RethinkDB 1.11.0 (Nov 27, 2013)

  • New Features:
  • Server:
  • Removed anaphoric macros (#806)
  • Changed the array size limit to 100,000 (#971)
  • The server now reads blobs off of disk simultaneously (#1296)
  • Improved the batch replace logic (#1468)
  • Added IPv6 support (#1469)
  • Reduced random disk seeks during write transactions (#1470)
  • Merged writebacks on the serializer level (#1471)
  • Streaming improvements: smarter batch sizes are sent to clients (#1543)
  • Reduced the impact of index creation on realtime performance (#1556)
  • Optimized insert performance (#1559)
  • Added support for sending data back as JSON, improving driver performance (#1571)
  • Backtraces now span coroutine boundaries (#1602)
  • Command line:
  • Added a progress bar to rethinkdb import and rethinkdb export (#1415)
  • ReQL:
  • Added query profiling, enabled by passing profile=True to run (#175)
  • Added a sync command that flushes soft writes made on a table (#1046)
  • Made it possible to wait for no-reply writes to complete (#1388)
  • Added a wait command
  • Added an optional argument to close and reconnect
  • Added index_status and index_wait commands (#1562)
  • Python driver:
  • Added documentation strings (#808)
  • Added streaming and performance improvements (#1371)
  • Changed the installation procedure for using the C++ protobuf implementation (#1394)
  • Improved the streaming logic (#1364)
  • JavaScript driver:
  • Changed the installation procedure for using the C++ protobuf implementation (#1172)
  • Improved the streaming logic (#1364)
  • Packaging:
  • Made the version more explicit in the OS X package (#1413)
  • Fixed Bugs:
  • Server:
  • No longer access perfmon_collection_t after destruction (#1497)
  • Fixed a bug that caused nodes to become unresponsize and added a coroutine profiler (#1516)
  • Made database files compatible between 32-bit and 64-bit versions (#1535)
  • No longer use four times more cache space (#1538)
  • Fix handling of errors in continue queries (#1619)
  • Fixed heartbeat timeout when deleting many tables at once (#1624)
  • Improved signal handling (#1630)
  • Reduced the load caused by using the Web UI on a large cluster (#1660)
  • Command line:
  • Made rethinkdb export more resilient to low-memory conditions (#1546)
  • Fixed a race condition in rethinkdb import (#1597)
  • ReQL:
  • Non-indexed order_by queries now return arrays (#1566)
  • Type system now includes selections on both arrays and streams (#1566)
  • Fixed wrong inserted result (#1547)
  • Fixed crash caused by using unusual strings in r.js (#1638)
  • Redefined batched stream semantics (includes a specific fix for the JavaScipt driver as well) (#1544)
  • r.js now works with time values (#1513)
  • Python driver:
  • Handle interrupted system calls (#1362)
  • Improved the error message when inserting dates with no timezone (#1509)
  • Made RqlTzInfo copyable (#1588)
  • JavaScript driver:
  • Fixed argument handling (#1555, #1577)
  • Fixed ArrayResult (#1578, #1584)
  • Fixed pretty-printing of limit (#1617)
  • Web UI:
  • Made it obvious when errors are JavaScript errors or database errors (#1293)
  • Improved the message displayed when there are more than 40 documents (#1307)
  • Fixed date formatting (#1596)
  • Fixed typo (#1668)
  • Build:
  • Fixed item counts in make (#1443)
  • Bump the fetched version of gperftools (#1594)
  • Fixed how termcap is handled by ./configure (#1622)
  • Generate a better version number when compiling from a shallow clone (#1636)

New in RethinkDB 1.10.0 (Oct 1, 2013)

  • New Features:
  • Added multi-indexes (#933)
  • Added selective history deletion to the Data Explorer (#1297)
  • Made filter support the nested object syntax (#1325)
  • Added r.not_ to the Python driver (#1329)
  • The backup scripts are now installed by the Python driver (#1355)
  • Implemented variable-width object length encoding and other improvements to serialization (#1424)
  • Lowered the I/O pool threads' stack size (#1425)
  • Improved datum integer serialization (#1426)
  • Added a thin wrapper struct threadnum_t instead of using raw ints for thread numbers (#1445)
  • Re-enabled full perfmon capability (#1474)
  • Fixed Bugs:
  • Fixed the output of rethinkdb admin help (#936, #1447)
  • make no longer runs ./configure (#979)
  • Made the Python code mostly Python 3 compatible (still a work in progress) (#1050)
  • The Data Explorer now correctly handles unexpected token errors (#1334)
  • Improved the performance of JSON parsing (#1403)
  • batched_rget_stream_t no longer uses an out-of-date interruptor (#1411)
  • The missing protobuf_implementation variable was added to the JavaScript driver (#1416)
  • Improved the error and help messages in the backup scripts (#1417)
  • r.json is no longer incorrectly marked as non-deterministic (#1430)
  • Fixed the import of rethinkdb_pbcpp in the Python driver (#1438)
  • Made some stores go on threads other than just 0 through 3 (#1446)
  • Fixed the error message when using groupBy with illegal pattern (#1460)
  • default is no longer unprintable in Python (#1476)

New in RethinkDB 1.9.0 (Oct 1, 2013)

  • Server:
  • Fixed a potential crash caused by a coroutine switch in exception handlers (#153)
  • No longer duplicate documents in the secondary indexes (#752)
  • Removed unnecessary conversions between datum_t and cJSON (#1041)
  • No longer load documents from disk for count queries (#1295)
  • Changed extproc code to use datum_t instead of cJSON_t (#1326)
  • ReQL:
  • Use Buffer instead of ArrayBuffer in the JavaScript driver (#1244)
  • orderBy on an index no longer destroys the preceding between (#1333)
  • Fixed error in the python driver caused by multiple threads using lambdas (#1377)
  • Fixed Unicode handling in the Python driver (#1378)
  • Web UI:
  • No longer truncate server names (#1313)
  • CLI:
  • rethinkdb import now works with Python 2.6 (#1349)

New in RethinkDB 1.8.1 (Sep 3, 2013)

  • Bug fix update:
  • The shard suggester now works with times (#1335)
  • The Python backup scripts no longer rely on pip show (#1331)
  • rethinkdb help no longer uses a pager (#1315, #1308)
  • The web UI now correctly positions SVGRectElement (#1314)
  • Fixed a bug that caused a crash when using filter with a non-deterministic value (#1299)

New in RethinkDB 1.8.0 (Sep 3, 2013)

  • NEW FEATURES:
  • ReQL:
  • 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)
  • The behaviour can be changed by setting the new optional right_bound argument to closed or by setting left_bound to open
  • contains can now be passed a predicate (#870)
  • merge is now deep by default (#872)
  • Introduced literal to merge flat values
  • coerce_to can now convert strings to numbers (#877)
  • Added support for times (#977)
  • +, -, =, == and !=: arithmetic and comparison
  • during: match a time with an interval
  • in_timezone: change the timezone offset
  • date, time_of_day, timezone, year, month, day, weekday, hour, minute and second: accessors
  • time, epoch_time and iso8601: constructors
  • monday to sunday and january to december: constants
  • now: current time
  • to_iso8601, to_epoch_time: conversion
  • Add the nested document syntax to functions other than pluck (#1094)
  • without, group_by, with_fields and has_fields
  • Remove Google Closure from the JavaScript driver (#1194)
  • It now depends on the protobufjs and node-protobuf libraries
  • Server:
  • Added a --canonical-address HOST[:PORT] command line option for connecting RethinkDB nodes across different networks (#486)
  • Two instances behind proxies can now be configured to connect to each other
  • Optimize space efficiency by allowing smaller block sizes (#939)
  • Added a --no-direct-io startup flag that turns off direct IO (#1051)
  • Rewrote the extproc code, making r.js interuptible and fixing many crashes (#1097, #1106)
  • Added support for V8 >= 3.19 (#1195)
  • Clear blobs when they are unused (#1286)
  • Web UI:
  • Use relative paths (#1053)
  • Build:
  • Add support for Emacs' flymake-mode (#1161)
  • FIXED BUGS:
  • ReQL:
  • Check the type of the callback passed to next and each in the JavaScript driver (#656)
  • Fixed how some backtraces are printed in the JavaScript driver (#973)
  • Coerce the port argument to a number in the Python driver (#1017)
  • Functions that are polymorphic on objects and sequences now only recurse one level deep (#1045)
  • Affects pluck, has_fields, with_fields, etc
  • In the JavaScript driver, no longer fail when requiring the module twice (#1047)
  • r.union now returns a stream when given two streams (#1081)
  • r.db can now be chained with do in the JavaScript driver (#1082)
  • Improve the error message when combining for_each and return_vals (#1104)
  • Fixed a bug causing the JavaScript driver to overflow the stack when given an object with circular references (#1133)
  • Don't leak internal functions in the JavaScript driver (#1164)
  • Fix the qurey printing in the Python driver (#1178)
  • Correctly depend on node >= 0.10 in the JavaScript driver (#1197)
  • Server:
  • Improved the error message when there is a version mismatch in data files (#521)
  • The --no-http-admin option now disables the check for the web assets folder (#1092)
  • No longer compile JavaScript expressions once per row (#1105)
  • Fixed a crash in the 32-bit version caused by not using 64-bit file offsets (#1129)
  • Fixed a crash caused by malformed json documents (#1132)
  • Fixed a crash caused by moving func_t betweek threads (#1157)
  • Improved the scheduling the coroutines that sometimes caused heartbeat timeouts (#1169)
  • Fixed conflict_resolving_diskmgr_t to suport files over 1TB (#1170)
  • Fixed a crash caused by disconnecting too fast (#1182)
  • Fixed the error message when js_runner_t::call times out (#1218)
  • Fixed a crash caused by serializing unintitialised values (#1219)
  • Fixed a bug that caused an assertion failure in protob_server_t (#1220)
  • Fixed a bug causing too many file descriptors to be open (#1225)
  • Fixed memory leaks reported by valgrind (#1233)
  • Fixed a crash triggered by the BTreeSindex test (#1237)
  • Fixed some problems with import performance, interruption, parsing, and error reporting (#1252)
  • RethinkDB proxy no longer crashes when interacting with the Web UI (#1276)
  • Tests:
  • Fixed the connectivity tests for OS X (#613)
  • Fix the python connection tests (#1110)
  • Web UI:
  • Provide a less scary error message when a request times out (#1074)
  • Provide proper suggestions in the presence of comments in the Data Explorer (#1214)
  • The More data link in the data explorer now works consistently (#1222)
  • Documentation:
  • Improved the documentation for update and pluck (#1141)
  • Build:
  • Fixed bugs that caused make to not rebuild certain files or build files it should not (#1162, #1215, #1216, #1229, #1230, #1272)

New in RethinkDB 1.8.0 (Aug 16, 2013)

  • NEW FEATURES:
  • ReQL:
  • 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)
  • The behaviour can be changed by setting the new optional right_bound argument to closed or by setting left_bound to open
  • contains can now be passed a predicate (#870)
  • merge is now deep by default (#872)
  • Introduced literal to merge flat values
  • coerce_to can now convert strings to numbers (#877)
  • Added support for times (#977)
  • +, -, =, == and !=: arithmetic and comparison
  • during: match a time with an interval
  • in_timezone: change the timezone offset
  • date, time_of_day, timezone, year, month, day, weekday, hour, minute and second: accessors
  • time, epoch_time and iso8601: constructors
  • monday to sunday and january to december: constants
  • now: current time
  • to_iso8601, to_epoch_time: conversion
  • Add the nested document syntax to functions other than pluck (#1094)
  • without, group_by, with_fields and has_fields
  • Remove Google Closure from the JavaScript driver (#1194)
  • It now depends on the protobufjs and node-protobuf libraries
  • Server:
  • Added a --canonical-address HOST[:PORT] command line option for connecting RethinkDB nodes across different networks (#486)
  • Two instances behind proxies can now be configured to connect to each other
  • Optimize space efficiency by allowing smaller block sizes (#939)
  • Added a --no-direct-io startup flag that turns off direct IO (#1051)
  • Rewrote the extproc code, making r.js interuptible and fixing many crashes (#1097, #1106)
  • Added support for V8 >= 3.19 (#1195)
  • Clear blobs when they are unused (#1286)
  • Web UI:
  • Use relative paths (#1053)
  • Build:
  • Add support for Emacs' flymake-mode (#1161)
  • FIXED BUGS:
  • ReQL:
  • Check the type of the callback passed to next and each in the JavaScript driver (#656)
  • Fixed how some backtraces are printed in the JavaScript driver (#973)
  • Coerce the port argument to a number in the Python driver (#1017)
  • Functions that are polymorphic on objects and sequences now only recurse one level deep (#1045)
  • Affects pluck, has_fields, with_fields, etc
  • In the JavaScript driver, no longer fail when requiring the module twice (#1047)
  • r.union now returns a stream when given two streams (#1081)
  • r.db can now be chained with do in the JavaScript driver (#1082)
  • Improve the error message when combining for_each and return_vals (#1104)
  • Fixed a bug causing the JavaScript driver to overflow the stack when given an object with circular references (#1133)
  • Don't leak internal functions in the JavaScript driver (#1164)
  • Fix the qurey printing in the Python driver (#1178)
  • Correctly depend on node >= 0.10 in the JavaScript driver (#1197)
  • Server:
  • Improved the error message when there is a version mismatch in data files (#521)
  • The --no-http-admin option now disables the check for the web assets folder (#1092)
  • No longer compile JavaScript expressions once per row (#1105)
  • Fixed a crash in the 32-bit version caused by not using 64-bit file offsets (#1129)
  • Fixed a crash caused by malformed json documents (#1132)
  • Fixed a crash caused by moving func_t betweek threads (#1157)
  • Improved the scheduling the coroutines that sometimes caused heartbeat timeouts (#1169)
  • Fixed conflict_resolving_diskmgr_t to suport files over 1TB (#1170)
  • Fixed a crash caused by disconnecting too fast (#1182)
  • Fixed the error message when js_runner_t::call times out (#1218)
  • Fixed a crash caused by serializing unintitialised values (#1219)
  • Fixed a bug that caused an assertion failure in protob_server_t (#1220)
  • Fixed a bug causing too many file descriptors to be open (#1225)
  • Fixed memory leaks reported by valgrind (#1233)
  • Fixed a crash triggered by the BTreeSindex test (#1237)
  • Fixed some problems with import performance, interruption, parsing, and error reporting (#1252)
  • RethinkDB proxy no longer crashes when interacting with the Web UI (#1276)
  • Tests:
  • Fixed the connectivity tests for OS X (#613)
  • Fix the python connection tests (#1110)
  • Web UI:
  • Provide a less scary error message when a request times out (#1074)
  • Provide proper suggestions in the presence of comments in the Data Explorer (#1214)
  • The More data link in the data explorer now works consistently (#1222)
  • Documentation:
  • Improved the documentation for update and pluck (#1141)
  • Build:
  • Fixed bugs that caused make to not rebuild certain files or build files it should not (#1162, #1215, #1216, #1229, #1230, #1272)

New in RethinkDB 1.7.3 (Jul 20, 2013)

  • Bug fix update.
  • RethinkDB no longer fails to create the data directory when using `--daemon` (#1191)

New in RethinkDB 1.7.2 (Jul 19, 2013)

  • Fixed `wire_func_t` serialization that caused inserts to fail (#1155)
  • Fixed a bug in the JavaScript driver that caused asynchronous connections to fail (#1150)
  • Removed `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)
  • Fixed the connection timeout in the JavaScript driver (#1140)
  • Fixed `r.without` (#1139)
  • Add a warning to `rethinkdb dump` about indexes and cluster config (#1137)
  • Fixed the `debian/rules` makefile to properly build the rethinkdb-dbg package (#1130)
  • Allow multiple instances with different port offsets in the init script (#1126)
  • Fixed `make install` to not use `/dev/stdin` (#1125)
  • Added missing files to the OS X uninstall script (#1123)
  • Fixed the documentation for insert with the returnVals flag in JavaScript (#1122)
  • No longer cache `index.html` in the web UI (#1117)
  • The init script now waits for rethinkdb to stop before restarting (#1115)
  • `rethinkdb` porcelain now removes the new directory if it fails (#1070)
  • Added cooperative locking to the rethinkdb data directory to detect conflicts earlier (#1109)
  • Improved the comments in the sample configuration file (#1078)
  • Config file parsing now allows options that apply to other modes of rethinkdb (#1077)
  • The init script now creates folders with the correct permissions (#1069)
  • Client drivers now time out if the connection handshake takes too long (#1033)

New in RethinkDB 1.7.1 (Jul 4, 2013)

  • Bug fix update:
  • Fixed a bug causing `rethinkdb import` to crash on single files
  • Added options to `rethinkdb import` for custom CSV separators and no headers (#1112)

New in RethinkDB 1.7.0 (Jul 4, 2013)

  • This release introduces hot backup, atomic set and get operations, significant insert performance improvements, nested document syntax, and native binaries for CentOS / RHEL.
  • NEW FEATURES:
  • ReQL:
  • Added `r.json` for parsing JSON strings server-side (#887)
  • Added syntax to `pluck` to access nested documents (#889)
  • `get_all` now takes a variable number of arguments (#915)
  • Added atomic set and get operations (#976): `update`, `insert`, `delete` and `replace` now take an optional `return_vals` argument that returns the values that have been atomically modified
  • Renamed `getattr` to `get_field` and make it polymorphic on arrays (#993)
  • Drivers now use faster protobuf libraries when possible (#1027, #1026, #1025)
  • Drivers now use `r.json` to improve the performance of inserts (#1085)
  • Improved the behaviour of `pluck` (#1095): A field with a non-pluckable value is considered absent
  • Web UI:
  • It is now possible to resolve `auth_key` conflicts via the web UI (#1028)
  • The web UI now uses relative paths (#1053)
  • Server:
  • Flushes to disk less often to improve performance without affecting durability (#520)
  • CLI:
  • Import and export JSON and CSV files (#193): Four new subcommands: `rethinkdb import`, `rethinkdb export`, `rethinkdb dump` and `rethinkdb restore`
  • `rethinkdb admin` no longer requires the `--join` option (#1052): It now connects to localhost:29015 by default
  • Documentation:
  • Documented durability settings correctly (#1008)
  • Improved instructions for migration (#1013)
  • Documented the allowed character names for tables (#1039)
  • Packaging:
  • RPMs for CentOS (#268)
  • FIXED BUGS:
  • ReQL:
  • Fixed the behaviour of `between` with `null` and secondary indexes (#1001)
  • Web UI:
  • Moved to using a patched Bootstrap, Handlebars.js 1.0.0 and LESS 1.4.0 (#954)
  • Fixed bug causing nested arrays to be shown as `{...}` in the Data Explorer (#1038)
  • Inline comments are now parsed correctly in the Data Explorer (#1060)
  • Properly remove event listeners from the dashboard view (#1044)
  • Server:
  • Fixed a crash caused by shutting down the server during secondary index creation (#1056)
  • Fixed a potential btree corruption bug (#986)
  • Tests:
  • ReQL tests no longer leave zombie processes (#1055)

New in RethinkDB 1.6.0 (Jun 14, 2013)

  • New Features:
  • ReQL:
  • Added access control with a single, common API key (#266)
  • Improved handshake to the client driver protocol (#978)
  • Added `sample` command for random sampling of sequences (#861, #182)
  • Secondary indexes can be queried with boolean values (#854)
  • Added `onFinished` callback to `each` in JavaScript to improve cursors (#443)
  • Added `with_fields` command, and `pluck` no longer throws on missing attributes (#886)
  • Added `default` command: replaces missing fields with a default value (#884)
  • Added `match` command for regular expression matching (#867)
  • Added `keys` command that returns the fields of an object (#181)
  • Added per-command durability settings (#890):
  • Changed `hard_durability=True` to `durability = 'soft' | 'hard'`
  • Added a `durability` option to `run`
  • Renamed `contains` to `has_fields` (#885):
  • `has_fields` runs on tables, objects, and arrays, and doesn't throw on missing attributes
  • `contains` now checks if an element is in an array
  • Added new array operations (#868, #198, #341):
  • `prepend` and `append`: prepend and appends an element to an array
  • `insert_at`: inserts an element at the specified index
  • `splice_at`: splices a list into another list at the specified index
  • `delete_at`: deletes the element at the specified index
  • `change_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` times
  • `difference`: removes all instances of specified elements from an array
  • `count`: returns the number of elements in an array
  • `indexes_of`: returns positions of elements that match the specified value in an array
  • `set_insert`: adds an element to a set
  • `set_intersection`: finds the intersection of two sets
  • `set_union`: returns the union of two sets
  • `set_difference`: returns the difference of two sets
  • Web UI:
  • Document fields are now sorted in alphabetical order in the table view (#832)
  • CLI:
  • Added `-v` flag as an alias for `--version` (#839)
  • Added `--io-threads` flag to allow limiting the amount of concurrent I/O operations (#928)
  • Build system:
  • Allow building the documentation with Python 3 (#826, #815)
  • Have `make` build the Ruby and Python drivers (#923)
  • Fixed Bugs:
  • Server:
  • Fixed a crash caused by resharding during secondary index creation (#852)
  • Fixed style problems: code hygiene (#805)
  • Server code cleanup (#920, #924)
  • Properly check permissions for writing the pid file (#916)
  • ReQL:
  • Use the correct function name in backtraces (#995)
  • Fixed callback issues in the JavaScript driver (#846)
  • In JavaScript, call the callback when the connection is closed (#758)
  • In JavaScript, GETATTR now checks the argument count (#992)
  • Tweaked the CoffeeScript source to work with older versions of coffee and node (#963)
  • Fixed a typo in the error handling of the JavaScript driver (#961)
  • Fixed performance regression for `pluck` and `without` (#947)
  • Make sure callbacks get cleared in the Javascript driver (#942)
  • Improved errors when `return` is omitted in Javascript (#914)
  • Web UI:
  • Correctly distinguish case sensitive table names (#822)
  • No longer display some results as `{ ... }` in the table view (#937)
  • Ensured tables are available before listing their indexes (#926)
  • Fixed the autocompletion for opening square brackets (#917)
  • Tests:
  • Modified the polyglot test framework to catch more possible errors (#724)
  • Polyglot tests can now run in debug mode (#614)
  • Build:
  • Look for `libprotobuf` in the correct path (#860, #853)
  • Always fetch and use the same version of Handlebars.js (#821, #819, #958)
  • Check for versions of LESS that are known to work (#956)
  • Removed bitrotted MOCK_CACHE_CHECK option (#804)