couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jason Smith (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (COUCHDB-1228) Key range error apparently ignores view collation
Date Thu, 11 Aug 2011 04:45:27 GMT

     [ https://issues.apache.org/jira/browse/COUCHDB-1228?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Jason Smith updated COUCHDB-1228:
---------------------------------

    Attachment: B.0004-Support-correct-key-range-semantics-for-raw-collatio.patch
                B.0003-Whitespace-and-comment-clarification.patch
                B.0002-Refactor-parse-temp-view-parameters-after-the-view-i.patch
                B.0001-Export-the-official-is-less-than-btree-predictate.patch

Second patch set ("B" series). Developed against 1.1.x, rebased to trunk for your convenience
but untested since I didn't bother rebuilding libjs.

Now, when checking view ranges, an is-less-than predicate (callback) is required.

For normal views, the callback uses couch_btree:less directly from the view object, which
presumably knows the correct collation algorithm.

For temporary views, I made a minor change to first instantiate the view objects, and then
check for range validity, again using the view's #btree.less function. I confirmed that this
works for normal and raw collation in temporary views, however I could not find an obvious
place in the test suite to add the unit tests.

For _all_docs queries, the http handler simply hard-codes a raw collation function and passes
that to the range checker.

> 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, B.0001-Export-the-official-is-less-than-btree-predictate.patch,
B.0002-Refactor-parse-temp-view-parameters-after-the-view-i.patch, B.0003-Whitespace-and-comment-clarification.patch,
B.0004-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

        

Mime
View raw message