.. Licensed under the Apache License, Version 2.0 (the "License"); you may not
.. use this file except in compliance with the License. You may obtain a copy of
.. the License at
..
..   http://www.apache.org/licenses/LICENSE-2.0
..
.. Unless required by applicable law or agreed to in writing, software
.. distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
.. WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
.. License for the specific language governing permissions and limitations under
.. the License.

.. _release/0.9.x:

============
0.9.x Branch
============

.. contents::
    :depth: 1
    :local:

.. _release/0.9.x/upgrade:

Upgrade Notes
=============

Response to Bulk Creation/Updates
---------------------------------

The response to a bulk creation / update now looks like this

.. code-block:: javascript

    [
        {"id": "0", "rev": "3682408536"},
        {"id": "1", "rev": "3206753266"},
        {"id": "2", "error": "conflict", "reason": "Document update conflict."}
    ]

Database File Format
--------------------

The database file format has changed. CouchDB itself does yet not provide any
tools for migrating your data. In the meantime, you can use third-party scripts
to deal with the migration, such as the dump/load tools that come with the
development version (trunk) of `couchdb-python`_.

.. _couchdb-python: http://code.google.com/p/couchdb-python/

Renamed "count" to "limit"
--------------------------

The view query API has been changed: ``count`` has become ``limit``.
This is a better description of what the parameter does, and should be a simple
update in any client code.

Moved View URLs
---------------

The view URLs have been moved to design document resources. This means that
paths that used to be like::

    http://hostname:5984/mydb/_view/designname/viewname?limit=10

will now look like::

    http://hostname:5984/mydb/_design/designname/_view/viewname?limit=10.

See the `REST, Hypermedia, and CouchApps`_  thread on dev for details.

.. _REST, Hypermedia, and CouchApps: http://mail-archives.apache.org/mod_mbox/couchdb-dev/200902.mbox/%3Ce282921e0902242116n2cd207c4x7a9d0feced3f10d9@mail.gmail.com%3E

Attachments
-----------

Names of attachments are no longer allowed to start with an underscore.

Error Codes
-----------

Some refinements have been made to error handling. CouchDB will send 400 instead
of 500 on invalid query parameters. Most notably, document update conflicts now
respond with `409 Conflict` instead of `412 Precondition Failed`. The error code
for when attempting to create a database that already exists is now 412
instead of 409.

ini file format
---------------

CouchDB 0.9 changes sections and configuration variable names in configuration
files. Old .ini files won't work. Also note that CouchDB now ships with two .ini
files where 0.8 used couch.ini there are now `default.ini` and `local.ini`.
`default.ini` contains CouchDB's standard configuration values. local.ini is
meant for local changes. `local.ini` is not overwritten on CouchDB updates, so
your edits are safe. In addition, the new runtime configuration system persists
changes to the configuration in `local.ini`.

.. _release/0.9.2:

Version 0.9.2
=============

Build and System Integration
----------------------------

* Remove branch callbacks to allow building couchjs against newer versions of
  Spidermonkey.

Replication
-----------

* Fix replication with 0.10 servers initiated by an 0.9 server (:issue:`559`).

.. _release/0.9.1:

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. (:issue:`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.

.. _release/0.9.0:

Version 0.9.0
=============

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.

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.

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.

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.

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.
