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