Page 1 of 1

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

Posted: Wed 13 Feb 2019 16:31
by GasanovIE
[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]

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

Posted: Tue 19 Feb 2019 19:30
by Shalex
Thank you for your report. We will investigate the issue and notify you about the result.

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

Posted: Fri 29 Mar 2019 12:35
by Shalex
The bug with using the System.Char argument as literal or variable in LINQ query is fixed (SQLite): viewtopic.php?f=31&t=38519.