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
>>>>>>>>>>> }
>>>>>>>>>>> }
>>>>>>>>>>> }
>>>>>>>>
>>