| Apache CouchDB CHANGES |
| ====================== |
| |
| |
| Version 1.0.3 |
| ------------- |
| |
| General: |
| |
| * Fixed compatibility issues with Erlang R14B02. |
| |
| HTTP Interface: |
| |
| * Fix bug that allows invalid UTF-8 after valid escapes. |
| * The query parameter `include_docs` now honors the parameter `conflicts`. |
| This applies to queries against map views, _all_docs and _changes. |
| * Added support for inclusive_end with reduce views. |
| |
| Storage System: |
| |
| * More performant queries against _changes and _all_docs when using the |
| `include_docs` parameter. |
| |
| Replicator: |
| |
| * Enabled replication over IPv6. |
| * Fixed for crashes in continuous and filtered changes feeds. |
| * Fixed error when restarting replications in OTP R14B02. |
| * Upgrade ibrowse to version 2.2.0. |
| * Fixed bug when using a filter and a limit of 1. |
| |
| Security: |
| |
| * Fixed OAuth signature computation in OTP R14B02. |
| * Handle passwords with : in them. |
| |
| Futon: |
| |
| * Made compatible with jQuery 1.5.x. |
| |
| Etap Test Suite: |
| |
| * Etap tests no longer require use of port 5984. They now use a randomly |
| selected port so they won't clash with a running CouchDB. |
| |
| Version 1.0.2 |
| ------------- |
| |
| Futon: |
| |
| * Make test suite work with Safari and Chrome. |
| * Fixed animated progress spinner. |
| * Fix raw view document link due to overzealous URI encoding. |
| * Spell javascript correctly in loadScript(uri). |
| |
| Storage System: |
| |
| * Fix leaking file handles after compacting databases and views. |
| * Fix databases forgetting their validation function after compaction. |
| * Fix occasional timeout errors after successfully compacting large databases. |
| * Fix ocassional error when writing to a database that has just been compacted. |
| * Fix occasional timeout errors on systems with slow or heavily loaded IO. |
| * Fix for OOME when compactions include documents with many conflicts. |
| * Fix for missing attachment compression when MIME types included parameters. |
| * Preserve purge metadata during compaction to avoid spurious view rebuilds. |
| * Fix spurious conflicts introduced when uploading an attachment after |
| a doc has been in a conflict. See COUCHDB-902 for details. |
| * Fix for frequently edited documents in multi-master deployments being |
| duplicated in _changes and _all_docs. See COUCHDDB-968 for details on how |
| to repair. |
| * Significantly higher read and write throughput against database and |
| view index files. |
| |
| Log System: |
| |
| * Reduce lengthy stack traces. |
| * Allow logging of native <xml> types. |
| |
| HTTP Interface: |
| |
| * Allow reduce=false parameter in map-only views. |
| * Fix parsing of Accept headers. |
| * Fix for multipart GET APIs when an attachment was created during a |
| local-local replication. See COUCHDB-1022 for details. |
| |
| Replicator: |
| |
| * Updated ibrowse library to 2.1.2 fixing numerous replication issues. |
| * Make sure that the replicator respects HTTP settings defined in the config. |
| * Fix error when the ibrowse connection closes unexpectedly. |
| * Fix authenticated replication (with HTTP basic auth) of design documents |
| with attachments. |
| * Various fixes to make replication more resilient for edge-cases. |
| |
| View Server: |
| |
| * Don't trigger view updates when requesting `_design/doc/_info`. |
| * Fix for circular references in CommonJS requires. |
| * Made isArray() function available to functions executed in the query server. |
| * Documents are now sealed before being passed to map functions. |
| * Force view compaction failure when duplicated document data exists. When |
| this error is seen in the logs users should rebuild their views from |
| scratch to fix the issue. See COUCHDB-999 for details. |
| |
| Version 1.0.1 |
| ------------- |
| |
| Storage System: |
| |
| * Fix data corruption bug COUCHDB-844. Please see |
| http://couchdb.apache.org/notice/1.0.1.html for details. |
| |
| Replicator: |
| |
| * Added support for replication via an HTTP/HTTPS proxy. |
| * Fix pull replication of attachments from 0.11 to 1.0.x. |
| * Make the _changes feed work with non-integer seqnums. |
| |
| HTTP Interface: |
| |
| * Expose `committed_update_seq` for monitoring purposes. |
| * Show fields saved along with _deleted=true. Allows for auditing of deletes. |
| * More robust Accept-header detection. |
| |
| Authentication: |
| |
| * Enable basic-auth popup when required to access the server, to prevent |
| people from getting locked out. |
| |
| Futon: |
| |
| * User interface element for querying stale (cached) views. |
| |
| Build and System Integration: |
| |
| * Included additional source files for distribution. |
| |
| Version 1.0.0 |
| ------------- |
| |
| Security: |
| |
| * Added authentication caching, to avoid repeated opening and closing of the |
| users database for each request requiring authentication. |
| |
| Storage System: |
| |
| * Small optimization for reordering result lists. |
| * More efficient header commits. |
| * Use O_APPEND to save lseeks. |
| * Faster implementation of pread_iolist(). Further improves performance on |
| concurrent reads. |
| |
| View Server: |
| |
| * Faster default view collation. |
| * Added option to include update_seq in view responses. |
| |
| Version 0.11.2 |
| -------------- |
| |
| Replicator: |
| |
| * Fix bug when pushing design docs by non-admins, which was hanging the |
| replicator for no good reason. |
| * Fix bug when pulling design documents from a source that requires |
| basic-auth. |
| |
| HTTP Interface: |
| |
| * Better error messages on invalid URL requests. |
| |
| Authentication: |
| |
| * User documents can now be deleted by admins or the user. |
| |
| Security: |
| |
| * Avoid potential DOS attack by guarding all creation of atoms. |
| |
| Futon: |
| |
| * Add some Futon files that were missing from the Makefile. |
| |
| Version 0.11.1 |
| -------------- |
| |
| HTTP Interface: |
| |
| * Mask passwords in active tasks and logging. |
| * Update mochijson2 to allow output of BigNums not in float form. |
| * Added support for X-HTTP-METHOD-OVERRIDE. |
| * Better error message for database names. |
| * Disable jsonp by default. |
| * Accept gzip encoded standalone attachments. |
| * Made max_concurrent_connections configurable. |
| * Made changes API more robust. |
| * Send newly generated document rev to callers of an update function. |
| |
| Futon: |
| |
| * Use "expando links" for over-long document values in Futon. |
| * Added continuous replication option. |
| * Added option to replicating test results anonymously to a community |
| CouchDB instance. |
| * Allow creation and deletion of config entries. |
| * Fixed display issues with doc ids that have escaped characters. |
| * Fixed various UI issues. |
| |
| Build and System Integration: |
| |
| * Output of `couchdb --help` has been improved. |
| * Fixed compatibility with the Erlang R14 series. |
| * Fixed warnings on Linux builds. |
| * Fixed build error when aclocal needs to be called during the build. |
| * Require ICU 4.3.1. |
| * Fixed compatibility with Solaris. |
| |
| Security: |
| |
| * Added authentication redirect URL to log in clients. |
| * Fixed query parameter encoding issue in oauth.js. |
| * Made authentication timeout configurable. |
| * Temporary views are now admin-only resources. |
| |
| Storage System: |
| |
| * Don't require a revpos for attachment stubs. |
| * Added checking to ensure when a revpos is sent with an attachment stub, |
| it's correct. |
| * Make file deletions async to avoid pauses during compaction and db |
| deletion. |
| * Fixed for wrong offset when writing headers and converting them to blocks, |
| only triggered when header is larger than 4k. |
| * Preserve _revs_limit and instance_start_time after compaction. |
| |
| Configuration System: |
| |
| * Fixed timeout with large .ini files. |
| |
| JavaScript Clients: |
| |
| * Added tests for couch.js and jquery.couch.js |
| * Added changes handler to jquery.couch.js. |
| * Added cache busting to jquery.couch.js if the user agent is msie. |
| * Added support for multi-document-fetch (via _all_docs) to jquery.couch.js. |
| * Added attachment versioning to jquery.couch.js. |
| * Added option to control ensure_full_commit to jquery.couch.js. |
| * Added list functionality to jquery.couch.js. |
| * Fixed issues where bulkSave() wasn't sending a POST body. |
| |
| View Server: |
| |
| * Provide a UUID to update functions (and all other functions) that they can |
| use to create new docs. |
| * Upgrade CommonJS modules support to 1.1.1. |
| * Fixed erlang filter funs and normalize filter fun API. |
| * Fixed hang in view shutdown. |
| |
| Log System: |
| |
| * Log HEAD requests as HEAD, not GET. |
| * Keep massive JSON blobs out of the error log. |
| * Fixed a timeout issue. |
| |
| Replication System: |
| |
| * Refactored various internal APIs related to attachment streaming. |
| * Fixed hanging replication. |
| * Fixed keepalive issue. |
| |
| URL Rewriter & Vhosts: |
| |
| * Allow more complex keys in rewriter. |
| * Allow global rewrites so system defaults are available in vhosts. |
| * Allow isolation of databases with vhosts. |
| * Fix issue with passing variables to query parameters. |
| |
| Test Suite: |
| |
| * Made the test suite overall more reliable. |
| |
| Version 0.11.0 |
| -------------- |
| |
| Security: |
| |
| * Fixed CVE-2010-0009: Apache CouchDB Timing Attack Vulnerability. |
| * Added default cookie-authentication and users database. |
| * Added Futon user interface for user signup and login. |
| * Added per-database reader access control lists. |
| * Added per-database security object for configuration data in validation |
| functions. |
| * Added proxy authentication handler |
| |
| HTTP Interface: |
| |
| * Provide Content-MD5 header support for attachments. |
| * Added URL Rewriter handler. |
| * Added virtual host handling. |
| |
| View Server: |
| |
| * Added optional 'raw' binary collation for faster view builds where Unicode |
| collation is not important. |
| * Improved view index build time by reducing ICU collation callouts. |
| * Improved view information objects. |
| * Bug fix for partial updates during view builds. |
| * Move query server to a design-doc based protocol. |
| * Use json2.js for JSON serialization for compatiblity with native JSON. |
| * Major refactoring of couchjs to lay the groundwork for disabling cURL |
| support. The new HTTP interaction acts like a synchronous XHR. Example usage |
| of the new system is in the JavaScript CLI test runner. |
| |
| Replication: |
| |
| * Added option to implicitly create replication target databases. |
| * Avoid leaking file descriptors on automatic replication restarts. |
| * Added option to replicate a list of documents by id. |
| * Allow continuous replication to be cancelled. |
| |
| Storage System: |
| |
| * Adds batching of multiple updating requests, to improve throughput with many |
| writers. Removed the now redundant couch_batch_save module. |
| * Adds configurable compression of attachments. |
| |
| Runtime Statistics: |
| |
| * Statistics are now calculated for a moving window instead of non-overlapping |
| timeframes. |
| * Fixed a problem with statistics timers and system sleep. |
| * Moved statistic names to a term file in the priv directory. |
| |
| Futon: |
| |
| * Added a button for view compaction. |
| * JSON strings are now displayed as-is in the document view, without the escaping of |
| new-lines and quotes. That dramatically improves readability of multi-line |
| strings. |
| * Same goes for editing of JSON string values. When a change to a field value is |
| submitted, and the value is not valid JSON it is assumed to be a string. This |
| improves editing of multi-line strings a lot. |
| * Hitting tab in textareas no longer moves focus to the next form field, but simply |
| inserts a tab character at the current caret position. |
| * Fixed some font declarations. |
| |
| Build and System Integration: |
| |
| * Updated and improved source documentation. |
| * Fixed distribution preparation for building on Mac OS X. |
| * Added support for building a Windows installer as part of 'make dist'. |
| * Bug fix for building couch.app's module list. |
| * ETap tests are now run during make distcheck. This included a number of |
| updates to the build system to properly support VPATH builds. |
| * Gavin McDonald setup a build-bot instance. More info can be found at |
| http://ci.apache.org/buildbot.html |
| |
| Version 0.10.1 |
| -------------- |
| |
| Replicator: |
| |
| * Stability enhancements regarding redirects, timeouts, OAuth. |
| |
| Query Server: |
| |
| * Avoid process leaks |
| * Allow list and view to span languages |
| |
| Stats: |
| |
| * Eliminate new process flood on system wake |
| |
| Build and System Integration: |
| |
| * Test suite now works with the distcheck target. |
| |
| Version 0.10.0 |
| -------------- |
| |
| Storage Format: |
| |
| * Add move headers with checksums to the end of database files for extra robust |
| storage and faster storage. |
| |
| View Server: |
| |
| * Added native Erlang views for high-performance applications. |
| |
| HTTP Interface: |
| |
| * Added optional cookie-based authentication handler. |
| * Added optional two-legged OAuth authentication handler. |
| |
| Build and System Integration: |
| |
| * Changed `couchdb` script configuration options. |
| * Added default.d and local.d configuration directories to load sequence. |
| |
| |
| Version 0.9.2 |
| ------------- |
| |
| Replication: |
| |
| * Fix replication with 0.10 servers initiated by an 0.9 server (COUCHDB-559). |
| |
| Build and System Integration: |
| |
| * Remove branch callbacks to allow building couchjs against newer versions of |
| Spidermonkey. |
| |
| Version 0.9.1 |
| ------------- |
| |
| Build and System Integration: |
| |
| * PID file directory is now created by the SysV/BSD daemon scripts. |
| * Fixed the environment variables shown by the configure script. |
| * Fixed the build instructions shown by the configure script. |
| * Updated ownership and permission advice in `README` for better security. |
| |
| Configuration and stats system: |
| |
| * Corrected missing configuration file error message. |
| * Fixed incorrect recording of request time. |
| |
| Database Core: |
| |
| * Document validation for underscore prefixed variables. |
| * Made attachment storage less sparse. |
| * Fixed problems when a database with delayed commits pending is considered |
| idle, and subject to losing changes when shutdown. (COUCHDB-334) |
| |
| External Handlers: |
| |
| * Fix POST requests. |
| |
| Futon: |
| |
| * Redirect when loading a deleted view URI from the cookie. |
| |
| HTTP Interface: |
| |
| * Attachment requests respect the "rev" query-string parameter. |
| |
| JavaScript View Server: |
| |
| * Useful JavaScript Error messages. |
| |
| Replication: |
| |
| * Added support for Unicode characters transmitted as UTF-16 surrogate pairs. |
| * URL-encode attachment names when necessary. |
| * Pull specific revisions of an attachment, instead of just the latest one. |
| * Work around a rare chunk-merging problem in ibrowse. |
| * Work with documents containing Unicode characters outside the Basic |
| Multilingual Plane. |
| |
| Version 0.9.0 |
| ------------- |
| |
| Futon Utility Client: |
| |
| * Added pagination to the database listing page. |
| * Implemented attachment uploading from the document page. |
| * Added page that shows the current configuration, and allows modification of |
| option values. |
| * Added a JSON "source view" for document display. |
| * JSON data in view rows is now syntax highlighted. |
| * Removed the use of an iframe for better integration with browser history and |
| bookmarking. |
| * Full database listing in the sidebar has been replaced by a short list of |
| recent databases. |
| * The view editor now allows selection of the view language if there is more |
| than one configured. |
| * Added links to go to the raw view or document URI. |
| * Added status page to display currently running tasks in CouchDB. |
| * JavaScript test suite split into multiple files. |
| * Pagination for reduce views. |
| |
| Design Document Resource Paths: |
| |
| * Added httpd_design_handlers config section. |
| * Moved _view to httpd_design_handlers. |
| * Added ability to render documents as non-JSON content-types with _show and |
| _list functions, which are also httpd_design_handlers. |
| |
| HTTP Interface: |
| |
| * Added client side UUIDs for idempotent document creation |
| * HTTP COPY for documents |
| * Streaming of chunked attachment PUTs to disk |
| * Remove negative count feature |
| * Add include_docs option for view queries |
| * Add multi-key view post for views |
| * Query parameter validation |
| * Use stale=ok to request potentially cached view index |
| * External query handler module for full-text or other indexers. |
| * Etags for attachments, views, shows and lists |
| * Show and list functions for rendering documents and views as developer |
| controlled content-types. |
| * Attachment names may use slashes to allow uploading of nested directories |
| (useful for static web hosting). |
| * Option for a view to run over design documents. |
| * Added newline to JSON responses. Closes bike-shed. |
| |
| Replication: |
| |
| * Using ibrowse. |
| * Checkpoint replications so failures are less expensive. |
| * Automatically retry of failed replications. |
| * Stream attachments in pull-replication. |
| |
| Database Core: |
| |
| * Faster B-tree implementation. |
| * Changed internal JSON term format. |
| * Improvements to Erlang VM interactions under heavy load. |
| * User context and administrator role. |
| * Update validations with design document validation functions. |
| * Document purge functionality. |
| * Ref-counting for database file handles. |
| |
| Build and System Integration: |
| |
| * The `couchdb` script now supports system chainable configuration files. |
| * The Mac OS X daemon script now redirects STDOUT and STDERR like SysV/BSD. |
| * The build and system integration have been improved for portability. |
| * Added COUCHDB_OPTIONS to etc/default/couchdb file. |
| * Remove COUCHDB_INI_FILE and COUCHDB_PID_FILE from etc/default/couchdb file. |
| * Updated `configure.ac` to manually link `libm` for portability. |
| * Updated `configure.ac` to extended default library paths. |
| * Removed inets configuration files. |
| * Added command line test runner. |
| * Created dev target for make. |
| |
| Configuration and stats system: |
| |
| * Separate default and local configuration files. |
| * HTTP interface for configuration changes. |
| * Statistics framework with HTTP query API. |
| |
| Version 0.8.1-incubating |
| ------------------------ |
| |
| Database Core: |
| |
| * Fix for replication problems where the write queues can get backed up if the |
| writes aren't happening fast enough to keep up with the reads. For a large |
| replication, this can exhaust memory and crash, or slow down the machine |
| dramatically. The fix keeps only one document in the write queue at a time. |
| * Fix for databases sometimes incorrectly reporting that they contain 0 |
| documents after compaction. |
| * CouchDB now uses ibrowse instead of inets for its internal HTTP client |
| implementation. This means better replication stability. |
| |
| HTTP Interface: |
| |
| * Fix for chunked responses where chunks were always being split into multiple |
| TCP packets, which caused problems with the test suite under Safari, and in |
| some other cases. |
| * Fix for an invalid JSON response body being returned for some kinds of |
| views. (COUCHDB-84) |
| * Fix for connections not getting closed after rejecting a chunked request. |
| (COUCHDB-55) |
| * CouchDB can now be bound to IPv6 addresses. |
| * The HTTP `Server` header now contains the versions of CouchDB and Erlang. |
| |
| JavaScript View Server: |
| |
| * Sealing of documents has been disabled due to an incompatibility with |
| SpiderMonkey 1.9. |
| * Improve error handling for undefined values emitted by map functions. |
| (COUCHDB-83) |
| |
| Build and System Integration: |
| |
| * The `couchdb` script no longer uses `awk` for configuration checks as this |
| was causing portability problems. |
| * Updated `sudo` example in `README` to use the `-i` option, this fixes |
| problems when invoking from a directory the `couchdb` user cannot access. |
| |
| Futon: |
| |
| * The view selector dropdown should now work in Opera and Internet Explorer |
| even when it includes optgroups for design documents. (COUCHDB-81) |
| |
| Version 0.8.0-incubating |
| ------------------------ |
| |
| Database Core: |
| |
| * The view engine has been completely decoupled from the storage engine. Index |
| data is now stored in separate files, and the format of the main database |
| file has changed. |
| * Databases can now be compacted to reclaim space used for deleted documents |
| and old document revisions. |
| * Support for incremental map/reduce views has been added. |
| * To support map/reduce, the structure of design documents has changed. View |
| values are now JSON objects containing at least a `map` member, and |
| optionally a `reduce` member. |
| * View servers are now identified by name (for example `javascript`) instead of |
| by media type. |
| * Automatically generated document IDs are now based on proper UUID generation |
| using the crypto module. |
| * The field `content-type` in the JSON representation of attachments has been |
| renamed to `content_type` (underscore). |
| |
| HTTP Interface: |
| |
| * CouchDB now uses MochiWeb instead of inets for the HTTP server |
| implementation. Among other things, this means that the extra configuration |
| files needed for inets (such as `couch_httpd.conf`) are no longer used. |
| * The HTTP interface now completely supports the `HEAD` method. (COUCHDB-3) |
| * Improved compliance of `Etag` handling with the HTTP specification. |
| (COUCHDB-13) |
| * Etags are no longer included in responses to document `GET` requests that |
| include query string parameters causing the JSON response to change without |
| the revision or the URI having changed. |
| * The bulk document update API has changed slightly on both the request and the |
| response side. In addition, bulk updates are now atomic. |
| * CouchDB now uses `TCP_NODELAY` to fix performance problems with persistent |
| connections on some platforms due to nagling. |
| * Including a `?descending=false` query string parameter in requests to views |
| no longer raises an error. |
| * Requests to unknown top-level reserved URLs (anything with a leading |
| underscore) now return a `unknown_private_path` error instead of the |
| confusing `illegal_database_name`. |
| * The Temporary view handling now expects a JSON request body, where the JSON |
| is an object with at least a `map` member, and optional `reduce` and |
| `language` members. |
| * Temporary views no longer determine the view server based on the Content-Type |
| header of the `POST` request, but rather by looking for a `language` member |
| in the JSON body of the request. |
| * The status code of responses to `DELETE` requests is now 200 to reflect that |
| that the deletion is performed synchronously. |
| |
| JavaScript View Server: |
| |
| * SpiderMonkey is no longer included with CouchDB, but rather treated as a |
| normal external dependency. A simple C program (`_couchjs`) is provided that |
| links against an existing SpiderMonkey installation and uses the interpreter |
| embedding API. |
| * View functions using the default JavaScript view server can now do logging |
| using the global `log(message)` function. Log messages are directed into the |
| CouchDB log at `INFO` level. (COUCHDB-59) |
| * The global `map(key, value)` function made available to view code has been |
| renamed to `emit(key, value)`. |
| * Fixed handling of exceptions raised by view functions. |
| |
| Build and System Integration: |
| |
| * CouchDB can automatically respawn following a server crash. |
| * Database server no longer refuses to start with a stale PID file. |
| * System logrotate configuration provided. |
| * Improved handling of ICU shared libraries. |
| * The `couchdb` script now automatically enables SMP support in Erlang. |
| * The `couchdb` and `couchjs` scripts have been improved for portability. |
| * The build and system integration have been improved for portability. |
| |
| Futon: |
| |
| * When adding a field to a document, Futon now just adds a field with an |
| autogenerated name instead of prompting for the name with a dialog. The name |
| is automatically put into edit mode so that it can be changed immediately. |
| * Fields are now sorted alphabetically by name when a document is displayed. |
| * Futon can be used to create and update permanent views. |
| * The maximum number of rows to display per page on the database page can now |
| be adjusted. |
| * Futon now uses the XMLHTTPRequest API asynchronously to communicate with the |
| CouchDB HTTP server, so that most operations no longer block the browser. |
| * View results sorting can now be switched between ascending and descending by |
| clicking on the `Key` column header. |
| * Fixed a bug where documents that contained a `@` character could not be |
| viewed. (COUCHDB-12) |
| * The database page now provides a `Compact` button to trigger database |
| compaction. (COUCHDB-38) |
| * Fixed portential double encoding of document IDs and other URI segments in |
| many instances. (COUCHDB-39) |
| * Improved display of attachments. |
| * The JavaScript Shell has been removed due to unresolved licensing issues. |