[ https://issues.apache.org/jira/browse/IGNITE-24621?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Pavel Tupitsyn updated IGNITE-24621: ------------------------------------ Description: {code} await client.Sql.ExecuteAsync(null, "CREATE TABLE IF NOT EXISTS FOO (ID INT PRIMARY KEY, NAME VARCHAR)"); var table = await client.Tables.GetTableAsync("FOO"); var view = table!.GetRecordView<Rec>(); await view.UpsertAsync(null, new Rec(1, "X")); var query = view.AsQueryable() .Join( view.AsQueryable(), x => x.Id, y => y.Id, (x, y) => new { Id1 = x.Id, Id2 = y.Id, Name3 = x.Name + "_" + y.Name }) .OrderBy(x => x.Name3); Console.WriteLine(query); Console.WriteLine(query.First()); {code} Exception: {code} Apache.Ignite.Sql.SqlException : field names not distinct: RecordType(INTEGER ID, INTEGER ID, VARCHAR NAME3) ----> Apache.Ignite.IgniteException : org.apache.ignite.sql.SqlException: IGN-CMN-65535 TraceId:3ef89464-183f-4820-a5bb-63ef21c91983 field names not distinct: RecordType(INTEGER ID, INTEGER ID, VARCHAR NAME3) at org.apache.ignite.internal.lang.SqlExceptionMapperUtil.mapToPublicSqlException(SqlExceptionMapperUtil.java:73) at org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.lambda$prepareAsync$0(PrepareServiceImpl.java:260) at java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:990) at java.base/java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:974) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583) Caused by: org.apache.ignite.lang.IgniteException: IGN-CMN-65535 TraceId:3ef89464-183f-4820-a5bb-63ef21c91983 field names not distinct: RecordType(INTEGER ID, INTEGER ID, VARCHAR NAME3) at org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.lambda$mapToPublicException$2(IgniteExceptionMapperUtil.java:88) at org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.mapCheckingResultIsPublic(IgniteExceptionMapperUtil.java:141) at org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.mapToPublicException(IgniteExceptionMapperUtil.java:110) at org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.mapToPublicException(IgniteExceptionMapperUtil.java:88) at org.apache.ignite.internal.lang.SqlExceptionMapperUtil.mapToPublicSqlException(SqlExceptionMapperUtil.java:63) ... 8 more Caused by: java.lang.AssertionError: field names not distinct: RecordType(INTEGER ID, INTEGER ID, VARCHAR NAME3) at org.apache.calcite.util.Litmus.lambda$static$0(Litmus.java:31) at org.apache.calcite.rel.core.Project.isValid(Project.java:267) at org.apache.calcite.rel.core.Project.<init>(Project.java:106) at org.apache.calcite.rel.core.Project.<init>(Project.java:117) at org.apache.ignite.internal.sql.engine.rel.IgniteProject.<init>(IgniteProject.java:75) at org.apache.ignite.internal.sql.engine.prepare.PlannerHelper.optimize(PlannerHelper.java:200) at org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.doOptimize(PrepareServiceImpl.java:764) at org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.lambda$prepareQuery$5(PrepareServiceImpl.java:418) at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ... 3 more at Apache.Ignite.Internal.ClientSocket.DoOutInOpAsyncInternal(ClientOp clientOp, PooledArrayBuffer request, Boolean expectNotifications) in /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/ClientSocket.cs:line 665 at Apache.Ignite.Internal.ClientFailoverSocket.DoOutInOpAndGetSocketAsync(ClientOp clientOp, Transaction tx, PooledArrayBuffer request, PreferredNode preferredNode, IRetryPolicy retryPolicyOverride, Boolean expectNotifications) in /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/ClientFailoverSocket.cs:line 219 at Apache.Ignite.Internal.Sql.Sql.ExecuteAsyncInternal[T](ITransaction transaction, SqlStatement statement, RowReaderFactory`1 rowReaderFactory, ICollection`1 args) in /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/Sql.cs:line 167 at Apache.Ignite.Internal.Linq.IgniteQueryExecutor.ExecuteResultSetInternalAsync[T](QueryModel queryModel) in /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Linq/IgniteQueryExecutor.cs:line 132 at Apache.Ignite.Internal.Linq.IgniteQueryExecutor.ExecuteSingleInternalAsync[T](QueryModel queryModel, ExecutionOptions options) in /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Linq/IgniteQueryExecutor.cs:line 152 at Apache.Ignite.Internal.Linq.IgniteQueryExecutor.ExecuteSingle[T](QueryModel queryModel, Boolean returnDefaultWhenEmpty) in /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Linq/IgniteQueryExecutor.cs:line 72 at Remotion.Linq.Clauses.StreamedData.StreamedSingleValueInfo.ExecuteSingleQueryModel[T](QueryModel queryModel, IQueryExecutor executor) at Remotion.Linq.Clauses.StreamedData.StreamedSingleValueInfo.ExecuteQueryModel(QueryModel queryModel, IQueryExecutor executor) at Remotion.Linq.QueryModel.Execute(IQueryExecutor executor) at Apache.Ignite.Internal.Linq.IgniteQueryProvider.Execute(Expression expression) in /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Linq/IgniteQueryProvider.cs:line 162 at Apache.Ignite.Internal.Linq.IgniteQueryProvider.Execute[TResult](Expression expression) in /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Linq/IgniteQueryProvider.cs:line 91 {code} Generated SQL: {code} IgniteQueryable`1[<>f__AnonymousType26`3[Int32, Int32, String]] { Query = select _T0.ID, _T1.ID, concat(concat(_T0.NAME, ?), _T1.NAME) as NAME3 from PUBLIC.FOO as _T0 inner join PUBLIC.FOO as _T1 on (_T1.ID = _T0.ID) order by concat(concat(_T0.NAME, ?), _T1.NAME) asc, Parameters = [ _, _ ] } {code} The query works if you remove *OrderBy*: {code} IgniteQueryable`1[<>f__AnonymousType26`3[Int32, Int32, String]] { Query = select _T0.ID, _T1.ID, concat(concat(_T0.NAME, ?), _T1.NAME) as NAME3 from PUBLIC.FOO as _T0 inner join PUBLIC.FOO as _T1 on (_T1.ID = _T0.ID), Parameters = [ _ ] } { Id1 = 1, Id2 = 1, Name3 = X_X } {code} was: {code} await client.Sql.ExecuteAsync(null, "CREATE TABLE IF NOT EXISTS FOO (ID INT PRIMARY KEY, NAME VARCHAR)"); var table = await client.Tables.GetTableAsync("FOO"); var view = table!.GetRecordView<Rec>(); await view.UpsertAsync(null, new Rec(1, "X")); var query = view.AsQueryable() .Join( view.AsQueryable(), x => x.Id, y => y.Id, (x, y) => new { Id1 = x.Id, Id2 = y.Id, Name3 = x.Name + "_" + y.Name }) .OrderBy(x => x.Name3); Console.WriteLine(query); Console.WriteLine(query.First()); {code} Exception: {code} Apache.Ignite.Sql.SqlException : field names not distinct: RecordType(INTEGER ID, INTEGER ID, VARCHAR NAME3) ----> Apache.Ignite.IgniteException : org.apache.ignite.sql.SqlException: IGN-CMN-65535 TraceId:3ef89464-183f-4820-a5bb-63ef21c91983 field names not distinct: RecordType(INTEGER ID, INTEGER ID, VARCHAR NAME3) at org.apache.ignite.internal.lang.SqlExceptionMapperUtil.mapToPublicSqlException(SqlExceptionMapperUtil.java:73) at org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.lambda$prepareAsync$0(PrepareServiceImpl.java:260) at java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:990) at java.base/java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:974) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583) Caused by: org.apache.ignite.lang.IgniteException: IGN-CMN-65535 TraceId:3ef89464-183f-4820-a5bb-63ef21c91983 field names not distinct: RecordType(INTEGER ID, INTEGER ID, VARCHAR NAME3) at org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.lambda$mapToPublicException$2(IgniteExceptionMapperUtil.java:88) at org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.mapCheckingResultIsPublic(IgniteExceptionMapperUtil.java:141) at org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.mapToPublicException(IgniteExceptionMapperUtil.java:110) at org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.mapToPublicException(IgniteExceptionMapperUtil.java:88) at org.apache.ignite.internal.lang.SqlExceptionMapperUtil.mapToPublicSqlException(SqlExceptionMapperUtil.java:63) ... 8 more Caused by: java.lang.AssertionError: field names not distinct: RecordType(INTEGER ID, INTEGER ID, VARCHAR NAME3) at org.apache.calcite.util.Litmus.lambda$static$0(Litmus.java:31) at org.apache.calcite.rel.core.Project.isValid(Project.java:267) at org.apache.calcite.rel.core.Project.<init>(Project.java:106) at org.apache.calcite.rel.core.Project.<init>(Project.java:117) at org.apache.ignite.internal.sql.engine.rel.IgniteProject.<init>(IgniteProject.java:75) at org.apache.ignite.internal.sql.engine.prepare.PlannerHelper.optimize(PlannerHelper.java:200) at org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.doOptimize(PrepareServiceImpl.java:764) at org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.lambda$prepareQuery$5(PrepareServiceImpl.java:418) at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ... 3 more at Apache.Ignite.Internal.ClientSocket.DoOutInOpAsyncInternal(ClientOp clientOp, PooledArrayBuffer request, Boolean expectNotifications) in /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/ClientSocket.cs:line 665 at Apache.Ignite.Internal.ClientFailoverSocket.DoOutInOpAndGetSocketAsync(ClientOp clientOp, Transaction tx, PooledArrayBuffer request, PreferredNode preferredNode, IRetryPolicy retryPolicyOverride, Boolean expectNotifications) in /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/ClientFailoverSocket.cs:line 219 at Apache.Ignite.Internal.Sql.Sql.ExecuteAsyncInternal[T](ITransaction transaction, SqlStatement statement, RowReaderFactory`1 rowReaderFactory, ICollection`1 args) in /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/Sql.cs:line 167 at Apache.Ignite.Internal.Linq.IgniteQueryExecutor.ExecuteResultSetInternalAsync[T](QueryModel queryModel) in /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Linq/IgniteQueryExecutor.cs:line 132 at Apache.Ignite.Internal.Linq.IgniteQueryExecutor.ExecuteSingleInternalAsync[T](QueryModel queryModel, ExecutionOptions options) in /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Linq/IgniteQueryExecutor.cs:line 152 at Apache.Ignite.Internal.Linq.IgniteQueryExecutor.ExecuteSingle[T](QueryModel queryModel, Boolean returnDefaultWhenEmpty) in /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Linq/IgniteQueryExecutor.cs:line 72 at Remotion.Linq.Clauses.StreamedData.StreamedSingleValueInfo.ExecuteSingleQueryModel[T](QueryModel queryModel, IQueryExecutor executor) at Remotion.Linq.Clauses.StreamedData.StreamedSingleValueInfo.ExecuteQueryModel(QueryModel queryModel, IQueryExecutor executor) at Remotion.Linq.QueryModel.Execute(IQueryExecutor executor) at Apache.Ignite.Internal.Linq.IgniteQueryProvider.Execute(Expression expression) in /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Linq/IgniteQueryProvider.cs:line 162 at Apache.Ignite.Internal.Linq.IgniteQueryProvider.Execute[TResult](Expression expression) in /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Linq/IgniteQueryProvider.cs:line 91 {code} Generated SQL: {code} IgniteQueryable`1[<>f__AnonymousType26`3[Int32, Int32, String]] { Query = select _T0.ID, _T1.ID, concat(concat(_T0.NAME, ?), _T1.NAME) as NAME3 from PUBLIC.FOO as _T0 inner join PUBLIC.FOO as _T1 on (_T1.ID = _T0.ID) order by concat(concat(_T0.NAME, ?), _T1.NAME) asc, Parameters = [ _, _ ] } {code} The query works if you remove *OrderBy*, produces correct SQL with aliases: {code} IgniteQueryable`1[<>f__AnonymousType26`3[Int32, Int32, String]] { Query = select _T0.ID, _T1.ID, concat(concat(_T0.NAME, ?), _T1.NAME) as NAME3 from PUBLIC.FOO as _T0 inner join PUBLIC.FOO as _T1 on (_T1.ID = _T0.ID), Parameters = [ _ ] } { Id1 = 1, Id2 = 1, Name3 = X_X } {code} > .NET: LINQ: field names not distinct exception > ---------------------------------------------- > > Key: IGNITE-24621 > URL: https://issues.apache.org/jira/browse/IGNITE-24621 > Project: Ignite > Issue Type: Bug > Components: platforms, thin client > Affects Versions: 3.0 > Reporter: Pavel Tupitsyn > Assignee: Pavel Tupitsyn > Priority: Major > Labels: .NET, LINQ, ignite-3 > > {code} > await client.Sql.ExecuteAsync(null, "CREATE TABLE IF NOT EXISTS FOO (ID INT > PRIMARY KEY, NAME VARCHAR)"); > var table = await client.Tables.GetTableAsync("FOO"); > var view = table!.GetRecordView<Rec>(); > await view.UpsertAsync(null, new Rec(1, "X")); > var query = view.AsQueryable() > .Join( > view.AsQueryable(), > x => x.Id, > y => y.Id, > (x, y) => new { Id1 = x.Id, Id2 = y.Id, Name3 = x.Name + "_" + y.Name > }) > .OrderBy(x => x.Name3); > Console.WriteLine(query); > Console.WriteLine(query.First()); > {code} > Exception: > {code} > Apache.Ignite.Sql.SqlException : field names not distinct: RecordType(INTEGER > ID, INTEGER ID, VARCHAR NAME3) > ----> Apache.Ignite.IgniteException : org.apache.ignite.sql.SqlException: > IGN-CMN-65535 TraceId:3ef89464-183f-4820-a5bb-63ef21c91983 field names not > distinct: RecordType(INTEGER ID, INTEGER ID, VARCHAR NAME3) > at > org.apache.ignite.internal.lang.SqlExceptionMapperUtil.mapToPublicSqlException(SqlExceptionMapperUtil.java:73) > at > org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.lambda$prepareAsync$0(PrepareServiceImpl.java:260) > at > java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:990) > at > java.base/java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:974) > at > java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) > at > java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773) > at > java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) > at > java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) > at java.base/java.lang.Thread.run(Thread.java:1583) > Caused by: org.apache.ignite.lang.IgniteException: IGN-CMN-65535 > TraceId:3ef89464-183f-4820-a5bb-63ef21c91983 field names not distinct: > RecordType(INTEGER ID, INTEGER ID, VARCHAR NAME3) > at > org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.lambda$mapToPublicException$2(IgniteExceptionMapperUtil.java:88) > at > org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.mapCheckingResultIsPublic(IgniteExceptionMapperUtil.java:141) > at > org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.mapToPublicException(IgniteExceptionMapperUtil.java:110) > at > org.apache.ignite.internal.lang.IgniteExceptionMapperUtil.mapToPublicException(IgniteExceptionMapperUtil.java:88) > at > org.apache.ignite.internal.lang.SqlExceptionMapperUtil.mapToPublicSqlException(SqlExceptionMapperUtil.java:63) > ... 8 more > Caused by: java.lang.AssertionError: field names not distinct: > RecordType(INTEGER ID, INTEGER ID, VARCHAR NAME3) > at org.apache.calcite.util.Litmus.lambda$static$0(Litmus.java:31) > at org.apache.calcite.rel.core.Project.isValid(Project.java:267) > at org.apache.calcite.rel.core.Project.<init>(Project.java:106) > at org.apache.calcite.rel.core.Project.<init>(Project.java:117) > at > org.apache.ignite.internal.sql.engine.rel.IgniteProject.<init>(IgniteProject.java:75) > at > org.apache.ignite.internal.sql.engine.prepare.PlannerHelper.optimize(PlannerHelper.java:200) > at > org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.doOptimize(PrepareServiceImpl.java:764) > at > org.apache.ignite.internal.sql.engine.prepare.PrepareServiceImpl.lambda$prepareQuery$5(PrepareServiceImpl.java:418) > at > java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) > ... 3 more > at Apache.Ignite.Internal.ClientSocket.DoOutInOpAsyncInternal(ClientOp > clientOp, PooledArrayBuffer request, Boolean expectNotifications) in > /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/ClientSocket.cs:line > 665 > at > Apache.Ignite.Internal.ClientFailoverSocket.DoOutInOpAndGetSocketAsync(ClientOp > clientOp, Transaction tx, PooledArrayBuffer request, PreferredNode > preferredNode, IRetryPolicy retryPolicyOverride, Boolean expectNotifications) > in > /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/ClientFailoverSocket.cs:line > 219 > at Apache.Ignite.Internal.Sql.Sql.ExecuteAsyncInternal[T](ITransaction > transaction, SqlStatement statement, RowReaderFactory`1 rowReaderFactory, > ICollection`1 args) in > /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/Sql.cs:line > 167 > at > Apache.Ignite.Internal.Linq.IgniteQueryExecutor.ExecuteResultSetInternalAsync[T](QueryModel > queryModel) in > /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Linq/IgniteQueryExecutor.cs:line > 132 > at > Apache.Ignite.Internal.Linq.IgniteQueryExecutor.ExecuteSingleInternalAsync[T](QueryModel > queryModel, ExecutionOptions options) in > /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Linq/IgniteQueryExecutor.cs:line > 152 > at > Apache.Ignite.Internal.Linq.IgniteQueryExecutor.ExecuteSingle[T](QueryModel > queryModel, Boolean returnDefaultWhenEmpty) in > /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Linq/IgniteQueryExecutor.cs:line > 72 > at > Remotion.Linq.Clauses.StreamedData.StreamedSingleValueInfo.ExecuteSingleQueryModel[T](QueryModel > queryModel, IQueryExecutor executor) > at > Remotion.Linq.Clauses.StreamedData.StreamedSingleValueInfo.ExecuteQueryModel(QueryModel > queryModel, IQueryExecutor executor) > at Remotion.Linq.QueryModel.Execute(IQueryExecutor executor) > at Apache.Ignite.Internal.Linq.IgniteQueryProvider.Execute(Expression > expression) in > /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Linq/IgniteQueryProvider.cs:line > 162 > at > Apache.Ignite.Internal.Linq.IgniteQueryProvider.Execute[TResult](Expression > expression) in > /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Linq/IgniteQueryProvider.cs:line > 91 > {code} > Generated SQL: > {code} > IgniteQueryable`1[<>f__AnonymousType26`3[Int32, Int32, String]] { Query = > select _T0.ID, _T1.ID, concat(concat(_T0.NAME, ?), _T1.NAME) as NAME3 from > PUBLIC.FOO as _T0 inner join PUBLIC.FOO as _T1 on (_T1.ID = _T0.ID) order by > concat(concat(_T0.NAME, ?), _T1.NAME) asc, Parameters = [ _, _ ] } > {code} > The query works if you remove *OrderBy*: > {code} > IgniteQueryable`1[<>f__AnonymousType26`3[Int32, Int32, String]] { Query = > select _T0.ID, _T1.ID, concat(concat(_T0.NAME, ?), _T1.NAME) as NAME3 from > PUBLIC.FOO as _T0 inner join PUBLIC.FOO as _T1 on (_T1.ID = _T0.ID), > Parameters = [ _ ] } > { Id1 = 1, Id2 = 1, Name3 = X_X } > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)