// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using Microsoft.EntityFrameworkCore.Internal; using Xunit; namespace EntityFramework.Jet.FunctionalTests.Query { public partial class SimpleQueryJetTest { private const string ConvertParams = null; public override void Where_simple() { base.Where_simple(); 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'"); } public override void Where_as_queryable_expression() { base.Where_as_queryable_expression(); 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 ( SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate] FROM [Orders] AS [o] WHERE [c].[CustomerID] = [o].[CustomerID] ) AS [t] WHERE [t].[CustomerID] = 'ALFKI')"); } public override void Where_simple_closure() { base.Where_simple_closure(); AssertSql( @"@__city_0='London' (Nullable = false) (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] FROM [Customers] AS [c] WHERE [c].[City] = @__city_0"); } public override void Where_indexer_closure() { base.Where_indexer_closure(); AssertSql( @"@__p_0='London' (Nullable = false) (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] FROM [Customers] AS [c] WHERE [c].[City] = @__p_0"); } public override void Where_dictionary_key_access_closure() { base.Where_dictionary_key_access_closure(); AssertSql( @"@__get_Item_0='London' (Nullable = false) (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] FROM [Customers] AS [c] WHERE [c].[City] = @__get_Item_0"); } public override void Where_tuple_item_closure() { base.Where_tuple_item_closure(); AssertSql( @"@__predicateTuple_Item2_0='London' (Nullable = false) (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] FROM [Customers] AS [c] WHERE [c].[City] = @__predicateTuple_Item2_0"); } public override void Where_named_tuple_item_closure() { base.Where_named_tuple_item_closure(); AssertSql( @"@__predicateTuple_Item2_0='London' (Nullable = false) (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] FROM [Customers] AS [c] WHERE [c].[City] = @__predicateTuple_Item2_0"); } public override void Where_simple_closure_constant() { base.Where_simple_closure_constant(); AssertSql( @"@__predicate_0='True' 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 @__predicate_False = True"); } public override void Where_simple_closure_via_query_cache() { base.Where_simple_closure_via_query_cache(); AssertSql( @"@__city_0='London' (Nullable = false) (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] FROM [Customers] AS [c] WHERE [c].[City] = @__city_0", // @"@__city_0='Seattle' (Nullable = false) (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] FROM [Customers] AS [c] WHERE [c].[City] = @__city_0"); } public override void Where_method_call_nullable_type_closure_via_query_cache() { base.Where_method_call_nullable_type_closure_via_query_cache(); AssertSql( @"@__city_Int_0='2' SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE [e].[ReportsTo] = @__city_Int_0", // @"@__city_Int_0='5' SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE [e].[ReportsTo] = @__city_Int_0"); } public override void Where_method_call_nullable_type_reverse_closure_via_query_cache() { base.Where_method_call_nullable_type_reverse_closure_via_query_cache(); AssertSql( @"@__city_NullableInt_0='1' (Nullable = true) SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE [e].[EmployeeID] > @__city_NullableInt_0", // @"@__city_NullableInt_0='5' (Nullable = true) SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE [e].[EmployeeID] > @__city_NullableInt_0"); } public override void Where_method_call_closure_via_query_cache() { base.Where_method_call_closure_via_query_cache(); AssertSql( @"@__GetCity_0='London' (Nullable = false) (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] FROM [Customers] AS [c] WHERE [c].[City] = @__GetCity_0", // @"@__GetCity_0='Seattle' (Nullable = false) (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] FROM [Customers] AS [c] WHERE [c].[City] = @__GetCity_0"); } public override void Where_field_access_closure_via_query_cache() { base.Where_field_access_closure_via_query_cache(); AssertSql( @"@__city_InstanceFieldValue_0='London' (Nullable = false) (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] FROM [Customers] AS [c] WHERE [c].[City] = @__city_InstanceFieldValue_0", // @"@__city_InstanceFieldValue_0='Seattle' (Nullable = false) (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] FROM [Customers] AS [c] WHERE [c].[City] = @__city_InstanceFieldValue_0"); } public override void Where_property_access_closure_via_query_cache() { base.Where_property_access_closure_via_query_cache(); AssertSql( @"@__city_InstancePropertyValue_0='London' (Nullable = false) (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] FROM [Customers] AS [c] WHERE [c].[City] = @__city_InstancePropertyValue_0", // @"@__city_InstancePropertyValue_0='Seattle' (Nullable = false) (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] FROM [Customers] AS [c] WHERE [c].[City] = @__city_InstancePropertyValue_0"); } public override void Where_static_field_access_closure_via_query_cache() { base.Where_static_field_access_closure_via_query_cache(); AssertSql( @"@__StaticFieldValue_0='London' (Nullable = false) (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] FROM [Customers] AS [c] WHERE [c].[City] = @__StaticFieldValue_0", // @"@__StaticFieldValue_0='Seattle' (Nullable = false) (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] FROM [Customers] AS [c] WHERE [c].[City] = @__StaticFieldValue_0"); } public override void Where_static_property_access_closure_via_query_cache() { base.Where_static_property_access_closure_via_query_cache(); AssertSql( @"@__StaticPropertyValue_0='London' (Nullable = false) (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] FROM [Customers] AS [c] WHERE [c].[City] = @__StaticPropertyValue_0", // @"@__StaticPropertyValue_0='Seattle' (Nullable = false) (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] FROM [Customers] AS [c] WHERE [c].[City] = @__StaticPropertyValue_0"); } public override void Where_nested_field_access_closure_via_query_cache() { base.Where_nested_field_access_closure_via_query_cache(); AssertSql( @"@__city_Nested_InstanceFieldValue_0='London' (Nullable = false) (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] FROM [Customers] AS [c] WHERE [c].[City] = @__city_Nested_InstanceFieldValue_0", // @"@__city_Nested_InstanceFieldValue_0='Seattle' (Nullable = false) (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] FROM [Customers] AS [c] WHERE [c].[City] = @__city_Nested_InstanceFieldValue_0"); } public override void Where_nested_property_access_closure_via_query_cache() { base.Where_nested_property_access_closure_via_query_cache(); AssertSql( @"@__city_Nested_InstancePropertyValue_0='London' (Nullable = false) (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] FROM [Customers] AS [c] WHERE [c].[City] = @__city_Nested_InstancePropertyValue_0", // @"@__city_Nested_InstancePropertyValue_0='Seattle' (Nullable = false) (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] FROM [Customers] AS [c] WHERE [c].[City] = @__city_Nested_InstancePropertyValue_0"); } public override void Where_new_instance_field_access_closure_via_query_cache() { base.Where_new_instance_field_access_closure_via_query_cache(); AssertSql( @"@__InstanceFieldValue_0='London' (Nullable = false) (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] FROM [Customers] AS [c] WHERE [c].[City] = @__InstanceFieldValue_0", // @"@__InstanceFieldValue_0='Seattle' (Nullable = false) (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] FROM [Customers] AS [c] WHERE [c].[City] = @__InstanceFieldValue_0"); } public override void Where_simple_closure_via_query_cache_nullable_type() { base.Where_simple_closure_via_query_cache_nullable_type(); AssertSql( @"@__reportsTo_0='2' (Nullable = true) SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE [e].[ReportsTo] = @__reportsTo_0", // @"@__reportsTo_0='5' (Nullable = true) SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE [e].[ReportsTo] = @__reportsTo_0", // @"SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE [e].[ReportsTo] IS NULL"); } public override void Where_simple_closure_via_query_cache_nullable_type_reverse() { base.Where_simple_closure_via_query_cache_nullable_type_reverse(); AssertSql( @"SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE [e].[ReportsTo] IS NULL", // @"@__reportsTo_0='5' (Nullable = true) SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE [e].[ReportsTo] = @__reportsTo_0", // @"@__reportsTo_0='2' (Nullable = true) SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE [e].[ReportsTo] = @__reportsTo_0"); } public override void Where_subquery_closure_via_query_cache() { base.Where_subquery_closure_via_query_cache(); AssertSql( @"@__customerID_0='ALFKI' (Nullable = false) (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 EXISTS ( SELECT 1 FROM [Orders] AS [o] WHERE ([o].[CustomerID] = @__customerID_0) AND ([o].[CustomerID] = [c].[CustomerID]))", // @"@__customerID_0='ANATR' (Nullable = false) (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 EXISTS ( SELECT 1 FROM [Orders] AS [o] WHERE ([o].[CustomerID] = @__customerID_0) AND ([o].[CustomerID] = [c].[CustomerID]))"); } public override void Where_simple_shadow() { base.Where_simple_shadow(); AssertSql( @"SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE [e].[Title] = 'Sales Representative'"); } public override void Where_simple_shadow_projection() { base.Where_simple_shadow_projection(); AssertSql( @"SELECT [e].[Title] FROM [Employees] AS [e] WHERE [e].[Title] = 'Sales Representative'"); } public override void Where_shadow_subquery_FirstOrDefault() { base.Where_shadow_subquery_FirstOrDefault(); AssertSql( @"SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE [e].[Title] = ( SELECT TOP 1 [e2].[Title] FROM [Employees] AS [e2] ORDER BY [e2].[Title] )"); } public override void Where_client() { base.Where_client(); 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 Where_subquery_correlated() { base.Where_subquery_correlated(); AssertSql( @"SELECT [c1].[CustomerID], [c1].[Address], [c1].[City], [c1].[CompanyName], [c1].[ContactName], [c1].[ContactTitle], [c1].[Country], [c1].[Fax], [c1].[Phone], [c1].[PostalCode], [c1].[Region] FROM [Customers] AS [c1] WHERE EXISTS ( SELECT 1 FROM [Customers] AS [c2] WHERE [c1].[CustomerID] = [c2].[CustomerID])"); } public override void Where_subquery_correlated_client_eval() { base.Where_subquery_correlated_client_eval(); 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 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] ORDER BY [t].[CustomerID]", // @"@_outer_CustomerID='ALFKI' (Nullable = false) (Size = 5) SELECT [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] WHERE @_outer_CustomerID = [c2].[CustomerID]", // @"@_outer_CustomerID='ANATR' (Nullable = false) (Size = 5) SELECT [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] WHERE @_outer_CustomerID = [c2].[CustomerID]", // @"@_outer_CustomerID='ANTON' (Nullable = false) (Size = 5) SELECT [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] WHERE @_outer_CustomerID = [c2].[CustomerID]", // @"@_outer_CustomerID='AROUT' (Nullable = false) (Size = 5) SELECT [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] WHERE @_outer_CustomerID = [c2].[CustomerID]", // @"@_outer_CustomerID='BERGS' (Nullable = false) (Size = 5) SELECT [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] WHERE @_outer_CustomerID = [c2].[CustomerID]"); } public override void Where_client_and_server_top_level() { base.Where_client_and_server_top_level(); 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] <> 'AROUT'"); } public override void Where_client_or_server_top_level() { base.Where_client_or_server_top_level(); 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 Where_client_and_server_non_top_level() { base.Where_client_and_server_non_top_level(); 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 Where_client_deep_inside_predicate_and_server_top_level() { base.Where_client_deep_inside_predicate_and_server_top_level(); 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'"); } public override void Where_equals_method_string() { base.Where_equals_method_string(); 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'"); } public override void Where_equals_method_int() { base.Where_equals_method_int(); AssertSql( @"SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE [e].[EmployeeID] = 1"); } public override void Where_equals_using_object_overload_on_mismatched_types() { base.Where_equals_using_object_overload_on_mismatched_types(); AssertSql( @"SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE False = True"); Assert.Contains(RelationalStrings.LogPossibleUnintendedUseOfEquals.GenerateMessage($"e.EmployeeID.Equals(Convert(__longPrm_0{ConvertParams}))"), Fixture.TestSqlLoggerFactory.Log); } #if !Test20 public override void Where_equals_using_int_overload_on_mismatched_types() { base.Where_equals_using_int_overload_on_mismatched_types(); AssertSql( @"@__shortPrm_0='1' SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE [e].[EmployeeID] = @__shortPrm_0"); } #endif public override void Where_equals_on_mismatched_types_nullable_int_long() { base.Where_equals_on_mismatched_types_nullable_int_long(); AssertSql( @"SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE False = True", // @"SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE False = True"); Assert.Contains(RelationalStrings.LogPossibleUnintendedUseOfEquals.GenerateMessage($"__longPrm_0.Equals(Convert(e.ReportsTo{ConvertParams}))"), Fixture.TestSqlLoggerFactory.Log); Assert.Contains(RelationalStrings.LogPossibleUnintendedUseOfEquals.GenerateMessage($"e.ReportsTo.Equals(Convert(__longPrm_0{ConvertParams}))"), Fixture.TestSqlLoggerFactory.Log); } public override void Where_equals_on_mismatched_types_nullable_long_nullable_int() { base.Where_equals_on_mismatched_types_nullable_long_nullable_int(); AssertSql( @"SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE False = True", // @"SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE False = True"); Assert.Contains(RelationalStrings.LogPossibleUnintendedUseOfEquals.GenerateMessage($"__nullableLongPrm_0.Equals(Convert(e.ReportsTo{ConvertParams}))"), Fixture.TestSqlLoggerFactory.Log); Assert.Contains(RelationalStrings.LogPossibleUnintendedUseOfEquals.GenerateMessage($"e.ReportsTo.Equals(Convert(__nullableLongPrm_0{ConvertParams}))"), Fixture.TestSqlLoggerFactory.Log); } public override void Where_equals_on_mismatched_types_int_nullable_int() { base.Where_equals_on_mismatched_types_int_nullable_int(); AssertSql( @"@__intPrm_0='2' SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE [e].[ReportsTo] = @__intPrm_0", // @"@__intPrm_0='2' SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE @__intPrm_0 = [e].[ReportsTo]"); } public override void Where_equals_on_matched_nullable_int_types() { base.Where_equals_on_matched_nullable_int_types(); AssertSql( @"@__nullableIntPrm_0='2' (Nullable = true) SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE @__nullableIntPrm_0 = [e].[ReportsTo]", // @"@__nullableIntPrm_0='2' (Nullable = true) SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE [e].[ReportsTo] = @__nullableIntPrm_0"); } public override void Where_equals_on_null_nullable_int_types() { base.Where_equals_on_null_nullable_int_types(); AssertSql( @"SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE [e].[ReportsTo] IS NULL", // @"SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE [e].[ReportsTo] IS NULL"); } public override void Where_comparison_nullable_type_not_null() { base.Where_comparison_nullable_type_not_null(); AssertSql( @"SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE [e].[ReportsTo] = 2"); } public override void Where_comparison_nullable_type_null() { base.Where_comparison_nullable_type_null(); AssertSql( @"SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE [e].[ReportsTo] IS NULL"); } public override void Where_string_length() { base.Where_string_length(); 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 CAST(LEN([c].[City]) AS int) = 6"); } #if !Test20 public override void Where_string_indexof() { base.Where_string_indexof(); 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 (Instr(1, N'Sea', [c].[City]) - 1) <> -1"); } #endif public override void Where_string_replace() { base.Where_string_replace(); 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 REPLACE([c].[City], 'Sea', 'Rea') = 'Reattle'"); } public override void Where_string_substring() { base.Where_string_substring(); 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 SUBSTRING([c].[City], 2, 2) = 'ea'"); } #if !Test20 public override void Where_datetime_now() { base.Where_datetime_now(); AssertSql( @"@__myDatetime_0='2015-04-10T00:00:00' 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 GETDATE() <> @__myDatetime_0"); } public override void Where_datetime_utcnow() { base.Where_datetime_utcnow(); AssertSql( @"@__myDatetime_0='2015-04-10T00:00:00' 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 GETUTCDATE() <> @__myDatetime_0"); } public override void Where_datetime_today() { base.Where_datetime_today(); AssertSql( @"SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title] FROM [Employees] AS [e] WHERE CONVERT(date, GETDATE()) = CONVERT(date, GETDATE())"); } public override void Where_datetime_date_component() { base.Where_datetime_date_component(); AssertSql( @"@__myDatetime_0='1998-05-04T00:00:00' (DbType = DateTime) SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate] FROM [Orders] AS [o] WHERE CONVERT(date, [o].[OrderDate]) = @__myDatetime_0"); } public override void Where_date_add_year_constant_component() { base.Where_date_add_year_constant_component(); AssertSql( @"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate] FROM [Orders] AS [o] WHERE DatePart('yyyy', DATEADD(year, -1, [o].[OrderDate])) = 1997"); } public override void Where_datetime_year_component() { base.Where_datetime_year_component(); AssertSql( @"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate] FROM [Orders] AS [o] WHERE DatePart('yyyy', [o].[OrderDate]) = 1998"); } public override void Where_datetime_month_component() { base.Where_datetime_month_component(); AssertSql( @"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate] FROM [Orders] AS [o] WHERE DatePart('m', [o].[OrderDate]) = 4"); } public override void Where_datetime_dayOfYear_component() { base.Where_datetime_dayOfYear_component(); AssertSql( @"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate] FROM [Orders] AS [o] WHERE DATEPART(dayofyear, [o].[OrderDate]) = 68"); } public override void Where_datetime_day_component() { base.Where_datetime_day_component(); AssertSql( @"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate] FROM [Orders] AS [o] WHERE DatePart('d', [o].[OrderDate]) = 4"); } public override void Where_datetime_hour_component() { base.Where_datetime_hour_component(); AssertSql( @"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate] FROM [Orders] AS [o] WHERE DatePart('h', [o].[OrderDate]) = 14"); } public override void Where_datetime_minute_component() { base.Where_datetime_minute_component(); AssertSql( @"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate] FROM [Orders] AS [o] WHERE DatePart('n', [o].[OrderDate]) = 23"); } public override void Where_datetime_second_component() { base.Where_datetime_second_component(); AssertSql( @"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate] FROM [Orders] AS [o] WHERE DatePart('s', [o].[OrderDate]) = 44"); } public override void Where_datetime_millisecond_component() { base.Where_datetime_millisecond_component(); AssertSql( @"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate] FROM [Orders] AS [o] WHERE DATEPART(millisecond, [o].[OrderDate]) = 88"); } public override void Where_datetimeoffset_now_component() { base.Where_datetimeoffset_now_component(); AssertSql( @"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate] FROM [Orders] AS [o] WHERE [o].[OrderDate] = SYSDATETIMEOFFSET()"); } public override void Where_datetimeoffset_utcnow_component() { base.Where_datetimeoffset_utcnow_component(); AssertSql( @"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate] FROM [Orders] AS [o] WHERE [o].[OrderDate] = CAST(SYSUTCDATETIME() AS datetimeoffset)"); } #endif public override void Where_simple_reversed() { base.Where_simple_reversed(); 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 'London' = [c].[City]"); } public override void Where_is_null() { base.Where_is_null(); 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] IS NULL"); } public override void Where_null_is_null() { base.Where_null_is_null(); 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 Where_constant_is_null() { base.Where_constant_is_null(); 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 False = True"); } public override void Where_is_not_null() { base.Where_is_not_null(); 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] IS NOT NULL"); } public override void Where_null_is_not_null() { base.Where_null_is_not_null(); 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 False = True"); } public override void Where_constant_is_not_null() { base.Where_constant_is_not_null(); 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 Where_identity_comparison() { base.Where_identity_comparison(); 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] = [c].[City]) OR ([c].[City] IS NULL AND [c].[City] IS NULL)"); } public override void Where_in_optimization_multiple() { base.Where_in_optimization_multiple(); 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] IN ('London', 'Berlin') OR ([c].[CustomerID] = 'ALFKI')) OR ([c].[CustomerID] = 'ABCDE')"); } public override void Where_not_in_optimization1() { base.Where_not_in_optimization1(); 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] IS NULL) AND (([e].[City] <> 'London') OR [e].[City] IS NULL)"); } public override void Where_not_in_optimization2() { base.Where_not_in_optimization2(); 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] NOT IN ('London', 'Berlin')"); } public override void Where_not_in_optimization3() { base.Where_not_in_optimization3(); 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] NOT IN ('London', 'Berlin', 'Seattle')"); } public override void Where_not_in_optimization4() { base.Where_not_in_optimization4(); 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] NOT IN ('London', 'Berlin', 'Seattle', 'Lisboa')"); } public override void Where_select_many_and() { base.Where_select_many_and(); 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') AND ([c].[Country] = 'UK')) AND (([e].[City] = 'London') AND ([e].[Country] = 'UK'))"); } public override void Where_primitive() { base.Where_primitive(); AssertSql( @"@__p_0='9' SELECT [t].[EmployeeID] FROM ( SELECT TOP @__p_0 [e].[EmployeeID] FROM [Employees] AS [e] ) AS [t] WHERE [t].[EmployeeID] = 5"); } public override void Where_bool_member() { base.Where_bool_member(); AssertSql( @"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE [p].[Discontinued] = 1"); } public override void Where_bool_member_false() { base.Where_bool_member_false(); AssertSql( @"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE [p].[Discontinued] = 0"); } public override void Where_bool_client_side_negated() { base.Where_bool_client_side_negated(); AssertSql( @"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE [p].[Discontinued] = 1"); } public override void Where_bool_member_negated_twice() { base.Where_bool_member_negated_twice(); AssertSql( @"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE [p].[Discontinued] = 1"); } public override void Where_bool_member_shadow() { base.Where_bool_member_shadow(); AssertSql( @"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE [p].[Discontinued] = 1"); } public override void Where_bool_member_false_shadow() { base.Where_bool_member_false_shadow(); AssertSql( @"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE [p].[Discontinued] = 0"); } public override void Where_bool_member_equals_constant() { base.Where_bool_member_equals_constant(); AssertSql( @"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE [p].[Discontinued] = 1"); } public override void Where_bool_member_in_complex_predicate() { base.Where_bool_member_in_complex_predicate(); AssertSql( @"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE (([p].[ProductID] > 100) AND ([p].[Discontinued] = 1)) OR ([p].[Discontinued] = 1)"); } public override void Where_bool_member_compared_to_binary_expression() { base.Where_bool_member_compared_to_binary_expression(); AssertSql( @"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE [p].[Discontinued] = CASE WHEN [p].[ProductID] > 50 THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END"); } public override void Where_not_bool_member_compared_to_not_bool_member() { base.Where_not_bool_member_compared_to_not_bool_member(); AssertSql( @"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE [p].[Discontinued] = [p].[Discontinued]"); } public override void Where_negated_boolean_expression_compared_to_another_negated_boolean_expression() { base.Where_negated_boolean_expression_compared_to_another_negated_boolean_expression(); AssertSql( @"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE CASE WHEN [p].[ProductID] > 50 THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END = CASE WHEN [p].[ProductID] > 20 THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END"); } public override void Where_not_bool_member_compared_to_binary_expression() { base.Where_not_bool_member_compared_to_binary_expression(); AssertSql( @"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE [p].[Discontinued] <> CASE WHEN [p].[ProductID] > 50 THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END"); } public override void Where_bool_parameter() { base.Where_bool_parameter(); AssertSql( @"@__prm_0='True' SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE @__prm_False = True"); } public override void Where_bool_parameter_compared_to_binary_expression() { base.Where_bool_parameter_compared_to_binary_expression(); AssertSql( @"@__prm_0='True' SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE CASE WHEN [p].[ProductID] > 50 THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END <> @__prm_0"); } public override void Where_bool_member_and_parameter_compared_to_binary_expression_nested() { base.Where_bool_member_and_parameter_compared_to_binary_expression_nested(); AssertSql( @"@__prm_0='True' SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE [p].[Discontinued] = CASE WHEN CASE WHEN [p].[ProductID] > 50 THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END <> @__prm_0 THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END"); } public override void Where_de_morgan_or_optimizated() { base.Where_de_morgan_or_optimizated(); AssertSql( @"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE ([p].[Discontinued] = 0) AND ([p].[ProductID] >= 20)"); } public override void Where_de_morgan_and_optimizated() { base.Where_de_morgan_and_optimizated(); AssertSql( @"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE ([p].[Discontinued] = 0) OR ([p].[ProductID] >= 20)"); } public override void Where_complex_negated_expression_optimized() { base.Where_complex_negated_expression_optimized(); AssertSql( @"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE (([p].[Discontinued] = 0) AND ([p].[ProductID] < 60)) AND ([p].[ProductID] > 30)"); } #if !Test20 public override void Where_short_member_comparison() { base.Where_short_member_comparison(); AssertSql( @"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE [p].[UnitsInStock] > CAST(10 AS smallint)"); } #endif public override void Where_comparison_to_nullable_bool() { base.Where_comparison_to_nullable_bool(); 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 RIGHT([c].[CustomerID], LEN(N'KI')) = 'KI'"); } public override void Where_true() { base.Where_true(); 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 Where_false() { base.Where_false(); 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 False = True"); } public override void Where_default() { base.Where_default(); 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].[Fax] IS NULL"); } public override void Where_expression_invoke() { base.Where_expression_invoke(); 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'"); } public override void Where_concat_string_int_comparison1() { base.Where_concat_string_int_comparison1(); AssertSql( @"@__i_0='10' SELECT [c].[CustomerID] FROM [Customers] AS [c] WHERE ([c].[CustomerID] + CAST(@__i_0 AS nvarchar(max))) = [c].[CompanyName]"); } public override void Where_concat_string_int_comparison2() { base.Where_concat_string_int_comparison2(); AssertSql( @"@__i_0='10' SELECT [c].[CustomerID] FROM [Customers] AS [c] WHERE (CAST(@__i_0 AS nvarchar(max)) + [c].[CustomerID]) = [c].[CompanyName]"); } public override void Where_concat_string_int_comparison3() { base.Where_concat_string_int_comparison3(); AssertSql( @"@__i_0='10' @__j_1='21' SELECT [c].[CustomerID] FROM [Customers] AS [c] WHERE (((CAST(@__i_0 + 20 AS nvarchar(max)) + [c].[CustomerID]) + CAST(@__j_1 AS nvarchar(max))) + CAST(42 AS nvarchar(max))) = [c].[CompanyName]"); } #if !Test20 public override void Where_ternary_boolean_condition_true() { base.Where_ternary_boolean_condition_true(); AssertSql( @"@__flag_0='True' SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE ((@__flag_0 = 1) AND ([p].[UnitsInStock] >= CAST(20 AS smallint))) OR ((@__flag_0 <> 1) AND ([p].[UnitsInStock] < CAST(20 AS smallint)))"); } public override void Where_ternary_boolean_condition_false() { base.Where_ternary_boolean_condition_false(); AssertSql( @"@__flag_0='False' SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE ((@__flag_0 = 1) AND ([p].[UnitsInStock] >= CAST(20 AS smallint))) OR ((@__flag_0 <> 1) AND ([p].[UnitsInStock] < CAST(20 AS smallint)))"); } public override void Where_ternary_boolean_condition_with_another_condition() { base.Where_ternary_boolean_condition_with_another_condition(); AssertSql( @"@__productId_0='15' @__flag_1='True' SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE ([p].[ProductID] < @__productId_0) AND (((@__flag_1 = 1) AND ([p].[UnitsInStock] >= CAST(20 AS smallint))) OR ((@__flag_1 <> 1) AND ([p].[UnitsInStock] < CAST(20 AS smallint))))"); } public override void Where_ternary_boolean_condition_with_false_as_result_true() { base.Where_ternary_boolean_condition_with_false_as_result_true(); AssertSql( @"@__flag_0='True' SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE (@__flag_0 = 1) AND ([p].[UnitsInStock] >= CAST(20 AS smallint))"); } public override void Where_ternary_boolean_condition_with_false_as_result_false() { base.Where_ternary_boolean_condition_with_false_as_result_false(); AssertSql( @"@__flag_0='False' SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock] FROM [Products] AS [p] WHERE (@__flag_0 = 1) AND ([p].[UnitsInStock] >= CAST(20 AS smallint))"); } #endif public override void Where_compare_constructed_equal() { base.Where_compare_constructed_equal(); 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 Where_compare_constructed_multi_value_equal() { base.Where_compare_constructed_multi_value_equal(); 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 Where_compare_constructed_multi_value_not_equal() { base.Where_compare_constructed_multi_value_not_equal(); 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 Where_compare_tuple_constructed_equal() { base.Where_compare_tuple_constructed_equal(); 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 Where_compare_tuple_constructed_multi_value_equal() { base.Where_compare_tuple_constructed_multi_value_equal(); 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 Where_compare_tuple_constructed_multi_value_not_equal() { base.Where_compare_tuple_constructed_multi_value_not_equal(); 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 Where_compare_tuple_create_constructed_equal() { base.Where_compare_tuple_create_constructed_equal(); 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 Where_compare_tuple_create_constructed_multi_value_equal() { base.Where_compare_tuple_create_constructed_multi_value_equal(); 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 Where_compare_tuple_create_constructed_multi_value_not_equal() { base.Where_compare_tuple_create_constructed_multi_value_not_equal(); 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 Where_compare_null() { base.Where_compare_null(); 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] IS NULL AND ([c].[Country] = 'UK')"); } public override void Where_Is_on_same_type() { base.Where_Is_on_same_type(); 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 Where_chain() { base.Where_chain(); AssertSql( @"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate] FROM [Orders] AS [o] WHERE ([o].[CustomerID] = 'QUICK') AND ([o].[OrderDate] > '1998-01-01T00:00:00.000')"); } public override void Where_navigation_contains() { base.Where_navigation_contains(); AssertSql( @"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] = 'ALFKI' ORDER BY [c].[CustomerID]", // @"SELECT [c.Orders].[OrderID], [c.Orders].[CustomerID], [c.Orders].[EmployeeID], [c.Orders].[OrderDate] FROM [Orders] AS [c.Orders] INNER JOIN ( SELECT TOP 1 [c0].[CustomerID] FROM [Customers] AS [c0] WHERE [c0].[CustomerID] = 'ALFKI' ORDER BY [c0].[CustomerID] ) AS [t] ON [c.Orders].[CustomerID] = [t].[CustomerID] ORDER BY [t].[CustomerID]", // @"SELECT [od].[OrderID], [od].[ProductID], [od].[Discount], [od].[Quantity], [od].[UnitPrice] FROM [Order Details] AS [od]"); } public override void Where_array_index() { base.Where_array_index(); AssertSql( @"@__p_0='ALFKI' (Nullable = false) (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 [c].[CustomerID] = @__p_0"); } public override void Where_multiple_contains_in_subquery_with_or() { base.Where_multiple_contains_in_subquery_with_or(); AssertSql( @"SELECT [od].[OrderID], [od].[ProductID], [od].[Discount], [od].[Quantity], [od].[UnitPrice] FROM [Order Details] AS [od] WHERE [od].[ProductID] IN ( SELECT TOP 1 [p].[ProductID] FROM [Products] AS [p] ORDER BY [p].[ProductID] ) OR [od].[OrderID] IN ( SELECT TOP 1 [o].[OrderID] FROM [Orders] AS [o] ORDER BY [o].[OrderID] )"); } public override void Where_multiple_contains_in_subquery_with_and() { base.Where_multiple_contains_in_subquery_with_and(); AssertSql( @"SELECT [od].[OrderID], [od].[ProductID], [od].[Discount], [od].[Quantity], [od].[UnitPrice] FROM [Order Details] AS [od] WHERE [od].[ProductID] IN ( SELECT TOP(20) [p].[ProductID] FROM [Products] AS [p] ORDER BY [p].[ProductID] ) AND [od].[OrderID] IN ( SELECT TOP(10) [o].[OrderID] FROM [Orders] AS [o] ORDER BY [o].[OrderID] )"); } public override void Where_contains_on_navigation() { base.Where_contains_on_navigation(); AssertSql( @"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate] FROM [Orders] AS [o] WHERE EXISTS ( SELECT 1 FROM [Customers] AS [c] WHERE [o].[OrderID] IN ( SELECT [o0].[OrderID] FROM [Orders] AS [o0] WHERE [c].[CustomerID] = [o0].[CustomerID] ))"); } public override void Where_subquery_FirstOrDefault_is_null() { base.Where_subquery_FirstOrDefault_is_null(); 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 void Where_subquery_FirstOrDefault_compared_to_entity() { base.Where_subquery_FirstOrDefault_compared_to_entity(); 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] ) = 10243"); } } }