diff --git a/src/EFCore.MySql/Query/ExpressionVisitors/Internal/MySqlQuerySqlGenerator.cs b/src/EFCore.MySql/Query/ExpressionVisitors/Internal/MySqlQuerySqlGenerator.cs index c86ad0e9e..0dc7129f4 100644 --- a/src/EFCore.MySql/Query/ExpressionVisitors/Internal/MySqlQuerySqlGenerator.cs +++ b/src/EFCore.MySql/Query/ExpressionVisitors/Internal/MySqlQuerySqlGenerator.cs @@ -1016,12 +1016,5 @@ protected virtual void GenerateJsonPath(IReadOnlyList path, bool? n Sql.Append(")"); } } - - /// - protected override void CheckComposableSql(string sql) - { - // MySQL supports CTE (WITH) expressions within subqueries, as well as others, - // so we allow any raw SQL to be composed over. - } } } diff --git a/test/EFCore.MySql.FunctionalTests/Query/FromSqlSprocQueryMySqlTest.cs b/test/EFCore.MySql.FunctionalTests/Query/FromSqlSprocQueryMySqlTest.cs index 03e7cd844..fbc92ffec 100644 --- a/test/EFCore.MySql.FunctionalTests/Query/FromSqlSprocQueryMySqlTest.cs +++ b/test/EFCore.MySql.FunctionalTests/Query/FromSqlSprocQueryMySqlTest.cs @@ -1,11 +1,5 @@ -using System.Linq; -using System.Threading.Tasks; -using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Query; -using Microsoft.EntityFrameworkCore.TestModels.Northwind; using Microsoft.EntityFrameworkCore.TestUtilities; -using MySqlConnector; -using Xunit; using Xunit.Abstractions; namespace Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query @@ -21,196 +15,5 @@ public FromSqlSprocQueryMySqlTest( protected override string TenMostExpensiveProductsSproc => "CALL `Ten Most Expensive Products`()"; protected override string CustomerOrderHistorySproc => "CALL `CustOrderHist`({0})"; - - private string NormalizeDelimitersInRawString(string sql) - => Fixture.TestStore.NormalizeDelimitersInRawString(sql); - - public override async Task From_sql_queryable_stored_procedure_projection(bool async) - { - using var context = CreateContext(); - var query = context - .Set() - .FromSqlRaw(TenMostExpensiveProductsSproc, GetTenMostExpensiveProductsParameters()) - .Select(mep => mep.TenMostExpensiveProducts); - - if (async) - { - await Assert.ThrowsAsync(() => query.ToArrayAsync()); - } - else - { - Assert.Throws(() => query.ToArray()); - } - } - - public override async Task From_sql_queryable_stored_procedure_re_projection(bool async) - { - using var context = CreateContext(); - var query = context - .Set() - .FromSqlRaw(TenMostExpensiveProductsSproc, GetTenMostExpensiveProductsParameters()) - .Select( - mep => - new MostExpensiveProduct { TenMostExpensiveProducts = "Foo", UnitPrice = mep.UnitPrice }); - - if (async) - { - await Assert.ThrowsAsync(() => query.ToArrayAsync()); - } - else - { - Assert.Throws(() => query.ToArray()); - } - } - - public override async Task From_sql_queryable_stored_procedure_composed(bool async) - { - using var context = CreateContext(); - var query = context - .Set() - .FromSqlRaw(TenMostExpensiveProductsSproc, GetTenMostExpensiveProductsParameters()) - .Where(mep => mep.TenMostExpensiveProducts.Contains("C")) - .OrderBy(mep => mep.UnitPrice); - - if (async) - { - await Assert.ThrowsAsync(() => query.ToArrayAsync()); - } - else - { - Assert.Throws(() => query.ToArray()); - } - } - - public override async Task From_sql_queryable_stored_procedure_with_parameter_composed(bool async) - { - using var context = CreateContext(); - - var query = context - .Set() - .FromSqlRaw(CustomerOrderHistorySproc, GetCustomerOrderHistorySprocParameters()) - .Where(coh => coh.ProductName.Contains("C")) - .OrderBy(coh => coh.Total); - - if (async) - { - await Assert.ThrowsAsync(() => query.ToArrayAsync()); - } - else - { - Assert.Throws(() => query.ToArray()); - } - } - - public override async Task From_sql_queryable_stored_procedure_take(bool async) - { - using var context = CreateContext(); - var query = context - .Set() - .FromSqlRaw(TenMostExpensiveProductsSproc, GetTenMostExpensiveProductsParameters()) - .OrderByDescending(mep => mep.UnitPrice) - .Take(2); - - if (async) - { - await Assert.ThrowsAsync(() => query.ToArrayAsync()); - } - else - { - Assert.Throws(() => query.ToArray()); - } - } - - public override async Task From_sql_queryable_stored_procedure_min(bool async) - { - using var context = CreateContext(); - var query = context.Set() - .FromSqlRaw(TenMostExpensiveProductsSproc, GetTenMostExpensiveProductsParameters()); - - if (async) - { - await Assert.ThrowsAsync(() => query.MinAsync(mep => mep.UnitPrice)); - } - else - { - Assert.Throws(() => query.Min(mep => mep.UnitPrice)); - } - } - - public override async Task From_sql_queryable_stored_procedure_with_include_throws(bool async) - { - using var context = CreateContext(); - var query = context.Set() - .FromSqlRaw("SelectStoredProcedure") - .Include(p => p.OrderDetails); - - if (async) - { - await Assert.ThrowsAsync(() => query.ToArrayAsync()); - } - else - { - Assert.Throws(() => query.ToArray()); - } - } - - public override async Task From_sql_queryable_with_multiple_stored_procedures(bool async) - { - using var context = CreateContext(); - var query = from a in context.Set() - .FromSqlRaw(TenMostExpensiveProductsSproc, GetTenMostExpensiveProductsParameters()) - from b in context.Set() - .FromSqlRaw(TenMostExpensiveProductsSproc, GetTenMostExpensiveProductsParameters()) - where a.TenMostExpensiveProducts == b.TenMostExpensiveProducts - select new { a, b }; - - if (async) - { - await Assert.ThrowsAsync(() => query.ToArrayAsync()); - } - else - { - Assert.Throws(() => query.ToArray()); - } - } - - public override async Task From_sql_queryable_stored_procedure_and_select(bool async) - { - using var context = CreateContext(); - var query = from mep in context.Set() - .FromSqlRaw(TenMostExpensiveProductsSproc, GetTenMostExpensiveProductsParameters()) - from p in context.Set() - .FromSqlRaw(NormalizeDelimitersInRawString("SELECT * FROM [Products]")) - where mep.TenMostExpensiveProducts == p.ProductName - select new { mep, p }; - - if (async) - { - await Assert.ThrowsAsync(() => query.ToArrayAsync()); - } - else - { - Assert.Throws(() => query.ToArray()); - } - } - - public override async Task From_sql_queryable_select_and_stored_procedure(bool async) - { - using var context = CreateContext(); - var query = from p in context.Set().FromSqlRaw(NormalizeDelimitersInRawString("SELECT * FROM [Products]")) - from mep in context.Set() - .FromSqlRaw(TenMostExpensiveProductsSproc, GetTenMostExpensiveProductsParameters()) - where mep.TenMostExpensiveProducts == p.ProductName - select new { mep, p }; - - if (async) - { - await Assert.ThrowsAsync(() => query.ToArrayAsync()); - } - else - { - Assert.Throws(() => query.ToArray()); - } - } } }