ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pavel Tupitsyn (Jira)" <j...@apache.org>
Subject [jira] [Created] (IGNITE-13336) .NET: Misleading LINQ exception when expression can't be translated
Date Thu, 06 Aug 2020 11:32:00 GMT
Pavel Tupitsyn created IGNITE-13336:
---------------------------------------

             Summary: .NET: Misleading LINQ exception when expression can't be translated
                 Key: IGNITE-13336
                 URL: https://issues.apache.org/jira/browse/IGNITE-13336
             Project: Ignite
          Issue Type: Bug
          Components: platforms
    Affects Versions: 2.8.1
            Reporter: Pavel Tupitsyn
            Assignee: Pavel Tupitsyn
             Fix For: 2.10


The following program results in a cryptic exception, when the problem is simply lack of Expression<>
wrapper around the query filter:

{code}
    class Program
    {
        private static readonly IIgnite Ignite = Ignition.Start();

        static void Main(string[] args)
        {
            var cache = GetCache<Foo>();

            cache["1"] = new Foo();

            var res = Where2<Foo>(e => e.Value.X == 0);

            Console.WriteLine(res);
        }

        public static ICache<string, T> GetCache<T>()
        {
            var cacheName = typeof(T).Name;
            var cfg = new CacheConfiguration(cacheName, new QueryEntity(typeof(T)));

            return Ignite.GetOrCreateCache<string, T>(cfg);
        }

        public static List<T> Where2<T>(Expression<Func<ICacheEntry<string,
T>, bool>> query)
        {
            var queryResult = GetCache<T>().AsCacheQueryable().Where(query);

            return queryResult.Select(x => x.Value).ToList();
        }
    }

    public class Foo
    {
        [QuerySqlField] public int X { get; set; }
    }
{code}

We should throw a better exception that says "LINQ expression can't be translated to SQL because
of ..."



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Mime
View raw message