blob: 1d87da81589d7d3efd7a357f315800957628bb88 [file] [log] [blame]
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.
Windows:
* Windows builds now require ICU >= 4.4.0 and Erlang >= R14B03. See
COUCHDB-1152, and COUCHDB-963 + OTP-9139 for more information.
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.