# 1.21. 0.9.x Branch

## 1.21.1. Upgrade Notes

### 1.21.1.1. Response to Bulk Creation/Updates

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

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

### 1.21.1.2. 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.

### 1.21.1.3. 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.

### 1.21.1.4. 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.

### 1.21.1.5. Attachments

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

### 1.21.1.6. 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.

### 1.21.1.7. 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.

## 1.21.2. Version 0.9.2

### 1.21.2.1. Build and System Integration

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

### 1.21.2.2. Replication

- Fix replication with 0.10 servers initiated by an 0.9 server (COUCHDB-559).

## 1.21.3. Version 0.9.1

### 1.21.3.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.

### 1.21.3.2. Configuration and stats system

- Corrected missing configuration file error message.

- Fixed incorrect recording of request time.

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

### 1.21.3.4. External Handlers

- Fix POST requests.

### 1.21.3.5. Futon

- Redirect when loading a deleted view URI from the cookie.

### 1.21.3.6. HTTP Interface

- Attachment requests respect the “rev” query-string parameter.

### 1.21.3.7. JavaScript View Server

- Useful JavaScript Error messages.

### 1.21.3.8. 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.

## 1.21.4. Version 0.9.0

### 1.21.4.1. 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.

### 1.21.4.2. Configuration and stats system

- Separate default and local configuration files.

- HTTP interface for configuration changes.

- Statistics framework with HTTP query API.

### 1.21.4.3. 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.

### 1.21.4.4. 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.

### 1.21.4.5. 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.

### 1.21.4.6. 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.

### 1.21.4.7. Replication

- Using ibrowse.

- Checkpoint replications so failures are less expensive.

- Automatically retry of failed replications.

- Stream attachments in pull-replication.