Hi Age, One thing to consider is that Riak allows a secondary index to have multiple values. I can e.g. create an object with two values for a integer secondary index as follows:
curl -X PUT -H "Content-Type: text/plain" -H 'x-riak-index-idx_int: 12' -H 'x-riak-index-idx_int: 13' -d 'data' http://localhost:8098/buckets/testbucket/keys/key2 When this object is retrieved, the secondary index with the two values will/may be presented in a single header containing a comma and a space to separate the values as follows: curl -v -X HEAD http://localhost:8098/buckets/testbucket/keys/key2 < HTTP/1.1 200 OK < X-Riak-Vclock: a85hYGBgzGDKBVIcEQaWHIFK0u0ZTImMeawMRntnnuLLAgA= < x-riak-index-idx_int: 12, 13 < Vary: Accept-Encoding < Server: MochiWeb/1.1 WebMachine/1.9.0 (someone had painted it blue) < Link: </buckets/testbucket>; rel="up" < Last-Modified: Wed, 20 Feb 2013 21:33:38 GMT < ETag: "3Wz7RJnOL4ofIeX1hYDr84" < Date: Wed, 20 Feb 2013 21:40:30 GMT < Content-Type: text/plain < Content-Length: 4 Best regards, Christian On 20 Feb 2013, at 20:56, Age Mooij <age.mo...@gmail.com> wrote: > Hi all, > > I'm writing a new Scala (http) client library for Riak [1] and I ran into > some trouble with special characters while implementing 2i. > > Reading through the docs, all the 2i examples are for simple one-word index > names but I have not been able to find any rules about index names and values > containing spaces, commas, and other special characters and how the HTTP api > deals with encoding and decoding these? > > My unit tests use the following troublesome corner cases: > > - index values containing spaces > - index names containing spaces > - index values containing commas > > I tried a number of approaches and none of them work for all three: > > 1) Don't encode the index names or the values when creating "x-riak-index-" > http headers but encode both the name and the value in the URL used to fetch > by an index > > This works fine for values containing spaces but creates illegal headers for > index names containing spaces and breaks for values containing commas (the > values get split into two). > > 2) Encode everything > > This creates valid headers and storing index values containing commas now > works fine. The only trouble is that index fetching fails whenever there are > spaces, commas or other encoded characters involved. > > Could anyone enlighten me about the correct way to deal with these cases? > > Regards, > Age > > > [1] https://github.com/agemooij/riak-scala-client > > _______________________________________________ > riak-users mailing list > riak-users@lists.basho.com > http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
_______________________________________________ riak-users mailing list riak-users@lists.basho.com http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com