Hi, Just wondering if you had an opportunity to look into this. On Thu, Jun 2, 2022 at 2:52 PM Surinder Mehra <redni...@gmail.com> wrote:
> Hi, > Please find the attached java file which reproduces the issue. As you can > see, the cache key is used as a join condition but LEFT join is still > giving only common values. > > output: > [2, Keyboard, 2] > Size of actual output 1 > Expected size 3 is not equal to Actual size 1 > > > On Thu, Jun 2, 2022 at 11:48 AM Zhenya Stanilovsky <arzamas...@mail.ru> > wrote: > >> Hi, Surinder Mehra ! I check your sql and it work correct for me. >> >> 1. You no need to define AffinityKeyMapped for Key, check >> additionally [1], you can simple modify [2] according to your case >> 2. I problem still exist somehow, plz attach some code example. >> >> thanks ! >> >> [1] >> https://ignite.apache.org/releases/latest/javadoc/org/apache/ignite/cache/affinity/AffinityKeyMapped.html >> [2] >> https://github.com/apache/ignite/blob/master/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheJoinPartitionedAndReplicatedTest.java#L160 >> >> >> Hi, >> I have the following sample code to demo issue in SQL joins. I have >> created an affinity key and value as shown below and added some sample data >> to it. When I try LEFT self join on this table it always gives me common >> rows irrespective of LEFT or RIGHT JOIN >> Could you please help me find what am I doing wrong here. >> >> cache Key : >> >> public class OrderAffinityKey { >> Integer id; >> @AffinityKeyMapped >> Integer customerId; >> } >> >> >> cache value: >> >> public class Order implements Serializable { >> @QuerySqlField >> Integer id; >> >> @AffinityKeyMapped >> @QuerySqlField Integer customerId; >> @QuerySqlField String product; >> } >> >> >> Table C: (select customerID, product FROM "orderCache"."ORDER" WHERE >> CUSTOMERID IN ( 1, 2)) >> >> 1 keyboard >> 2 Laptop >> >> >> Table O: (select customerID, product FROM "orderCache"."ORDER" WHERE >> CUSTOMERID IN ( 3, 2)) >> >> 2 laptop >> 3 mouse >> >> >> >> JOIN: >> >> Query : >> select DISTINCT C.customerID, C.product, O.customerID >> FROM >> (select customerID, product FROM "orderCache"."ORDER" WHERE CUSTOMERID >> IN ( 1, 2)) C >> LEFT JOIN >> (select customerID, product FROM "orderCache"."ORDER" WHERE CUSTOMERID IN >> ( 3, 2)) O >> ON >> C.customerId = O.customerId >> >> >> Output: >> >> 2 laptop 2 >> 3 mouse 3 >> >> Expected output: >> >> 1 keyboard null >> 2 laptop 2 >> 3 mouse 3 >> >> >> >> >> >> >