[jira] [Commented] (COUCHDB-1228) Key range error apparently ignores view collation
[ https://issues.apache.org/jira/browse/COUCHDB-1228?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13080518#comment-13080518 ] Paul Joseph Davis commented on COUCHDB-1228: @Jason, Looks pretty good. Though I'd implement collation_for_view slightly differently: collationv_for_view({reduce, _N, _Lang, View}) -> collation_for_view(View); collation_for_view(View) -> fun(A, B) -> couch_btree:less(View#view.btree, A, B) end. You'll need to export couch_btree:less, but that's no biggy. I think this should simplify the rest of the collation logic further down. Only tricky thing is for _all_docs to just remember and pass fun(A, B) -> A < B end. instead of raw as the Collation thing. > Key range error apparently ignores view collation > - > > Key: COUCHDB-1228 > URL: https://issues.apache.org/jira/browse/COUCHDB-1228 > Project: CouchDB > Issue Type: Bug > Components: HTTP Interface >Affects Versions: 1.1 > Environment: Debian >Reporter: Victor Nicollet > Fix For: 1.1.1 > > Attachments: 0001-Whitespace-and-comment-clarification.patch, > 0002-Unit-tests-for-proper-key-range-support-during-raw-c.patch, > 0003-Support-correct-key-range-semantics-for-raw-collatio.patch, > trunk.0001-Whitespace-and-comment-clarification.patch, > trunk.0002-Unit-tests-for-proper-key-range-support-during-raw-c.patch, > trunk.0003-Support-correct-key-range-semantics-for-raw-collatio.patch > > > I have created a view (no reduce function) with "options":{"collation":"raw"} > and emit documents with keys "A", "C" and "b". Running a request on that view > with no parameters, I get as expected all three documents in order "A", "C" > and "b" as required by the raw collation (instead of "A", "b", "C" for the > default ICU collation). > However, when I run a request with start key "B" and end key "a", I expect > the "C" document to be returned alone (as "B" < "C" < "a") but couchDB > responds: > { "error": "query_parse_error", "reason": "No rows can match your key range, > reverse your start_key and end_key or set descending=true" } > This error would make sense if I had been using the default ICU collation, > where "B" > "a", but with the raw collation the reverse ("B" > "a") is true. > It looks as if the key order warning does not take the view collation into > account. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (COUCHDB-1228) Key range error apparently ignores view collation
[ https://issues.apache.org/jira/browse/COUCHDB-1228?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jason Smith updated COUCHDB-1228: - Attachment: trunk.0003-Support-correct-key-range-semantics-for-raw-collatio.patch trunk.0002-Unit-tests-for-proper-key-range-support-during-raw-c.patch trunk.0001-Whitespace-and-comment-clarification.patch Original patches are against 1.1.x. Next patch set is against trunk. > Key range error apparently ignores view collation > - > > Key: COUCHDB-1228 > URL: https://issues.apache.org/jira/browse/COUCHDB-1228 > Project: CouchDB > Issue Type: Bug > Components: HTTP Interface >Affects Versions: 1.1 > Environment: Debian >Reporter: Victor Nicollet > Fix For: 1.1.1 > > Attachments: 0001-Whitespace-and-comment-clarification.patch, > 0002-Unit-tests-for-proper-key-range-support-during-raw-c.patch, > 0003-Support-correct-key-range-semantics-for-raw-collatio.patch, > trunk.0001-Whitespace-and-comment-clarification.patch, > trunk.0002-Unit-tests-for-proper-key-range-support-during-raw-c.patch, > trunk.0003-Support-correct-key-range-semantics-for-raw-collatio.patch > > > I have created a view (no reduce function) with "options":{"collation":"raw"} > and emit documents with keys "A", "C" and "b". Running a request on that view > with no parameters, I get as expected all three documents in order "A", "C" > and "b" as required by the raw collation (instead of "A", "b", "C" for the > default ICU collation). > However, when I run a request with start key "B" and end key "a", I expect > the "C" document to be returned alone (as "B" < "C" < "a") but couchDB > responds: > { "error": "query_parse_error", "reason": "No rows can match your key range, > reverse your start_key and end_key or set descending=true" } > This error would make sense if I had been using the default ICU collation, > where "B" > "a", but with the raw collation the reverse ("B" > "a") is true. > It looks as if the key order warning does not take the view collation into > account. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (COUCHDB-1228) Key range error apparently ignores view collation
[ https://issues.apache.org/jira/browse/COUCHDB-1228?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jason Smith updated COUCHDB-1228: - Attachment: 0003-Support-correct-key-range-semantics-for-raw-collatio.patch 0002-Unit-tests-for-proper-key-range-support-during-raw-c.patch Proposed patch with unit tests > Key range error apparently ignores view collation > - > > Key: COUCHDB-1228 > URL: https://issues.apache.org/jira/browse/COUCHDB-1228 > Project: CouchDB > Issue Type: Bug > Components: HTTP Interface >Affects Versions: 1.1 > Environment: Debian >Reporter: Victor Nicollet > Fix For: 1.1.1 > > Attachments: 0001-Whitespace-and-comment-clarification.patch, > 0002-Unit-tests-for-proper-key-range-support-during-raw-c.patch, > 0003-Support-correct-key-range-semantics-for-raw-collatio.patch > > > I have created a view (no reduce function) with "options":{"collation":"raw"} > and emit documents with keys "A", "C" and "b". Running a request on that view > with no parameters, I get as expected all three documents in order "A", "C" > and "b" as required by the raw collation (instead of "A", "b", "C" for the > default ICU collation). > However, when I run a request with start key "B" and end key "a", I expect > the "C" document to be returned alone (as "B" < "C" < "a") but couchDB > responds: > { "error": "query_parse_error", "reason": "No rows can match your key range, > reverse your start_key and end_key or set descending=true" } > This error would make sense if I had been using the default ICU collation, > where "B" > "a", but with the raw collation the reverse ("B" > "a") is true. > It looks as if the key order warning does not take the view collation into > account. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (COUCHDB-1228) Key range error apparently ignores view collation
[ https://issues.apache.org/jira/browse/COUCHDB-1228?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jason Smith updated COUCHDB-1228: - Attachment: 0001-Whitespace-and-comment-clarification.patch Prep for real work > Key range error apparently ignores view collation > - > > Key: COUCHDB-1228 > URL: https://issues.apache.org/jira/browse/COUCHDB-1228 > Project: CouchDB > Issue Type: Bug > Components: HTTP Interface >Affects Versions: 1.1 > Environment: Debian >Reporter: Victor Nicollet > Fix For: 1.1.1 > > Attachments: 0001-Whitespace-and-comment-clarification.patch > > > I have created a view (no reduce function) with "options":{"collation":"raw"} > and emit documents with keys "A", "C" and "b". Running a request on that view > with no parameters, I get as expected all three documents in order "A", "C" > and "b" as required by the raw collation (instead of "A", "b", "C" for the > default ICU collation). > However, when I run a request with start key "B" and end key "a", I expect > the "C" document to be returned alone (as "B" < "C" < "a") but couchDB > responds: > { "error": "query_parse_error", "reason": "No rows can match your key range, > reverse your start_key and end_key or set descending=true" } > This error would make sense if I had been using the default ICU collation, > where "B" > "a", but with the raw collation the reverse ("B" > "a") is true. > It looks as if the key order warning does not take the view collation into > account. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (COUCHDB-1228) Key range error apparently ignores view collation
[ https://issues.apache.org/jira/browse/COUCHDB-1228?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13080417#comment-13080417 ] Paul Joseph Davis commented on COUCHDB-1228: @Bob Quite right. Though that code will have to poke into the design doc to handle that warning case. I'm not sure what _all_docs has to do with it. It only uses raw collation. > Key range error apparently ignores view collation > - > > Key: COUCHDB-1228 > URL: https://issues.apache.org/jira/browse/COUCHDB-1228 > Project: CouchDB > Issue Type: Bug > Components: HTTP Interface >Affects Versions: 1.1 > Environment: Debian >Reporter: Victor Nicollet > Fix For: 1.1.1 > > > I have created a view (no reduce function) with "options":{"collation":"raw"} > and emit documents with keys "A", "C" and "b". Running a request on that view > with no parameters, I get as expected all three documents in order "A", "C" > and "b" as required by the raw collation (instead of "A", "b", "C" for the > default ICU collation). > However, when I run a request with start key "B" and end key "a", I expect > the "C" document to be returned alone (as "B" < "C" < "a") but couchDB > responds: > { "error": "query_parse_error", "reason": "No rows can match your key range, > reverse your start_key and end_key or set descending=true" } > This error would make sense if I had been using the default ICU collation, > where "B" > "a", but with the raw collation the reverse ("B" > "a") is true. > It looks as if the key order warning does not take the view collation into > account. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (COUCHDB-1228) Key range error apparently ignores view collation
[ https://issues.apache.org/jira/browse/COUCHDB-1228?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13080394#comment-13080394 ] Bob Dionne commented on COUCHDB-1228: - Looks like the problem is in couch_httpd_view:warn_on_empty_key_range, it makes use of couch_view:less_json as the default instead of taking the collation option into account. Shouldn't be too hard to fix in the view case but I'm not sure how to handle the case of _all_docs > Key range error apparently ignores view collation > - > > Key: COUCHDB-1228 > URL: https://issues.apache.org/jira/browse/COUCHDB-1228 > Project: CouchDB > Issue Type: Bug > Components: HTTP Interface >Affects Versions: 1.1 > Environment: Debian >Reporter: Victor Nicollet > Fix For: 1.1.1 > > > I have created a view (no reduce function) with "options":{"collation":"raw"} > and emit documents with keys "A", "C" and "b". Running a request on that view > with no parameters, I get as expected all three documents in order "A", "C" > and "b" as required by the raw collation (instead of "A", "b", "C" for the > default ICU collation). > However, when I run a request with start key "B" and end key "a", I expect > the "C" document to be returned alone (as "B" < "C" < "a") but couchDB > responds: > { "error": "query_parse_error", "reason": "No rows can match your key range, > reverse your start_key and end_key or set descending=true" } > This error would make sense if I had been using the default ICU collation, > where "B" > "a", but with the raw collation the reverse ("B" > "a") is true. > It looks as if the key order warning does not take the view collation into > account. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira