// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using System.Linq; using System.Threading.Tasks; using EntityFrameworkCore.Jet.FunctionalTests.TestUtilities; using Microsoft.EntityFrameworkCore.Query; using Microsoft.EntityFrameworkCore.TestModels.Northwind; using Microsoft.EntityFrameworkCore.TestUtilities; using Xunit; using Xunit.Abstractions; // ReSharper disable UnusedParameter.Local // ReSharper disable InconsistentNaming namespace EntityFrameworkCore.Jet.FunctionalTests.Query { public partial class SimpleQueryJetTest : SimpleQueryTestBase> { public SimpleQueryJetTest(NorthwindQueryJetFixture fixture, ITestOutputHelper testOutputHelper) : base(fixture) { ClearLog(); //Fixture.TestSqlLoggerFactory.SetTestOutputHelper(testOutputHelper); } public override void Shaper_command_caching_when_parameter_names_different() { base.Shaper_command_caching_when_parameter_names_different(); AssertSql( @"SELECT COUNT(*) FROM `Customers` AS `c` WHERE `c`.`CustomerID` = 'ALFKI'", // @"SELECT COUNT(*) FROM `Customers` AS `c` WHERE `c`.`CustomerID` = 'ALFKI'"); } public override void Can_convert_manually_build_expression_with_default() { base.Can_convert_manually_build_expression_with_default(); // issue #15994 // AssertSql( // @"SELECT COUNT(*) //FROM `Customers` AS `c` //WHERE `c`.`CustomerID` IS NOT NULL", // // // @"SELECT COUNT(*) //FROM `Customers` AS `c` //WHERE `c`.`CustomerID` IS NOT NULL"); } public override void Lifting_when_subquery_nested_order_by_anonymous() { base.Lifting_when_subquery_nested_order_by_anonymous(); AssertSql( @"@__p_0='2' SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` INNER JOIN ( SELECT DISTINCT `t`.`CustomerID` FROM ( SELECT TOP @__p_0 `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID` ) AS `t`, `Customers` AS `c0` ) AS `t0` ON `o`.`CustomerID` = `t0`.`CustomerID` ORDER BY `t0`.`CustomerID`"); } public override void Lifting_when_subquery_nested_order_by_simple() { base.Lifting_when_subquery_nested_order_by_simple(); AssertSql( @"@__p_0='2' SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` INNER JOIN ( SELECT DISTINCT `t`.`CustomerID` FROM ( SELECT TOP @__p_0 `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID` ) AS `t`, `Customers` AS `c0` ) AS `t0` ON `o`.`CustomerID` = `t0`.`CustomerID` ORDER BY `t0`.`CustomerID`"); } [ConditionalFact(Skip = "Issue #16006")] public virtual void Cache_key_contexts_are_detached() { var weakRef = Scoper( () => { var context = new NorthwindRelationalContext(Fixture.CreateOptions()); var wr = new WeakReference(context); using (context) { var orderDetails = context.OrderDetails; Customer Query(NorthwindContext param) => (from c in context.Customers from o in context.Set() from od in orderDetails from e1 in param.Employees from e2 in param.Set() select c).First(); Assert.NotNull(Query(context)); Assert.True(wr.IsAlive); return wr; } }); GC.Collect(); Assert.False(weakRef.IsAlive); } private static T Scoper(Func getter) { return getter(); } public override async Task Local_dictionary(bool isAsync) { await base.Local_dictionary(isAsync); AssertSql( @"@__p_0='ALFKI' (Size = 5) SELECT TOP 2 `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE `c`.`CustomerID` = @__p_0"); } public override async Task Entity_equality_self(bool isAsync) { await base.Entity_equality_self(isAsync); AssertSql( @"SELECT `c`.`CustomerID` FROM `Customers` AS `c`"); } public override async Task Entity_equality_local(bool isAsync) { await base.Entity_equality_local(isAsync); AssertSql( @"@__entity_equality_local_0_CustomerID='ANATR' (Size = 5) SELECT `c`.`CustomerID` FROM `Customers` AS `c` WHERE `c`.`CustomerID` = @__entity_equality_local_0_CustomerID"); } public override async Task Entity_equality_local_composite_key(bool isAsync) { await base.Entity_equality_local_composite_key(isAsync); AssertSql( @"@__entity_equality_local_0_OrderID='10248' (Nullable = true) @__entity_equality_local_0_ProductID='11' (Nullable = true) SELECT `o`.`OrderID`, `o`.`ProductID`, `o`.`Discount`, `o`.`Quantity`, `o`.`UnitPrice` FROM `Order Details` AS `o` WHERE (`o`.`OrderID` = @__entity_equality_local_0_OrderID) AND (`o`.`ProductID` = @__entity_equality_local_0_ProductID)"); } public override async Task Entity_equality_local_double_check(bool isAsync) { await base.Entity_equality_local_double_check(isAsync); AssertSql( @"@__entity_equality_local_0_CustomerID='ANATR' (Size = 5) SELECT `c`.`CustomerID` FROM `Customers` AS `c` WHERE (`c`.`CustomerID` = @__entity_equality_local_0_CustomerID) AND (@__entity_equality_local_0_CustomerID = `c`.`CustomerID`)"); } public override async Task Join_with_entity_equality_local_on_both_sources(bool isAsync) { await base.Join_with_entity_equality_local_on_both_sources(isAsync); AssertSql( @"@__entity_equality_local_0_CustomerID='ANATR' (Size = 5) SELECT `c`.`CustomerID` FROM `Customers` AS `c` INNER JOIN ( SELECT `c0`.`CustomerID`, `c0`.`Address`, `c0`.`City`, `c0`.`CompanyName`, `c0`.`ContactName`, `c0`.`ContactTitle`, `c0`.`Country`, `c0`.`Fax`, `c0`.`Phone`, `c0`.`PostalCode`, `c0`.`Region` FROM `Customers` AS `c0` WHERE `c0`.`CustomerID` = @__entity_equality_local_0_CustomerID ) AS `t` ON `c`.`CustomerID` = `t`.`CustomerID` WHERE `c`.`CustomerID` = @__entity_equality_local_0_CustomerID"); } public override async Task Entity_equality_local_inline(bool isAsync) { await base.Entity_equality_local_inline(isAsync); AssertSql( @"SELECT `c`.`CustomerID` FROM `Customers` AS `c` WHERE `c`.`CustomerID` = 'ANATR'"); } public override async Task Entity_equality_local_inline_composite_key(bool isAsync) { await base.Entity_equality_local_inline_composite_key(isAsync); AssertSql( @"SELECT `o`.`OrderID`, `o`.`ProductID`, `o`.`Discount`, `o`.`Quantity`, `o`.`UnitPrice` FROM `Order Details` AS `o` WHERE (`o`.`OrderID` = 10248) AND (`o`.`ProductID` = 11)"); } public override async Task Entity_equality_null(bool isAsync) { await base.Entity_equality_null(isAsync); AssertSql( @"SELECT `c`.`CustomerID` FROM `Customers` AS `c` WHERE False = True"); } public override async Task Entity_equality_null_composite_key(bool isAsync) { await base.Entity_equality_null_composite_key(isAsync); AssertSql( @"SELECT `o`.`OrderID`, `o`.`ProductID`, `o`.`Discount`, `o`.`Quantity`, `o`.`UnitPrice` FROM `Order Details` AS `o` WHERE False = True"); } public override async Task Entity_equality_not_null(bool isAsync) { await base.Entity_equality_not_null(isAsync); // issue #15994 // AssertSql( // @"SELECT `c`.`CustomerID` //FROM `Customers` AS `c` //WHERE `c`.`CustomerID` IS NOT NULL"); } public override async Task Entity_equality_not_null_composite_key(bool isAsync) { await base.Entity_equality_not_null_composite_key(isAsync); // issue #15994 // AssertSql( // @"SELECT `o`.`ProductID` //FROM `Order Details` AS `o` //WHERE True = True"); } public override async Task Entity_equality_through_nested_anonymous_type_projection(bool isAsync) { await base.Entity_equality_through_nested_anonymous_type_projection(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Orders` AS `o` LEFT JOIN `Customers` AS `c` ON `o`.`CustomerID` = `c`.`CustomerID` WHERE `c`.`CustomerID` IS NOT NULL"); } public override async Task Entity_equality_through_DTO_projection(bool isAsync) { await base.Entity_equality_through_DTO_projection(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Orders` AS `o` LEFT JOIN `Customers` AS `c` ON `o`.`CustomerID` = `c`.`CustomerID` WHERE `c`.`CustomerID` IS NOT NULL"); } public override async Task Entity_equality_through_subquery(bool isAsync) { await base.Entity_equality_through_subquery(isAsync); AssertSql( @"SELECT `c`.`CustomerID` FROM `Customers` AS `c` WHERE ( SELECT TOP 1 `o`.`OrderID` FROM `Orders` AS `o` WHERE `c`.`CustomerID` = `o`.`CustomerID`) IS NOT NULL"); } public override async Task Entity_equality_through_include(bool isAsync) { await base.Entity_equality_through_include(isAsync); AssertSql( @"SELECT `c`.`CustomerID` FROM `Customers` AS `c` WHERE False = True"); } public override async Task Entity_equality_orderby(bool isAsync) { await base.Entity_equality_orderby(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID`"); } public override async Task Entity_equality_orderby_descending_composite_key(bool isAsync) { await base.Entity_equality_orderby_descending_composite_key(isAsync); AssertSql( @"SELECT `o`.`OrderID`, `o`.`ProductID`, `o`.`Discount`, `o`.`Quantity`, `o`.`UnitPrice` FROM `Order Details` AS `o` ORDER BY `o`.`OrderID` DESC, `o`.`ProductID` DESC"); } public override async Task Default_if_empty_top_level(bool isAsync) { await base.Default_if_empty_top_level(isAsync); AssertSql( @"SELECT `t`.`EmployeeID`, `t`.`City`, `t`.`Country`, `t`.`FirstName`, `t`.`ReportsTo`, `t`.`Title` FROM ( SELECT NULL AS `empty` ) AS `empty` LEFT JOIN ( SELECT `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` WHERE `e`.`EmployeeID` = -1 ) AS `t` ON 1 = 1"); } public override async Task Join_with_default_if_empty_on_both_sources(bool isAsync) { await base.Join_with_default_if_empty_on_both_sources(isAsync); AssertSql( @"SELECT `t`.`EmployeeID`, `t`.`City`, `t`.`Country`, `t`.`FirstName`, `t`.`ReportsTo`, `t`.`Title` FROM ( SELECT NULL AS `empty` ) AS `empty` LEFT JOIN ( SELECT `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` WHERE `e`.`EmployeeID` = -1 ) AS `t` ON 1 = 1 INNER JOIN ( SELECT `t0`.`EmployeeID`, `t0`.`City`, `t0`.`Country`, `t0`.`FirstName`, `t0`.`ReportsTo`, `t0`.`Title` FROM ( SELECT NULL AS `empty` ) AS `empty0` LEFT JOIN ( SELECT `e0`.`EmployeeID`, `e0`.`City`, `e0`.`Country`, `e0`.`FirstName`, `e0`.`ReportsTo`, `e0`.`Title` FROM `Employees` AS `e0` WHERE `e0`.`EmployeeID` = -1 ) AS `t0` ON 1 = 1 ) AS `t1` ON `t`.`EmployeeID` = `t1`.`EmployeeID`"); } public override async Task Default_if_empty_top_level_followed_by_projecting_constant(bool isAsync) { await base.Default_if_empty_top_level_followed_by_projecting_constant(isAsync); AssertSql( @"SELECT 'Foo' FROM ( SELECT NULL AS `empty` ) AS `empty` LEFT JOIN ( SELECT `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` WHERE `e`.`EmployeeID` = -1 ) AS `t` ON 1 = 1"); } public override async Task Default_if_empty_top_level_positive(bool isAsync) { await base.Default_if_empty_top_level_positive(isAsync); AssertSql( @"SELECT `t`.`EmployeeID`, `t`.`City`, `t`.`Country`, `t`.`FirstName`, `t`.`ReportsTo`, `t`.`Title` FROM ( SELECT NULL AS `empty` ) AS `empty` LEFT JOIN ( SELECT `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` WHERE `e`.`EmployeeID` > 0 ) AS `t` ON 1 = 1"); } public override async Task Default_if_empty_top_level_projection(bool isAsync) { await base.Default_if_empty_top_level_projection(isAsync); AssertSql( @"SELECT `t`.`EmployeeID` FROM ( SELECT NULL AS `empty` ) AS `empty` LEFT JOIN ( SELECT `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` WHERE `e`.`EmployeeID` = -1 ) AS `t` ON 1 = 1"); } public override async Task Where_query_composition(bool isAsync) { await base.Where_query_composition(isAsync); // issue #15994 // AssertSql( // @"SELECT `e1`.`EmployeeID`, `e1`.`City`, `e1`.`Country`, `e1`.`FirstName`, `e1`.`ReportsTo`, `e1`.`Title` //FROM `Employees` AS `e1` //WHERE `e1`.`FirstName` = ( // SELECT TOP 1 `e`.`FirstName` // FROM `Employees` AS `e` // ORDER BY `e`.`EmployeeID` //)"); } public override async Task Where_query_composition_is_null(bool isAsync) { await base.Where_query_composition_is_null(isAsync); AssertSql( @"@__p_0='3' SELECT `t`.`EmployeeID`, `t`.`City`, `t`.`Country`, `t`.`FirstName`, `t`.`ReportsTo`, `t`.`Title` FROM ( SELECT TOP @__p_0 `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` ORDER BY `e`.`EmployeeID` ) AS `t` WHERE ( SELECT TOP 1 `e0`.`EmployeeID` FROM `Employees` AS `e0` WHERE `e0`.`EmployeeID` = `t`.`ReportsTo`) IS NULL ORDER BY `t`.`EmployeeID`"); } public override async Task Where_query_composition_is_not_null(bool isAsync) { await base.Where_query_composition_is_not_null(isAsync); AssertSql( @"@__p_0='4' @__p_1='3' SELECT `t`.`EmployeeID`, `t`.`City`, `t`.`Country`, `t`.`FirstName`, `t`.`ReportsTo`, `t`.`Title` FROM ( SELECT `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` ORDER BY `e`.`EmployeeID` SKIP @__p_0 FETCH NEXT @__p_1 ROWS ONLY ) AS `t` WHERE ( SELECT TOP 1 `e0`.`EmployeeID` FROM `Employees` AS `e0` WHERE `e0`.`EmployeeID` = `t`.`ReportsTo`) IS NOT NULL ORDER BY `t`.`EmployeeID`"); } public override async Task Where_query_composition_entity_equality_one_element_SingleOrDefault(bool isAsync) { await base.Where_query_composition_entity_equality_one_element_SingleOrDefault(isAsync); AssertSql( @"SELECT `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` WHERE ( SELECT TOP 1 `e0`.`EmployeeID` FROM `Employees` AS `e0` WHERE `e0`.`EmployeeID` = `e`.`ReportsTo`) = 0"); } public override async Task Where_query_composition_entity_equality_one_element_Single(bool isAsync) { await base.Where_query_composition_entity_equality_one_element_Single(isAsync); AssertSql( @"SELECT `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` WHERE ( SELECT TOP 1 `e0`.`EmployeeID` FROM `Employees` AS `e0` WHERE `e0`.`EmployeeID` = `e`.`ReportsTo`) = 0"); } public override async Task Where_query_composition_entity_equality_one_element_FirstOrDefault(bool isAsync) { await base.Where_query_composition_entity_equality_one_element_FirstOrDefault(isAsync); AssertSql( @"SELECT `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` WHERE ( SELECT TOP 1 `e0`.`EmployeeID` FROM `Employees` AS `e0` WHERE `e0`.`EmployeeID` = `e`.`ReportsTo`) = 0"); } public override async Task Where_query_composition_entity_equality_one_element_First(bool isAsync) { await base.Where_query_composition_entity_equality_one_element_First(isAsync); AssertSql( @"SELECT `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` WHERE ( SELECT TOP 1 `e0`.`EmployeeID` FROM `Employees` AS `e0` WHERE `e0`.`EmployeeID` = `e`.`ReportsTo`) = 0"); } public override async Task Where_query_composition_entity_equality_no_elements_SingleOrDefault(bool isAsync) { await base.Where_query_composition_entity_equality_no_elements_SingleOrDefault(isAsync); AssertSql( @"SELECT `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` WHERE ( SELECT TOP 1 `e0`.`EmployeeID` FROM `Employees` AS `e0` WHERE `e0`.`EmployeeID` = 42) = 0"); } public override async Task Where_query_composition_entity_equality_no_elements_Single(bool isAsync) { await base.Where_query_composition_entity_equality_no_elements_Single(isAsync); AssertSql( @"SELECT `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` WHERE ( SELECT TOP 1 `e0`.`EmployeeID` FROM `Employees` AS `e0` WHERE `e0`.`EmployeeID` = 42) = 0"); } public override async Task Where_query_composition_entity_equality_no_elements_FirstOrDefault(bool isAsync) { await base.Where_query_composition_entity_equality_no_elements_FirstOrDefault(isAsync); AssertSql( @"SELECT `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` WHERE ( SELECT TOP 1 `e0`.`EmployeeID` FROM `Employees` AS `e0` WHERE `e0`.`EmployeeID` = 42) = 0"); } public override async Task Where_query_composition_entity_equality_no_elements_First(bool isAsync) { await base.Where_query_composition_entity_equality_no_elements_First(isAsync); AssertSql( @"SELECT `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` WHERE ( SELECT TOP 1 `e0`.`EmployeeID` FROM `Employees` AS `e0` WHERE `e0`.`EmployeeID` = 42) = 0"); } public override async Task Where_query_composition_entity_equality_multiple_elements_SingleOrDefault(bool isAsync) { await base.Where_query_composition_entity_equality_multiple_elements_SingleOrDefault(isAsync); AssertSql( @"SELECT `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` WHERE ( SELECT TOP 1 `e0`.`EmployeeID` FROM `Employees` AS `e0` WHERE (`e0`.`EmployeeID` <> `e`.`ReportsTo`) OR `e`.`ReportsTo` IS NULL) = 0"); } public override async Task Where_query_composition_entity_equality_multiple_elements_Single(bool isAsync) { await base.Where_query_composition_entity_equality_multiple_elements_Single(isAsync); AssertSql( @"SELECT `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` WHERE ( SELECT TOP 1 `e0`.`EmployeeID` FROM `Employees` AS `e0` WHERE (`e0`.`EmployeeID` <> `e`.`ReportsTo`) OR `e`.`ReportsTo` IS NULL) = 0"); } public override async Task Where_query_composition_entity_equality_multiple_elements_FirstOrDefault(bool isAsync) { await base.Where_query_composition_entity_equality_multiple_elements_FirstOrDefault(isAsync); AssertSql( @"SELECT `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` WHERE ( SELECT TOP 1 `e0`.`EmployeeID` FROM `Employees` AS `e0` WHERE (`e0`.`EmployeeID` <> `e`.`ReportsTo`) OR `e`.`ReportsTo` IS NULL) = 0"); } public override async Task Where_query_composition_entity_equality_multiple_elements_First(bool isAsync) { await base.Where_query_composition_entity_equality_multiple_elements_First(isAsync); AssertSql( @"SELECT `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` WHERE ( SELECT TOP 1 `e0`.`EmployeeID` FROM `Employees` AS `e0` WHERE (`e0`.`EmployeeID` <> `e`.`ReportsTo`) OR `e`.`ReportsTo` IS NULL) = 0"); } public override async Task Where_query_composition2(bool isAsync) { await base.Where_query_composition2(isAsync); AssertSql( @"@__p_0='3' SELECT `t`.`EmployeeID`, `t`.`City`, `t`.`Country`, `t`.`FirstName`, `t`.`ReportsTo`, `t`.`Title` FROM ( SELECT TOP @__p_0 `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` ) AS `t` WHERE (`t`.`FirstName` = ( SELECT TOP 1 `e0`.`FirstName` FROM `Employees` AS `e0` ORDER BY `e0`.`EmployeeID`)) OR (`t`.`FirstName` IS NULL AND ( SELECT TOP 1 `e0`.`FirstName` FROM `Employees` AS `e0` ORDER BY `e0`.`EmployeeID`) IS NULL)"); } public override async Task Where_query_composition2_FirstOrDefault(bool isAsync) { await base.Where_query_composition2_FirstOrDefault(isAsync); // issue #15994 // AssertSql( // @"@__p_0='3' //SELECT `t`.`EmployeeID`, `t`.`City`, `t`.`Country`, `t`.`FirstName`, `t`.`ReportsTo`, `t`.`Title` //FROM ( // SELECT TOP @__p_0 `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` // FROM `Employees` AS `e` //) AS `t` //WHERE `t`.`FirstName` = ( // SELECT TOP 1 `e0`.`FirstName` // FROM `Employees` AS `e0` // ORDER BY `e0`.`EmployeeID` //)"); } public override async Task Where_query_composition2_FirstOrDefault_with_anonymous(bool isAsync) { await base.Where_query_composition2_FirstOrDefault_with_anonymous(isAsync); // issue #15994 // AssertSql( // @"@__p_0='3' //SELECT `t`.`EmployeeID`, `t`.`City`, `t`.`Country`, `t`.`FirstName`, `t`.`ReportsTo`, `t`.`Title` //FROM ( // SELECT TOP @__p_0 `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` // FROM `Employees` AS `e` //) AS `t` //WHERE `t`.`FirstName` = ( // SELECT TOP 1 `e0`.`FirstName` // FROM `Employees` AS `e0` // ORDER BY `e0`.`EmployeeID` //)"); } public override void Select_Subquery_Single() { base.Select_Subquery_Single(); AssertSql( @"@__p_0='2' SELECT TOP @__p_0 `od`.`OrderID` FROM `Order Details` AS `od` ORDER BY `od`.`ProductID`, `od`.`OrderID`", // @"@_outer_OrderID='10285' SELECT TOP 1 `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE @_outer_OrderID = `o`.`OrderID` ORDER BY `o`.`OrderID`", // @"@_outer_OrderID='10294' SELECT TOP 1 `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE @_outer_OrderID = `o`.`OrderID` ORDER BY `o`.`OrderID`"); } public override void Select_Where_Subquery_Deep_Single() { base.Select_Where_Subquery_Deep_Single(); AssertSql( @"@__p_0='2' SELECT TOP @__p_0 `o`.`OrderID`, `o`.`ProductID`, `o`.`Discount`, `o`.`Quantity`, `o`.`UnitPrice` FROM `Order Details` AS `o` WHERE (`o`.`OrderID` = 10344) AND (( SELECT TOP 1 ( SELECT TOP 1 `c`.`City` FROM `Customers` AS `c` WHERE `o0`.`CustomerID` = `c`.`CustomerID`) FROM `Orders` AS `o0` WHERE `o`.`OrderID` = `o0`.`OrderID`) = 'Seattle')"); } public override void Select_Where_Subquery_Deep_First() { base.Select_Where_Subquery_Deep_First(); AssertSql( @"@__p_0='2' SELECT TOP @__p_0 `o`.`OrderID`, `o`.`ProductID`, `o`.`Discount`, `o`.`Quantity`, `o`.`UnitPrice` FROM `Order Details` AS `o` WHERE ( SELECT TOP 1 ( SELECT TOP 1 `c`.`City` FROM `Customers` AS `c` WHERE `o0`.`CustomerID` = `c`.`CustomerID`) FROM `Orders` AS `o0` WHERE `o`.`OrderID` = `o0`.`OrderID`) = 'Seattle'"); } public override void Select_Where_Subquery_Equality() { base.Select_Where_Subquery_Equality(); AssertSql( @"@__p_0='1' SELECT `t`.`OrderID`, `t`.`CustomerID`, `t`.`EmployeeID`, `t`.`OrderDate` FROM ( SELECT TOP @__p_0 `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` ORDER BY `o`.`OrderID` ) AS `t` WHERE ( SELECT COUNT(*) FROM ( SELECT TOP 2 `o0`.`OrderID`, `o0`.`ProductID`, `o0`.`Discount`, `o0`.`Quantity`, `o0`.`UnitPrice` FROM `Order Details` AS `o0` ORDER BY `o0`.`OrderID` ) AS `t0` WHERE (( SELECT TOP 1 `c`.`Country` FROM `Customers` AS `c` WHERE `c`.`CustomerID` = `t`.`CustomerID` ORDER BY `c`.`CustomerID`) = ( SELECT TOP 1 `c0`.`Country` FROM `Orders` AS `o1` INNER JOIN `Customers` AS `c0` ON `o1`.`CustomerID` = `c0`.`CustomerID` WHERE `o1`.`OrderID` = `t0`.`OrderID` ORDER BY `o1`.`OrderID`, `c0`.`CustomerID`)) OR (( SELECT TOP 1 `c`.`Country` FROM `Customers` AS `c` WHERE `c`.`CustomerID` = `t`.`CustomerID` ORDER BY `c`.`CustomerID`) IS NULL AND ( SELECT TOP 1 `c0`.`Country` FROM `Orders` AS `o1` INNER JOIN `Customers` AS `c0` ON `o1`.`CustomerID` = `c0`.`CustomerID` WHERE `o1`.`OrderID` = `t0`.`OrderID` ORDER BY `o1`.`OrderID`, `c0`.`CustomerID`) IS NULL)) > 0 ORDER BY `t`.`OrderID`"); } public override async Task Where_subquery_anon(bool isAsync) { await base.Where_subquery_anon(isAsync); AssertSql( @"@__p_0='3' SELECT `t`.`EmployeeID`, `t`.`City`, `t`.`Country`, `t`.`FirstName`, `t`.`ReportsTo`, `t`.`Title`, `t0`.`OrderID`, `t0`.`CustomerID`, `t0`.`EmployeeID`, `t0`.`OrderDate` FROM ( SELECT TOP @__p_0 `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` ORDER BY `e`.`EmployeeID` ) AS `t`, ( SELECT TOP 5 `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` ORDER BY `o`.`OrderID` ) AS `t0` WHERE `t`.`EmployeeID` = `t0`.`EmployeeID` ORDER BY `t`.`EmployeeID`"); } public override async Task Where_subquery_anon_nested(bool isAsync) { await base.Where_subquery_anon_nested(isAsync); AssertSql( @"@__p_0='3' @__p_1='2' SELECT `t`.`EmployeeID`, `t`.`City`, `t`.`Country`, `t`.`FirstName`, `t`.`ReportsTo`, `t`.`Title`, `t0`.`OrderID`, `t0`.`CustomerID`, `t0`.`EmployeeID`, `t0`.`OrderDate`, `t1`.`CustomerID`, `t1`.`Address`, `t1`.`City`, `t1`.`CompanyName`, `t1`.`ContactName`, `t1`.`ContactTitle`, `t1`.`Country`, `t1`.`Fax`, `t1`.`Phone`, `t1`.`PostalCode`, `t1`.`Region` FROM ( SELECT TOP @__p_0 `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` ORDER BY `e`.`EmployeeID` ) AS `t`, ( SELECT TOP 5 `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` ORDER BY `o`.`OrderID` ) AS `t0`, ( SELECT TOP @__p_1 `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ) AS `t1` WHERE `t`.`City` = 'Seattle' ORDER BY `t`.`EmployeeID`"); } public override async Task OrderBy_SelectMany(bool isAsync) { await base.OrderBy_SelectMany(isAsync); AssertSql( @"SELECT `c`.`ContactName`, `t`.`OrderID` FROM `Customers` AS `c`, ( SELECT TOP 3 `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` ORDER BY `o`.`OrderID` ) AS `t` WHERE `c`.`CustomerID` = `t`.`CustomerID` ORDER BY `c`.`CustomerID`"); } public override async Task Let_any_subquery_anonymous(bool isAsync) { await base.Let_any_subquery_anonymous(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region`, CASE WHEN EXISTS ( SELECT 1 FROM `Orders` AS `o` WHERE `o`.`CustomerID` = `c`.`CustomerID`) THEN True ELSE False END AS `hasOrders` FROM `Customers` AS `c` WHERE `c`.`CustomerID` LIKE 'A' & '%' ORDER BY `c`.`CustomerID`"); } public override async Task OrderBy_arithmetic(bool isAsync) { await base.OrderBy_arithmetic(isAsync); AssertSql( @"SELECT `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` ORDER BY `e`.`EmployeeID` - `e`.`EmployeeID`"); } public override async Task OrderBy_condition_comparison(bool isAsync) { await base.OrderBy_condition_comparison(isAsync); AssertSql( @"SELECT `p`.`ProductID`, `p`.`Discontinued`, `p`.`ProductName`, `p`.`SupplierID`, `p`.`UnitPrice`, `p`.`UnitsInStock` FROM `Products` AS `p` ORDER BY IIF(`p`.`UnitsInStock` > 0, 1, 0), `p`.`ProductID`"); } public override async Task OrderBy_ternary_conditions(bool isAsync) { await base.OrderBy_ternary_conditions(isAsync); // issue #15994 // AssertSql( // @"SELECT `p`.`ProductID`, `p`.`Discontinued`, `p`.`ProductName`, `p`.`SupplierID`, `p`.`UnitPrice`, `p`.`UnitsInStock` //FROM `Products` AS `p` //ORDER BY CASE // WHEN ((`p`.`UnitsInStock` > 10) AND (`p`.`ProductID` > 40)) OR ((`p`.`UnitsInStock` <= 10) AND (`p`.`ProductID` <= 40)) // THEN True ELSE False //END, `p`.`ProductID`"); } public override void OrderBy_any() { base.OrderBy_any(); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY CASE WHEN EXISTS ( SELECT 1 FROM `Orders` AS `o` WHERE (`c`.`CustomerID` = `o`.`CustomerID`) AND (`o`.`OrderID` > 11000)) THEN True ELSE False END, `c`.`CustomerID`"); } public override async Task Skip(bool isAsync) { await base.Skip(isAsync); AssertSql( @"@__p_0='5' SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID` SKIP @__p_0"); } public override async Task Skip_no_orderby(bool isAsync) { await base.Skip_no_orderby(isAsync); AssertSql( @"@__p_0='5' SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY (SELECT 1) SKIP @__p_0"); } public override async Task Skip_orderby_const(bool isAsync) { await base.Skip_orderby_const(isAsync); AssertSql( @"@__p_0='5' SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY (SELECT 1) SKIP @__p_0"); } public override async Task Skip_Take(bool isAsync) { await base.Skip_Take(isAsync); AssertSql( @"@__p_0='5' @__p_1='10' SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`ContactName` SKIP @__p_0 FETCH NEXT @__p_1 ROWS ONLY"); } public override async Task Join_Customers_Orders_Skip_Take(bool isAsync) { await base.Join_Customers_Orders_Skip_Take(isAsync); AssertSql( @"@__p_0='10' @__p_1='5' SELECT `c`.`ContactName`, `o`.`OrderID` FROM `Customers` AS `c` INNER JOIN `Orders` AS `o` ON `c`.`CustomerID` = `o`.`CustomerID` ORDER BY `o`.`OrderID` SKIP @__p_0 FETCH NEXT @__p_1 ROWS ONLY"); } public override async Task Join_Customers_Orders_Skip_Take_followed_by_constant_projection(bool isAsync) { await base.Join_Customers_Orders_Skip_Take_followed_by_constant_projection(isAsync); AssertSql( @"@__p_0='10' @__p_1='5' SELECT 'Foo' FROM `Customers` AS `c` INNER JOIN `Orders` AS `o` ON `c`.`CustomerID` = `o`.`CustomerID` ORDER BY `o`.`OrderID` SKIP @__p_0 FETCH NEXT @__p_1 ROWS ONLY"); } public override async Task Join_Customers_Orders_Projection_With_String_Concat_Skip_Take(bool isAsync) { await base.Join_Customers_Orders_Projection_With_String_Concat_Skip_Take(isAsync); AssertSql( @"@__p_0='10' @__p_1='5' SELECT (`c`.`ContactName` + ' ') + `c`.`ContactTitle` AS `Contact`, `o`.`OrderID` FROM `Customers` AS `c` INNER JOIN `Orders` AS `o` ON `c`.`CustomerID` = `o`.`CustomerID` ORDER BY `o`.`OrderID` SKIP @__p_0 FETCH NEXT @__p_1 ROWS ONLY"); } public override async Task Join_Customers_Orders_Orders_Skip_Take_Same_Properties(bool isAsync) { await base.Join_Customers_Orders_Orders_Skip_Take_Same_Properties(isAsync); AssertSql( @"@__p_0='10' @__p_1='5' SELECT `o`.`OrderID`, `c`.`CustomerID` AS `CustomerIDA`, `c0`.`CustomerID` AS `CustomerIDB`, `c`.`ContactName` AS `ContactNameA`, `c0`.`ContactName` AS `ContactNameB` FROM `Orders` AS `o` INNER JOIN `Customers` AS `c` ON `o`.`CustomerID` = `c`.`CustomerID` INNER JOIN `Customers` AS `c0` ON `o`.`CustomerID` = `c0`.`CustomerID` ORDER BY `o`.`OrderID` SKIP @__p_0 FETCH NEXT @__p_1 ROWS ONLY"); } public override async Task Take_Skip(bool isAsync) { await base.Take_Skip(isAsync); AssertSql( @"@__p_0='10' @__p_1='5' SELECT `t`.`CustomerID`, `t`.`Address`, `t`.`City`, `t`.`CompanyName`, `t`.`ContactName`, `t`.`ContactTitle`, `t`.`Country`, `t`.`Fax`, `t`.`Phone`, `t`.`PostalCode`, `t`.`Region` FROM ( SELECT TOP @__p_0 `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`ContactName` ) AS `t` ORDER BY `t`.`ContactName` SKIP @__p_1"); } public override async Task Take_Skip_Distinct(bool isAsync) { await base.Take_Skip_Distinct(isAsync); AssertSql( @"@__p_0='10' @__p_1='5' SELECT DISTINCT `t0`.`CustomerID`, `t0`.`Address`, `t0`.`City`, `t0`.`CompanyName`, `t0`.`ContactName`, `t0`.`ContactTitle`, `t0`.`Country`, `t0`.`Fax`, `t0`.`Phone`, `t0`.`PostalCode`, `t0`.`Region` FROM ( SELECT `t`.`CustomerID`, `t`.`Address`, `t`.`City`, `t`.`CompanyName`, `t`.`ContactName`, `t`.`ContactTitle`, `t`.`Country`, `t`.`Fax`, `t`.`Phone`, `t`.`PostalCode`, `t`.`Region` FROM ( SELECT TOP @__p_0 `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`ContactName` ) AS `t` ORDER BY `t`.`ContactName` SKIP @__p_1 ) AS `t0`"); } public override async Task Take_Skip_Distinct_Caching(bool isAsync) { await base.Take_Skip_Distinct_Caching(isAsync); AssertSql( @"@__p_0='10' @__p_1='5' SELECT DISTINCT `t0`.`CustomerID`, `t0`.`Address`, `t0`.`City`, `t0`.`CompanyName`, `t0`.`ContactName`, `t0`.`ContactTitle`, `t0`.`Country`, `t0`.`Fax`, `t0`.`Phone`, `t0`.`PostalCode`, `t0`.`Region` FROM ( SELECT `t`.`CustomerID`, `t`.`Address`, `t`.`City`, `t`.`CompanyName`, `t`.`ContactName`, `t`.`ContactTitle`, `t`.`Country`, `t`.`Fax`, `t`.`Phone`, `t`.`PostalCode`, `t`.`Region` FROM ( SELECT TOP @__p_0 `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`ContactName` ) AS `t` ORDER BY `t`.`ContactName` SKIP @__p_1 ) AS `t0`", // @"@__p_0='15' @__p_1='10' SELECT DISTINCT `t0`.`CustomerID`, `t0`.`Address`, `t0`.`City`, `t0`.`CompanyName`, `t0`.`ContactName`, `t0`.`ContactTitle`, `t0`.`Country`, `t0`.`Fax`, `t0`.`Phone`, `t0`.`PostalCode`, `t0`.`Region` FROM ( SELECT `t`.`CustomerID`, `t`.`Address`, `t`.`City`, `t`.`CompanyName`, `t`.`ContactName`, `t`.`ContactTitle`, `t`.`Country`, `t`.`Fax`, `t`.`Phone`, `t`.`PostalCode`, `t`.`Region` FROM ( SELECT TOP @__p_0 `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`ContactName` ) AS `t` ORDER BY `t`.`ContactName` SKIP @__p_1 ) AS `t0`"); } public override async Task Take_Distinct_Count(bool isAsync) { await base.Take_Distinct_Count(isAsync); AssertSql( @"@__p_0='5' SELECT COUNT(*) FROM ( SELECT DISTINCT `t`.`OrderID`, `t`.`CustomerID`, `t`.`EmployeeID`, `t`.`OrderDate` FROM ( SELECT TOP @__p_0 `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` ) AS `t` ) AS `t0`"); } public override async Task Take_Where_Distinct_Count(bool isAsync) { await base.Take_Where_Distinct_Count(isAsync); AssertSql( @"@__p_0='5' SELECT COUNT(*) FROM ( SELECT DISTINCT `t`.`OrderID`, `t`.`CustomerID`, `t`.`EmployeeID`, `t`.`OrderDate` FROM ( SELECT TOP @__p_0 `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE `o`.`CustomerID` = 'FRANK' ) AS `t` ) AS `t0`"); } public override async Task Queryable_simple(bool isAsync) { await base.Queryable_simple(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c`"); } public override async Task Queryable_simple_anonymous(bool isAsync) { await base.Queryable_simple_anonymous(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c`"); } public override async Task Queryable_nested_simple(bool isAsync) { await base.Queryable_nested_simple(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c`"); } public override async Task Queryable_simple_anonymous_projection_subquery(bool isAsync) { await base.Queryable_simple_anonymous_projection_subquery(isAsync); AssertSql( @"@__p_0='91' SELECT TOP @__p_0 `c`.`City` FROM `Customers` AS `c`"); } public override async Task Queryable_simple_anonymous_subquery(bool isAsync) { await base.Queryable_simple_anonymous_subquery(isAsync); AssertSql( @"@__p_0='91' SELECT TOP @__p_0 `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c`"); } public override async Task Take_simple(bool isAsync) { await base.Take_simple(isAsync); AssertSql( @"@__p_0='10' SELECT TOP @__p_0 `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID`"); } public override async Task Take_simple_parameterized(bool isAsync) { await base.Take_simple_parameterized(isAsync); AssertSql( @"@__p_0='10' SELECT TOP @__p_0 `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID`"); } public override async Task Take_simple_projection(bool isAsync) { await base.Take_simple_projection(isAsync); AssertSql( @"@__p_0='10' SELECT TOP @__p_0 `c`.`City` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID`"); } public override async Task Take_subquery_projection(bool isAsync) { await base.Take_subquery_projection(isAsync); AssertSql( @"@__p_0='2' SELECT TOP @__p_0 `c`.`City` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID`"); } public override async Task OrderBy_Take_Count(bool isAsync) { await base.OrderBy_Take_Count(isAsync); AssertSql( @"@__p_0='5' SELECT COUNT(*) FROM ( SELECT TOP @__p_0 `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` ORDER BY `o`.`OrderID` ) AS `t`"); } public override async Task Take_OrderBy_Count(bool isAsync) { await base.Take_OrderBy_Count(isAsync); AssertSql( @"@__p_0='5' SELECT COUNT(*) FROM ( SELECT TOP @__p_0 `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` ) AS `t`"); } public override async Task Any_simple(bool isAsync) { await base.Any_simple(isAsync); AssertSql( @"SELECT CASE WHEN EXISTS ( SELECT 1 FROM `Customers` AS `c`) THEN True ELSE False END"); } public override async Task Any_predicate(bool isAsync) { await base.Any_predicate(isAsync); AssertSql( @"SELECT CASE WHEN EXISTS ( SELECT 1 FROM `Customers` AS `c` WHERE `c`.`ContactName` IS NOT NULL AND (`c`.`ContactName` LIKE 'A' & '%')) THEN True ELSE False END"); } public override async Task Any_nested_negated(bool isAsync) { await base.Any_nested_negated(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE NOT (EXISTS ( SELECT 1 FROM `Orders` AS `o` WHERE `o`.`CustomerID` IS NOT NULL AND (`o`.`CustomerID` LIKE 'A' & '%')))"); } public override async Task Any_nested_negated2(bool isAsync) { await base.Any_nested_negated2(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE ((`c`.`City` <> 'London') OR `c`.`City` IS NULL) AND NOT (EXISTS ( SELECT 1 FROM `Orders` AS `o` WHERE `o`.`CustomerID` IS NOT NULL AND (`o`.`CustomerID` LIKE 'A' & '%')))"); } public override async Task Any_nested_negated3(bool isAsync) { await base.Any_nested_negated3(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE NOT (EXISTS ( SELECT 1 FROM `Orders` AS `o` WHERE `o`.`CustomerID` IS NOT NULL AND (`o`.`CustomerID` LIKE 'A' & '%'))) AND ((`c`.`City` <> 'London') OR `c`.`City` IS NULL)"); } public override async Task Any_nested(bool isAsync) { await base.Any_nested(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE EXISTS ( SELECT 1 FROM `Orders` AS `o` WHERE `o`.`CustomerID` IS NOT NULL AND (`o`.`CustomerID` LIKE 'A' & '%'))"); } public override async Task Any_nested2(bool isAsync) { await base.Any_nested2(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE ((`c`.`City` <> 'London') OR `c`.`City` IS NULL) AND EXISTS ( SELECT 1 FROM `Orders` AS `o` WHERE `o`.`CustomerID` IS NOT NULL AND (`o`.`CustomerID` LIKE 'A' & '%'))"); } public override async Task Any_nested3(bool isAsync) { await base.Any_nested3(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE EXISTS ( SELECT 1 FROM `Orders` AS `o` WHERE `o`.`CustomerID` IS NOT NULL AND (`o`.`CustomerID` LIKE 'A' & '%')) AND ((`c`.`City` <> 'London') OR `c`.`City` IS NULL)"); } public override void Any_with_multiple_conditions_still_uses_exists() { base.Any_with_multiple_conditions_still_uses_exists(); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE (`c`.`City` = 'London') AND EXISTS ( SELECT 1 FROM `Orders` AS `o` WHERE (`c`.`CustomerID` = `o`.`CustomerID`) AND (`o`.`EmployeeID` = 1))"); } public override async Task All_top_level(bool isAsync) { await base.All_top_level(isAsync); // issue #15994 // AssertSql( // @"SELECT CASE // WHEN NOT EXISTS ( // SELECT 1 // FROM `Customers` AS `c` // WHERE NOT (`c`.`ContactName` LIKE 'A' & '%')) // THEN True ELSE False //END"); } public override async Task All_top_level_column(bool isAsync) { await base.All_top_level_column(isAsync); AssertSql( @"SELECT CASE WHEN NOT EXISTS ( SELECT 1 FROM `Customers` AS `c` WHERE ((`c`.`ContactName` <> '') OR `c`.`ContactName` IS NULL) AND (`c`.`ContactName` IS NULL OR (`c`.`ContactName` IS NULL OR ((LEFT(`c`.`ContactName`, LEN(`c`.`ContactName`)) <> `c`.`ContactName`) OR LEFT(`c`.`ContactName`, LEN(`c`.`ContactName`)) IS NULL)))) THEN True ELSE False END"); } public override async Task All_top_level_subquery(bool isAsync) { await base.All_top_level_subquery(isAsync); AssertSql( @"SELECT CASE WHEN NOT EXISTS ( SELECT 1 FROM `Customers` AS `c` WHERE NOT (EXISTS ( SELECT 1 FROM `Customers` AS `c0` WHERE EXISTS ( SELECT 1 FROM `Customers` AS `c1` WHERE `c`.`CustomerID` = `c1`.`CustomerID`)))) THEN True ELSE False END"); } public override async Task All_top_level_subquery_ef_property(bool isAsync) { await base.All_top_level_subquery_ef_property(isAsync); AssertSql( @"SELECT CASE WHEN NOT EXISTS ( SELECT 1 FROM `Customers` AS `c` WHERE NOT (EXISTS ( SELECT 1 FROM `Customers` AS `c0` WHERE EXISTS ( SELECT 1 FROM `Customers` AS `c1` WHERE `c`.`CustomerID` = `c1`.`CustomerID`)))) THEN True ELSE False END"); } public override async Task Where_select_many_or(bool isAsync) { await base.Where_select_many_or(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region`, `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Customers` AS `c`, `Employees` AS `e` WHERE (`c`.`City` = 'London') OR (`e`.`City` = 'London')"); } public override async Task Where_select_many_or2(bool isAsync) { await base.Where_select_many_or2(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region`, `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Customers` AS `c`, `Employees` AS `e` WHERE (`c`.`City` = 'London') OR (`c`.`City` = 'Berlin')"); } public override async Task Where_select_many_or3(bool isAsync) { await base.Where_select_many_or3(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region`, `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Customers` AS `c`, `Employees` AS `e` WHERE ((`c`.`City` = 'London') OR (`c`.`City` = 'Berlin')) OR (`c`.`City` = 'Seattle')"); } public override async Task Where_select_many_or4(bool isAsync) { await base.Where_select_many_or4(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region`, `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Customers` AS `c`, `Employees` AS `e` WHERE (((`c`.`City` = 'London') OR (`c`.`City` = 'Berlin')) OR (`c`.`City` = 'Seattle')) OR (`c`.`City` = 'Lisboa')"); } public override async Task Where_select_many_or_with_parameter(bool isAsync) { await base.Where_select_many_or_with_parameter(isAsync); AssertSql( @"@__london_0='London' (Size = 4000) @__lisboa_1='Lisboa' (Size = 4000) SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region`, `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Customers` AS `c`, `Employees` AS `e` WHERE (((`c`.`City` = @__london_0) OR (`c`.`City` = 'Berlin')) OR (`c`.`City` = 'Seattle')) OR (`c`.`City` = @__lisboa_1)"); } public override async Task SelectMany_simple_subquery(bool isAsync) { await base.SelectMany_simple_subquery(isAsync); AssertSql( @"@__p_0='9' SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region`, `t`.`EmployeeID`, `t`.`City`, `t`.`Country`, `t`.`FirstName`, `t`.`ReportsTo`, `t`.`Title` FROM ( SELECT TOP @__p_0 `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` ) AS `t`, `Customers` AS `c`"); } public override async Task SelectMany_simple1(bool isAsync) { await base.SelectMany_simple1(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region`, `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e`, `Customers` AS `c`"); } public override async Task SelectMany_simple2(bool isAsync) { await base.SelectMany_simple2(isAsync); AssertSql( @"SELECT `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title`, `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region`, `e0`.`FirstName` FROM `Employees` AS `e`, `Customers` AS `c`, `Employees` AS `e0`"); } public override async Task SelectMany_entity_deep(bool isAsync) { await base.SelectMany_entity_deep(isAsync); AssertSql( @"SELECT `e0`.`EmployeeID`, `e0`.`City`, `e0`.`Country`, `e0`.`FirstName`, `e0`.`ReportsTo`, `e0`.`Title`, `e1`.`EmployeeID`, `e1`.`City`, `e1`.`Country`, `e1`.`FirstName`, `e1`.`ReportsTo`, `e1`.`Title`, `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title`, `e2`.`EmployeeID`, `e2`.`City`, `e2`.`Country`, `e2`.`FirstName`, `e2`.`ReportsTo`, `e2`.`Title` FROM `Employees` AS `e`, `Employees` AS `e0`, `Employees` AS `e1`, `Employees` AS `e2`"); } public override async Task SelectMany_projection1(bool isAsync) { await base.SelectMany_projection1(isAsync); AssertSql( @"SELECT `e`.`City`, `e0`.`Country` FROM `Employees` AS `e`, `Employees` AS `e0`"); } public override async Task SelectMany_projection2(bool isAsync) { await base.SelectMany_projection2(isAsync); AssertSql( @"SELECT `e`.`City`, `e0`.`Country`, `e1`.`FirstName` FROM `Employees` AS `e`, `Employees` AS `e0`, `Employees` AS `e1`"); } public override async Task SelectMany_Count(bool isAsync) { await base.SelectMany_Count(isAsync); AssertSql( @"SELECT COUNT(*) FROM `Customers` AS `c`, `Orders` AS `o`"); } public override async Task SelectMany_LongCount(bool isAsync) { await base.SelectMany_LongCount(isAsync); AssertSql( @"SELECT COUNT_BIG(*) FROM `Customers` AS `c`, `Orders` AS `o`"); } public override async Task SelectMany_OrderBy_ThenBy_Any(bool isAsync) { await base.SelectMany_OrderBy_ThenBy_Any(isAsync); AssertSql( @"SELECT CASE WHEN EXISTS ( SELECT 1 FROM `Customers` AS `c`, `Orders` AS `o`) THEN True ELSE False END"); } public override async Task Join_Where_Count(bool isAsync) { await base.Join_Where_Count(isAsync); AssertSql( @"SELECT COUNT(*) FROM `Customers` AS `c` INNER JOIN `Orders` AS `o` ON `c`.`CustomerID` = `o`.`CustomerID` WHERE `c`.`CustomerID` = 'ALFKI'"); } public override async Task Where_Join_Any(bool isAsync) { await base.Where_Join_Any(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE (`c`.`CustomerID` = 'ALFKI') AND EXISTS ( SELECT 1 FROM `Orders` AS `o` WHERE (`c`.`CustomerID` = `o`.`CustomerID`) AND (`o`.`OrderDate` = #10/24/2008 00:00:00#))"); } public override async Task Where_Join_Exists(bool isAsync) { await base.Where_Join_Exists(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE (`c`.`CustomerID` = 'ALFKI') AND EXISTS ( SELECT 1 FROM `Orders` AS `o` WHERE (`c`.`CustomerID` = `o`.`CustomerID`) AND (`o`.`OrderDate` = #10/24/2008 00:00:00#))"); } public override async Task Where_Join_Exists_Inequality(bool isAsync) { await base.Where_Join_Exists_Inequality(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE (`c`.`CustomerID` = 'ALFKI') AND EXISTS ( SELECT 1 FROM `Orders` AS `o` WHERE (`c`.`CustomerID` = `o`.`CustomerID`) AND ((`o`.`OrderDate` <> #10/24/2008 00:00:00#) OR `o`.`OrderDate` IS NULL))"); } public override async Task Where_Join_Exists_Constant(bool isAsync) { await base.Where_Join_Exists_Constant(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE (`c`.`CustomerID` = 'ALFKI') AND EXISTS ( SELECT 1 FROM `Orders` AS `o` WHERE 0 = 1)"); } public override async Task Where_Join_Not_Exists(bool isAsync) { await base.Where_Join_Not_Exists(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE (`c`.`CustomerID` = 'ALFKI') AND NOT EXISTS ( SELECT 1 FROM `Orders` AS `o` WHERE 0 = 1)"); } public override async Task Join_OrderBy_Count(bool isAsync) { await base.Join_OrderBy_Count(isAsync); AssertSql( @"SELECT COUNT(*) FROM `Customers` AS `c` INNER JOIN `Orders` AS `o` ON `c`.`CustomerID` = `o`.`CustomerID`"); } public override async Task Multiple_joins_Where_Order_Any(bool isAsync) { await base.Multiple_joins_Where_Order_Any(isAsync); AssertSql( @"SELECT CASE WHEN EXISTS ( SELECT 1 FROM `Customers` AS `c` INNER JOIN `Orders` AS `o` ON `c`.`CustomerID` = `o`.`CustomerID` INNER JOIN `Order Details` AS `o0` ON `o`.`OrderID` = `o0`.`OrderID` WHERE `c`.`City` = 'London') THEN True ELSE False END"); } public override async Task Where_join_select(bool isAsync) { await base.Where_join_select(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` INNER JOIN `Orders` AS `o` ON `c`.`CustomerID` = `o`.`CustomerID` WHERE `c`.`CustomerID` = 'ALFKI'"); } public override async Task Where_orderby_join_select(bool isAsync) { await base.Where_orderby_join_select(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` INNER JOIN `Orders` AS `o` ON `c`.`CustomerID` = `o`.`CustomerID` WHERE `c`.`CustomerID` <> 'ALFKI' ORDER BY `c`.`CustomerID`"); } public override async Task Where_join_orderby_join_select(bool isAsync) { await base.Where_join_orderby_join_select(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` INNER JOIN `Orders` AS `o` ON `c`.`CustomerID` = `o`.`CustomerID` INNER JOIN `Order Details` AS `o0` ON `o`.`OrderID` = `o0`.`OrderID` WHERE `c`.`CustomerID` <> 'ALFKI' ORDER BY `c`.`CustomerID`"); } public override async Task Where_select_many(bool isAsync) { await base.Where_select_many(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c`, `Orders` AS `o` WHERE `c`.`CustomerID` = 'ALFKI'"); } public override async Task Where_orderby_select_many(bool isAsync) { await base.Where_orderby_select_many(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c`, `Orders` AS `o` WHERE `c`.`CustomerID` = 'ALFKI' ORDER BY `c`.`CustomerID`"); } public override async Task SelectMany_cartesian_product_with_ordering(bool isAsync) { await base.SelectMany_cartesian_product_with_ordering(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region`, `e`.`City` FROM `Customers` AS `c`, `Employees` AS `e` WHERE (`c`.`City` = `e`.`City`) OR (`c`.`City` IS NULL AND `e`.`City` IS NULL) ORDER BY `e`.`City`, `c`.`CustomerID` DESC"); } public override async Task SelectMany_Joined_DefaultIfEmpty(bool isAsync) { await base.SelectMany_Joined_DefaultIfEmpty(isAsync); AssertSql( @"SELECT `c`.`ContactName`, `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Customers` AS `c` LEFT JOIN `Orders` AS `o` ON `c`.`CustomerID` = `o`.`CustomerID`"); } public override async Task SelectMany_Joined_DefaultIfEmpty2(bool isAsync) { await base.SelectMany_Joined_DefaultIfEmpty2(isAsync); AssertSql( @"SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Customers` AS `c` LEFT JOIN `Orders` AS `o` ON `c`.`CustomerID` = `o`.`CustomerID`"); } public override async Task SelectMany_Joined_Take(bool isAsync) { await base.SelectMany_Joined_Take(isAsync); AssertSql( @"SELECT `c`.`ContactName`, `t0`.`OrderID`, `t0`.`CustomerID`, `t0`.`EmployeeID`, `t0`.`OrderDate` FROM `Customers` AS `c` INNER JOIN ( SELECT `t`.`OrderID`, `t`.`CustomerID`, `t`.`EmployeeID`, `t`.`OrderDate` FROM ( SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate`, ROW_NUMBER() OVER(PARTITION BY `o`.`CustomerID` ORDER BY `o`.`OrderID`) AS `row` FROM `Orders` AS `o` ) AS `t` WHERE `t`.`row` <= 4 ) AS `t0` ON `c`.`CustomerID` = `t0`.`CustomerID`"); } public override async Task Take_with_single(bool isAsync) { await base.Take_with_single(isAsync); AssertSql( @"@__p_0='1' SELECT TOP 2 `t`.`CustomerID`, `t`.`Address`, `t`.`City`, `t`.`CompanyName`, `t`.`ContactName`, `t`.`ContactTitle`, `t`.`Country`, `t`.`Fax`, `t`.`Phone`, `t`.`PostalCode`, `t`.`Region` FROM ( SELECT TOP @__p_0 `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID` ) AS `t` ORDER BY `t`.`CustomerID`"); } public override async Task Take_with_single_select_many(bool isAsync) { await base.Take_with_single_select_many(isAsync); AssertSql( @"@__p_0='1' SELECT TOP 2 `t`.`CustomerID`, `t`.`Address`, `t`.`City`, `t`.`CompanyName`, `t`.`ContactName`, `t`.`ContactTitle`, `t`.`Country`, `t`.`Fax`, `t`.`Phone`, `t`.`PostalCode`, `t`.`Region`, `t`.`OrderID`, `t`.`CustomerID0`, `t`.`EmployeeID`, `t`.`OrderDate` FROM ( SELECT TOP @__p_0 `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region`, `o`.`OrderID`, `o`.`CustomerID` AS `CustomerID0`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Customers` AS `c`, `Orders` AS `o` ORDER BY `c`.`CustomerID`, `o`.`OrderID` ) AS `t` ORDER BY `t`.`CustomerID`, `t`.`OrderID`"); } public override async Task Distinct_Skip(bool isAsync) { await base.Distinct_Skip(isAsync); AssertSql( @"@__p_0='5' SELECT `t`.`CustomerID`, `t`.`Address`, `t`.`City`, `t`.`CompanyName`, `t`.`ContactName`, `t`.`ContactTitle`, `t`.`Country`, `t`.`Fax`, `t`.`Phone`, `t`.`PostalCode`, `t`.`Region` FROM ( SELECT DISTINCT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ) AS `t` ORDER BY `t`.`CustomerID` SKIP @__p_0"); } public override async Task Distinct_Skip_Take(bool isAsync) { await base.Distinct_Skip_Take(isAsync); AssertSql( @"@__p_0='5' @__p_1='10' SELECT `t`.`CustomerID`, `t`.`Address`, `t`.`City`, `t`.`CompanyName`, `t`.`ContactName`, `t`.`ContactTitle`, `t`.`Country`, `t`.`Fax`, `t`.`Phone`, `t`.`PostalCode`, `t`.`Region` FROM ( SELECT DISTINCT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ) AS `t` ORDER BY `t`.`ContactName` SKIP @__p_0 FETCH NEXT @__p_1 ROWS ONLY"); } public override async Task Skip_Distinct(bool isAsync) { await base.Skip_Distinct(isAsync); AssertSql( @"@__p_0='5' SELECT DISTINCT `t`.`CustomerID`, `t`.`Address`, `t`.`City`, `t`.`CompanyName`, `t`.`ContactName`, `t`.`ContactTitle`, `t`.`Country`, `t`.`Fax`, `t`.`Phone`, `t`.`PostalCode`, `t`.`Region` FROM ( SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`ContactName` SKIP @__p_0 ) AS `t`"); } public override async Task Skip_Take_Distinct(bool isAsync) { await base.Skip_Take_Distinct(isAsync); AssertSql( @"@__p_0='5' @__p_1='10' SELECT DISTINCT `t`.`CustomerID`, `t`.`Address`, `t`.`City`, `t`.`CompanyName`, `t`.`ContactName`, `t`.`ContactTitle`, `t`.`Country`, `t`.`Fax`, `t`.`Phone`, `t`.`PostalCode`, `t`.`Region` FROM ( SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`ContactName` SKIP @__p_0 FETCH NEXT @__p_1 ROWS ONLY ) AS `t`"); } public override async Task Skip_Take_Any(bool isAsync) { await base.Skip_Take_Any(isAsync); AssertSql( @"@__p_0='5' @__p_1='10' SELECT CASE WHEN EXISTS ( SELECT 1 FROM `Customers` AS `c` ORDER BY `c`.`ContactName` SKIP @__p_0 FETCH NEXT @__p_1 ROWS ONLY) THEN True ELSE False END"); } public override async Task Skip_Take_All(bool isAsync) { await base.Skip_Take_All(isAsync); AssertSql( @"@__p_0='4' @__p_1='7' SELECT CASE WHEN NOT EXISTS ( SELECT 1 FROM ( SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID` SKIP @__p_0 FETCH NEXT @__p_1 ROWS ONLY ) AS `t` WHERE NOT (`t`.`CustomerID` LIKE 'B' & '%')) THEN True ELSE False END"); } public override async Task Take_All(bool isAsync) { await base.Take_All(isAsync); AssertSql( @"@__p_0='4' SELECT CASE WHEN NOT EXISTS ( SELECT 1 FROM ( SELECT TOP @__p_0 `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID` ) AS `t` WHERE NOT (`t`.`CustomerID` LIKE 'A' & '%')) THEN True ELSE False END"); } public override async Task Skip_Take_Any_with_predicate(bool isAsync) { await base.Skip_Take_Any_with_predicate(isAsync); AssertSql( @"@__p_0='5' @__p_1='7' SELECT CASE WHEN EXISTS ( SELECT 1 FROM ( SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID` SKIP @__p_0 FETCH NEXT @__p_1 ROWS ONLY ) AS `t` WHERE `t`.`CustomerID` LIKE 'C' & '%') THEN True ELSE False END"); } public override async Task Take_Any_with_predicate(bool isAsync) { await base.Take_Any_with_predicate(isAsync); AssertSql( @"@__p_0='5' SELECT CASE WHEN EXISTS ( SELECT 1 FROM ( SELECT TOP @__p_0 `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID` ) AS `t` WHERE `t`.`CustomerID` LIKE 'B' & '%') THEN True ELSE False END"); } public override async Task OrderBy(bool isAsync) { await base.OrderBy(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID`"); } public override async Task OrderBy_true(bool isAsync) { await base.OrderBy_true(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c`"); } public override async Task OrderBy_integer(bool isAsync) { await base.OrderBy_integer(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c`"); } public override async Task OrderBy_parameter(bool isAsync) { await base.OrderBy_parameter(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c`"); } public override async Task OrderBy_anon(bool isAsync) { await base.OrderBy_anon(isAsync); AssertSql( @"SELECT `c`.`CustomerID` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID`"); } public override async Task OrderBy_anon2(bool isAsync) { await base.OrderBy_anon2(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID`"); } public override async Task Distinct_Take(bool isAsync) { await base.Distinct_Take(isAsync); AssertSql( @"@__p_0='5' SELECT TOP @__p_0 `t`.`OrderID`, `t`.`CustomerID`, `t`.`EmployeeID`, `t`.`OrderDate` FROM ( SELECT DISTINCT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` ) AS `t` ORDER BY `t`.`OrderID`"); } public override async Task Distinct_Take_Count(bool isAsync) { await base.Distinct_Take_Count(isAsync); AssertSql( @"@__p_0='5' SELECT COUNT(*) FROM ( SELECT DISTINCT TOP @__p_0 `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` ) AS `t`"); } public override async Task OrderBy_shadow(bool isAsync) { await base.OrderBy_shadow(isAsync); AssertSql( @"SELECT `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` ORDER BY `e`.`Title`, `e`.`EmployeeID`"); } public override async Task OrderBy_multiple(bool isAsync) { await base.OrderBy_multiple(isAsync); AssertSql( @"SELECT `c`.`City` FROM `Customers` AS `c` WHERE `c`.`CustomerID` LIKE 'A' & '%' ORDER BY `c`.`Country`, `c`.`City`"); } public override async Task OrderBy_ThenBy_Any(bool isAsync) { await base.OrderBy_ThenBy_Any(isAsync); AssertSql( @"SELECT CASE WHEN EXISTS ( SELECT 1 FROM `Customers` AS `c`) THEN True ELSE False END"); } public override async Task OrderBy_correlated_subquery1(bool isAsync) { await base.OrderBy_correlated_subquery1(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE `c`.`CustomerID` LIKE 'A' & '%' ORDER BY CASE WHEN EXISTS ( SELECT 1 FROM `Customers` AS `c0` WHERE `c0`.`CustomerID` = `c`.`CustomerID`) THEN True ELSE False END, `c`.`CustomerID`"); } public override async Task OrderBy_correlated_subquery2(bool isAsync) { await base.OrderBy_correlated_subquery2(isAsync); AssertSql( @"SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE (`o`.`OrderID` <= 10250) AND ((( SELECT TOP 1 `c`.`City` FROM `Customers` AS `c` ORDER BY CASE WHEN EXISTS ( SELECT 1 FROM `Customers` AS `c0` WHERE `c0`.`CustomerID` = 'ALFKI') THEN True ELSE False END) <> 'Nowhere') OR ( SELECT TOP 1 `c`.`City` FROM `Customers` AS `c` ORDER BY CASE WHEN EXISTS ( SELECT 1 FROM `Customers` AS `c0` WHERE `c0`.`CustomerID` = 'ALFKI') THEN True ELSE False END) IS NULL)"); } public override async Task Where_subquery_recursive_trivial(bool isAsync) { await base.Where_subquery_recursive_trivial(isAsync); AssertSql( @"SELECT `e`.`EmployeeID`, `e`.`City`, `e`.`Country`, `e`.`FirstName`, `e`.`ReportsTo`, `e`.`Title` FROM `Employees` AS `e` WHERE EXISTS ( SELECT 1 FROM `Employees` AS `e0` WHERE EXISTS ( SELECT 1 FROM `Employees` AS `e1`)) ORDER BY `e`.`EmployeeID`"); } public override void Select_DTO_distinct_translated_to_server() { base.Select_DTO_distinct_translated_to_server(); AssertSql( @"SELECT DISTINCT 1 FROM `Orders` AS `o` WHERE `o`.`OrderID` < 10300"); } public override void Select_DTO_constructor_distinct_translated_to_server() { base.Select_DTO_constructor_distinct_translated_to_server(); AssertSql( @"SELECT DISTINCT `o`.`CustomerID` FROM `Orders` AS `o` WHERE `o`.`OrderID` < 10300"); } public override void Select_DTO_constructor_distinct_with_navigation_translated_to_server() { base.Select_DTO_constructor_distinct_with_navigation_translated_to_server(); AssertSql( @"SELECT DISTINCT `c`.`City` FROM `Orders` AS `o` LEFT JOIN `Customers` AS `c` ON `o`.`CustomerID` = `c`.`CustomerID` WHERE `o`.`OrderID` < 10300"); } public override void Select_DTO_with_member_init_distinct_translated_to_server() { base.Select_DTO_with_member_init_distinct_translated_to_server(); AssertSql( @"SELECT DISTINCT `o`.`CustomerID` AS `Id`, `o`.`OrderID` AS `Count` FROM `Orders` AS `o` WHERE `o`.`OrderID` < 10300"); } public override void Select_nested_collection_count_using_DTO() { base.Select_nested_collection_count_using_DTO(); AssertSql( @"SELECT `c`.`CustomerID` AS `Id`, ( SELECT COUNT(*) FROM `Orders` AS `o` WHERE `c`.`CustomerID` = `o`.`CustomerID`) AS `Count` FROM `Customers` AS `c` WHERE `c`.`CustomerID` LIKE 'A' & '%'"); } public override async Task Select_DTO_with_member_init_distinct_in_subquery_translated_to_server(bool isAsync) { await base.Select_DTO_with_member_init_distinct_in_subquery_translated_to_server(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM ( SELECT DISTINCT `o`.`CustomerID`, `o`.`OrderID` FROM `Orders` AS `o` WHERE `o`.`OrderID` < 10300 ) AS `t` INNER JOIN `Customers` AS `c` ON `t`.`CustomerID` = `c`.`CustomerID`"); } public override async Task Select_DTO_with_member_init_distinct_in_subquery_translated_to_server_2(bool isAsync) { await base.Select_DTO_with_member_init_distinct_in_subquery_translated_to_server_2(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM ( SELECT DISTINCT `o`.`CustomerID`, `o`.`OrderID` FROM `Orders` AS `o` WHERE `o`.`OrderID` < 10300 ) AS `t` INNER JOIN `Customers` AS `c` ON `t`.`CustomerID` = `c`.`CustomerID`"); } public override void Select_DTO_with_member_init_distinct_in_subquery_used_in_projection_translated_to_server() { base.Select_DTO_with_member_init_distinct_in_subquery_used_in_projection_translated_to_server(); // issue #15994 // AssertSql( // @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region`, `t`.`Id`, `t`.`Count` //FROM `Customers` AS `c` //CROSS JOIN ( // SELECT DISTINCT `o`.`CustomerID` AS `Id`, `o`.`OrderID` AS `Count` // FROM `Orders` AS `o` // WHERE `o`.`OrderID` < 10300 //) AS `t` //WHERE `c`.`CustomerID` LIKE 'A' & '%'"); } public override async Task Select_correlated_subquery_projection(bool isAsync) { await base.Select_correlated_subquery_projection(isAsync); AssertSql( @"@__p_0='3' SELECT TOP @__p_0 `cc`.`CustomerID` FROM `Customers` AS `cc` ORDER BY `cc`.`CustomerID`", // @"@_outer_CustomerID='ALFKI' (Size = 5) SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE `o`.`CustomerID` = @_outer_CustomerID", // @"@_outer_CustomerID='ANATR' (Size = 5) SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE `o`.`CustomerID` = @_outer_CustomerID", // @"@_outer_CustomerID='ANTON' (Size = 5) SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE `o`.`CustomerID` = @_outer_CustomerID"); } public override async Task Select_correlated_subquery_filtered(bool isAsync) { await base.Select_correlated_subquery_filtered(isAsync); AssertSql( @"SELECT `c`.`CustomerID` FROM `Customers` AS `c` WHERE `c`.`CustomerID` LIKE 'A' & '%' ORDER BY `c`.`CustomerID`", // @"@_outer_CustomerID='ALFKI' (Size = 5) SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE `o`.`CustomerID` = @_outer_CustomerID", // @"@_outer_CustomerID='ANATR' (Size = 5) SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE `o`.`CustomerID` = @_outer_CustomerID", // @"@_outer_CustomerID='ANTON' (Size = 5) SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE `o`.`CustomerID` = @_outer_CustomerID", // @"@_outer_CustomerID='AROUT' (Size = 5) SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE `o`.`CustomerID` = @_outer_CustomerID"); } public override async Task Select_correlated_subquery_ordered(bool isAsync) { await base.Select_correlated_subquery_ordered(isAsync); AssertSql( @"@__p_0='3' SELECT TOP @__p_0 `c`.`CustomerID` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID`", // @"SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o`", // @"SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o`", // @"SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o`"); } public override async Task Where_subquery_on_bool(bool isAsync) { await base.Where_subquery_on_bool(isAsync); AssertSql( @"SELECT `p`.`ProductID`, `p`.`Discontinued`, `p`.`ProductName`, `p`.`SupplierID`, `p`.`UnitPrice`, `p`.`UnitsInStock` FROM `Products` AS `p` WHERE 'Chai' IN ( SELECT `p0`.`ProductName` FROM `Products` AS `p0` )"); } public override async Task Where_subquery_on_collection(bool isAsync) { await base.Where_subquery_on_collection(isAsync); AssertSql( @"SELECT `p`.`ProductID`, `p`.`Discontinued`, `p`.`ProductName`, `p`.`SupplierID`, `p`.`UnitPrice`, `p`.`UnitsInStock` FROM `Products` AS `p` WHERE 5 IN ( SELECT `o`.`Quantity` FROM `Order Details` AS `o` WHERE `o`.`ProductID` = `p`.`ProductID` )"); } public override async Task Select_many_cross_join_same_collection(bool isAsync) { await base.Select_many_cross_join_same_collection(isAsync); AssertSql( @"SELECT `c0`.`CustomerID`, `c0`.`Address`, `c0`.`City`, `c0`.`CompanyName`, `c0`.`ContactName`, `c0`.`ContactTitle`, `c0`.`Country`, `c0`.`Fax`, `c0`.`Phone`, `c0`.`PostalCode`, `c0`.`Region` FROM `Customers` AS `c`, `Customers` AS `c0`"); } public override async Task OrderBy_null_coalesce_operator(bool isAsync) { await base.OrderBy_null_coalesce_operator(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY IIf(`c`.`Region` IS NULL, NULL, `c`.`Region`), `c`.`CustomerID`"); } public override async Task Select_null_coalesce_operator(bool isAsync) { await base.Select_null_coalesce_operator(isAsync); // issue #16038 // AssertSql( // @"SELECT `c`.`CustomerID`, `c`.`CompanyName`, IIf(`c`.`Region` IS NULL, NULL, `c`.`Region`) AS `Region` //FROM `Customers` AS `c` //ORDER BY `Region`, `c`.`CustomerID`"); } public override async Task OrderBy_conditional_operator(bool isAsync) { await base.OrderBy_conditional_operator(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY CASE WHEN `c`.`Region` IS NULL THEN 'ZZ' ELSE `c`.`Region` END, `c`.`CustomerID`"); } public override async Task Null_Coalesce_Short_Circuit(bool isAsync) { await base.Null_Coalesce_Short_Circuit(isAsync); AssertSql( @"@__p_0='False' SELECT `t`.`CustomerID`, `t`.`Address`, `t`.`City`, `t`.`CompanyName`, `t`.`ContactName`, `t`.`ContactTitle`, `t`.`Country`, `t`.`Fax`, `t`.`Phone`, `t`.`PostalCode`, `t`.`Region`, @__p_0 AS `Test` FROM ( SELECT DISTINCT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ) AS `t`"); } public override async Task Null_Coalesce_Short_Circuit_with_server_correlated_leftover(bool isAsync) { await base.Null_Coalesce_Short_Circuit_with_server_correlated_leftover(isAsync); AssertSql( @"SELECT False AS `Result` FROM `Customers` AS `c`"); } public override async Task OrderBy_conditional_operator_where_condition_false(bool isAsync) { await base.OrderBy_conditional_operator_where_condition_false(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`City`"); } public override async Task OrderBy_comparison_operator(bool isAsync) { await base.OrderBy_comparison_operator(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY (`c`.`Region` = 'ASK') AND `c`.`Region` IS NOT NULL"); } public override async Task Projection_null_coalesce_operator(bool isAsync) { await base.Projection_null_coalesce_operator(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`CompanyName`, IIf(`c`.`Region` IS NULL, NULL, `c`.`Region`) AS `Region` FROM `Customers` AS `c`"); } public override async Task Filter_coalesce_operator(bool isAsync) { await base.Filter_coalesce_operator(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE IIf(`c`.`CompanyName` IS NULL, NULL, `c`.`CompanyName`) = 'The Big Cheese'"); } public override async Task Take_skip_null_coalesce_operator(bool isAsync) { await base.Take_skip_null_coalesce_operator(isAsync); AssertSql( @"@__p_0='10' @__p_1='5' SELECT DISTINCT `t0`.`CustomerID`, `t0`.`Address`, `t0`.`City`, `t0`.`CompanyName`, `t0`.`ContactName`, `t0`.`ContactTitle`, `t0`.`Country`, `t0`.`Fax`, `t0`.`Phone`, `t0`.`PostalCode`, `t0`.`Region` FROM ( SELECT `t`.`CustomerID`, `t`.`Address`, `t`.`City`, `t`.`CompanyName`, `t`.`ContactName`, `t`.`ContactTitle`, `t`.`Country`, `t`.`Fax`, `t`.`Phone`, `t`.`PostalCode`, `t`.`Region`, `t`.`c` FROM ( SELECT TOP @__p_0 `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region`, IIf(`c`.`Region` IS NULL, NULL, `c`.`Region`) AS `c` FROM `Customers` AS `c` ORDER BY IIf(`c`.`Region` IS NULL, NULL, `c`.`Region`) ) AS `t` ORDER BY `t`.`c` SKIP @__p_1 ) AS `t0`"); } public override async Task Select_take_null_coalesce_operator(bool isAsync) { await base.Select_take_null_coalesce_operator(isAsync); // issue #16038 // AssertSql( // @"@__p_0='5' //SELECT TOP @__p_0 `c`.`CustomerID`, `c`.`CompanyName`, IIf(`c`.`Region` IS NULL, NULL, `c`.`Region`) AS `Region` //FROM `Customers` AS `c` //ORDER BY `Region`"); } public override async Task Select_take_skip_null_coalesce_operator(bool isAsync) { await base.Select_take_skip_null_coalesce_operator(isAsync); AssertSql( @"@__p_0='10' @__p_1='5' SELECT `t`.`CustomerID`, `t`.`CompanyName`, `t`.`c` AS `Region` FROM ( SELECT TOP @__p_0 `c`.`CustomerID`, `c`.`CompanyName`, IIf(`c`.`Region` IS NULL, NULL, `c`.`Region`) AS `c` FROM `Customers` AS `c` ORDER BY IIf(`c`.`Region` IS NULL, NULL, `c`.`Region`) ) AS `t` ORDER BY `t`.`c` SKIP @__p_1"); } public override async Task Select_take_skip_null_coalesce_operator2(bool isAsync) { await base.Select_take_skip_null_coalesce_operator2(isAsync); AssertSql( @"@__p_0='10' @__p_1='5' SELECT `t`.`CustomerID`, `t`.`CompanyName`, `t`.`Region` FROM ( SELECT TOP @__p_0 `c`.`CustomerID`, `c`.`CompanyName`, `c`.`Region`, IIf(`c`.`Region` IS NULL, NULL, `c`.`Region`) AS `c` FROM `Customers` AS `c` ORDER BY IIf(`c`.`Region` IS NULL, NULL, `c`.`Region`) ) AS `t` ORDER BY `t`.`c` SKIP @__p_1"); } public override async Task Select_take_skip_null_coalesce_operator3(bool isAsync) { await base.Select_take_skip_null_coalesce_operator3(isAsync); AssertSql( @"@__p_0='10' @__p_1='5' SELECT `t`.`CustomerID`, `t`.`Address`, `t`.`City`, `t`.`CompanyName`, `t`.`ContactName`, `t`.`ContactTitle`, `t`.`Country`, `t`.`Fax`, `t`.`Phone`, `t`.`PostalCode`, `t`.`Region` FROM ( SELECT TOP @__p_0 `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region`, IIf(`c`.`Region` IS NULL, NULL, `c`.`Region`) AS `c` FROM `Customers` AS `c` ORDER BY IIf(`c`.`Region` IS NULL, NULL, `c`.`Region`) ) AS `t` ORDER BY `t`.`c` SKIP @__p_1"); } public override void Selected_column_can_coalesce() { base.Selected_column_can_coalesce(); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY IIf(`c`.`Region` IS NULL, NULL, `c`.`Region`)"); } public override async Task DateTime_parse_is_inlined(bool isAsync) { await base.DateTime_parse_is_inlined(isAsync); AssertSql( @"SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE `o`.`OrderDate` > #01/01/1998 12:00:00#"); } public override async Task DateTime_parse_is_parameterized_when_from_closure(bool isAsync) { await base.DateTime_parse_is_parameterized_when_from_closure(isAsync); AssertSql( @"@__Parse_0='1998-01-01T12:00:00' (Nullable = true) (DbType = DateTime) SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE `o`.`OrderDate` > @__Parse_0"); } public override async Task New_DateTime_is_inlined(bool isAsync) { await base.New_DateTime_is_inlined(isAsync); AssertSql( @"SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE `o`.`OrderDate` > #01/01/1998 12:00:00#"); } public override async Task New_DateTime_is_parameterized_when_from_closure(bool isAsync) { await base.New_DateTime_is_parameterized_when_from_closure(isAsync); AssertSql( @"@__p_0='1998-01-01T12:00:00' (Nullable = true) (DbType = DateTime) SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE `o`.`OrderDate` > @__p_0", // @"@__p_0='1998-01-01T11:00:00' (Nullable = true) (DbType = DateTime) SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE `o`.`OrderDate` > @__p_0"); } public override async Task Environment_newline_is_funcletized(bool isAsync) { await base.Environment_newline_is_funcletized(isAsync); AssertSql( @"@__NewLine_0=' ' (Size = 5) SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE (@__NewLine_0 = '') OR (CHARINDEX(@__NewLine_0, `c`.`CustomerID`) > 0)"); } public override async Task String_concat_with_navigation1(bool isAsync) { await base.String_concat_with_navigation1(isAsync); AssertSql( @"SELECT (`o`.`CustomerID` + ' ') + `c`.`City` FROM `Orders` AS `o` LEFT JOIN `Customers` AS `c` ON `o`.`CustomerID` = `c`.`CustomerID`"); } public override async Task String_concat_with_navigation2(bool isAsync) { await base.String_concat_with_navigation2(isAsync); AssertSql( @"SELECT (`c`.`City` + ' ') + `c`.`City` FROM `Orders` AS `o` LEFT JOIN `Customers` AS `c` ON `o`.`CustomerID` = `c`.`CustomerID`"); } public override void Select_bitwise_or() { base.Select_bitwise_or(); AssertSql( @"SELECT `c`.`CustomerID`, IIF(`c`.`CustomerID` = 'ALFKI', 1, 0) BOR IIF(`c`.`CustomerID` = 'ANATR', 1, 0) AS `Value` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID`"); } public override void Select_bitwise_or_multiple() { base.Select_bitwise_or_multiple(); AssertSql( @"SELECT `c`.`CustomerID`, (IIF(`c`.`CustomerID` = 'ALFKI', 1, 0) BOR IIF(`c`.`CustomerID` = 'ANATR', 1, 0)) BOR IIF(`c`.`CustomerID` = 'ANTON', 1, 0) AS `Value` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID`"); } public override void Select_bitwise_and() { base.Select_bitwise_and(); AssertSql( @"SELECT `c`.`CustomerID`, IIF(`c`.`CustomerID` = 'ALFKI', 1, 0) BAND IIF(`c`.`CustomerID` = 'ANATR', 1, 0) AS `Value` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID`"); } public override void Select_bitwise_and_or() { base.Select_bitwise_and_or(); AssertSql( @"SELECT `c`.`CustomerID`, (IIF(`c`.`CustomerID` = 'ALFKI', 1, 0) BAND IIF(`c`.`CustomerID` = 'ANATR', 1, 0)) BOR IIF(`c`.`CustomerID` = 'ANTON', 1, 0) AS `Value` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID`"); } public override async Task Where_bitwise_or_with_logical_or(bool isAsync) { await base.Where_bitwise_or_with_logical_or(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE ((IIF(`c`.`CustomerID` = 'ALFKI', 1, 0) BOR IIF(`c`.`CustomerID` = 'ANATR', 1, 0)) = True) OR (`c`.`CustomerID` = 'ANTON')"); } public override async Task Where_bitwise_and_with_logical_and(bool isAsync) { await base.Where_bitwise_and_with_logical_and(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE ((IIF(`c`.`CustomerID` = 'ALFKI', 1, 0) BAND IIF(`c`.`CustomerID` = 'ANATR', 1, 0)) = True) AND (`c`.`CustomerID` = 'ANTON')"); } public override async Task Where_bitwise_or_with_logical_and(bool isAsync) { await base.Where_bitwise_or_with_logical_and(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE ((IIF(`c`.`CustomerID` = 'ALFKI', 1, 0) BOR IIF(`c`.`CustomerID` = 'ANATR', 1, 0)) = True) AND (`c`.`Country` = 'Germany')"); } public override async Task Where_bitwise_and_with_logical_or(bool isAsync) { await base.Where_bitwise_and_with_logical_or(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE ((IIF(`c`.`CustomerID` = 'ALFKI', 1, 0) BAND IIF(`c`.`CustomerID` = 'ANATR', 1, 0)) = True) OR (`c`.`CustomerID` = 'ANTON')"); } public override void Select_bitwise_or_with_logical_or() { base.Select_bitwise_or_with_logical_or(); AssertSql( @"SELECT `c`.`CustomerID`, IIF(((IIF(`c`.`CustomerID` = 'ALFKI', 1, 0) BOR IIF(`c`.`CustomerID` = 'ANATR', 1, 0)) = True) OR (`c`.`CustomerID` = 'ANTON'), 1, 0) AS `Value` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID`"); } public override void Select_bitwise_and_with_logical_and() { base.Select_bitwise_and_with_logical_and(); AssertSql( @"SELECT `c`.`CustomerID`, IIF(((IIF(`c`.`CustomerID` = 'ALFKI', 1, 0) BAND IIF(`c`.`CustomerID` = 'ANATR', 1, 0)) = True) AND (`c`.`CustomerID` = 'ANTON'), 1, 0) AS `Value` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID`"); } public override async Task Handle_materialization_properly_when_more_than_two_query_sources_are_involved(bool isAsync) { await base.Handle_materialization_properly_when_more_than_two_query_sources_are_involved(isAsync); AssertSql( @"SELECT TOP 1 `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c`, `Orders` AS `o`, `Employees` AS `e` ORDER BY `c`.`CustomerID`"); } public override async Task Parameter_extraction_short_circuits_1(bool isAsync) { await base.Parameter_extraction_short_circuits_1(isAsync); AssertSql( @"@__dateFilter_Value_Month_0='7' @__dateFilter_Value_Year_1='1996' SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE (`o`.`OrderID` < 10400) AND ((`o`.`OrderDate` IS NOT NULL AND (DATEPART('m', `o`.`OrderDate`) = @__dateFilter_Value_Month_0)) AND (DATEPART('yyyy', `o`.`OrderDate`) = @__dateFilter_Value_Year_1))", // @"SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE `o`.`OrderID` < 10400"); } public override async Task Parameter_extraction_short_circuits_2(bool isAsync) { await base.Parameter_extraction_short_circuits_2(isAsync); AssertSql( @"@__dateFilter_Value_Month_0='7' @__dateFilter_Value_Year_1='1996' SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE (`o`.`OrderID` < 10400) AND ((`o`.`OrderDate` IS NOT NULL AND (DATEPART('m', `o`.`OrderDate`) = @__dateFilter_Value_Month_0)) AND (DATEPART('yyyy', `o`.`OrderDate`) = @__dateFilter_Value_Year_1))", // @"SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE False = True"); } public override async Task Parameter_extraction_short_circuits_3(bool isAsync) { await base.Parameter_extraction_short_circuits_3(isAsync); AssertSql( @"@__dateFilter_Value_Month_0='7' @__dateFilter_Value_Year_1='1996' SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE (`o`.`OrderID` < 10400) OR ((`o`.`OrderDate` IS NOT NULL AND (DATEPART('m', `o`.`OrderDate`) = @__dateFilter_Value_Month_0)) AND (DATEPART('yyyy', `o`.`OrderDate`) = @__dateFilter_Value_Year_1))", // @"SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o`"); } public override async Task Subquery_member_pushdown_does_not_change_original_subquery_model(bool isAsync) { await base.Subquery_member_pushdown_does_not_change_original_subquery_model(isAsync); AssertSql( @"@__p_0='3' SELECT `t`.`OrderID` AS `OrderId`, ( SELECT TOP 1 `c`.`City` FROM `Customers` AS `c` WHERE `c`.`CustomerID` = `t`.`CustomerID`) AS `City` FROM ( SELECT TOP @__p_0 `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` ORDER BY `o`.`OrderID` ) AS `t` ORDER BY ( SELECT TOP 1 `c0`.`City` FROM `Customers` AS `c0` WHERE `c0`.`CustomerID` = `t`.`CustomerID`)"); } public override async Task Subquery_member_pushdown_does_not_change_original_subquery_model2(bool isAsync) { await base.Subquery_member_pushdown_does_not_change_original_subquery_model2(isAsync); AssertSql( @"@__p_0='3' SELECT `t`.`OrderID` AS `OrderId`, ( SELECT TOP 1 `c`.`City` FROM `Customers` AS `c` WHERE `c`.`CustomerID` = `t`.`CustomerID`) AS `City` FROM ( SELECT TOP @__p_0 `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` ORDER BY `o`.`OrderID` ) AS `t` ORDER BY ( SELECT TOP 1 `c0`.`City` FROM `Customers` AS `c0` WHERE `c0`.`CustomerID` = `t`.`CustomerID`)"); } public override async Task Query_expression_with_to_string_and_contains(bool isAsync) { await base.Query_expression_with_to_string_and_contains(isAsync); AssertSql( @"SELECT `o`.`CustomerID` FROM `Orders` AS `o` WHERE `o`.`OrderDate` IS NOT NULL AND (CHARINDEX('10', CONVERT(VARCHAR(10), `o`.`EmployeeID`)) > 0)"); } public override async Task Select_expression_long_to_string(bool isAsync) { await base.Select_expression_long_to_string(isAsync); AssertSql( @"SELECT CONVERT(VARCHAR(20), CAST(`o`.`OrderID` AS bigint)) AS `ShipName` FROM `Orders` AS `o` WHERE `o`.`OrderDate` IS NOT NULL"); } public override async Task Select_expression_int_to_string(bool isAsync) { await base.Select_expression_int_to_string(isAsync); AssertSql( @"SELECT CONVERT(VARCHAR(11), `o`.`OrderID`) AS `ShipName` FROM `Orders` AS `o` WHERE `o`.`OrderDate` IS NOT NULL"); } public override async Task ToString_with_formatter_is_evaluated_on_the_client(bool isAsync) { await base.ToString_with_formatter_is_evaluated_on_the_client(isAsync); AssertSql( @"SELECT `o`.`OrderID` FROM `Orders` AS `o` WHERE `o`.`OrderDate` IS NOT NULL", // @"SELECT `o`.`OrderID` FROM `Orders` AS `o` WHERE `o`.`OrderDate` IS NOT NULL"); } public override async Task Select_expression_other_to_string(bool isAsync) { await base.Select_expression_other_to_string(isAsync); AssertSql( @"SELECT CONVERT(VARCHAR(100), `o`.`OrderDate`) AS `ShipName` FROM `Orders` AS `o` WHERE `o`.`OrderDate` IS NOT NULL"); } public override async Task Select_expression_date_add_year(bool isAsync) { await base.Select_expression_date_add_year(isAsync); AssertSql( @"SELECT DATEADD('yyyy', 1, `o`.`OrderDate`) AS `OrderDate` FROM `Orders` AS `o` WHERE `o`.`OrderDate` IS NOT NULL"); } public override async Task Select_expression_datetime_add_month(bool isAsync) { await base.Select_expression_datetime_add_month(isAsync); AssertSql( @"SELECT DATEADD('m', 1, `o`.`OrderDate`) AS `OrderDate` FROM `Orders` AS `o` WHERE `o`.`OrderDate` IS NOT NULL"); } public override async Task Select_expression_datetime_add_hour(bool isAsync) { await base.Select_expression_datetime_add_hour(isAsync); AssertSql( @"SELECT DATEADD('h', CAST(1.0E0 AS int), `o`.`OrderDate`) AS `OrderDate` FROM `Orders` AS `o` WHERE `o`.`OrderDate` IS NOT NULL"); } public override async Task Select_expression_datetime_add_minute(bool isAsync) { await base.Select_expression_datetime_add_minute(isAsync); AssertSql( @"SELECT DATEADD('n', CAST(1.0E0 AS int), `o`.`OrderDate`) AS `OrderDate` FROM `Orders` AS `o` WHERE `o`.`OrderDate` IS NOT NULL"); } public override async Task Select_expression_datetime_add_second(bool isAsync) { await base.Select_expression_datetime_add_second(isAsync); AssertSql( @"SELECT DATEADD('s', CAST(1.0E0 AS int), `o`.`OrderDate`) AS `OrderDate` FROM `Orders` AS `o` WHERE `o`.`OrderDate` IS NOT NULL"); } public override async Task Select_expression_date_add_milliseconds_above_the_range(bool isAsync) { await base.Select_expression_date_add_milliseconds_above_the_range(isAsync); AssertSql( @"SELECT `o`.`OrderDate` FROM `Orders` AS `o` WHERE `o`.`OrderDate` IS NOT NULL"); } public override async Task Select_expression_date_add_milliseconds_below_the_range(bool isAsync) { await base.Select_expression_date_add_milliseconds_below_the_range(isAsync); AssertSql( @"SELECT `o`.`OrderDate` FROM `Orders` AS `o` WHERE `o`.`OrderDate` IS NOT NULL"); } public override async Task Select_expression_date_add_milliseconds_large_number_divided(bool isAsync) { await base.Select_expression_date_add_milliseconds_large_number_divided(isAsync); AssertSql( @"@__millisecondsPerDay_0='86400000' SELECT DATEADD(millisecond, IIf(CAST((CAST(DATEPART(millisecond, `o`.`OrderDate`) AS bigint) MOD @__millisecondsPerDay_0) IS NULL, NULL, CDBL(CAST((CAST(DATEPART(millisecond, `o`.`OrderDate`) AS bigint) MOD 1@__millisecondsPerDay_0))) AS int), DATEADD('d', IIf(CAST((CAST(DATEPART(millisecond, `o`.`OrderDate`) AS bigint) / @__millisecondsPerDay_0) IS NULL, NULL, CDBL(CAST((CAST(DATEPART(millisecond, `o`.`OrderDate`) AS bigint) / @__millisecondsPerDay_0))) AS int), `o`.`OrderDate`)) AS `OrderDate` FROM `Orders` AS `o` WHERE `o`.`OrderDate` IS NOT NULL"); } public override async Task Select_expression_references_are_updated_correctly_with_subquery(bool isAsync) { await base.Select_expression_references_are_updated_correctly_with_subquery(isAsync); AssertSql( @"@__nextYear_0='2017' SELECT DISTINCT DATEPART('yyyy', `o`.`OrderDate`) FROM `Orders` AS `o` WHERE `o`.`OrderDate` IS NOT NULL AND (DATEPART('yyyy', `o`.`OrderDate`) < @__nextYear_0)"); } public override void DefaultIfEmpty_without_group_join() { base.DefaultIfEmpty_without_group_join(); AssertSql( @"SELECT `t`.`CustomerID` FROM ( SELECT NULL AS `empty` ) AS `empty` LEFT JOIN ( SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE `c`.`City` = 'London' ) AS `t` ON 1 = 1 WHERE `t`.`CustomerID` IS NOT NULL"); } public override async Task DefaultIfEmpty_in_subquery(bool isAsync) { await base.DefaultIfEmpty_in_subquery(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `o`.`OrderID` FROM `Customers` AS `c` LEFT JOIN `Orders` AS `o` ON `c`.`CustomerID` = `o`.`CustomerID` WHERE `o`.`OrderID` IS NOT NULL"); } public override async Task DefaultIfEmpty_in_subquery_not_correlated(bool isAsync) { await base.DefaultIfEmpty_in_subquery_not_correlated(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `t0`.`OrderID` FROM `Customers` AS `c`, ( SELECT `t`.`OrderID`, `t`.`CustomerID`, `t`.`EmployeeID`, `t`.`OrderDate` FROM ( SELECT NULL AS `empty` ) AS `empty` LEFT JOIN ( SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE `o`.`OrderID` > 15000 ) AS `t` ON 1 = 1 ) AS `t0`"); } public override async Task DefaultIfEmpty_in_subquery_nested(bool isAsync) { await base.DefaultIfEmpty_in_subquery_nested(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `t0`.`OrderID`, `o0`.`OrderDate` FROM `Customers` AS `c`, ( SELECT `t`.`OrderID`, `t`.`CustomerID`, `t`.`EmployeeID`, `t`.`OrderDate` FROM ( SELECT NULL AS `empty` ) AS `empty` LEFT JOIN ( SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE `o`.`OrderID` > 15000 ) AS `t` ON 1 = 1 ) AS `t0` LEFT JOIN `Orders` AS `o0` ON `c`.`CustomerID` = `o0`.`CustomerID` WHERE (`c`.`City` = 'Seattle') AND (`t0`.`OrderID` IS NOT NULL AND `o0`.`OrderID` IS NOT NULL) ORDER BY `t0`.`OrderID`, `o0`.`OrderDate`"); } public override async Task OrderBy_skip_take(bool isAsync) { await base.OrderBy_skip_take(isAsync); AssertSql( @"@__p_0='5' @__p_1='8' SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`ContactTitle`, `c`.`ContactName` SKIP @__p_0 FETCH NEXT @__p_1 ROWS ONLY"); } public override async Task OrderBy_skip_skip_take(bool isAsync) { await base.OrderBy_skip_skip_take(isAsync); AssertSql( @"@__p_0='5' @__p_1='8' @__p_2='3' SELECT `t`.`CustomerID`, `t`.`Address`, `t`.`City`, `t`.`CompanyName`, `t`.`ContactName`, `t`.`ContactTitle`, `t`.`Country`, `t`.`Fax`, `t`.`Phone`, `t`.`PostalCode`, `t`.`Region` FROM ( SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`ContactTitle`, `c`.`ContactName` SKIP @__p_0 ) AS `t` ORDER BY `t`.`ContactTitle`, `t`.`ContactName` SKIP @__p_1 FETCH NEXT @__p_2 ROWS ONLY"); } public override async Task OrderBy_skip_take_take(bool isAsync) { await base.OrderBy_skip_take_take(isAsync); AssertSql( @"@__p_2='3' @__p_0='5' @__p_1='8' SELECT TOP @__p_2 `t`.`CustomerID`, `t`.`Address`, `t`.`City`, `t`.`CompanyName`, `t`.`ContactName`, `t`.`ContactTitle`, `t`.`Country`, `t`.`Fax`, `t`.`Phone`, `t`.`PostalCode`, `t`.`Region` FROM ( SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`ContactTitle`, `c`.`ContactName` SKIP @__p_0 FETCH NEXT @__p_1 ROWS ONLY ) AS `t` ORDER BY `t`.`ContactTitle`, `t`.`ContactName`"); } public override async Task OrderBy_skip_take_take_take_take(bool isAsync) { await base.OrderBy_skip_take_take_take_take(isAsync); AssertSql( @"@__p_0='5' @__p_3='8' @__p_2='10' @__p_1='15' SELECT TOP @__p_0 `t1`.`CustomerID`, `t1`.`Address`, `t1`.`City`, `t1`.`CompanyName`, `t1`.`ContactName`, `t1`.`ContactTitle`, `t1`.`Country`, `t1`.`Fax`, `t1`.`Phone`, `t1`.`PostalCode`, `t1`.`Region` FROM ( SELECT TOP @__p_3 `t0`.`CustomerID`, `t0`.`Address`, `t0`.`City`, `t0`.`CompanyName`, `t0`.`ContactName`, `t0`.`ContactTitle`, `t0`.`Country`, `t0`.`Fax`, `t0`.`Phone`, `t0`.`PostalCode`, `t0`.`Region` FROM ( SELECT TOP @__p_2 `t`.`CustomerID`, `t`.`Address`, `t`.`City`, `t`.`CompanyName`, `t`.`ContactName`, `t`.`ContactTitle`, `t`.`Country`, `t`.`Fax`, `t`.`Phone`, `t`.`PostalCode`, `t`.`Region` FROM ( SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`ContactTitle`, `c`.`ContactName` SKIP @__p_0 FETCH NEXT @__p_1 ROWS ONLY ) AS `t` ORDER BY `t`.`ContactTitle`, `t`.`ContactName` ) AS `t0` ORDER BY `t0`.`ContactTitle`, `t0`.`ContactName` ) AS `t1` ORDER BY `t1`.`ContactTitle`, `t1`.`ContactName`"); } public override async Task OrderBy_skip_take_skip_take_skip(bool isAsync) { await base.OrderBy_skip_take_skip_take_skip(isAsync); AssertSql( @"@__p_0='5' @__p_1='15' @__p_2='2' @__p_3='8' SELECT `t0`.`CustomerID`, `t0`.`Address`, `t0`.`City`, `t0`.`CompanyName`, `t0`.`ContactName`, `t0`.`ContactTitle`, `t0`.`Country`, `t0`.`Fax`, `t0`.`Phone`, `t0`.`PostalCode`, `t0`.`Region` FROM ( SELECT `t`.`CustomerID`, `t`.`Address`, `t`.`City`, `t`.`CompanyName`, `t`.`ContactName`, `t`.`ContactTitle`, `t`.`Country`, `t`.`Fax`, `t`.`Phone`, `t`.`PostalCode`, `t`.`Region` FROM ( SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`ContactTitle`, `c`.`ContactName` SKIP @__p_0 FETCH NEXT @__p_1 ROWS ONLY ) AS `t` ORDER BY `t`.`ContactTitle`, `t`.`ContactName` SKIP @__p_2 FETCH NEXT @__p_3 ROWS ONLY ) AS `t0` ORDER BY `t0`.`ContactTitle`, `t0`.`ContactName` SKIP @__p_0"); } public override async Task OrderBy_skip_take_distinct(bool isAsync) { await base.OrderBy_skip_take_distinct(isAsync); AssertSql( @"@__p_0='5' @__p_1='15' SELECT DISTINCT `t`.`CustomerID`, `t`.`Address`, `t`.`City`, `t`.`CompanyName`, `t`.`ContactName`, `t`.`ContactTitle`, `t`.`Country`, `t`.`Fax`, `t`.`Phone`, `t`.`PostalCode`, `t`.`Region` FROM ( SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`ContactTitle`, `c`.`ContactName` SKIP @__p_0 FETCH NEXT @__p_1 ROWS ONLY ) AS `t`"); } public override async Task OrderBy_coalesce_take_distinct(bool isAsync) { await base.OrderBy_coalesce_take_distinct(isAsync); AssertSql( @"@__p_0='15' SELECT DISTINCT `t`.`ProductID`, `t`.`Discontinued`, `t`.`ProductName`, `t`.`SupplierID`, `t`.`UnitPrice`, `t`.`UnitsInStock` FROM ( SELECT TOP @__p_0 `p`.`ProductID`, `p`.`Discontinued`, `p`.`ProductName`, `p`.`SupplierID`, `p`.`UnitPrice`, `p`.`UnitsInStock`, IIf(`p`.`UnitPrice` IS NULL, NULL, `p`.`UnitPrice`) AS `c` FROM `Products` AS `p` ORDER BY IIf(`p`.`UnitPrice` IS NULL, NULL, `p`.`UnitPrice`) ) AS `t`"); } public override async Task OrderBy_coalesce_skip_take_distinct(bool isAsync) { await base.OrderBy_coalesce_skip_take_distinct(isAsync); AssertSql( @"@__p_0='5' @__p_1='15' SELECT DISTINCT `t`.`ProductID`, `t`.`Discontinued`, `t`.`ProductName`, `t`.`SupplierID`, `t`.`UnitPrice`, `t`.`UnitsInStock` FROM ( SELECT `p`.`ProductID`, `p`.`Discontinued`, `p`.`ProductName`, `p`.`SupplierID`, `p`.`UnitPrice`, `p`.`UnitsInStock`, IIf(`p`.`UnitPrice` IS NULL, NULL, `p`.`UnitPrice`) AS `c` FROM `Products` AS `p` ORDER BY IIf(`p`.`UnitPrice` IS NULL, NULL, `p`.`UnitPrice`) SKIP @__p_0 FETCH NEXT @__p_1 ROWS ONLY ) AS `t`"); } public override async Task OrderBy_coalesce_skip_take_distinct_take(bool isAsync) { await base.OrderBy_coalesce_skip_take_distinct_take(isAsync); AssertSql( @"@__p_0='5' @__p_1='15' SELECT DISTINCT TOP @__p_0 `t`.`ProductID`, `t`.`Discontinued`, `t`.`ProductName`, `t`.`SupplierID`, `t`.`UnitPrice`, `t`.`UnitsInStock` FROM ( SELECT `p`.`ProductID`, `p`.`Discontinued`, `p`.`ProductName`, `p`.`SupplierID`, `p`.`UnitPrice`, `p`.`UnitsInStock`, IIf(`p`.`UnitPrice` IS NULL, NULL, `p`.`UnitPrice`) AS `c` FROM `Products` AS `p` ORDER BY IIf(`p`.`UnitPrice` IS NULL, NULL, `p`.`UnitPrice`) SKIP @__p_0 FETCH NEXT @__p_1 ROWS ONLY ) AS `t`"); } public override async Task OrderBy_skip_take_distinct_orderby_take(bool isAsync) { await base.OrderBy_skip_take_distinct_orderby_take(isAsync); AssertSql( @"@__p_2='8' @__p_0='5' @__p_1='15' SELECT TOP @__p_2 `t0`.`CustomerID`, `t0`.`Address`, `t0`.`City`, `t0`.`CompanyName`, `t0`.`ContactName`, `t0`.`ContactTitle`, `t0`.`Country`, `t0`.`Fax`, `t0`.`Phone`, `t0`.`PostalCode`, `t0`.`Region` FROM ( SELECT DISTINCT `t`.`CustomerID`, `t`.`Address`, `t`.`City`, `t`.`CompanyName`, `t`.`ContactName`, `t`.`ContactTitle`, `t`.`Country`, `t`.`Fax`, `t`.`Phone`, `t`.`PostalCode`, `t`.`Region` FROM ( SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`ContactTitle`, `c`.`ContactName` SKIP @__p_0 FETCH NEXT @__p_1 ROWS ONLY ) AS `t` ) AS `t0` ORDER BY `t0`.`ContactTitle`"); } public override async Task No_orderby_added_for_fully_translated_manually_constructed_LOJ(bool isAsync) { await base.No_orderby_added_for_fully_translated_manually_constructed_LOJ(isAsync); AssertSql( @"SELECT `e`.`City` AS `City1`, `e0`.`City` AS `City2` FROM `Employees` AS `e` LEFT JOIN `Employees` AS `e0` ON `e`.`EmployeeID` = `e0`.`ReportsTo`"); } public override async Task No_orderby_added_for_client_side_GroupJoin_dependent_to_principal_LOJ(bool isAsync) { await base.No_orderby_added_for_client_side_GroupJoin_dependent_to_principal_LOJ(isAsync); AssertSql( @"SELECT `o`.`OrderID`, `o`.`CustomerID` AS `Id1`, `o`.`EmployeeID`, `o`.`OrderDate`, `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Orders` AS `o` LEFT JOIN `Customers` AS `c` ON `o`.`CustomerID` = `c`.`CustomerID`"); } public override async Task No_orderby_added_for_client_side_GroupJoin_dependent_to_principal_LOJ_with_additional_join_condition1( bool isAsync) { await base.No_orderby_added_for_client_side_GroupJoin_dependent_to_principal_LOJ_with_additional_join_condition1(isAsync); AssertSql( @"SELECT `o`.`OrderID`, `o`.`CustomerID` AS `Id1`, `o`.`EmployeeID`, `o`.`OrderDate`, `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Orders` AS `o` LEFT JOIN `Customers` AS `c` ON (`o`.`CustomerID` = `c`.`CustomerID`) AND (`o`.`OrderID` = 10000)"); } public override async Task No_orderby_added_for_client_side_GroupJoin_dependent_to_principal_LOJ_with_additional_join_condition2( bool isAsync) { await base.No_orderby_added_for_client_side_GroupJoin_dependent_to_principal_LOJ_with_additional_join_condition2(isAsync); AssertSql( @"SELECT `o`.`OrderID`, `o`.`CustomerID` AS `Id1`, `o`.`EmployeeID`, `o`.`OrderDate`, `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Orders` AS `o` LEFT JOIN `Customers` AS `c` ON (`o`.`OrderID` = 10000) AND (`o`.`CustomerID` = `c`.`CustomerID`)"); } public override async Task Orderby_added_for_client_side_GroupJoin_principal_to_dependent_LOJ(bool isAsync) { await base.Orderby_added_for_client_side_GroupJoin_principal_to_dependent_LOJ(isAsync); AssertSql( @"SELECT `e1`.`EmployeeID`, `e1`.`City` AS `City1`, `e1`.`Country`, `e1`.`FirstName`, `e1`.`ReportsTo`, `e1`.`Title`, `e2`.`EmployeeID`, `e2`.`City`, `e2`.`Country`, `e2`.`FirstName`, `e2`.`ReportsTo`, `e2`.`Title` FROM `Employees` AS `e1` LEFT JOIN `Employees` AS `e2` ON `e1`.`EmployeeID` = `e2`.`ReportsTo` ORDER BY `e1`.`EmployeeID`"); } public override async Task Contains_with_DateTime_Date(bool isAsync) { await base.Contains_with_DateTime_Date(isAsync); AssertSql( @"SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE CONVERT(date, `o`.`OrderDate`) IN ( #07/04/1996 00:00:00#, #07/16/1996 00:00:00#)", // @"SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE CONVERT(date, `o`.`OrderDate`) IN ( #07/04/1996 00:00:00#)"); } public override async Task Contains_with_subquery_involving_join_binds_to_correct_table(bool isAsync) { await base.Contains_with_subquery_involving_join_binds_to_correct_table(isAsync); AssertSql( @"SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE (`o`.`OrderID` > 11000) AND `o`.`OrderID` IN ( SELECT `o0`.`OrderID` FROM `Order Details` AS `o0` INNER JOIN `Products` AS `p` ON `o0`.`ProductID` = `p`.`ProductID` WHERE `p`.`ProductName` = 'Chai' )"); } public override async Task Complex_query_with_repeated_query_model_compiles_correctly(bool isAsync) { await base.Complex_query_with_repeated_query_model_compiles_correctly(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE (`c`.`CustomerID` = 'ALFKI') AND EXISTS ( SELECT 1 FROM `Customers` AS `c0` WHERE EXISTS ( SELECT 1 FROM `Customers` AS `c1`))"); } public override async Task Complex_query_with_repeated_nested_query_model_compiles_correctly(bool isAsync) { await base.Complex_query_with_repeated_nested_query_model_compiles_correctly(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE (`c`.`CustomerID` = 'ALFKI') AND EXISTS ( SELECT 1 FROM `Customers` AS `c0` WHERE EXISTS ( SELECT 1 FROM `Customers` AS `c1` WHERE EXISTS ( SELECT DISTINCT 1 FROM ( SELECT TOP 10 `c2`.`CustomerID`, `c2`.`Address`, `c2`.`City`, `c2`.`CompanyName`, `c2`.`ContactName`, `c2`.`ContactTitle`, `c2`.`Country`, `c2`.`Fax`, `c2`.`Phone`, `c2`.`PostalCode`, `c2`.`Region` FROM `Customers` AS `c2` ORDER BY `c2`.`CustomerID` ) AS `t`)))"); } public override async Task Anonymous_member_distinct_where(bool isAsync) { await base.Anonymous_member_distinct_where(isAsync); AssertSql( @"SELECT DISTINCT `c`.`CustomerID` FROM `Customers` AS `c` WHERE `c`.`CustomerID` = 'ALFKI'"); } public override async Task Anonymous_member_distinct_orderby(bool isAsync) { await base.Anonymous_member_distinct_orderby(isAsync); AssertSql( @"SELECT `t`.`CustomerID` FROM ( SELECT DISTINCT `c`.`CustomerID` FROM `Customers` AS `c` ) AS `t` ORDER BY `t`.`CustomerID`"); } public override async Task Anonymous_member_distinct_result(bool isAsync) { await base.Anonymous_member_distinct_result(isAsync); AssertSql( @"SELECT COUNT(*) FROM ( SELECT DISTINCT `c`.`CustomerID` FROM `Customers` AS `c` ) AS `t` WHERE `t`.`CustomerID` LIKE 'A' & '%'"); } public override async Task Anonymous_complex_distinct_where(bool isAsync) { await base.Anonymous_complex_distinct_where(isAsync); AssertSql( @"SELECT DISTINCT `c`.`CustomerID` + `c`.`City` AS `A` FROM `Customers` AS `c` WHERE (`c`.`CustomerID` + `c`.`City`) = 'ALFKIBerlin'"); } public override async Task Anonymous_complex_distinct_orderby(bool isAsync) { await base.Anonymous_complex_distinct_orderby(isAsync); AssertSql( @"SELECT `t`.`c` AS `A` FROM ( SELECT DISTINCT `c`.`CustomerID` + `c`.`City` AS `c` FROM `Customers` AS `c` ) AS `t` ORDER BY `t`.`c`"); } public override async Task Anonymous_complex_distinct_result(bool isAsync) { await base.Anonymous_complex_distinct_result(isAsync); AssertSql( @"SELECT COUNT(*) FROM ( SELECT DISTINCT `c`.`CustomerID` + `c`.`City` AS `c` FROM `Customers` AS `c` ) AS `t` WHERE `t`.`c` IS NOT NULL AND (`t`.`c` LIKE 'A' & '%')"); } public override async Task Anonymous_complex_orderby(bool isAsync) { await base.Anonymous_complex_orderby(isAsync); AssertSql( @"SELECT `c`.`CustomerID` + `c`.`City` AS `A` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID` + `c`.`City`"); } public override async Task Anonymous_subquery_orderby(bool isAsync) { await base.Anonymous_subquery_orderby(isAsync); AssertSql( @"SELECT ( SELECT TOP 1 `o`.`OrderDate` FROM `Orders` AS `o` WHERE `c`.`CustomerID` = `o`.`CustomerID` ORDER BY `o`.`OrderID` DESC) AS `A` FROM `Customers` AS `c` WHERE ( SELECT COUNT(*) FROM `Orders` AS `o0` WHERE `c`.`CustomerID` = `o0`.`CustomerID`) > 1 ORDER BY ( SELECT TOP 1 `o1`.`OrderDate` FROM `Orders` AS `o1` WHERE `c`.`CustomerID` = `o1`.`CustomerID` ORDER BY `o1`.`OrderID` DESC)"); } public override async Task DTO_member_distinct_where(bool isAsync) { await base.DTO_member_distinct_where(isAsync); AssertSql( @"SELECT DISTINCT `c`.`CustomerID` AS `Property` FROM `Customers` AS `c` WHERE `c`.`CustomerID` = 'ALFKI'"); } public override async Task DTO_member_distinct_orderby(bool isAsync) { await base.DTO_member_distinct_orderby(isAsync); AssertSql( @"SELECT `t`.`CustomerID` AS `Property` FROM ( SELECT DISTINCT `c`.`CustomerID` FROM `Customers` AS `c` ) AS `t` ORDER BY `t`.`CustomerID`"); } public override async Task DTO_member_distinct_result(bool isAsync) { await base.DTO_member_distinct_result(isAsync); AssertSql( @"SELECT COUNT(*) FROM ( SELECT DISTINCT `c`.`CustomerID` FROM `Customers` AS `c` ) AS `t` WHERE `t`.`CustomerID` LIKE 'A' & '%'"); } public override async Task DTO_complex_distinct_where(bool isAsync) { await base.DTO_complex_distinct_where(isAsync); AssertSql( @"SELECT DISTINCT `c`.`CustomerID` + `c`.`City` AS `Property` FROM `Customers` AS `c` WHERE (`c`.`CustomerID` + `c`.`City`) = 'ALFKIBerlin'"); } public override async Task DTO_complex_distinct_orderby(bool isAsync) { await base.DTO_complex_distinct_orderby(isAsync); AssertSql( @"SELECT `t`.`c` AS `Property` FROM ( SELECT DISTINCT `c`.`CustomerID` + `c`.`City` AS `c` FROM `Customers` AS `c` ) AS `t` ORDER BY `t`.`c`"); } public override async Task DTO_complex_distinct_result(bool isAsync) { await base.DTO_complex_distinct_result(isAsync); AssertSql( @"SELECT COUNT(*) FROM ( SELECT DISTINCT `c`.`CustomerID` + `c`.`City` AS `c` FROM `Customers` AS `c` ) AS `t` WHERE `t`.`c` IS NOT NULL AND (`t`.`c` LIKE 'A' & '%')"); } public override async Task DTO_complex_orderby(bool isAsync) { await base.DTO_complex_orderby(isAsync); // issue #15994 // AssertSql( // @"SELECT `c`.`CustomerID` + `c`.`City` AS `Property` //FROM `Customers` AS `c` //ORDER BY `Property`"); } public override async Task DTO_subquery_orderby(bool isAsync) { await base.DTO_subquery_orderby(isAsync); AssertSql( @"SELECT ( SELECT TOP 1 `o`.`OrderDate` FROM `Orders` AS `o` WHERE `c`.`CustomerID` = `o`.`CustomerID` ORDER BY `o`.`OrderID` DESC) AS `Property` FROM `Customers` AS `c` WHERE ( SELECT COUNT(*) FROM `Orders` AS `o0` WHERE `c`.`CustomerID` = `o0`.`CustomerID`) > 1 ORDER BY ( SELECT TOP 1 `o1`.`OrderDate` FROM `Orders` AS `o1` WHERE `c`.`CustomerID` = `o1`.`CustomerID` ORDER BY `o1`.`OrderID` DESC)"); } public override async Task Include_with_orderby_skip_preserves_ordering(bool isAsync) { await base.Include_with_orderby_skip_preserves_ordering(isAsync); AssertSql( @"@__p_0='40' @__p_1='5' SELECT `t`.`CustomerID`, `t`.`Address`, `t`.`City`, `t`.`CompanyName`, `t`.`ContactName`, `t`.`ContactTitle`, `t`.`Country`, `t`.`Fax`, `t`.`Phone`, `t`.`PostalCode`, `t`.`Region`, `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM ( SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE (`c`.`CustomerID` <> 'VAFFE') AND (`c`.`CustomerID` <> 'DRACD') ORDER BY `c`.`City`, `c`.`CustomerID` SKIP @__p_0 FETCH NEXT @__p_1 ROWS ONLY ) AS `t` LEFT JOIN `Orders` AS `o` ON `t`.`CustomerID` = `o`.`CustomerID` ORDER BY `t`.`City`, `t`.`CustomerID`, `o`.`OrderID`"); } public override async Task Int16_parameter_can_be_used_for_int_column(bool isAsync) { await base.Int16_parameter_can_be_used_for_int_column(isAsync); AssertSql( @"SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE `o`.`OrderID` = 10300"); } public override async Task Subquery_is_null_translated_correctly(bool isAsync) { await base.Subquery_is_null_translated_correctly(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE ( SELECT TOP 1 `o`.`CustomerID` FROM `Orders` AS `o` WHERE `c`.`CustomerID` = `o`.`CustomerID` ORDER BY `o`.`OrderID` DESC) IS NULL"); } public override async Task Subquery_is_not_null_translated_correctly(bool isAsync) { await base.Subquery_is_not_null_translated_correctly(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE ( SELECT TOP 1 `o`.`CustomerID` FROM `Orders` AS `o` WHERE `c`.`CustomerID` = `o`.`CustomerID` ORDER BY `o`.`OrderID` DESC) IS NOT NULL"); } public override async Task Select_take_average(bool isAsync) { await base.Select_take_average(isAsync); AssertSql( @"@__p_0='10' SELECT AVG(IIf(`t`.`OrderID` IS NULL, NULL, CDBL(`t`.`OrderID`))) FROM ( SELECT TOP @__p_0 `o`.`OrderID` FROM `Orders` AS `o` ORDER BY `o`.`OrderID` ) AS `t`"); } public override async Task Select_take_count(bool isAsync) { await base.Select_take_count(isAsync); AssertSql( @"@__p_0='7' SELECT COUNT(*) FROM ( SELECT TOP @__p_0 `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ) AS `t`"); } public override async Task Select_orderBy_take_count(bool isAsync) { await base.Select_orderBy_take_count(isAsync); AssertSql( @"@__p_0='7' SELECT COUNT(*) FROM ( SELECT TOP @__p_0 `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`Country` ) AS `t`"); } public override async Task Select_take_long_count(bool isAsync) { await base.Select_take_long_count(isAsync); AssertSql( @"@__p_0='7' SELECT COUNT_BIG(*) FROM ( SELECT TOP @__p_0 `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ) AS `t`"); } public override async Task Select_orderBy_take_long_count(bool isAsync) { await base.Select_orderBy_take_long_count(isAsync); AssertSql( @"@__p_0='7' SELECT COUNT_BIG(*) FROM ( SELECT TOP @__p_0 `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`Country` ) AS `t`"); } public override async Task Select_take_max(bool isAsync) { await base.Select_take_max(isAsync); AssertSql( @"@__p_0='10' SELECT MAX(`t`.`OrderID`) FROM ( SELECT TOP @__p_0 `o`.`OrderID` FROM `Orders` AS `o` ORDER BY `o`.`OrderID` ) AS `t`"); } public override async Task Select_take_min(bool isAsync) { await base.Select_take_min(isAsync); AssertSql( @"@__p_0='10' SELECT MIN(`t`.`OrderID`) FROM ( SELECT TOP @__p_0 `o`.`OrderID` FROM `Orders` AS `o` ORDER BY `o`.`OrderID` ) AS `t`"); } public override async Task Select_take_sum(bool isAsync) { await base.Select_take_sum(isAsync); AssertSql( @"@__p_0='10' SELECT SUM(`t`.`OrderID`) FROM ( SELECT TOP @__p_0 `o`.`OrderID` FROM `Orders` AS `o` ORDER BY `o`.`OrderID` ) AS `t`"); } public override async Task Select_skip_average(bool isAsync) { await base.Select_skip_average(isAsync); AssertSql( @"@__p_0='10' SELECT AVG(IIf(`t`.`OrderID` IS NULL, NULL, CDBL(`t`.`OrderID`))) FROM ( SELECT `o`.`OrderID` FROM `Orders` AS `o` ORDER BY `o`.`OrderID` SKIP @__p_0 ) AS `t`"); } public override async Task Select_skip_count(bool isAsync) { await base.Select_skip_count(isAsync); AssertSql( @"@__p_0='7' SELECT COUNT(*) FROM ( SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY (SELECT 1) SKIP @__p_0 ) AS `t`"); } public override async Task Select_orderBy_skip_count(bool isAsync) { await base.Select_orderBy_skip_count(isAsync); AssertSql( @"@__p_0='7' SELECT COUNT(*) FROM ( SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`Country` SKIP @__p_0 ) AS `t`"); } public override async Task Select_skip_long_count(bool isAsync) { await base.Select_skip_long_count(isAsync); AssertSql( @"@__p_0='7' SELECT COUNT_BIG(*) FROM ( SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY (SELECT 1) SKIP @__p_0 ) AS `t`"); } public override async Task Select_orderBy_skip_long_count(bool isAsync) { await base.Select_orderBy_skip_long_count(isAsync); AssertSql( @"@__p_0='7' SELECT COUNT_BIG(*) FROM ( SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ORDER BY `c`.`Country` SKIP @__p_0 ) AS `t`"); } public override async Task Select_skip_max(bool isAsync) { await base.Select_skip_max(isAsync); AssertSql( @"@__p_0='10' SELECT MAX(`t`.`OrderID`) FROM ( SELECT `o`.`OrderID` FROM `Orders` AS `o` ORDER BY `o`.`OrderID` SKIP @__p_0 ) AS `t`"); } public override async Task Select_skip_min(bool isAsync) { await base.Select_skip_min(isAsync); AssertSql( @"@__p_0='10' SELECT MIN(`t`.`OrderID`) FROM ( SELECT `o`.`OrderID` FROM `Orders` AS `o` ORDER BY `o`.`OrderID` SKIP @__p_0 ) AS `t`"); } public override async Task Select_skip_sum(bool isAsync) { await base.Select_skip_sum(isAsync); AssertSql( @"@__p_0='10' SELECT SUM(`t`.`OrderID`) FROM ( SELECT `o`.`OrderID` FROM `Orders` AS `o` ORDER BY `o`.`OrderID` SKIP @__p_0 ) AS `t`"); } public override async Task Select_distinct_average(bool isAsync) { await base.Select_distinct_average(isAsync); AssertSql( @"SELECT AVG(IIf(`t`.`OrderID` IS NULL, NULL, CDBL(`t`.`OrderID`))) FROM ( SELECT DISTINCT `o`.`OrderID` FROM `Orders` AS `o` ) AS `t`"); } public override async Task Select_distinct_count(bool isAsync) { await base.Select_distinct_count(isAsync); AssertSql( @"SELECT COUNT(*) FROM ( SELECT DISTINCT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ) AS `t`"); } public override async Task Select_distinct_long_count(bool isAsync) { await base.Select_distinct_long_count(isAsync); AssertSql( @"SELECT COUNT_BIG(*) FROM ( SELECT DISTINCT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` ) AS `t`"); } public override async Task Select_distinct_max(bool isAsync) { await base.Select_distinct_max(isAsync); AssertSql( @"SELECT MAX(`t`.`OrderID`) FROM ( SELECT DISTINCT `o`.`OrderID` FROM `Orders` AS `o` ) AS `t`"); } public override async Task Select_distinct_min(bool isAsync) { await base.Select_distinct_min(isAsync); AssertSql( @"SELECT MIN(`t`.`OrderID`) FROM ( SELECT DISTINCT `o`.`OrderID` FROM `Orders` AS `o` ) AS `t`"); } public override async Task Select_distinct_sum(bool isAsync) { await base.Select_distinct_sum(isAsync); AssertSql( @"SELECT SUM(`t`.`OrderID`) FROM ( SELECT DISTINCT `o`.`OrderID` FROM `Orders` AS `o` ) AS `t`"); } public override async Task Comparing_to_fixed_string_parameter(bool isAsync) { await base.Comparing_to_fixed_string_parameter(isAsync); AssertSql( @"@__prefix_0='A' (Size = 4000) SELECT `c`.`CustomerID` FROM `Customers` AS `c` WHERE (@__prefix_0 = '') OR (LEFT(`c`.`CustomerID`, LEN(@__prefix_0)) = @__prefix_0)"); } public override async Task Comparing_entities_using_Equals(bool isAsync) { await base.Comparing_entities_using_Equals(isAsync); AssertSql( @"SELECT `c`.`CustomerID` AS `Id1`, `c0`.`CustomerID` AS `Id2` FROM `Customers` AS `c`, `Customers` AS `c0` WHERE (`c`.`CustomerID` LIKE 'ALFKI%') AND (`c`.`CustomerID` = `c0`.`CustomerID`) ORDER BY `c`.`CustomerID`"); } public override async Task Comparing_different_entity_types_using_Equals(bool isAsync) { await base.Comparing_different_entity_types_using_Equals(isAsync); AssertSql( @"SELECT `c`.`CustomerID` FROM `Customers` AS `c`, `Orders` AS `o` WHERE False = True"); } public override async Task Comparing_entity_to_null_using_Equals(bool isAsync) { await base.Comparing_entity_to_null_using_Equals(isAsync); AssertSql( @"SELECT `c`.`CustomerID` FROM `Customers` AS `c` WHERE `c`.`CustomerID` LIKE 'A' & '%' ORDER BY `c`.`CustomerID`"); } public override async Task Comparing_navigations_using_Equals(bool isAsync) { await base.Comparing_navigations_using_Equals(isAsync); AssertSql( @"SELECT `o`.`OrderID` AS `Id1`, `o0`.`OrderID` AS `Id2` FROM `Orders` AS `o`, `Orders` AS `o0` LEFT JOIN `Customers` AS `c` ON `o`.`CustomerID` = `c`.`CustomerID` LEFT JOIN `Customers` AS `c0` ON `o0`.`CustomerID` = `c0`.`CustomerID` WHERE (`o`.`CustomerID` IS NOT NULL AND (`o`.`CustomerID` LIKE 'A' & '%')) AND ((`c`.`CustomerID` = `c0`.`CustomerID`) OR (`c`.`CustomerID` IS NULL AND `c0`.`CustomerID` IS NULL)) ORDER BY `o`.`OrderID`, `o0`.`OrderID`"); } public override async Task Comparing_navigations_using_static_Equals(bool isAsync) { await base.Comparing_navigations_using_static_Equals(isAsync); AssertSql( @"SELECT `o`.`OrderID` AS `Id1`, `o0`.`OrderID` AS `Id2` FROM `Orders` AS `o`, `Orders` AS `o0` LEFT JOIN `Customers` AS `c` ON `o`.`CustomerID` = `c`.`CustomerID` LEFT JOIN `Customers` AS `c0` ON `o0`.`CustomerID` = `c0`.`CustomerID` WHERE (`o`.`CustomerID` IS NOT NULL AND (`o`.`CustomerID` LIKE 'A' & '%')) AND ((`c`.`CustomerID` = `c0`.`CustomerID`) OR (`c`.`CustomerID` IS NULL AND `c0`.`CustomerID` IS NULL)) ORDER BY `o`.`OrderID`, `o0`.`OrderID`"); } public override async Task Comparing_non_matching_entities_using_Equals(bool isAsync) { await base.Comparing_non_matching_entities_using_Equals(isAsync); AssertSql( @"SELECT `c`.`CustomerID` AS `Id1`, `o`.`OrderID` AS `Id2` FROM `Customers` AS `c`, `Orders` AS `o` WHERE False = True"); } public override async Task Comparing_non_matching_collection_navigations_using_Equals(bool isAsync) { await base.Comparing_non_matching_collection_navigations_using_Equals(isAsync); AssertSql( @"SELECT `c`.`CustomerID` AS `Id1`, `o`.`OrderID` AS `Id2` FROM `Customers` AS `c`, `Orders` AS `o` WHERE False = True"); } public override async Task Comparing_collection_navigation_to_null(bool isAsync) { await base.Comparing_collection_navigation_to_null(isAsync); // issue #15994 // AssertSql( // @"SELECT `c`.`CustomerID` //FROM `Customers` AS `c` //WHERE `c`.`CustomerID` IS NULL"); } public override async Task Comparing_collection_navigation_to_null_complex(bool isAsync) { await base.Comparing_collection_navigation_to_null_complex(isAsync); AssertSql( @"SELECT `o`.`ProductID`, `o`.`OrderID` FROM `Order Details` AS `o` INNER JOIN `Orders` AS `o0` ON `o`.`OrderID` = `o0`.`OrderID` LEFT JOIN `Customers` AS `c` ON `o0`.`CustomerID` = `c`.`CustomerID` WHERE (`o`.`OrderID` < 10250) AND `c`.`CustomerID` IS NOT NULL ORDER BY `o`.`OrderID`, `o`.`ProductID`"); } public override async Task Compare_collection_navigation_with_itself(bool isAsync) { await base.Compare_collection_navigation_with_itself(isAsync); AssertSql( @"SELECT `c`.`CustomerID` FROM `Customers` AS `c` WHERE `c`.`CustomerID` LIKE 'A' & '%'"); } public override async Task Compare_two_collection_navigations_with_different_query_sources(bool isAsync) { await base.Compare_two_collection_navigations_with_different_query_sources(isAsync); AssertSql( @"SELECT `c`.`CustomerID` AS `Id1`, `c0`.`CustomerID` AS `Id2` FROM `Customers` AS `c`, `Customers` AS `c0` WHERE ((`c`.`CustomerID` = 'ALFKI') AND (`c0`.`CustomerID` = 'ALFKI')) AND (`c`.`CustomerID` = `c0`.`CustomerID`)"); } public override async Task Compare_two_collection_navigations_using_equals(bool isAsync) { await base.Compare_two_collection_navigations_using_equals(isAsync); AssertSql( @"SELECT `c`.`CustomerID` AS `Id1`, `c0`.`CustomerID` AS `Id2` FROM `Customers` AS `c`, `Customers` AS `c0` WHERE ((`c`.`CustomerID` = 'ALFKI') AND (`c0`.`CustomerID` = 'ALFKI')) AND (`c`.`CustomerID` = `c0`.`CustomerID`)"); } public override async Task Compare_two_collection_navigations_with_different_property_chains(bool isAsync) { await base.Compare_two_collection_navigations_with_different_property_chains(isAsync); // issue #15994 // AssertSql( // @"SELECT `c`.`CustomerID` AS `Id1`, `o`.`OrderID` AS `Id2` //FROM `Customers` AS `c` //CROSS JOIN `Orders` AS `o` //LEFT JOIN `Customers` AS [join.Customer] ON `o`.`CustomerID` = [join.Customer].`CustomerID` //WHERE (`c`.`CustomerID` = 'ALFKI') AND (`c`.`CustomerID` = [join.Customer].`CustomerID`) //ORDER BY `Id1`, `Id2`"); } public override async Task OrderBy_ThenBy_same_column_different_direction(bool isAsync) { await base.OrderBy_ThenBy_same_column_different_direction(isAsync); AssertSql( @"SELECT `c`.`CustomerID` FROM `Customers` AS `c` WHERE `c`.`CustomerID` LIKE 'A' & '%' ORDER BY `c`.`CustomerID`"); } public override async Task OrderBy_OrderBy_same_column_different_direction(bool isAsync) { await base.OrderBy_OrderBy_same_column_different_direction(isAsync); AssertSql( @"SELECT `c`.`CustomerID` FROM `Customers` AS `c` WHERE `c`.`CustomerID` LIKE 'A' & '%' ORDER BY `c`.`CustomerID` DESC"); } public override async Task Complex_nested_query_doesnt_try_binding_to_grandparent_when_parent_returns_complex_result(bool isAsync) { await base.Complex_nested_query_doesnt_try_binding_to_grandparent_when_parent_returns_complex_result(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `t`.`c`, `t`.`CustomerID`, `t`.`OrderID` FROM `Customers` AS `c` OUTER APPLY ( SELECT ( SELECT COUNT(*) FROM `Orders` AS `o` WHERE `c`.`CustomerID` = `o`.`CustomerID`) AS `c`, `c`.`CustomerID`, `o0`.`OrderID` FROM `Orders` AS `o0` WHERE `c`.`CustomerID` = `o0`.`CustomerID` ) AS `t` WHERE `c`.`CustomerID` = 'ALFKI' ORDER BY `c`.`CustomerID`, `t`.`OrderID`"); } public override async Task Complex_nested_query_properly_binds_to_grandparent_when_parent_returns_scalar_result(bool isAsync) { await base.Complex_nested_query_properly_binds_to_grandparent_when_parent_returns_scalar_result(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, ( SELECT COUNT(*) FROM `Orders` AS `o` WHERE (`c`.`CustomerID` = `o`.`CustomerID`) AND (( SELECT COUNT(*) FROM `Orders` AS `o0` WHERE `c`.`CustomerID` = `o0`.`CustomerID`) > 0)) AS `OuterOrders` FROM `Customers` AS `c` WHERE `c`.`CustomerID` = 'ALFKI'"); } public override async Task OrderBy_Dto_projection_skip_take(bool isAsync) { await base.OrderBy_Dto_projection_skip_take(isAsync); AssertSql( @"@__p_0='5' @__p_1='10' SELECT `c`.`CustomerID` AS `Id` FROM `Customers` AS `c` ORDER BY `c`.`CustomerID` SKIP @__p_0 FETCH NEXT @__p_1 ROWS ONLY"); } public override void Streaming_chained_sync_query() { base.Streaming_chained_sync_query(); AssertSql( @"SELECT `c`.`CustomerID` FROM `Customers` AS `c`", // @"@_outer_CustomerID='ALFKI' (Size = 5) SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE `o`.`CustomerID` = @_outer_CustomerID", // @"SELECT [y.Customer].`CustomerID`, [y.Customer].`Address`, [y.Customer].`City`, [y.Customer].`CompanyName`, [y.Customer].`ContactName`, [y.Customer].`ContactTitle`, [y.Customer].`Country`, [y.Customer].`Fax`, [y.Customer].`Phone`, [y.Customer].`PostalCode`, [y.Customer].`Region` FROM `Customers` AS [y.Customer]", // @"@_outer_CustomerID='ANATR' (Size = 5) SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` WHERE `o`.`CustomerID` = @_outer_CustomerID"); } public override async Task Join_take_count_works(bool isAsync) { await base.Join_take_count_works(isAsync); AssertSql( @"@__p_0='5' SELECT COUNT(*) FROM ( SELECT TOP @__p_0 `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate`, `t`.`CustomerID` AS `CustomerID0` FROM `Orders` AS `o` INNER JOIN ( SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE `c`.`CustomerID` = 'ALFKI' ) AS `t` ON `o`.`CustomerID` = `t`.`CustomerID` WHERE (`o`.`OrderID` > 690) AND (`o`.`OrderID` < 710) ) AS `t0`"); } public override async Task OrderBy_empty_list_contains(bool isAsync) { await base.OrderBy_empty_list_contains(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c`"); } public override async Task OrderBy_empty_list_does_not_contains(bool isAsync) { await base.OrderBy_empty_list_does_not_contains(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c`"); } public override void Manual_expression_tree_typed_null_equality() { base.Manual_expression_tree_typed_null_equality(); AssertSql( @"SELECT `c`.`City` FROM `Orders` AS `o` LEFT JOIN `Customers` AS `c` ON `o`.`CustomerID` = `c`.`CustomerID` WHERE `o`.`OrderID` < 10300"); } public override async Task Let_subquery_with_multiple_occurrences(bool isAsync) { await base.Let_subquery_with_multiple_occurrences(isAsync); AssertSql( @"SELECT ( SELECT COUNT(*) FROM `Order Details` AS `o` WHERE (`o0`.`OrderID` = `o`.`OrderID`) AND (`o`.`Quantity` < 10)) AS `Count` FROM `Orders` AS `o0` WHERE EXISTS ( SELECT 1 FROM `Order Details` AS `o1` WHERE (`o0`.`OrderID` = `o1`.`OrderID`) AND (`o1`.`Quantity` < 10))"); } public override async Task Let_entity_equality_to_null(bool isAsync) { await base.Let_entity_equality_to_null(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, ( SELECT TOP 1 `o`.`OrderDate` FROM `Orders` AS `o` WHERE `c`.`CustomerID` = `o`.`CustomerID` ORDER BY `o`.`OrderDate`) AS `OrderDate` FROM `Customers` AS `c` WHERE (`c`.`CustomerID` LIKE 'A' & '%') AND ( SELECT TOP 1 `o0`.`OrderID` FROM `Orders` AS `o0` WHERE `c`.`CustomerID` = `o0`.`CustomerID` ORDER BY `o0`.`OrderDate`) IS NOT NULL"); } public override async Task Let_entity_equality_to_other_entity(bool isAsync) { await base.Let_entity_equality_to_other_entity(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, ( SELECT TOP 1 `o`.`OrderDate` FROM `Orders` AS `o` WHERE `c`.`CustomerID` = `o`.`CustomerID` ORDER BY `o`.`OrderDate`) AS `A` FROM `Customers` AS `c` WHERE (`c`.`CustomerID` LIKE 'A' & '%') AND ((( SELECT TOP 1 `o0`.`OrderID` FROM `Orders` AS `o0` WHERE `c`.`CustomerID` = `o0`.`CustomerID` ORDER BY `o0`.`OrderDate`) <> 0) OR ( SELECT TOP 1 `o0`.`OrderID` FROM `Orders` AS `o0` WHERE `c`.`CustomerID` = `o0`.`CustomerID` ORDER BY `o0`.`OrderDate`) IS NULL)"); } public override async Task Collection_navigation_equal_to_null_for_subquery(bool isAsync) { await base.Collection_navigation_equal_to_null_for_subquery(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE ( SELECT TOP 1 `o`.`OrderID` FROM `Orders` AS `o` WHERE `c`.`CustomerID` = `o`.`CustomerID` ORDER BY `o`.`OrderID`) IS NULL"); } public override async Task Dependent_to_principal_navigation_equal_to_null_for_subquery(bool isAsync) { await base.Dependent_to_principal_navigation_equal_to_null_for_subquery(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE ( SELECT TOP 1 `c0`.`CustomerID` FROM `Orders` AS `o` LEFT JOIN `Customers` AS `c0` ON `o`.`CustomerID` = `c0`.`CustomerID` WHERE `c`.`CustomerID` = `o`.`CustomerID` ORDER BY `o`.`OrderID`) IS NULL"); } public override async Task Collection_navigation_equality_rewrite_for_subquery(bool isAsync) { await base.Collection_navigation_equality_rewrite_for_subquery(isAsync); // issue #15994 // AssertSql( // @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` //FROM `Customers` AS `c` //WHERE `c`.`CustomerID` LIKE 'A' & '%' AND (( // SELECT TOP 1 `o`.`OrderID` // FROM `Orders` AS `o` // WHERE `o`.`OrderID` < 10300 // ORDER BY `o`.`OrderID` //) = ( // SELECT TOP 1 `o0`.`OrderID` // FROM `Orders` AS `o0` // WHERE `o0`.`OrderID` > 10500 // ORDER BY `o0`.`OrderID` //))"); } public override async Task Inner_parameter_in_nested_lambdas_gets_preserved(bool isAsync) { await base.Inner_parameter_in_nested_lambdas_gets_preserved(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `c`.`Address`, `c`.`City`, `c`.`CompanyName`, `c`.`ContactName`, `c`.`ContactTitle`, `c`.`Country`, `c`.`Fax`, `c`.`Phone`, `c`.`PostalCode`, `c`.`Region` FROM `Customers` AS `c` WHERE ( SELECT COUNT(*) FROM `Orders` AS `o` WHERE (`c`.`CustomerID` = `o`.`CustomerID`) AND (`c`.`CustomerID` = `o`.`CustomerID`)) > 0"); } public override async Task Convert_to_nullable_on_nullable_value_is_ignored(bool isAsync) { await base.Convert_to_nullable_on_nullable_value_is_ignored(isAsync); AssertSql( @"SELECT `o`.`OrderDate` FROM `Orders` AS `o`"); } public override async Task Navigation_inside_interpolated_string_is_expanded(bool isAsync) { await base.Navigation_inside_interpolated_string_is_expanded(isAsync); AssertSql( @"SELECT `c`.`City` FROM `Orders` AS `o` LEFT JOIN `Customers` AS `c` ON `o`.`CustomerID` = `c`.`CustomerID`"); } public override async Task OrderBy_object_type_server_evals(bool isAsync) { await base.OrderBy_object_type_server_evals(isAsync); AssertSql( @"@__p_0='0' @__p_1='20' SELECT `o`.`OrderID`, `o`.`CustomerID`, `o`.`EmployeeID`, `o`.`OrderDate` FROM `Orders` AS `o` LEFT JOIN `Customers` AS `c` ON `o`.`CustomerID` = `c`.`CustomerID` ORDER BY `o`.`OrderID`, `o`.`OrderDate`, `c`.`CustomerID`, `c`.`City` SKIP @__p_0 FETCH NEXT @__p_1 ROWS ONLY"); } public override async Task AsQueryable_in_query_server_evals(bool isAsync) { await base.AsQueryable_in_query_server_evals(isAsync); AssertSql( @"SELECT `c`.`CustomerID`, `t`.`OrderDate`, `t`.`OrderID` FROM `Customers` AS `c` OUTER APPLY ( SELECT TOP 1 `o`.`OrderDate`, `o`.`OrderID` FROM `Orders` AS `o` WHERE (`c`.`CustomerID` = `o`.`CustomerID`) AND (DATEPART('yyyy', `o`.`OrderDate`) = 1998) ORDER BY `o`.`OrderID` ) AS `t` ORDER BY `c`.`CustomerID`, `t`.`OrderID`"); } private void AssertSql(params string[] expected) => Fixture.TestSqlLoggerFactory.AssertBaseline(expected); protected override void ClearLog() => Fixture.TestSqlLoggerFactory.Clear(); } }