Vladimir,

With pleasure, here is a ticker with the reproducer:
https://issues.apache.org/jira/browse/IGNITE-6785

—
Denis

> On Oct 24, 2017, at 5:57 AM, Vladimir Ozerov <voze...@gridgain.com> wrote:
> 
> Denis,
> 
> Is it possible to create a test with reproducer? I am a bit lost.
> 
> On Tue, Oct 24, 2017 at 3:12 AM, Dmitriy Setrakyan <dsetrak...@apache.org>
> wrote:
> 
>> It looks like the case sensitivity for the affinity key is a bug. Vladimir,
>> what do you think?
>> 
>> On Mon, Oct 23, 2017 at 11:19 AM, Denis Magda <dma...@apache.org> wrote:
>> 
>>> Vladimir, thanks a lot for looking into this!
>>> 
>>>> On Oct 23, 2017, at 12:35 AM, Vladimir Ozerov <voze...@gridgain.com>
>>> wrote:
>>>> 
>>>> Denis,
>>>> 
>>>> Now more detailed answer:
>>>> 
>>>> 1) It is expected that "City" class is not be found. You should set
>>>> key/value type names to fully-qualified class name to make it work.
>>>> Improvements: docs
>>> 
>>> To make the Class-based key-vakye access and deserialization workable did
>>> the following:
>>> - follow your piece of advice providing full-qualified names in CREATE
>>> TABLE;
>>> - comment out ‘simpleName’ binary names mapper [1].
>>> 
>>> However, it means that now the heterogeneous scenarios where .NET or C++
>>> key-value access is needed are not supported. Do you have an
>> understanding
>>> on how this can be done in the feature releases?
>>> 
>>>> 2) There is no need to implement hash code. Why did you do this?
>>> 
>>> That’s a big surprise that we calculate it automatically if a key is
>>> serialized into the binary form. Will be documented:
>>> https://issues.apache.org/jira/browse/IGNITE-6717
>>> 
>>>> 3) We will not have case-insensitive policy, SQL databases doesn't work
>>>> this way. In order to preserve case you should define column name in
>>> quotes.
>>> 
>>> Seems that the issue pin points to the affinity key case only:
>>> - a field is defined as ‘CountryCode’ in DDL [2].
>>> - in DML it can be used with any letters case - ‘countryCode’,
>>> ‘countrycode’, etc,
>>> - BinaryObjectBuild allowed me to define the field as `countryCode` [3]
>>> w/o any issue.
>>> - However, once I defined the field in CityKey class as is in DDL
>>> (`CountryCode`) the following exception was thrown:
>>> 
>>> Exception in thread "main" class org.apache.ignite.binary.
>> BinaryObjectException:
>>> Binary type has different affinity key fields
>> [typeName=demo.model.CityKey,
>>> affKeyFieldName1=COUNTRYCODE, affKeyFieldName2=CountryCode]
>>> 
>>> and I forced to rename the field to `COUNTRYCODE` in CityKey class. Seems
>>> like a bug?
>>> 
>>> 
>>> [1] https://github.com/dmagda/ignite_world_demo/blob/master/
>>> config/ignite-config.xml#L43
>>> [2] https://github.com/dmagda/ignite_world_demo/blob/master/
>>> ignite_world.sql#L31
>>> [3] https://github.com/dmagda/ignite_world_demo/blob/master/
>>> src/main/java/demo/keyvalue/KeyValueDataProcessing.java#L75
>>> [4] https://github.com/dmagda/ignite_world_demo/blob/master/
>>> src/main/java/demo/model/CityKey.java#L15
>>> 
>>> —
>>> Denis
>>> 
>>> 
>>>> 
>>>> On Sat, Oct 21, 2017 at 2:34 PM, Vladimir Ozerov <voze...@gridgain.com
>>> 
>>>> wrote:
>>>> 
>>>>> Denis,
>>>>> 
>>>>> SQL <-> key-Val transparency is complex thing, especially if you work
>>> with
>>>>> real Java classes instead of binary objects.
>>>>> 
>>>>> We will try to improve something in 2.4, but do not expect great
>>> usability
>>>>> here. There is always be some pain in such scenarios.
>>>>> 
>>>>> сб, 21 окт. 2017 г. в 9:23, Denis Magda <dma...@apache.org>:
>>>>> 
>>>>>> 
>>>>>>> On Oct 20, 2017, at 3:56 PM, Denis Magda <dma...@apache.org> wrote:
>>>>>>> 
>>>>>>> * failed to deserialize BinaryObject value to City type [7]. Just
>>>>>> classical "class org.apache.ignite.binary.
>> BinaryInvalidTypeException:
>>>>>> City" caused by "Caused by: java.lang.ClassNotFoundException: City”.
>>>>>> 
>>>>>> 
>>>>>> Recalled that this should be caused by the fact that all the data was
>>>>>> inserted with DML (cache.put(key, BinaryObjects)) and there was no
>>> single
>>>>>> cache.put(key, new City()) that would register City class. Guess we
>>> need to
>>>>>> add an API that forces classes registration from the app side or
>>> something
>>>>>> more efficient.
>>>>>> 
>>>>>> —
>>>>>> Denis
>>>>> 
>>>>> 
>>> 
>>> 
>> 

Reply via email to