You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1766 lines
71 KiB
C#
1766 lines
71 KiB
C#
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
namespace EntityFrameworkCore.Jet.FunctionalTests.Query
|
|
{
|
|
public partial class SimpleQueryJetTest
|
|
{
|
|
public override async Task Where_simple(bool isAsync)
|
|
{
|
|
await base.Where_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]
|
|
WHERE [c].[City] = 'London'");
|
|
}
|
|
|
|
public override async Task Where_as_queryable_expression(bool isAsync)
|
|
{
|
|
await base.Where_as_queryable_expression(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 ([c].[CustomerID] = [o].[CustomerID]) AND ([o].[CustomerID] = 'ALFKI'))");
|
|
}
|
|
|
|
public override async Task Where_simple_closure(bool isAsync)
|
|
{
|
|
await base.Where_simple_closure(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__city_0='London' (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 async Task Where_indexer_closure(bool isAsync)
|
|
{
|
|
await base.Where_indexer_closure(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__p_0='London' (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 async Task Where_dictionary_key_access_closure(bool isAsync)
|
|
{
|
|
await base.Where_dictionary_key_access_closure(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__get_Item_0='London' (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 async Task Where_tuple_item_closure(bool isAsync)
|
|
{
|
|
await base.Where_tuple_item_closure(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__predicateTuple_Item2_0='London' (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 async Task Where_named_tuple_item_closure(bool isAsync)
|
|
{
|
|
await base.Where_named_tuple_item_closure(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__predicateTuple_Item2_0='London' (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 async Task Where_simple_closure_constant(bool isAsync)
|
|
{
|
|
await base.Where_simple_closure_constant(isAsync);
|
|
|
|
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_0 = True");
|
|
}
|
|
|
|
public override async Task Where_simple_closure_via_query_cache(bool isAsync)
|
|
{
|
|
await base.Where_simple_closure_via_query_cache(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__city_0='London' (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' (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 async Task Where_method_call_nullable_type_closure_via_query_cache(bool isAsync)
|
|
{
|
|
await base.Where_method_call_nullable_type_closure_via_query_cache(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__p_0='2' (Nullable = true)
|
|
|
|
SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title]
|
|
FROM [Employees] AS [e]
|
|
WHERE CAST([e].[ReportsTo] AS bigint) = @__p_0",
|
|
//
|
|
@"@__p_0='5' (Nullable = true)
|
|
|
|
SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title]
|
|
FROM [Employees] AS [e]
|
|
WHERE CAST([e].[ReportsTo] AS bigint) = @__p_0");
|
|
}
|
|
|
|
public override async Task Where_method_call_nullable_type_reverse_closure_via_query_cache(bool isAsync)
|
|
{
|
|
await base.Where_method_call_nullable_type_reverse_closure_via_query_cache(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__p_0='1' (Nullable = true)
|
|
|
|
SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title]
|
|
FROM [Employees] AS [e]
|
|
WHERE CAST([e].[EmployeeID] AS bigint) > @__p_0",
|
|
//
|
|
@"@__p_0='5' (Nullable = true)
|
|
|
|
SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title]
|
|
FROM [Employees] AS [e]
|
|
WHERE CAST([e].[EmployeeID] AS bigint) > @__p_0");
|
|
}
|
|
|
|
public override async Task Where_method_call_closure_via_query_cache(bool isAsync)
|
|
{
|
|
await base.Where_method_call_closure_via_query_cache(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__GetCity_0='London' (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' (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 async Task Where_field_access_closure_via_query_cache(bool isAsync)
|
|
{
|
|
await base.Where_field_access_closure_via_query_cache(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__city_InstanceFieldValue_0='London' (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' (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 async Task Where_property_access_closure_via_query_cache(bool isAsync)
|
|
{
|
|
await base.Where_property_access_closure_via_query_cache(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__city_InstancePropertyValue_0='London' (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' (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 async Task Where_static_field_access_closure_via_query_cache(bool isAsync)
|
|
{
|
|
await base.Where_static_field_access_closure_via_query_cache(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__StaticFieldValue_0='London' (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' (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 async Task Where_static_property_access_closure_via_query_cache(bool isAsync)
|
|
{
|
|
await base.Where_static_property_access_closure_via_query_cache(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__StaticPropertyValue_0='London' (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' (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 async Task Where_nested_field_access_closure_via_query_cache(bool isAsync)
|
|
{
|
|
await base.Where_nested_field_access_closure_via_query_cache(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__city_Nested_InstanceFieldValue_0='London' (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' (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 async Task Where_nested_property_access_closure_via_query_cache(bool isAsync)
|
|
{
|
|
await base.Where_nested_property_access_closure_via_query_cache(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__city_Nested_InstancePropertyValue_0='London' (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' (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 async Task Where_new_instance_field_access_query_cache(bool isAsync)
|
|
{
|
|
await base.Where_new_instance_field_access_query_cache(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__InstanceFieldValue_0='London' (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' (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 async Task Where_new_instance_field_access_closure_via_query_cache(bool isAsync)
|
|
{
|
|
await base.Where_new_instance_field_access_closure_via_query_cache(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__InstanceFieldValue_0='London' (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' (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 async Task Where_simple_closure_via_query_cache_nullable_type(bool isAsync)
|
|
{
|
|
await base.Where_simple_closure_via_query_cache_nullable_type(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__p_0='2' (Nullable = true)
|
|
|
|
SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title]
|
|
FROM [Employees] AS [e]
|
|
WHERE CAST([e].[ReportsTo] AS bigint) = @__p_0",
|
|
//
|
|
@"@__p_0='5' (Nullable = true)
|
|
|
|
SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title]
|
|
FROM [Employees] AS [e]
|
|
WHERE CAST([e].[ReportsTo] AS bigint) = @__p_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 async Task Where_simple_closure_via_query_cache_nullable_type_reverse(bool isAsync)
|
|
{
|
|
await base.Where_simple_closure_via_query_cache_nullable_type_reverse(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title]
|
|
FROM [Employees] AS [e]
|
|
WHERE [e].[ReportsTo] IS NULL",
|
|
//
|
|
@"@__p_0='5' (Nullable = true)
|
|
|
|
SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title]
|
|
FROM [Employees] AS [e]
|
|
WHERE CAST([e].[ReportsTo] AS bigint) = @__p_0",
|
|
//
|
|
@"@__p_0='2' (Nullable = true)
|
|
|
|
SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title]
|
|
FROM [Employees] AS [e]
|
|
WHERE CAST([e].[ReportsTo] AS bigint) = @__p_0");
|
|
}
|
|
|
|
public override void Where_subquery_closure_via_query_cache()
|
|
{
|
|
base.Where_subquery_closure_via_query_cache();
|
|
|
|
AssertSql(
|
|
@"@__customerID_0='ALFKI' (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' (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 async Task Where_bitwise_or(bool isAsync)
|
|
{
|
|
await base.Where_bitwise_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");
|
|
}
|
|
|
|
public override async Task Where_bitwise_and(bool isAsync)
|
|
{
|
|
await base.Where_bitwise_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");
|
|
}
|
|
|
|
public override async Task Where_bitwise_xor(bool isAsync)
|
|
{
|
|
await base.Where_bitwise_xor(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 Where_simple_shadow(bool isAsync)
|
|
{
|
|
await base.Where_simple_shadow(isAsync);
|
|
|
|
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 async Task Where_simple_shadow_projection(bool isAsync)
|
|
{
|
|
await base.Where_simple_shadow_projection(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [e].[Title]
|
|
FROM [Employees] AS [e]
|
|
WHERE [e].[Title] = 'Sales Representative'");
|
|
}
|
|
|
|
public override async Task Where_shadow_subquery_FirstOrDefault(bool isAsync)
|
|
{
|
|
await base.Where_shadow_subquery_FirstOrDefault(isAsync);
|
|
|
|
// issue #15994
|
|
// 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 async Task Where_subquery_correlated(bool isAsync)
|
|
{
|
|
await base.Where_subquery_correlated(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 [Customers] AS [c0]
|
|
WHERE [c].[CustomerID] = [c0].[CustomerID])");
|
|
}
|
|
|
|
public override async Task Where_equals_method_string(bool isAsync)
|
|
{
|
|
await base.Where_equals_method_string(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'");
|
|
}
|
|
|
|
public override async Task Where_equals_method_int(bool isAsync)
|
|
{
|
|
await base.Where_equals_method_int(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title]
|
|
FROM [Employees] AS [e]
|
|
WHERE [e].[EmployeeID] = 1");
|
|
}
|
|
|
|
public override async Task Where_equals_using_object_overload_on_mismatched_types(bool isAsync)
|
|
{
|
|
await base.Where_equals_using_object_overload_on_mismatched_types(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title]
|
|
FROM [Employees] AS [e]
|
|
WHERE False = True");
|
|
|
|
// See issue#17498
|
|
//Assert.Contains(
|
|
// RelationalStrings.LogPossibleUnintendedUseOfEquals.GenerateMessage(
|
|
// "e.EmployeeID.Equals(Convert(__longPrm_0, Object))"), Fixture.TestSqlLoggerFactory.Log.Select(l => l.Message));
|
|
}
|
|
|
|
public override async Task Where_equals_using_int_overload_on_mismatched_types(bool isAsync)
|
|
{
|
|
await base.Where_equals_using_int_overload_on_mismatched_types(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__p_0='1'
|
|
|
|
SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title]
|
|
FROM [Employees] AS [e]
|
|
WHERE [e].[EmployeeID] = @__p_0");
|
|
}
|
|
|
|
public override async Task Where_equals_on_mismatched_types_nullable_int_long(bool isAsync)
|
|
{
|
|
await base.Where_equals_on_mismatched_types_nullable_int_long(isAsync);
|
|
|
|
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");
|
|
|
|
// See issue#17498
|
|
//Assert.Contains(
|
|
// RelationalStrings.LogPossibleUnintendedUseOfEquals.GenerateMessage(
|
|
// "__longPrm_0.Equals(Convert(e.ReportsTo, Object))"), Fixture.TestSqlLoggerFactory.Log.Select(l => l.Message));
|
|
|
|
//Assert.Contains(
|
|
// RelationalStrings.LogPossibleUnintendedUseOfEquals.GenerateMessage(
|
|
// "e.ReportsTo.Equals(Convert(__longPrm_0, Object))"), Fixture.TestSqlLoggerFactory.Log.Select(l => l.Message));
|
|
}
|
|
|
|
public override async Task Where_equals_on_mismatched_types_nullable_long_nullable_int(bool isAsync)
|
|
{
|
|
await base.Where_equals_on_mismatched_types_nullable_long_nullable_int(isAsync);
|
|
|
|
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");
|
|
|
|
// See issue#17498
|
|
//Assert.Contains(
|
|
// RelationalStrings.LogPossibleUnintendedUseOfEquals.GenerateMessage(
|
|
// "__nullableLongPrm_0.Equals(Convert(e.ReportsTo, Object))"),
|
|
// Fixture.TestSqlLoggerFactory.Log.Select(l => l.Message));
|
|
|
|
//Assert.Contains(
|
|
// RelationalStrings.LogPossibleUnintendedUseOfEquals.GenerateMessage(
|
|
// "e.ReportsTo.Equals(Convert(__nullableLongPrm_0, Object))"),
|
|
// Fixture.TestSqlLoggerFactory.Log.Select(l => l.Message));
|
|
}
|
|
|
|
public override async Task Where_equals_on_mismatched_types_int_nullable_int(bool isAsync)
|
|
{
|
|
await base.Where_equals_on_mismatched_types_int_nullable_int(isAsync);
|
|
|
|
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 async Task Where_equals_on_matched_nullable_int_types(bool isAsync)
|
|
{
|
|
await base.Where_equals_on_matched_nullable_int_types(isAsync);
|
|
|
|
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 async Task Where_equals_on_null_nullable_int_types(bool isAsync)
|
|
{
|
|
await base.Where_equals_on_null_nullable_int_types(isAsync);
|
|
|
|
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 async Task Where_comparison_nullable_type_not_null(bool isAsync)
|
|
{
|
|
await base.Where_comparison_nullable_type_not_null(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title]
|
|
FROM [Employees] AS [e]
|
|
WHERE [e].[ReportsTo] = 2");
|
|
}
|
|
|
|
public override async Task Where_comparison_nullable_type_null(bool isAsync)
|
|
{
|
|
await base.Where_comparison_nullable_type_null(isAsync);
|
|
|
|
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 async Task Where_string_length(bool isAsync)
|
|
{
|
|
await base.Where_string_length(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 CAST(LEN([c].[City]) AS int) = 6");
|
|
}
|
|
|
|
public override async Task Where_string_indexof(bool isAsync)
|
|
{
|
|
await base.Where_string_indexof(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 (CASE
|
|
WHEN 'Sea' = '' THEN 0
|
|
ELSE CHARINDEX('Sea', [c].[City]) - 1
|
|
END <> -1) OR CASE
|
|
WHEN 'Sea' = '' THEN 0
|
|
ELSE CHARINDEX('Sea', [c].[City]) - 1
|
|
END IS NULL");
|
|
}
|
|
|
|
public override async Task Where_string_replace(bool isAsync)
|
|
{
|
|
await base.Where_string_replace(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 REPLACE([c].[City], 'Sea', 'Rea') = 'Reattle'");
|
|
}
|
|
|
|
public override async Task Where_string_substring(bool isAsync)
|
|
{
|
|
await base.Where_string_substring(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 SUBSTRING([c].[City], 1 + 1, 2) = 'ea'");
|
|
}
|
|
|
|
public override async Task Where_datetime_now(bool isAsync)
|
|
{
|
|
await base.Where_datetime_now(isAsync);
|
|
|
|
// issue #15994
|
|
// 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 async Task Where_datetime_utcnow(bool isAsync)
|
|
{
|
|
await base.Where_datetime_utcnow(isAsync);
|
|
|
|
// issue #15994
|
|
// 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 async Task Where_datetime_today(bool isAsync)
|
|
{
|
|
await base.Where_datetime_today(isAsync);
|
|
|
|
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())) OR CONVERT(date, GETDATE()) IS NULL");
|
|
}
|
|
|
|
public override async Task Where_datetime_date_component(bool isAsync)
|
|
{
|
|
await base.Where_datetime_date_component(isAsync);
|
|
|
|
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 async Task Where_date_add_year_constant_component(bool isAsync)
|
|
{
|
|
await base.Where_date_add_year_constant_component(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
|
|
FROM [Orders] AS [o]
|
|
WHERE DATEPART('yyyy', DATEADD('yyyy', CAST(-1 AS int), [o].[OrderDate])) = 1997");
|
|
}
|
|
|
|
public override async Task Where_datetime_year_component(bool isAsync)
|
|
{
|
|
await base.Where_datetime_year_component(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
|
|
FROM [Orders] AS [o]
|
|
WHERE DATEPART('yyyy', [o].[OrderDate]) = 1998");
|
|
}
|
|
|
|
public override async Task Where_datetime_month_component(bool isAsync)
|
|
{
|
|
await base.Where_datetime_month_component(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
|
|
FROM [Orders] AS [o]
|
|
WHERE DATEPART('m', [o].[OrderDate]) = 4");
|
|
}
|
|
|
|
public override async Task Where_datetime_dayOfYear_component(bool isAsync)
|
|
{
|
|
await base.Where_datetime_dayOfYear_component(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
|
|
FROM [Orders] AS [o]
|
|
WHERE DATEPART(dayofyear, [o].[OrderDate]) = 68");
|
|
}
|
|
|
|
public override async Task Where_datetime_day_component(bool isAsync)
|
|
{
|
|
await base.Where_datetime_day_component(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
|
|
FROM [Orders] AS [o]
|
|
WHERE DATEPART('d', [o].[OrderDate]) = 4");
|
|
}
|
|
|
|
public override async Task Where_datetime_hour_component(bool isAsync)
|
|
{
|
|
await base.Where_datetime_hour_component(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
|
|
FROM [Orders] AS [o]
|
|
WHERE DATEPART('h', [o].[OrderDate]) = 14");
|
|
}
|
|
|
|
public override async Task Where_datetime_minute_component(bool isAsync)
|
|
{
|
|
await base.Where_datetime_minute_component(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
|
|
FROM [Orders] AS [o]
|
|
WHERE DATEPART('n', [o].[OrderDate]) = 23");
|
|
}
|
|
|
|
public override async Task Where_datetime_second_component(bool isAsync)
|
|
{
|
|
await base.Where_datetime_second_component(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
|
|
FROM [Orders] AS [o]
|
|
WHERE DATEPART('s', [o].[OrderDate]) = 44");
|
|
}
|
|
|
|
public override async Task Where_datetime_millisecond_component(bool isAsync)
|
|
{
|
|
await base.Where_datetime_millisecond_component(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
|
|
FROM [Orders] AS [o]
|
|
WHERE DATEPART(millisecond, [o].[OrderDate]) = 88");
|
|
}
|
|
|
|
public override async Task Where_datetimeoffset_now_component(bool isAsync)
|
|
{
|
|
await base.Where_datetimeoffset_now_component(isAsync);
|
|
|
|
// issue #15994
|
|
// AssertSql(
|
|
// @"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
|
|
//FROM [Orders] AS [o]
|
|
//WHERE [o].[OrderDate] = SYSDATETIMEOFFSET()");
|
|
}
|
|
|
|
public override async Task Where_datetimeoffset_utcnow_component(bool isAsync)
|
|
{
|
|
await base.Where_datetimeoffset_utcnow_component(isAsync);
|
|
|
|
// issue #15994
|
|
// AssertSql(
|
|
// @"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
|
|
//FROM [Orders] AS [o]
|
|
//WHERE [o].[OrderDate] = CAST(SYSUTCDATETIME() AS datetimeoffset)");
|
|
}
|
|
|
|
public override async Task Where_simple_reversed(bool isAsync)
|
|
{
|
|
await base.Where_simple_reversed(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 'London' = [c].[City]");
|
|
}
|
|
|
|
public override async Task Where_is_null(bool isAsync)
|
|
{
|
|
await base.Where_is_null(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] IS NULL");
|
|
}
|
|
|
|
public override async Task Where_null_is_null(bool isAsync)
|
|
{
|
|
await base.Where_null_is_null(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 Where_constant_is_null(bool isAsync)
|
|
{
|
|
await base.Where_constant_is_null(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 False = True");
|
|
}
|
|
|
|
public override async Task Where_is_not_null(bool isAsync)
|
|
{
|
|
await base.Where_is_not_null(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] IS NOT NULL");
|
|
}
|
|
|
|
public override async Task Where_null_is_not_null(bool isAsync)
|
|
{
|
|
await base.Where_null_is_not_null(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 False = True");
|
|
}
|
|
|
|
public override async Task Where_constant_is_not_null(bool isAsync)
|
|
{
|
|
await base.Where_constant_is_not_null(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 Where_identity_comparison(bool isAsync)
|
|
{
|
|
await base.Where_identity_comparison(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] = [c].[City]) OR [c].[City] IS NULL");
|
|
}
|
|
|
|
public override async Task Where_in_optimization_multiple(bool isAsync)
|
|
{
|
|
await base.Where_in_optimization_multiple(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].[CustomerID] = 'ALFKI')) OR ([c].[CustomerID] = 'ABCDE')");
|
|
}
|
|
|
|
public override async Task Where_not_in_optimization1(bool isAsync)
|
|
{
|
|
await base.Where_not_in_optimization1(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] IS NULL) AND (([e].[City] <> 'London') OR [e].[City] IS NULL)");
|
|
}
|
|
|
|
public override async Task Where_not_in_optimization2(bool isAsync)
|
|
{
|
|
await base.Where_not_in_optimization2(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] IS NULL) AND (([c].[City] <> 'Berlin') OR [c].[City] IS NULL)");
|
|
}
|
|
|
|
public override async Task Where_not_in_optimization3(bool isAsync)
|
|
{
|
|
await base.Where_not_in_optimization3(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] IS NULL) AND (([c].[City] <> 'Berlin') OR [c].[City] IS NULL)) AND (([c].[City] <> 'Seattle') OR [c].[City] IS NULL)");
|
|
}
|
|
|
|
public override async Task Where_not_in_optimization4(bool isAsync)
|
|
{
|
|
await base.Where_not_in_optimization4(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] IS NULL) AND (([c].[City] <> 'Berlin') OR [c].[City] IS NULL)) AND (([c].[City] <> 'Seattle') OR [c].[City] IS NULL)) AND (([c].[City] <> 'Lisboa') OR [c].[City] IS NULL)");
|
|
}
|
|
|
|
public override async Task Where_select_many_and(bool isAsync)
|
|
{
|
|
await base.Where_select_many_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], [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 async Task Where_primitive(bool isAsync)
|
|
{
|
|
await base.Where_primitive(isAsync);
|
|
|
|
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 async Task Where_bool_member(bool isAsync)
|
|
{
|
|
await base.Where_bool_member(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock]
|
|
FROM [Products] AS [p]
|
|
WHERE [p].[Discontinued] = True");
|
|
}
|
|
|
|
public override async Task Where_bool_member_false(bool isAsync)
|
|
{
|
|
await base.Where_bool_member_false(isAsync);
|
|
|
|
// issue #15994
|
|
// AssertSql(
|
|
// @"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock]
|
|
//FROM [Products] AS [p]
|
|
//WHERE [p].[Discontinued] = False");
|
|
}
|
|
|
|
// public override async Task Where_bool_client_side_negated(bool isAsync)
|
|
// {
|
|
// await base.Where_bool_client_side_negated(isAsync);
|
|
|
|
// AssertSql(
|
|
// @"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock]
|
|
//FROM [Products] AS [p]
|
|
//WHERE [p].[Discontinued] = 1");
|
|
// }
|
|
|
|
public override async Task Where_bool_member_negated_twice(bool isAsync)
|
|
{
|
|
await base.Where_bool_member_negated_twice(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock]
|
|
FROM [Products] AS [p]
|
|
WHERE [p].[Discontinued] = True");
|
|
}
|
|
|
|
public override async Task Where_bool_member_shadow(bool isAsync)
|
|
{
|
|
await base.Where_bool_member_shadow(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock]
|
|
FROM [Products] AS [p]
|
|
WHERE [p].[Discontinued] = True");
|
|
}
|
|
|
|
public override async Task Where_bool_member_false_shadow(bool isAsync)
|
|
{
|
|
await base.Where_bool_member_false_shadow(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock]
|
|
FROM [Products] AS [p]
|
|
WHERE [p].[Discontinued] <> True");
|
|
}
|
|
|
|
public override async Task Where_bool_member_equals_constant(bool isAsync)
|
|
{
|
|
await base.Where_bool_member_equals_constant(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock]
|
|
FROM [Products] AS [p]
|
|
WHERE [p].[Discontinued] = True");
|
|
}
|
|
|
|
public override async Task Where_bool_member_in_complex_predicate(bool isAsync)
|
|
{
|
|
await base.Where_bool_member_in_complex_predicate(isAsync);
|
|
|
|
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] = True)) OR ([p].[Discontinued] = True)");
|
|
}
|
|
|
|
public override async Task Where_bool_member_compared_to_binary_expression(bool isAsync)
|
|
{
|
|
await base.Where_bool_member_compared_to_binary_expression(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock]
|
|
FROM [Products] AS [p]
|
|
WHERE [p].[Discontinued] = IIF([p].[ProductID] > 50, 1, 0)");
|
|
}
|
|
|
|
public override async Task Where_not_bool_member_compared_to_not_bool_member(bool isAsync)
|
|
{
|
|
await base.Where_not_bool_member_compared_to_not_bool_member(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock]
|
|
FROM [Products] AS [p]");
|
|
}
|
|
|
|
public override async Task Where_negated_boolean_expression_compared_to_another_negated_boolean_expression(bool isAsync)
|
|
{
|
|
await base.Where_negated_boolean_expression_compared_to_another_negated_boolean_expression(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock]
|
|
FROM [Products] AS [p]
|
|
WHERE IIF([p].[ProductID] > 50, 1, 0) = IIF([p].[ProductID] > 20, 1, 0)");
|
|
}
|
|
|
|
public override async Task Where_not_bool_member_compared_to_binary_expression(bool isAsync)
|
|
{
|
|
await base.Where_not_bool_member_compared_to_binary_expression(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock]
|
|
FROM [Products] AS [p]
|
|
WHERE [p].[Discontinued] <> IIF([p].[ProductID] > 50, 1, 0)");
|
|
}
|
|
|
|
public override async Task Where_bool_parameter(bool isAsync)
|
|
{
|
|
await base.Where_bool_parameter(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__prm_0='True'
|
|
|
|
SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock]
|
|
FROM [Products] AS [p]
|
|
WHERE @__prm_0 = True");
|
|
}
|
|
|
|
public override async Task Where_bool_parameter_compared_to_binary_expression(bool isAsync)
|
|
{
|
|
await base.Where_bool_parameter_compared_to_binary_expression(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__prm_0='True'
|
|
|
|
SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock]
|
|
FROM [Products] AS [p]
|
|
WHERE IIF([p].[ProductID] > 50, 1, 0) <> @__prm_0");
|
|
}
|
|
|
|
public override async Task Where_bool_member_and_parameter_compared_to_binary_expression_nested(bool isAsync)
|
|
{
|
|
await base.Where_bool_member_and_parameter_compared_to_binary_expression_nested(isAsync);
|
|
|
|
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 IIF([p].[ProductID] > 50, 1, 0) <> @__prm_0 THEN True
|
|
ELSE False
|
|
END");
|
|
}
|
|
|
|
public override async Task Where_de_morgan_or_optimized(bool isAsync)
|
|
{
|
|
await base.Where_de_morgan_or_optimized(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock]
|
|
FROM [Products] AS [p]
|
|
WHERE ([p].[Discontinued] <> True) AND ([p].[ProductID] >= 20)");
|
|
}
|
|
|
|
public override async Task Where_de_morgan_and_optimized(bool isAsync)
|
|
{
|
|
await base.Where_de_morgan_and_optimized(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock]
|
|
FROM [Products] AS [p]
|
|
WHERE ([p].[Discontinued] <> True) OR ([p].[ProductID] >= 20)");
|
|
}
|
|
|
|
public override async Task Where_complex_negated_expression_optimized(bool isAsync)
|
|
{
|
|
await base.Where_complex_negated_expression_optimized(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock]
|
|
FROM [Products] AS [p]
|
|
WHERE (([p].[Discontinued] <> True) AND ([p].[ProductID] < 60)) AND ([p].[ProductID] > 30)");
|
|
}
|
|
|
|
public override async Task Where_short_member_comparison(bool isAsync)
|
|
{
|
|
await base.Where_short_member_comparison(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock]
|
|
FROM [Products] AS [p]
|
|
WHERE [p].[UnitsInStock] > 10");
|
|
}
|
|
|
|
public override async Task Where_comparison_to_nullable_bool(bool isAsync)
|
|
{
|
|
await base.Where_comparison_to_nullable_bool(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 '%KI'");
|
|
}
|
|
|
|
public override async Task Where_true(bool isAsync)
|
|
{
|
|
await base.Where_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 Where_false(bool isAsync)
|
|
{
|
|
await base.Where_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]
|
|
WHERE False = True");
|
|
}
|
|
|
|
public override async Task Where_default(bool isAsync)
|
|
{
|
|
await base.Where_default(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].[Fax] IS NULL");
|
|
}
|
|
|
|
public override async Task Where_expression_invoke_1(bool isAsync)
|
|
{
|
|
await base.Where_expression_invoke_1(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'");
|
|
}
|
|
|
|
public override async Task Where_expression_invoke_2(bool isAsync)
|
|
{
|
|
await base.Where_expression_invoke_2(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
|
|
FROM [Orders] AS [o]
|
|
LEFT JOIN [Customers] AS [c] ON [o].[CustomerID] = [c].[CustomerID]
|
|
WHERE [c].[CustomerID] = 'ALFKI'");
|
|
}
|
|
|
|
public override async Task Where_concat_string_int_comparison1(bool isAsync)
|
|
{
|
|
await base.Where_concat_string_int_comparison1(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__i_0='10'
|
|
|
|
SELECT [c].[CustomerID]
|
|
FROM [Customers] AS [c]
|
|
WHERE ([c].[CustomerID] + CAST(@__i_0 AS nchar(5))) = [c].[CompanyName]");
|
|
}
|
|
|
|
public override async Task Where_concat_string_int_comparison2(bool isAsync)
|
|
{
|
|
await base.Where_concat_string_int_comparison2(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__i_0='10'
|
|
|
|
SELECT [c].[CustomerID]
|
|
FROM [Customers] AS [c]
|
|
WHERE (CAST(@__i_0 AS nchar(5)) + [c].[CustomerID]) = [c].[CompanyName]");
|
|
}
|
|
|
|
public override async Task Where_concat_string_int_comparison3(bool isAsync)
|
|
{
|
|
await base.Where_concat_string_int_comparison3(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__p_0='30'
|
|
@__j_1='21'
|
|
|
|
SELECT [c].[CustomerID]
|
|
FROM [Customers] AS [c]
|
|
WHERE (((CAST(@__p_0 AS nchar(5)) + [c].[CustomerID]) + CAST(@__j_1 AS nchar(5))) + CAST(42 AS nchar(5))) = [c].[CompanyName]");
|
|
}
|
|
|
|
public override async Task Where_concat_string_int_comparison4(bool isAsync)
|
|
{
|
|
await base.Where_concat_string_int_comparison4(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [o].[CustomerID]
|
|
FROM [Orders] AS [o]
|
|
WHERE ((CAST([o].[OrderID] AS nchar(5)) + [o].[CustomerID]) = [o].[CustomerID]) OR [o].[CustomerID] IS NULL");
|
|
}
|
|
|
|
public override async Task Where_concat_string_string_comparison(bool isAsync)
|
|
{
|
|
await base.Where_concat_string_string_comparison(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__i_0='A' (Size = 5)
|
|
|
|
SELECT [c].[CustomerID]
|
|
FROM [Customers] AS [c]
|
|
WHERE (@__i_0 + [c].[CustomerID]) = [c].[CompanyName]");
|
|
}
|
|
|
|
public override async Task Where_string_concat_method_comparison(bool isAsync)
|
|
{
|
|
await base.Where_string_concat_method_comparison(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__i_0='A' (Size = 5)
|
|
|
|
SELECT [c].[CustomerID]
|
|
FROM [Customers] AS [c]
|
|
WHERE (@__i_0 + [c].[CustomerID]) = [c].[CompanyName]");
|
|
}
|
|
|
|
public override async Task Where_ternary_boolean_condition_true(bool isAsync)
|
|
{
|
|
await base.Where_ternary_boolean_condition_true(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock]
|
|
FROM [Products] AS [p]
|
|
WHERE [p].[UnitsInStock] >= 20");
|
|
}
|
|
|
|
public override async Task Where_ternary_boolean_condition_false(bool isAsync)
|
|
{
|
|
await base.Where_ternary_boolean_condition_false(isAsync);
|
|
|
|
// issue #15994
|
|
// AssertSql(
|
|
// @"@__flag_0='False'
|
|
|
|
//SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock]
|
|
//FROM [Products] AS [p]
|
|
//WHERE ((@__flag_0 = True) AND ([p].[UnitsInStock] >= 20)) OR ((@__flag_0 <> True) AND ([p].[UnitsInStock] < 20))");
|
|
}
|
|
|
|
public override async Task Where_ternary_boolean_condition_with_another_condition(bool isAsync)
|
|
{
|
|
await base.Where_ternary_boolean_condition_with_another_condition(isAsync);
|
|
|
|
// issue #15994
|
|
// 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 = True) AND ([p].[UnitsInStock] >= 20)) OR ((@__flag_1 <> True) AND ([p].[UnitsInStock] < 20)))");
|
|
}
|
|
|
|
public override async Task Where_ternary_boolean_condition_with_false_as_result_true(bool isAsync)
|
|
{
|
|
await base.Where_ternary_boolean_condition_with_false_as_result_true(isAsync);
|
|
|
|
// issue #15994
|
|
// AssertSql(
|
|
// @"@__flag_0='True'
|
|
|
|
//SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock]
|
|
//FROM [Products] AS [p]
|
|
//WHERE (@__flag_0 = True) AND ([p].[UnitsInStock] >= 20)");
|
|
}
|
|
|
|
public override async Task Where_ternary_boolean_condition_with_false_as_result_false(bool isAsync)
|
|
{
|
|
await base.Where_ternary_boolean_condition_with_false_as_result_false(isAsync);
|
|
|
|
// issue #15994
|
|
// AssertSql(
|
|
// @"@__flag_0='False'
|
|
|
|
//SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock]
|
|
//FROM [Products] AS [p]
|
|
//WHERE (@__flag_0 = True) AND ([p].[UnitsInStock] >= 20)");
|
|
}
|
|
|
|
public override async Task Where_compare_constructed_equal(bool isAsync)
|
|
{
|
|
await base.Where_compare_constructed_equal(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 Ternary_should_not_evaluate_both_sides(bool isAsync)
|
|
{
|
|
await base.Ternary_should_not_evaluate_both_sides(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__p_0='none' (Size = 4000)
|
|
@__p_1='none' (Size = 4000)
|
|
@__p_2='none' (Size = 4000)
|
|
|
|
SELECT [c].[CustomerID], @__p_0 AS [Data1], @__p_1 AS [Data2], @__p_2 AS [Data3]
|
|
FROM [Customers] AS [c]");
|
|
}
|
|
|
|
public override async Task Ternary_should_not_evaluate_both_sides_with_parameter(bool isAsync)
|
|
{
|
|
await base.Ternary_should_not_evaluate_both_sides_with_parameter(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT True AS [Data1]
|
|
FROM [Orders] AS [o]");
|
|
}
|
|
|
|
public override async Task Where_compare_constructed_multi_value_equal(bool isAsync)
|
|
{
|
|
await base.Where_compare_constructed_multi_value_equal(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 Where_compare_constructed_multi_value_not_equal(bool isAsync)
|
|
{
|
|
await base.Where_compare_constructed_multi_value_not_equal(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 Where_compare_tuple_constructed_equal(bool isAsync)
|
|
{
|
|
await base.Where_compare_tuple_constructed_equal(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 Where_compare_tuple_constructed_multi_value_equal(bool isAsync)
|
|
{
|
|
await base.Where_compare_tuple_constructed_multi_value_equal(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 Where_compare_tuple_constructed_multi_value_not_equal(bool isAsync)
|
|
{
|
|
await base.Where_compare_tuple_constructed_multi_value_not_equal(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 Where_compare_tuple_create_constructed_equal(bool isAsync)
|
|
{
|
|
await base.Where_compare_tuple_create_constructed_equal(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 Where_compare_tuple_create_constructed_multi_value_equal(bool isAsync)
|
|
{
|
|
await base.Where_compare_tuple_create_constructed_multi_value_equal(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 Where_compare_tuple_create_constructed_multi_value_not_equal(bool isAsync)
|
|
{
|
|
await base.Where_compare_tuple_create_constructed_multi_value_not_equal(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 Where_compare_null(bool isAsync)
|
|
{
|
|
await base.Where_compare_null(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] IS NULL AND ([c].[Country] = 'UK')");
|
|
}
|
|
|
|
public override async Task Where_Is_on_same_type(bool isAsync)
|
|
{
|
|
await base.Where_Is_on_same_type(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 Where_chain(bool isAsync)
|
|
{
|
|
await base.Where_chain(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
|
|
FROM [Orders] AS [o]
|
|
WHERE ([o].[CustomerID] = 'QUICK') AND ([o].[OrderDate] > #01/01/1998 00:00:00#)");
|
|
}
|
|
|
|
public override void Where_navigation_contains()
|
|
{
|
|
base.Where_navigation_contains();
|
|
|
|
AssertSql(
|
|
@"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 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'
|
|
) AS [t]
|
|
LEFT JOIN [Orders] AS [o] ON [t].[CustomerID] = [o].[CustomerID]
|
|
ORDER BY [t].[CustomerID], [o].[OrderID]",
|
|
//
|
|
@"SELECT [o].[OrderID], [o].[ProductID], [o].[Discount], [o].[Quantity], [o].[UnitPrice]
|
|
FROM [Order Details] AS [o]
|
|
INNER JOIN [Orders] AS [o0] ON [o].[OrderID] = [o0].[OrderID]
|
|
WHERE [o0].[OrderID] IN (10643, 10692, 10702, 10835, 10952, 11011)");
|
|
}
|
|
|
|
public override async Task Where_array_index(bool isAsync)
|
|
{
|
|
await base.Where_array_index(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__p_0='ALFKI' (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 async Task Where_multiple_contains_in_subquery_with_or(bool isAsync)
|
|
{
|
|
await base.Where_multiple_contains_in_subquery_with_or(isAsync);
|
|
|
|
// issue #15994
|
|
// 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 async Task Where_multiple_contains_in_subquery_with_and(bool isAsync)
|
|
{
|
|
await base.Where_multiple_contains_in_subquery_with_and(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [o].[OrderID], [o].[ProductID], [o].[Discount], [o].[Quantity], [o].[UnitPrice]
|
|
FROM [Order Details] AS [o]
|
|
WHERE [o].[ProductID] IN (
|
|
SELECT TOP 20 [p].[ProductID]
|
|
FROM [Products] AS [p]
|
|
ORDER BY [p].[ProductID]
|
|
)
|
|
AND [o].[OrderID] IN (
|
|
SELECT TOP 10 [o0].[OrderID]
|
|
FROM [Orders] AS [o0]
|
|
ORDER BY [o0].[OrderID]
|
|
)");
|
|
}
|
|
|
|
public override async Task Where_contains_on_navigation(bool isAsync)
|
|
{
|
|
await base.Where_contains_on_navigation(isAsync);
|
|
|
|
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 async Task Where_subquery_FirstOrDefault_is_null(bool isAsync)
|
|
{
|
|
await base.Where_subquery_FirstOrDefault_is_null(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 Where_subquery_FirstOrDefault_compared_to_entity(bool isAsync)
|
|
{
|
|
await base.Where_subquery_FirstOrDefault_compared_to_entity(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]) = 10243");
|
|
}
|
|
|
|
public override async Task Time_of_day_datetime(bool isAsync)
|
|
{
|
|
await base.Time_of_day_datetime(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT CAST([o].[OrderDate] AS time)
|
|
FROM [Orders] AS [o]");
|
|
}
|
|
|
|
public override async Task TypeBinary_short_circuit(bool isAsync)
|
|
{
|
|
await base.TypeBinary_short_circuit(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__p_0='False'
|
|
|
|
SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
|
|
FROM [Orders] AS [o]
|
|
WHERE @__p_0 = True");
|
|
}
|
|
|
|
public override async Task Where_is_conditional(bool isAsync)
|
|
{
|
|
await base.Where_is_conditional(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[SupplierID], [p].[UnitPrice], [p].[UnitsInStock]
|
|
FROM [Products] AS [p]
|
|
WHERE CASE
|
|
WHEN True = True THEN False
|
|
ELSE True
|
|
END = True");
|
|
}
|
|
|
|
public override async Task Enclosing_class_settable_member_generates_parameter(bool isAsync)
|
|
{
|
|
await base.Enclosing_class_settable_member_generates_parameter(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__SettableProperty_0='4'
|
|
|
|
SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
|
|
FROM [Orders] AS [o]
|
|
WHERE [o].[OrderID] = @__SettableProperty_0",
|
|
//
|
|
@"@__SettableProperty_0='10'
|
|
|
|
SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
|
|
FROM [Orders] AS [o]
|
|
WHERE [o].[OrderID] = @__SettableProperty_0");
|
|
}
|
|
|
|
public override async Task Enclosing_class_readonly_member_generates_parameter(bool isAsync)
|
|
{
|
|
await base.Enclosing_class_readonly_member_generates_parameter(isAsync);
|
|
|
|
AssertSql(
|
|
@"@__ReadOnlyProperty_0='5'
|
|
|
|
SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
|
|
FROM [Orders] AS [o]
|
|
WHERE [o].[OrderID] = @__ReadOnlyProperty_0");
|
|
}
|
|
|
|
public override async Task Enclosing_class_const_member_does_not_generate_parameter(bool isAsync)
|
|
{
|
|
await base.Enclosing_class_const_member_does_not_generate_parameter(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
|
|
FROM [Orders] AS [o]
|
|
WHERE [o].[OrderID] = 1");
|
|
}
|
|
|
|
public override async Task Generic_Ilist_contains_translates_to_server(bool isAsync)
|
|
{
|
|
await base.Generic_Ilist_contains_translates_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 [Customers] AS [c]
|
|
WHERE [c].[City] IN ('Seattle')");
|
|
}
|
|
|
|
public override async Task Project_non_nullable_value_after_FirstOrDefault_on_empty_collection(bool isAsync)
|
|
{
|
|
await base.Project_non_nullable_value_after_FirstOrDefault_on_empty_collection(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT (
|
|
SELECT TOP 1 CAST(LEN([o].[CustomerID]) AS int)
|
|
FROM [Orders] AS [o]
|
|
WHERE [o].[CustomerID] = 'John Doe')
|
|
FROM [Customers] AS [c]");
|
|
}
|
|
|
|
public override async Task Filter_non_nullable_value_after_FirstOrDefault_on_empty_collection(bool isAsync)
|
|
{
|
|
await base.Filter_non_nullable_value_after_FirstOrDefault_on_empty_collection(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 CAST(LEN([o].[CustomerID]) AS int)
|
|
FROM [Orders] AS [o]
|
|
WHERE [o].[CustomerID] = 'John Doe') = 0");
|
|
}
|
|
|
|
public override async Task Like_with_non_string_column_using_ToString(bool isAsync)
|
|
{
|
|
await base.Like_with_non_string_column_using_ToString(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
|
|
FROM [Orders] AS [o]
|
|
WHERE CONVERT(VARCHAR(11), [o].[OrderID]) LIKE '%20%'");
|
|
}
|
|
|
|
public override async Task Like_with_non_string_column_using_double_cast(bool isAsync)
|
|
{
|
|
await base.Like_with_non_string_column_using_double_cast(isAsync);
|
|
|
|
AssertSql(
|
|
@"SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
|
|
FROM [Orders] AS [o]
|
|
WHERE CAST([o].[OrderID] AS nvarchar(max)) LIKE '%20%'");
|
|
}
|
|
}
|
|
}
|