[Couchdb Wiki] Update of "View_server" by JoanTouzet

2018-04-12 Thread Apache Wiki
Dear wiki user,

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

The page "View_server" has been deleted by JoanTouzet:

https://wiki.apache.org/couchdb/View_server?action=diff=36=37

- <>
  
- Please refer to our 
[[http://docs.couchdb.org/en/stable/query-server/index.html|official 
documentation]] on the query server protocol.
- 


[Couchdb Wiki] Update of "View_server" by JoanTouzet

2018-04-06 Thread Apache Wiki
Dear Wiki user,

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

The "View_server" page has been changed by JoanTouzet:
https://wiki.apache.org/couchdb/View_server?action=diff=35=36

  <>
  
- Please refer to our 
[[https://atypical.net/couchdb-documentation/query-server/index.html|official 
documentation]] on the query server protocol.
+ Please refer to our 
[[http://docs.couchdb.org/en/stable/query-server/index.html|official 
documentation]] on the query server protocol.
  


[Couchdb Wiki] Update of "View_server" by JoanTouzet

2018-04-06 Thread Apache Wiki
Dear Wiki user,

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

The "View_server" page has been changed by JoanTouzet:
https://wiki.apache.org/couchdb/View_server?action=diff=34=35

Comment:
Point people at the docs

  <>
  
+ Please refer to our 
[[https://atypical.net/couchdb-documentation/query-server/index.html|official 
documentation]] on the query server protocol.
- = View Server =
- <>
  
- A simple introduction to the CouchDB view server.
- 
- == The View Server ==
- CouchDB delegates computation of [[Views]] to external query servers. It 
communicates with them over standard input/output, using a very simple, 
line-based protocol. The default query server is written in Javascript, running 
via Mozilla !SpiderMonkey. You can use other languages by setting a MIME type 
in the ''language'' property of a design document or the Content-Type header of 
a temporary view. Design documents that do not specify a ''language'' property 
are assumed to be of type ''javascript'', as are ad hoc queries that are 
''POST''ed to ''_temp_view'' without a ''Content-Type'' header.
- 
- To register query servers with CouchDB, add a line for each server to 
''local.ini''. The basic syntax is:
- 
- {{{
- [query_servers]
- python=/usr/bin/couchpy
- ruby=/wherever/couchobject/bin/couch_ruby_view_requestor
- }}}
- == Basic API ==
- This shows you how the view server implementation for your language should 
behave. If in doubt, look at the ''share/server/main.js'' file in your CouchDB 
source tree for reference.
- 
- CouchDB launches the view server and starts sending commands. The server 
responds according to its evaluation of the commands. There are only three 
commands the view server needs to understand.
- 
- === reset ===
- This resets the state of the view server and makes it forget all previous 
input. If applicable, this is the point to run garbage collection.
- 
- CouchDB sends:
- 
- {{{
- ["reset"]\n
- }}}
- The view server responds:
- 
- {{{
- true\n
- }}}
- === add_fun ===
- When creating a view, the view server gets sent the view function for 
evaluation. The view server should parse/compile/evaluate the function he 
receives to make it callable later. If this fails, the view server returns an 
error. CouchDB might store several functions before sending in any actual 
documents.
- 
- CouchDB sends:
- 
- {{{
- ["add_fun", "function(doc) { if(doc.score > 50) emit(null, {'player_name': 
doc.name}); }"]\n
- }}}
- When the view server can evaluate the function and make it callable, it 
returns:
- 
- {{{
- true\n
- }}}
- If not:
- 
- {{{
- {"error": "some_error_code", "reason": "error message"}\n
- }}}
- === map_doc ===
- When the view function is stored in the view server, CouchDB starts sending 
in all the documents in the database, one at a time. The view server calls the 
previously stored functions one after another with the document and stores its 
result. When all functions have been called, the result is returned as a JSON 
string.
- 
- CouchDB sends:
- 
- {{{
- ["map_doc", {"_id":"8877AFF9789988EE","_rev":"3-235256484","name":"John 
Smith","score": 60}]\n
- }}}
- If the function above is the only function stored, the views server answers:
- 
- {{{
- [[[null, {"player_name":"John Smith"}]]]\n
- }}}
- That is, an array with the result for every function for the given document.
- 
- If a document is to be excluded from the View, the array should be empty.
- 
- CouchDB sends:
- 
- {{{
- ["map_doc", {"_id":"9590AEB4585637FE","_rev":"1-674684684","name":"Jane 
Parker","score": 43}]\n
- }}}
- The views server answers:
- 
- {{{
- [[]]\n
- }}}
- === reduce ===
- If the view has a {{{reduce}}} function defined, CouchDB will enter into the 
reduce phase. The view server will receive a list of reduce functions and some 
map results on which it can apply them. The map results are given in the form 
{{{[[key, id-of-doc], value]}}}.
- 
- CouchDB sends:
- 
- {{{
- ["reduce",["function(k, v) { return sum(v); 
}"],[[[1,"699b524273605d5d3e9d4fd0ff2cb272"],10],[[2,"c081d0f69c13d2ce2050d684c7ba2843"],20],[[null,"foobar"],3]]]\n
- }}}
- 
- The view-server answers:
- 
- {{{
- [true,[33]]\n
- }}}
- Note that even though the view server receives the map results in the form 
{{{[[key, id-of-doc], value]}}}, the function may receive them in a different 
form. For example, the JavaScript view-server applies functions on the list of 
keys and the list of values.
- 
- === rereduce ===
- When building a view, CouchDB will apply the {{{reduce}}} step directly to 
the output of the map step and the {{{rereduce}}} step to the output of a 
previous {{{reduce}}} step.
- 
- CouchDB will send a list of values, with no keys or document ids, to the 
rereduce step.
- 
- CouchDB sends:
- 
- {{{
- ["rereduce",["function(k, v, r) { return sum(v); }"],[33,55,66]]\n
- }}}
- The view-server answers:
- 
- {{{
- [true,[154]]\n
- }}}
- === log ===
- At any time, the