Forgot to include the list in the initial response.
> On Thu, Aug 20, 2015 at 12:31 AM, Russell Brown <russell.br...@me.com> > wrote: > >> It’s a tricky one Timur. CRDTs are based on Join Semi-Lattices, and they >> have the concept of a bottom value. That is what you are seeing. Implicitly >> all keys exist at the bottom value until you operate on them. > > Thanks, Russell. I was under impression that key mechanism does not differ between 'regular' KV store and CRDT, that is checking key existence does not involve CRDT concepts. Is that not true? > > >> Since you cannot do a compare-and-set operation with a counter anyway >> (that is you can’t “put counter with value 0” at that key), why do you need >> to distinguish between 0 as bottom and 0 as value? > > I'm building a Scala wrapper for our services to use and trying to provide a uniform simple interface for CRDT counters and sets (maps are a whole different story). One of the fundamental operations is to be able to tell whether a key exists in the store. Although it's not possible to 'set' counter to 0, update '+1' followed by update '-1' at 'key' will result in 'key' with value 0, which is semantically different from answer "no 'key' found". Could you also comment whether null context for a set is a valid way to tell that set did not exist in store? It feels hacky. On 20 Aug 2015, at 01:59, Timur Fayruzov <timur.fairu...@gmail.com> wrote: > > > Hello, > > > > It seems that Riak Datatype API does not allow to distinguish between > non-existing keys and default values. For example, if I query for > non-existing key as follows: > > > > val fetchOp = new FetchCounter.Builder(key).build() > > val c = client.execute(fetchOp).getDatatype > > > > I'll get a counter that holds 0. Now, if I put counter with value 0 at > this key and run the query, I get the same result. Is there any way to > distinguish between these two different states? > > > > Note: when working with sets there is a context that I can check. If I > fetch a set and the context is null, it means that the set does not exist > under this key. This trick does not work for counters though, as they do > not maintain context. Is it a valid trick to use though? > > > > I posted this to StackOverflow a while ago, but no luck: > http://stackoverflow.com/questions/31845164/riak-dataypes-default-values-vs-non-existing-keys > > > > Thanks, > > > > Timur > > > > _______________________________________________ > > 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