[jira] [Commented] (IGNITE-4636) .NET: Support local collection joins in LINQ
[ https://issues.apache.org/jira/browse/IGNITE-4636?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16049291#comment-16049291 ] ASF GitHub Bot commented on IGNITE-4636: Github user asfgit closed the pull request at: https://github.com/apache/ignite/pull/2118 > .NET: Support local collection joins in LINQ > > > Key: IGNITE-4636 > URL: https://issues.apache.org/jira/browse/IGNITE-4636 > Project: Ignite > Issue Type: Improvement > Components: platforms >Affects Versions: 1.8 >Reporter: Pavel Tupitsyn >Assignee: Sergey Stronchinskiy > Labels: .NET, LINQ > Fix For: 2.1 > > > LINQ {{IN}} clause is implemented in IGNITE-4425 and maps from > {{ICollection.Contains}}. > However, {{IN}} has some limitations in Ignite, and better alternative is > temporary table join: > https://apacheignite.readme.io/docs/sql-performance-and-debugging#sql-performance-and-usability-considerations > Example SQL: > {code} > new SqlFieldsQuery("select p.name from Person p join table(id bigint = ?) i > on p.OrgId = i.id", new object[] { new object[] {1,3}}) > {code} > Add support in LINQ like this: > {code}persons.AsCacheQueryable().Join(new[] {1, 3}, p => p.Value.OrgId, x => > x, (p, x) => p);{code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (IGNITE-4636) .NET: Support local collection joins in LINQ
[ https://issues.apache.org/jira/browse/IGNITE-4636?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16049287#comment-16049287 ] Pavel Tupitsyn commented on IGNITE-4636: Looks good, merged to master: {{b6ad6c055a1870945222b4b6a49ca7b670a829fe}}. Gread job, [~GuruStron]! > .NET: Support local collection joins in LINQ > > > Key: IGNITE-4636 > URL: https://issues.apache.org/jira/browse/IGNITE-4636 > Project: Ignite > Issue Type: Improvement > Components: platforms >Affects Versions: 1.8 >Reporter: Pavel Tupitsyn >Assignee: Sergey Stronchinskiy > Labels: .NET, LINQ > Fix For: 2.1 > > > LINQ {{IN}} clause is implemented in IGNITE-4425 and maps from > {{ICollection.Contains}}. > However, {{IN}} has some limitations in Ignite, and better alternative is > temporary table join: > https://apacheignite.readme.io/docs/sql-performance-and-debugging#sql-performance-and-usability-considerations > Example SQL: > {code} > new SqlFieldsQuery("select p.name from Person p join table(id bigint = ?) i > on p.OrgId = i.id", new object[] { new object[] {1,3}}) > {code} > Add support in LINQ like this: > {code}persons.AsCacheQueryable().Join(new[] {1, 3}, p => p.Value.OrgId, x => > x, (p, x) => p);{code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (IGNITE-4636) .NET: Support local collection joins in LINQ
[ https://issues.apache.org/jira/browse/IGNITE-4636?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16048373#comment-16048373 ] Sergey Stronchinskiy commented on IGNITE-4636: -- [~ptupitsyn], Please take a look, I've committed few style fixes and launched build jobs again. Current implementation supports joining with collections of "simple" types (which can be directly mapped to SQL types). The {{Join}} clause with local collections can be used in compiled query when the collection is constant (not passed as a parameter). When IGNITE-5404 will be fixed, local join should support collections passed as parameter to compiled query(with one limitation compared to other cases - subqueries will not be supported). Also local joins support left outer join via {{DefaultIfEmpty}} operator. > .NET: Support local collection joins in LINQ > > > Key: IGNITE-4636 > URL: https://issues.apache.org/jira/browse/IGNITE-4636 > Project: Ignite > Issue Type: Improvement > Components: platforms >Affects Versions: 1.8 >Reporter: Pavel Tupitsyn >Assignee: Sergey Stronchinskiy > Labels: .NET, LINQ > Fix For: 2.1 > > > LINQ {{IN}} clause is implemented in IGNITE-4425 and maps from > {{ICollection.Contains}}. > However, {{IN}} has some limitations in Ignite, and better alternative is > temporary table join: > https://apacheignite.readme.io/docs/sql-performance-and-debugging#sql-performance-and-usability-considerations > Example SQL: > {code} > new SqlFieldsQuery("select p.name from Person p join table(id bigint = ?) i > on p.OrgId = i.id", new object[] { new object[] {1,3}}) > {code} > Add support in LINQ like this: > {code}persons.AsCacheQueryable().Join(new[] {1, 3}, p => p.Value.OrgId, x => > x, (p, x) => p);{code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (IGNITE-4636) .NET: Support local collection joins in LINQ
[ https://issues.apache.org/jira/browse/IGNITE-4636?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16047528#comment-16047528 ] ASF GitHub Bot commented on IGNITE-4636: GitHub user gurustron opened a pull request: https://github.com/apache/ignite/pull/2118 IGNITE-4636 .NET Support local collection joins in LINQ You can merge this pull request into a Git repository by running: $ git pull https://github.com/gurustron/ignite IGNITE-4636 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/ignite/pull/2118.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #2118 commit 05c2562f1b00a53702df000f59b31075d8566736 Author: gurustronDate: 2017-05-29T17:27:40Z Start implementaion of join with local collections + test commit 47f7c8dae26b8d74b1804da827c08b38cf36befc Author: gurustron Date: 2017-05-30T15:58:02Z merge from master commit acfcc3e1a544b07c799d2402c72259f176b8d6d0 Author: gurustron Date: 2017-05-30T16:43:56Z fix tabulation commit a737f075fc24cfcd4656f1dcb5aa22f72e32c9c1 Author: gurustron Date: 2017-05-31T19:03:21Z Started compiled query commit 4823d81fda553a2915bf012bffc2daf0f94e5afe Author: gurustron Date: 2017-06-01T14:58:13Z tests: - compiled query with local collection as parameter - outer join commit d41d10decbb492b3dba9ca81b3b4e6fcc7f9e113 Author: gurustron Date: 2017-06-02T10:33:07Z trying to implement commit 133f146473f022dabb8830303981abab60007a6c Author: gurustron Date: 2017-06-07T17:56:09Z - implement outer join for local collections - ignore compiled query join with local collection as parameter commit a114d6fa0fedaaf54ad70623c150dadae3643870 Author: gurustron Date: 2017-06-07T17:56:19Z SqlTypes Handling commit c204b5ac8defb00935b710a0d01e4340565ad252 Author: gurustron Date: 2017-06-07T18:09:42Z Revert "SqlTypes Handling" This reverts commit a114d6fa0fedaaf54ad70623c150dadae3643870. commit e9db4168122363475eb207bb0b7d15309f062859 Author: gurustron Date: 2017-06-10T22:34:51Z CleanUp commit 44b15cc0f3c2e314700fcb94821c89af88c40e9e Author: gurustron Date: 2017-06-10T22:35:09Z --- commit e5210d4d37dce6fc861d99606fe62f0c393286cb Author: gurustron Date: 2017-06-10T22:39:29Z tests commit 8b0e81e47164b27ddb5f93fa4ec72e47f32e0965 Author: gurustron Date: 2017-06-10T22:53:16Z Get CacheQueriable only for join clauses in VisitQuerySourceReference commit 09372bd11245f3b479b92fe05ad1fd618042bf55 Author: gurustron Date: 2017-06-11T11:12:52Z merge from IGNITE-4636 commit ab2e621e58d969e318bffeed324f643e4445bce9 Author: gurustron Date: 2017-06-11T11:13:02Z fix after merge commit dce2f782eab824914b7ce6ceeaa50d45a9d9257e Author: gurustron Date: 2017-06-11T21:10:25Z Implement JoinInnerSequenceParameterTransformingExpressionVisitor commit 259af16676eeea0b81a8a46519ddc7479f25deb4 Author: gurustron Date: 2017-06-11T22:21:21Z comments commit f267e075b39b66a43d2fbd9282ebd97e3ab0c0fb Author: gurustron Date: 2017-06-11T22:23:52Z --- commit b8c2f4b618285fb5e3e3e7eea61f692eaac18690 Author: gurustron Date: 2017-06-11T22:26:53Z comments commit a6dfe634950d11e9e993ac7d78722e7db7835ea3 Author: gurustron Date: 2017-06-12T18:50:42Z DefaultIfEmpty handling for compiled parameter local collection in join commit f58224e940c0b202ee4ebfc73ad1ffcfaa3b92f8 Author: gurustron Date: 2017-06-12T18:56:18Z clean up compiled query commit 3edea2f62ff52306db3186db6673531a59a21a1c Author: gurustron Date: 2017-06-12T19:00:09Z fix method name > .NET: Support local collection joins in LINQ > > > Key: IGNITE-4636 > URL: https://issues.apache.org/jira/browse/IGNITE-4636 > Project: Ignite > Issue Type: Improvement > Components: platforms >Affects Versions: 1.8 >Reporter: Pavel Tupitsyn >Assignee: Sergey Stronchinskiy > Labels: .NET, LINQ > Fix For: 2.1 > > > LINQ {{IN}} clause is implemented in IGNITE-4425 and maps from > {{ICollection.Contains}}. >
[jira] [Commented] (IGNITE-4636) .NET: Support local collection joins in LINQ
[ https://issues.apache.org/jira/browse/IGNITE-4636?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16036773#comment-16036773 ] Pavel Tupitsyn commented on IGNITE-4636: I've filed the ticket: IGNITE-5404 If there is no easy way to convert user arrays to {{object[]}} for such queries, we should do the following: 1) Leave the implementation as is (local join in compiled query does not work) 2) Add a separate test for this, mark with {{[Ignore("IGNITE-5404")]}} > .NET: Support local collection joins in LINQ > > > Key: IGNITE-4636 > URL: https://issues.apache.org/jira/browse/IGNITE-4636 > Project: Ignite > Issue Type: Improvement > Components: platforms >Affects Versions: 1.8 >Reporter: Pavel Tupitsyn >Assignee: Sergey Stronchinskiy > Labels: .NET, LINQ > Fix For: 2.1 > > > LINQ {{IN}} clause is implemented in IGNITE-4425 and maps from > {{ICollection.Contains}}. > However, {{IN}} has some limitations in Ignite, and better alternative is > temporary table join: > https://apacheignite.readme.io/docs/sql-performance-and-debugging#sql-performance-and-usability-considerations > Example SQL: > {code} > new SqlFieldsQuery("select p.name from Person p join table(id bigint = ?) i > on p.OrgId = i.id", new object[] { new object[] {1,3}}) > {code} > Add support in LINQ like this: > {code}persons.AsCacheQueryable().Join(new[] {1, 3}, p => p.Value.OrgId, x => > x, (p, x) => p);{code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Commented] (IGNITE-4636) .NET: Support local collection joins in LINQ
[ https://issues.apache.org/jira/browse/IGNITE-4636?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16035004#comment-16035004 ] Sergey Stronchinskiy commented on IGNITE-4636: -- [~ptupitsyn], Yes, it is one of the problems in implementation of join with local collections in compiled queries with collection passed as a parameter. > .NET: Support local collection joins in LINQ > > > Key: IGNITE-4636 > URL: https://issues.apache.org/jira/browse/IGNITE-4636 > Project: Ignite > Issue Type: Improvement > Components: platforms >Affects Versions: 1.8 >Reporter: Pavel Tupitsyn >Assignee: Sergey Stronchinskiy > Labels: .NET, LINQ > Fix For: 2.1 > > > LINQ {{IN}} clause is implemented in IGNITE-4425 and maps from > {{ICollection.Contains}}. > However, {{IN}} has some limitations in Ignite, and better alternative is > temporary table join: > https://apacheignite.readme.io/docs/sql-performance-and-debugging#sql-performance-and-usability-considerations > Example SQL: > {code} > new SqlFieldsQuery("select p.name from Person p join table(id bigint = ?) i > on p.OrgId = i.id", new object[] { new object[] {1,3}}) > {code} > Add support in LINQ like this: > {code}persons.AsCacheQueryable().Join(new[] {1, 3}, p => p.Value.OrgId, x => > x, (p, x) => p);{code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Commented] (IGNITE-4636) .NET: Support local collection joins in LINQ
[ https://issues.apache.org/jira/browse/IGNITE-4636?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16034969#comment-16034969 ] Pavel Tupitsyn commented on IGNITE-4636: [~GuruStron] looks like a bug on Java side to me. I'll investigate and file it. Does it affect this task? > .NET: Support local collection joins in LINQ > > > Key: IGNITE-4636 > URL: https://issues.apache.org/jira/browse/IGNITE-4636 > Project: Ignite > Issue Type: Improvement > Components: platforms >Affects Versions: 1.8 >Reporter: Pavel Tupitsyn >Assignee: Sergey Stronchinskiy > Labels: .NET, LINQ > Fix For: 2.1 > > > LINQ {{IN}} clause is implemented in IGNITE-4425 and maps from > {{ICollection.Contains}}. > However, {{IN}} has some limitations in Ignite, and better alternative is > temporary table join: > https://apacheignite.readme.io/docs/sql-performance-and-debugging#sql-performance-and-usability-considerations > Example SQL: > {code} > new SqlFieldsQuery("select p.name from Person p join table(id bigint = ?) i > on p.OrgId = i.id", new object[] { new object[] {1,3}}) > {code} > Add support in LINQ like this: > {code}persons.AsCacheQueryable().Join(new[] {1, 3}, p => p.Value.OrgId, x => > x, (p, x) => p);{code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)
[jira] [Commented] (IGNITE-4636) .NET: Support local collection joins in LINQ
[ https://issues.apache.org/jira/browse/IGNITE-4636?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16034967#comment-16034967 ] Sergey Stronchinskiy commented on IGNITE-4636: -- [~ptupitsyn], While working on this feature found that {{SqlFieldsQuery}} fails if it is passed collection of {{int}}'s instead of {{objects}}: {code} employeeCache.QueryFields(new SqlFieldsQuery("select p.name, p.salary from Employee p join table(id bigint = ?) i on p.organizationid = i.id" , new object[] { new [] { 1, 3 } })); {code} > .NET: Support local collection joins in LINQ > > > Key: IGNITE-4636 > URL: https://issues.apache.org/jira/browse/IGNITE-4636 > Project: Ignite > Issue Type: Improvement > Components: platforms >Affects Versions: 1.8 >Reporter: Pavel Tupitsyn >Assignee: Sergey Stronchinskiy > Labels: .NET, LINQ > Fix For: 2.1 > > > LINQ {{IN}} clause is implemented in IGNITE-4425 and maps from > {{ICollection.Contains}}. > However, {{IN}} has some limitations in Ignite, and better alternative is > temporary table join: > https://apacheignite.readme.io/docs/sql-performance-and-debugging#sql-performance-and-usability-considerations > Example SQL: > {code} > new SqlFieldsQuery("select p.name from Person p join table(id bigint = ?) i > on p.OrgId = i.id", new object[] { new object[] {1,3}}) > {code} > Add support in LINQ like this: > {code}persons.AsCacheQueryable().Join(new[] {1, 3}, p => p.Value.OrgId, x => > x, (p, x) => p);{code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)