diff options
author | John Christopher Anderson <jchris@apache.org> | 2009-02-02 20:27:03 +0000 |
---|---|---|
committer | John Christopher Anderson <jchris@apache.org> | 2009-02-02 20:27:03 +0000 |
commit | 941933ed3d1ae7247e4a27c54efb92bdcbd188a8 (patch) | |
tree | 0dfa837f02c72d8471332fc8465955b253052333 /share/server | |
parent | 49c9d17d8e407f54226b4fc4d55c0049ed58d628 (diff) |
add iteration numbers to list row functions. closes COUCHDB-233. thanks Benoit Chesneau.
git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@740094 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'share/server')
-rw-r--r-- | share/server/main.js | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/share/server/main.js b/share/server/main.js index 723bf655..53ccc012 100644 --- a/share/server/main.js +++ b/share/server/main.js @@ -13,6 +13,7 @@ var cmd; var funs = []; // holds functions used for computation var map_results = []; // holds temporary emitted values during doc map +var row_line = {}; // holds row number in list per func var sandbox = null; @@ -350,18 +351,25 @@ while (cmd = eval(readline())) { var listFun = funs[0]; var head = cmd[1]; var req = cmd[2]; - runRenderFunction(listFun, [head, null, req]); + row_line[listFun] = 0; + runRenderFunction(listFun, [head, null, req, null]); break; case "list_row": var listFun = funs[0]; var row = cmd[1]; var req = cmd[2]; - runRenderFunction(listFun, [null, row, req]); + runRenderFunction(listFun, [null, row, req, row_line[listFun]]); + row_line[listFun]++; break; case "list_tail": var listFun = funs[0]; var req = cmd[1]; - runRenderFunction(listFun, [null, null, req]); + var row_number = null; + try { + row_number = row_line[listFun]; + delete row_line[listFun]; + } catch (e) {} + runRenderFunction(listFun, [null, null, req, row_number]); break; default: print(toJSON({error: "query_server_error", |