From 941933ed3d1ae7247e4a27c54efb92bdcbd188a8 Mon Sep 17 00:00:00 2001 From: John Christopher Anderson Date: Mon, 2 Feb 2009 20:27:03 +0000 Subject: 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 --- share/server/main.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'share/server') 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", -- cgit v1.2.3