I thought that there is a way to specify affinity keys in XML configuration as well. Am I wrong?
On Mon, Oct 12, 2015 at 1:44 PM, Sergi Vladykin <[email protected]> wrote: > Guys, > > I'm about to finish distributed SQL joins feature for Ignite and we need to > decide > what to do with configuration because currently I don't see how to change > it and > not to brake backward compatibility. > > Currently we declare SQL schema for cache using indexedTypes with > annotations > or CacheTypeMetadata. Now we will need to specify affinity key field name > for every type. > By default if it is not specified we will assume that it is a *_KEY* field > which is actual > cache key at SQL layer. > > I know about two ways to specify affinity keys in IgniteCache: > > 1. Using @AffinityKeyMapped to annotate fields or methods inside of cache > key class. > > We could use it in SQL as is but there is a possible problem: if user did > not specify > @QuerySqlField annotation for that field. It may be was done intentionally > or > by mistake. The code which should start a distributed join for this case > must > throw exception as I understand. > > 2. Using custom AffinityKeyMapper which allows to extract affinity key from > key. > > With it we can extract affinity key from cache key, but for SQL we need a > affinity field name. Probably we need additional method affinityKeyName() > or > something like that but it will brake backward compatibility. > > Thoughts? > > Sergi >
