You can make any column visible in SQL.

> On 22 Mar 2023, at 15:34, Humphrey Lopez <hmmlo...@gmail.com> wrote:
> 
> Can we query the keys as well? Adding QuerySqlField? I think this only 
> applies to the values right?
> 
> Op wo 22 mrt 2023 om 16:08 schreef Stephen Darlington 
> <stephen.darling...@gridgain.com <mailto:stephen.darling...@gridgain.com>>:
>> You don’t want to look through all the keys. That’s why Ignite has SQL.
>> 
>>> On 22 Mar 2023, at 14:44, Humphrey Lopez <hmmlo...@gmail.com 
>>> <mailto:hmmlo...@gmail.com>> wrote:
>>> 
>>> We have FAT keys that contain information about the Values we store. 
>>> KEY
>>> - Object A
>>> - Object B
>>> 
>>> VALUE
>>> - Object Y
>>> 
>>> The KEY we are using contains several (small) objects as fields. We have 
>>> added to Object A a new field A.TYPE so when searching through the cache we 
>>> could filter on that type.
>>> I guess we will need to first get all the keys that match that A.TYPE and 
>>> then get the objects with those objects, I think looping through the keys 
>>> will be quicker than looping through all the values. 
>>> Maybe we can query/filter the keys in BinaryMode, and then get all 
>>> corresponding values? Just thinking out loud. We don't want to be 
>>> deserializing unnecessarily values (Object.Y). Maybe with QuerySqlFields on 
>>> the key?
>>> 
>>> Humphrey
>>> 
>>> Op wo 22 mrt 2023 om 15:18 schreef Rick Lee <eerick...@gmail.com 
>>> <mailto:eerick...@gmail.com>>:
>>>> 
>>>> Why don’t u put the type to value and leave the id as the key?
>>>> 「Humphrey Lopez <hmmlo...@gmail.com <mailto:hmmlo...@gmail.com>>」在 
>>>> 2023年3月22日 週三,下午10:16 寫道:
>>>>> Okay transient is also not the way to go, cause we want to be able to 
>>>>> filter sometimes on that field, so it should be there in the cache. But 
>>>>> thanks for clarifying that the Equals and HashCode is not being used on 
>>>>> BinaryObjects.
>>>>> 
>>>>> Op wo 22 mrt 2023 om 14:51 schreef Humphrey Lopez <hmmlo...@gmail.com 
>>>>> <mailto:hmmlo...@gmail.com>>:
>>>>>> I see marking the field as Transient Ignite won't serialize it to 
>>>>>> BinaryObject, is that the way to go?
>>>>>> 
>>>>>> Humphrey
>>>>>> 
>>>>>> Op wo 22 mrt 2023 om 14:37 schreef Humphrey Lopez <hmmlo...@gmail.com 
>>>>>> <mailto:hmmlo...@gmail.com>>:
>>>>>>> Thanks for clarifying that. Is there a way to mark a property/field to 
>>>>>>> be excluded when storing?
>>>>>>> 
>>>>>>> Humphrey
>>>>>>> 
>>>>>>> Op wo 22 mrt 2023 om 14:20 schreef Stephen Darlington 
>>>>>>> <stephen.darling...@gridgain.com 
>>>>>>> <mailto:stephen.darling...@gridgain.com>>:
>>>>>>>> Ignite doesn’t use your equals or hashCode implementation. Data is 
>>>>>>>> stored as a BinaryObject, and it’s that that is compared for equality.
>>>>>>>> 
>>>>>>>>> On 22 Mar 2023, at 12:14, Humphrey Lopez <hmmlo...@gmail.com 
>>>>>>>>> <mailto:hmmlo...@gmail.com>> wrote:
>>>>>>>>> 
>>>>>>>>> They are in the example only checking the first field when overriding 
>>>>>>>>> the equals. And hashCode always returns 1.
>>>>>>>>> 
>>>>>>>>> Op wo 22 mrt 2023 om 13:06 schreef Prigoreanu, Alexandru 
>>>>>>>>> <prigoreanu.alexan...@anteash.com 
>>>>>>>>> <mailto:prigoreanu.alexan...@anteash.com>>:
>>>>>>>>>> hashCode and equals should depend on the same fields.
>>>>>>>>>> 
>>>>>>>>>> On Wed, Mar 22, 2023 at 8:02 AM Humphrey Lopez <hmmlo...@gmail.com 
>>>>>>>>>> <mailto:hmmlo...@gmail.com>> wrote:
>>>>>>>>>>> Hello, when having a key which equals another key, when trying to 
>>>>>>>>>>> retrieve from cache it does not return the expected value. Is this 
>>>>>>>>>>> a bug?
>>>>>>>>>>> 
>>>>>>>>>>> I have a reproducible below in kotlin but in java we get the same 
>>>>>>>>>>> result (test with Ignite 2.10 and  2.14) and java 11 and 19.
>>>>>>>>>>> 
>>>>>>>>>>> import org.apache.ignite.Ignition
>>>>>>>>>>> import org.apache.ignite.configuration.CacheConfiguration
>>>>>>>>>>> import org.assertj.core.api.SoftAssertions
>>>>>>>>>>> import org.junit.jupiter.api.Test
>>>>>>>>>>> 
>>>>>>>>>>> class MyTest {
>>>>>>>>>>> 
>>>>>>>>>>>     private val key1 = MyKey("ABC", "DEF")
>>>>>>>>>>>     private val key2 = MyKey("ABC", "xxx")
>>>>>>>>>>> 
>>>>>>>>>>>     @Test
>>>>>>>>>>>     fun testEquals() {
>>>>>>>>>>>         SoftAssertions.assertSoftly {
>>>>>>>>>>>             it.assertThat(key1).isEqualTo(key2)
>>>>>>>>>>>             it.assertThat(key1 == key2).isTrue
>>>>>>>>>>>         }
>>>>>>>>>>>     }
>>>>>>>>>>> 
>>>>>>>>>>>     @Test
>>>>>>>>>>>     fun testWithMap() {
>>>>>>>>>>>         val map = mapOf(Pair(key1, "key1"))
>>>>>>>>>>> 
>>>>>>>>>>>         SoftAssertions.assertSoftly {
>>>>>>>>>>>             it.assertThat(map.containsKey(key1)).isTrue
>>>>>>>>>>>             it.assertThat(map.containsKey(key2)).isTrue
>>>>>>>>>>>         }
>>>>>>>>>>> 
>>>>>>>>>>>     }
>>>>>>>>>>> 
>>>>>>>>>>>     @Test
>>>>>>>>>>>     fun testWithIgnite() {
>>>>>>>>>>>         val ignite = Ignition.start();
>>>>>>>>>>>         val cache = ignite.createCache(CacheConfiguration<MyKey, 
>>>>>>>>>>> String>("mycache"))
>>>>>>>>>>> 
>>>>>>>>>>>         cache.put(key1, "key1")
>>>>>>>>>>>         SoftAssertions.assertSoftly {
>>>>>>>>>>>             it.assertThat(cache.containsKey(key1)).isTrue
>>>>>>>>>>>             it.assertThat(cache.containsKey(key2)).isTrue
>>>>>>>>>>>         }
>>>>>>>>>>>     }
>>>>>>>>>>> 
>>>>>>>>>>>     private data class MyKey(val id: String, val type: String) {
>>>>>>>>>>>         override fun equals(other: Any?): Boolean {
>>>>>>>>>>>             if (other is MyKey)
>>>>>>>>>>>                 return id == other.id
>>>>>>>>>>>             return false
>>>>>>>>>>>         }
>>>>>>>>>>> 
>>>>>>>>>>>         override fun hashCode(): Int {
>>>>>>>>>>>             return 1
>>>>>>>>>>>         }
>>>>>>>>>>>     }
>>>>>>>>>>> }
>>>>>>>> 
>> 

Reply via email to