[
https://issues.apache.org/jira/browse/COUCHDB-1868?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13737509#comment-13737509
]
Filippo Fadda commented on COUCHDB-1868:
----------------------------------------
OK, I think I got the snippets I should modify. Tell me if I'm wrong.
I tell you what I understood. First of all, internally, for each request, the
lookup function is called. This function check the btree for the given key:
https://github.com/apache/couchdb/blob/cc35be3b6fa0bc1eefe4954793131ef3541b47da/src/couchdb/couch_btree.erl#L214
This function return 'ok' in case of match or 'not_found'. Speaking of
_all_docs, I found that the 'all_docs_fold' function checks if the pattern
'not_found' is matched. In this case a row with the error is emitted, but this
doesn't happen, instead, in the 'view_cb' function, used internally when you
query a user defined view. The function in fact ignores the 'not_found' pattern
matching and only deals with 'ok'. That's because it just returns rows for
existing keys.
So, I have to add the option and modify the above functions (all_docs_fold,
view_cd) to emit a row with a null id in case of the new query parameter is
true, ignoring the pattern matching 'not_found' in case the _all_docs or the
user defined view are called without the new query parameter.
> Using multiple keys, the _all_docs built-in view acts differently then a user
> defined view
> ------------------------------------------------------------------------------------------
>
> Key: COUCHDB-1868
> URL: https://issues.apache.org/jira/browse/COUCHDB-1868
> Project: CouchDB
> Issue Type: Bug
> Components: View Server Support
> Reporter: Filippo Fadda
>
> When you query a view using multiple keys, the _all_docs built-in view acts
> differently then a user defined view:
> 1) in the first case CouchDB returns "not_found" for every not found key;
> 2) querying a user defined view produces, instead, an empty array.
> In the first case you obtain error="not_found" for every key, when you query
> a user defined view you simply don't get any rows, just the total rows for
> the view.
> See: http://pastebin.com/D7NExJrd
> Now, regarding 'keys' the documentation says something like: "Used to
> retrieve just the view rows matching that set of keys. Rows are returned in
> the order of the specified keys."
> In a normal case, CouchDB should return just a row for each matched key, but
> it will really help, having an option to return a row for every key, even
> there if not found, because it's more easy, cycle through results.
> Let's suppose the application I'm doing gets the last 30 blog posts,
> displaying for each one, information that are stored into related documents.
> The application will query, using as keys the posts' identifiers, other views
> to get, for example, if a post has been starred from the current logged-in
> user, etc.
> If a view always returns a number of rows equals to the number of keys, the
> application can cycle from 0 to 29 and display all the related information
> for a post.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira