[
https://issues.apache.org/jira/browse/COUCHDB-2818?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14906483#comment-14906483
]
ASF GitHub Bot commented on COUCHDB-2818:
-----------------------------------------
Github user asfgit closed the pull request at:
https://github.com/apache/couchdb-couch-mrview/pull/30
> Design documents accept invalid views
> -------------------------------------
>
> Key: COUCHDB-2818
> URL: https://issues.apache.org/jira/browse/COUCHDB-2818
> Project: CouchDB
> Issue Type: Bug
> Security Level: public(Regular issues)
> Components: Database Core, Documentation, JavaScript View Server
> Reporter: Nick Vatamaniuc
>
> Design documents seem to accept invalid views.
> For example:
> {code}
> $ http PUT $DB1/db2/_design/des1 views:='{ "v1" :
> "function(d){emit(d._id,d);}" }'
> HTTP/1.1 201 Created
> {
> "id": "_design/des1",
> "ok": true,
> "rev": "1-04701f13eb827265c442d219bd995e91"
> }
> {code}
> Going by the documentation for design documents:
> http://docs.couchdb.org/en/latest/api/ddoc/common.html#put--db-_design-ddoc ,
> a view should be an object that has a map (a string) and an optional reduce
> (string).
> Interestingly some validation is performed to check that views field itself
> is an object. For example:
> {code}
> $ http PUT $DB1/db2/_design/des1 views:='"x"'
> HTTP/1.1 400 Bad Request
> {
> "error": "invalid_design_doc",
> "reason": "`views` parameter must be an object."
> }
> {code}
> Also there is a deeper level validation of map functions:
> {code}
> $ http PUT $DB1/db2/_design/des1 views:='{ "m":{"map":""} }'
> {
> "error": "not_found",
> "reason": "missing function"
> }
> {code}
> If there is interest, I have a patch that, if provided: views, filters,
> lists, show, updates, options are objects. rewrites are arrays,
> validate_doc_update and language are strings.
> Then if views is provided, each view is an object. It must have a map
> function (a string) and an optional reduce function (also a string).
> Here is an example how it works:
> {code}
> $ http PUT $DB1/db2/_design/des1 views:='{ "m":"bad" }'
> HTTP/1.1 400 Bad Request
> {
> "error": "invalid_design_doc",
> "reason": "View m must be an object"
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)