[
https://issues.apache.org/jira/browse/IGNITE-14523?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Oleg Bevz updated IGNITE-14523:
-------------------------------
Description:
Hello, currently Apache Ignite does not support string comparison for LINQ
provider (Apache.Ignite.Linq project).
For example following modified query
insideThinClientQueryExample.ScanQueryExample method will throw Exception:
var employees = cache.AsCacheQueryable().Select(x => x.Value).Where(x =>
string.Compare(x.Name, "Daniel Adams") >= 0);
Business case: in our project we use DevExteme.AspNet.Data library to build
LINQ queries for Apache Ignite and in some cases the library builds complex
queries with string.Compare method call.
Exception details:
Exception has been thrown by the target of an invocation.
System.Reflection.TargetInvocationException System.Object
InvokeMethod(System.Object, System.Object[], System.Signature, Boolean)
System.Reflection.TargetInvocationException: Exception has been thrown by the
target of an invocation. ---> System.NotSupportedException: Method not
supported: System.String.(Int32 Compare(System.String, System.String))
at
Apache.Ignite.Linq.Impl.MethodVisitor.VisitMethodCall(MethodCallExpression
expression, CacheQueryExpressionVisitor visitor)
at
Apache.Ignite.Linq.Impl.CacheQueryExpressionVisitor.VisitMethodCall(MethodCallExpression
expression)
at Remotion.Linq.Parsing.ThrowingExpressionVisitor.Visit(Expression
expression)
at
Apache.Ignite.Linq.Impl.CacheQueryExpressionVisitor.VisitBinary(BinaryExpression
expression)
at Remotion.Linq.Parsing.ThrowingExpressionVisitor.Visit(Expression
expression)
at
Apache.Ignite.Linq.Impl.CacheQueryExpressionVisitor.VisitBinary(BinaryExpression
expression)
at Remotion.Linq.Parsing.ThrowingExpressionVisitor.Visit(Expression
expression)
at
Apache.Ignite.Linq.Impl.CacheQueryModelVisitor.VisitWhereClause(WhereClause
whereClause, Int32 index, Boolean hasGroups)
at
Apache.Ignite.Linq.Impl.CacheQueryModelVisitor.ProcessGroupings(QueryModel
queryModel)
at
Apache.Ignite.Linq.Impl.CacheQueryModelVisitor.VisitBodyClauses(ObservableCollection`1
bodyClauses, QueryModel queryModel)
at Remotion.Linq.QueryModelVisitorBase.VisitQueryModel(QueryModel
queryModel)
at
Apache.Ignite.Linq.Impl.CacheQueryModelVisitor.VisitQueryModel(QueryModel
queryModel, Boolean includeAllFields, Boolean copyAliases)
at Apache.Ignite.Linq.Impl.CacheQueryModelVisitor.GenerateQuery(QueryModel
queryModel)
at
Apache.Ignite.Linq.Impl.CacheFieldsQueryExecutor.ExecuteCollection[T](QueryModel
queryModel)
at
Remotion.Linq.Clauses.StreamedData.StreamedSequenceInfo.ExecuteQueryModel(QueryModel
queryModel, IQueryExecutor executor)
at
Apache.Ignite.Linq.Impl.CacheFieldsQueryProvider.Execute[TResult](Expression
expression)
was:
Hello, current Apache Ignite does not support string comparison in LINQ
provider (Apache.Ignite.Linq project).
For example following modified query
insideThinClientQueryExample.ScanQueryExample method will throw Exception:
var employees = cache.AsCacheQueryable().Select(x => x.Value).Where(x =>
string.Compare(x.Name, "Daniel Adams") >= 0);
Business case: in our projects we use DevExteme.AspNet.Data library to build
LINQ queries for Apache Ignite and in some cases the library builds complex
queries with string.Compare method call.
Exception details:
Exception has been thrown by the target of an invocation.
System.Reflection.TargetInvocationException System.Object
InvokeMethod(System.Object, System.Object[], System.Signature, Boolean)
System.Reflection.TargetInvocationException: Exception has been thrown by the
target of an invocation. ---> System.NotSupportedException: Method not
supported: System.String.(Int32 Compare(System.String, System.String))
at
Apache.Ignite.Linq.Impl.MethodVisitor.VisitMethodCall(MethodCallExpression
expression, CacheQueryExpressionVisitor visitor)
at
Apache.Ignite.Linq.Impl.CacheQueryExpressionVisitor.VisitMethodCall(MethodCallExpression
expression)
at Remotion.Linq.Parsing.ThrowingExpressionVisitor.Visit(Expression
expression)
at
Apache.Ignite.Linq.Impl.CacheQueryExpressionVisitor.VisitBinary(BinaryExpression
expression)
at Remotion.Linq.Parsing.ThrowingExpressionVisitor.Visit(Expression
expression)
at
Apache.Ignite.Linq.Impl.CacheQueryExpressionVisitor.VisitBinary(BinaryExpression
expression)
at Remotion.Linq.Parsing.ThrowingExpressionVisitor.Visit(Expression
expression)
at
Apache.Ignite.Linq.Impl.CacheQueryModelVisitor.VisitWhereClause(WhereClause
whereClause, Int32 index, Boolean hasGroups)
at
Apache.Ignite.Linq.Impl.CacheQueryModelVisitor.ProcessGroupings(QueryModel
queryModel)
at
Apache.Ignite.Linq.Impl.CacheQueryModelVisitor.VisitBodyClauses(ObservableCollection`1
bodyClauses, QueryModel queryModel)
at Remotion.Linq.QueryModelVisitorBase.VisitQueryModel(QueryModel
queryModel)
at
Apache.Ignite.Linq.Impl.CacheQueryModelVisitor.VisitQueryModel(QueryModel
queryModel, Boolean includeAllFields, Boolean copyAliases)
at Apache.Ignite.Linq.Impl.CacheQueryModelVisitor.GenerateQuery(QueryModel
queryModel)
at
Apache.Ignite.Linq.Impl.CacheFieldsQueryExecutor.ExecuteCollection[T](QueryModel
queryModel)
at
Remotion.Linq.Clauses.StreamedData.StreamedSequenceInfo.ExecuteQueryModel(QueryModel
queryModel, IQueryExecutor executor)
at
Apache.Ignite.Linq.Impl.CacheFieldsQueryProvider.Execute[TResult](Expression
expression)
> Support for string.Compare method in Apache Ignite LINQ provider
> ----------------------------------------------------------------
>
> Key: IGNITE-14523
> URL: https://issues.apache.org/jira/browse/IGNITE-14523
> Project: Ignite
> Issue Type: New Feature
> Components: thin client
> Affects Versions: 2.9.1
> Reporter: Oleg Bevz
> Priority: Critical
> Fix For: 2.9.1
>
>
> Hello, currently Apache Ignite does not support string comparison for LINQ
> provider (Apache.Ignite.Linq project).
> For example following modified query
> insideThinClientQueryExample.ScanQueryExample method will throw Exception:
> var employees = cache.AsCacheQueryable().Select(x => x.Value).Where(x =>
> string.Compare(x.Name, "Daniel Adams") >= 0);
> Business case: in our project we use DevExteme.AspNet.Data library to build
> LINQ queries for Apache Ignite and in some cases the library builds complex
> queries with string.Compare method call.
> Exception details:
> Exception has been thrown by the target of an invocation.
> System.Reflection.TargetInvocationException System.Object
> InvokeMethod(System.Object, System.Object[], System.Signature, Boolean)
> System.Reflection.TargetInvocationException: Exception has been thrown by the
> target of an invocation. ---> System.NotSupportedException: Method not
> supported: System.String.(Int32 Compare(System.String, System.String))
> at
> Apache.Ignite.Linq.Impl.MethodVisitor.VisitMethodCall(MethodCallExpression
> expression, CacheQueryExpressionVisitor visitor)
> at
> Apache.Ignite.Linq.Impl.CacheQueryExpressionVisitor.VisitMethodCall(MethodCallExpression
> expression)
> at Remotion.Linq.Parsing.ThrowingExpressionVisitor.Visit(Expression
> expression)
> at
> Apache.Ignite.Linq.Impl.CacheQueryExpressionVisitor.VisitBinary(BinaryExpression
> expression)
> at Remotion.Linq.Parsing.ThrowingExpressionVisitor.Visit(Expression
> expression)
> at
> Apache.Ignite.Linq.Impl.CacheQueryExpressionVisitor.VisitBinary(BinaryExpression
> expression)
> at Remotion.Linq.Parsing.ThrowingExpressionVisitor.Visit(Expression
> expression)
> at
> Apache.Ignite.Linq.Impl.CacheQueryModelVisitor.VisitWhereClause(WhereClause
> whereClause, Int32 index, Boolean hasGroups)
> at
> Apache.Ignite.Linq.Impl.CacheQueryModelVisitor.ProcessGroupings(QueryModel
> queryModel)
> at
> Apache.Ignite.Linq.Impl.CacheQueryModelVisitor.VisitBodyClauses(ObservableCollection`1
> bodyClauses, QueryModel queryModel)
> at Remotion.Linq.QueryModelVisitorBase.VisitQueryModel(QueryModel
> queryModel)
> at
> Apache.Ignite.Linq.Impl.CacheQueryModelVisitor.VisitQueryModel(QueryModel
> queryModel, Boolean includeAllFields, Boolean copyAliases)
> at
> Apache.Ignite.Linq.Impl.CacheQueryModelVisitor.GenerateQuery(QueryModel
> queryModel)
> at
> Apache.Ignite.Linq.Impl.CacheFieldsQueryExecutor.ExecuteCollection[T](QueryModel
> queryModel)
> at
> Remotion.Linq.Clauses.StreamedData.StreamedSequenceInfo.ExecuteQueryModel(QueryModel
> queryModel, IQueryExecutor executor)
> at
> Apache.Ignite.Linq.Impl.CacheFieldsQueryProvider.Execute[TResult](Expression
> expression)
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)