couchdb-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Couchdb Wiki] Update of "BreakingChanges" by ChristopherLenz
Date Mon, 26 May 2008 15:04:01 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Couchdb Wiki" for change notification.

The following page has been changed by ChristopherLenz:
http://wiki.apache.org/couchdb/BreakingChanges

The comment on the change is:
Started collecting some info on breaking changes in trunk

New page:
This page documents backwards-incompatible changes made during the evolution of CouchDB. While
not all such changes will necessarily affect all users, most of them probably will. This page
should show you what changed and how you'll need to adapt your code.

== Changes Between 0.7.x and 0.8.0 ==

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

=== View Definition Changes ===

Views now support optional reduce. For this to work, the structure of view definitions in
design documents had to change. An example is probably the best way to illustrate this:

{{{
  {
    "_id":"_design/foo",
    "language":"javascript",
    "views": {
      "bar": {
        "map":"function... ",
        "reduce":"function..."
      }
    }
  }
}}}

Notable changes are the usage of a JSON object to define both the map and the reduce function
instead of just a string for the map function. The `reduce` member may be omitted.

The `language` member is no longer a MIME type, instead, only the language name is specified.
The language name maps exactly to the name chosen for a view server registration in `couch.ini`.

The `map(key, value)` function that map functions would use to produce output has been renamed
to `emit(key, value)` to avoid confusion.

{{{
  function(doc) {
    emit(doc.foo, doc.bar);
  }
}}}

Temporary views now need to get `POST`ed a JSON document with `map` and `reduce` members instead
of just `POST`ing the raw source of the map function:

{{{
  {
    "map":"function...",
    "reduce":"function..."
  }
}}}

Note that the language of the temporary view is no longer determined by the `Content-Type`
header of the HTTP request. Since the definition is a JSON object, the `Content-Type` is always
`application/json`. The view language is now specified via an optional `language` member in
the JSON request body. If omitted, the language defaults to "javascript".

{{{
  {
    "language":"javascript"
    "map":"function...",
    "reduce":"function..."
  }
}}}

=== HTTP API Changes ===

Mime
View raw message