Queries with SqlMethods.Like having escape character throw InvalidOperationException (SQLite)

Discussion of open issues, suggestions and bugs regarding LinqConnect – Devart's LINQ to SQL compatible ORM
Post Reply
GasanovIE
Posts: 3
Joined: Mon 30 Sep 2013 07:21

Queries with SqlMethods.Like having escape character throw InvalidOperationException (SQLite)

Post by GasanovIE » Wed 13 Feb 2019 16:31

[tested with LinqConnect 4.8.1509]

When I’m using a LINQ query built with the use of SqlMethods.Like() variant which uses an escape character over a DataContext associated with an SQLite backend, its execution throws the following exception:

Code: Select all

System.InvalidOperationException
  HResult=0x80131509
  Message = Could not format node 'Value' for execution as SQL.
  Source = Devart.Data.Linq
  StackTrace:
   in Devart.Data.Linq.Engine.SqlFormatter.Visitor.a(SqlConstant A_0)
   in Devart.Data.Linq.Engine.SqlVisitor.Visit(SqlNode node)
   in Devart.Data.Linq.Engine.SqlFormatter.Visitor.Visit(SqlNode node)
   in Devart.Data.Linq.Engine.SqlFormatter.Visitor.a(a0 A_0)
   in Devart.Data.Linq.Engine.SqlVisitor.Visit(SqlNode node)
   in Devart.Data.Linq.Engine.SqlFormatter.Visitor.Visit(SqlNode node)
   in Devart.Data.Linq.Engine.SqlFormatter.Visitor.a(SqlSelect A_0)
   in Devart.Data.Linq.Engine.SqlVisitor.c(h A_0)
   in Devart.Data.Linq.Engine.SqlVisitor.Visit(SqlNode node)
   in Devart.Data.Linq.Engine.SqlFormatter.Visitor.Visit(SqlNode node)
   in Devart.Data.Linq.Engine.SqlVisitor.b(a5 A_0)
   in Devart.Data.Linq.Engine.SqlFormatter.Visitor.a(a5 A_0)
   in Devart.Data.Linq.Engine.SqlVisitor.Visit(SqlNode node)
   in Devart.Data.Linq.Engine.SqlFormatter.Visitor.Visit(SqlNode node)
   in Devart.Data.Linq.Engine.SqlFormatter.a(SqlNode A_0, CommandType& A_1)
   in Devart.Data.Linq.Engine.cy.d(Expression A_0)
   in Devart.Data.Linq.Engine.cy.f(Expression A_0)
   in Devart.Data.Linq.DataProvider.a(Expression A_0)
   in Devart.Data.Linq.Engine.DataQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
   in SqliteTest.Program.Main(String[] args) in [path]\SqliteTest\Program.cs:line 52
The other SqlMethods.Like() variant which doesn’t take the escape char parameter works just fine. Moreover, string’s Contains(), StartsWith() and EndsWith() methods are successfully translated to LIKE queries, which are also escaped when the substring contains a '%' or a '_' character.

Here I am including a ZIP archive with a demo C# project which reproduces the problem: [SqliteTest.zip]
Last edited by GasanovIE on Wed 20 Feb 2019 16:54, edited 1 time in total.

Shalex
Site Admin
Posts: 9543
Joined: Thu 14 Aug 2008 12:44

Re: Queries with SqlMethods.Like having escape character throw InvalidOperationException (SQLite)

Post by Shalex » Tue 19 Feb 2019 19:30

Thank you for your report. We will investigate the issue and notify you about the result.

Shalex
Site Admin
Posts: 9543
Joined: Thu 14 Aug 2008 12:44

Re: Queries with SqlMethods.Like having escape character throw InvalidOperationException (SQLite)

Post by Shalex » Fri 29 Mar 2019 12:35

The bug with using the System.Char argument as literal or variable in LINQ query is fixed (SQLite): viewtopic.php?f=31&t=38519.

Post Reply